Difference between revisions of "Manual jp"

From NeuroTychoWiki
Jump to: navigation, search
Line 135: Line 135:
  
 
=== result ===
 
=== result ===
[[File:F200acaa400c60d2d4b02f804d44aa22.png]]
+
[[File:F200acaa400c60d2d4b02f804d44aa22.png|300px]][[File:K2.png|300px]]
 +
 
  
 
赤や黄色である電極同士は相関が高い。基本的には隣り合っている者どうしの相関が高くなっている。全てのデータでまとめて計算しているためこのデータには余り意味が無いが信号の相関の計算と描画方法のデモである。
 
赤や黄色である電極同士は相関が高い。基本的には隣り合っている者どうしの相関が高くなっている。全てのデータでまとめて計算しているためこのデータには余り意味が無いが信号の相関の計算と描画方法のデモである。

Revision as of 17:59, 1 March 2011

Windows環境におけるpythonでの解析環境の構築マニュアル

注意:このマニュアルに書いてあるソフトウェアをインストールする際には、パソコンの管理者権限が必要です。また、windowsに関しては32bit版を想定しております。

Python

  1. http://www.python.org/download/releases/2.6.6/ から、Pythonのバージョン2.6.6の"Windows x86 MSI Installer"をダウンロード
    1. 0805d491734b39856b5c8e178c9de66e.png
  2. インストーラーを起動
    1. C926e6405ff303a6c80625204a5b7a9f.png アイコンをダブルクリックしてインストーラを起動
  3. インストーラープログラムを以下の手順で進める
    1. 特に指定が無い画面については、"Next"ボタンを押して先に進めてください。
    2. 743ee27846ed5bd129ed67a12d3bf5de.png "Install for all users"を選択して、"Next"ボタンを押す
    3. 94be0d2c7a90dc5450c1581903b6e2fe.png 画面に書かれているものから変更せずにそのまま"Next"ボタンを押す
    4. File:Data/050998d9a57e931e46c2c70119982d27.png "Next"ボタンを押してインストールを開始する

Numpy

Numpyはオープンソースのpython用の数値計算用のライブラリです。

  1. http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/ から、"numpy-1.5.1-win32-superpack-python2.6.exe"をダウンロード
    1. File:d9f9e4c26024b18dc4b21b099e7f900d.png]]
  2. インストーラーを起動
    1. 347aa09541427e1dcfb7935f86d5c897.png アイコンをダブルクリックしてインストーラを起動
  3. インストーラープログラムを以下の手順で進める
    1. 特に指定が無い画面については、"Next"ボタンを押して先に進めてください。
    2. 5df43fd3c06be4c91191e64e21ec4999.png "Python Version 2.6"を選択して"Next"ボタンを押す

Scipy

Scipyはオープンソースのpython用数学、科学、工学のための数値解析モジュールです。

  1. http://sourceforge.net/projects/scipy/files/scipy/0.8.0/ から、"scipy-0.8.0-win32-superpack-python2.6.exe" をダウンロード
    1. B5e1b8069c20d716069c8a3eb221b87a.png
  2. インストーラーを起動
    1. 55c0bcade8ab3d8a2c51dd08854a2576.png アイコンをダブルクリックしてインストーラを起動
  3. インストーラープログラムを以下の手順で進める
    1. 特に指定が無い画面については、"Next"ボタンを押して先に進めてください。
    2. A2ee9ebb15add7638912245704e55878.png "Python Version 2.6"を選択して"Next"ボタンを押す

Matplotlib

Matplotlibはpython用のグラフ描画の為のライブラリです。

  1. matplotlibのページ http://matplotlib.sourceforge.net/ にアクセス
  2. download リンクをクリックしてダウンロードページに移動.
    1. 88d00ceb483579b5c45915a42ad2dbcf.png
  3. "matplotlib-1.0.1.win32-py2.6.exe".をダウンロード
    1. B3ac9b2154bafd5809b68f8cdf0ac429.png
  4. インストーラーを起動
    1. Dea1f1d5e133c39cd9a52559bb8207ab.png アイコンをダブルクリックしてインストーラを起動
  5. インストーラープログラムを以下の手順で進める
    1. 特に指定が無い画面については、"Next"ボタンを押して先に進めてください。
    2. Cd94b01550095502721ca4acc5747f28.png "Python Version 2.6"を選択して"Next"ボタンを押す


Pythonを用いてneutorychoのデータを扱うSample

neurotyhcoのデータは、"C:/neurotycho"以下に保存して解凍してあることを前提に進めます。別の場所に保存している場合は、そこを適宜読み替えて進めてください。

ECoGデータのプロット

Sleeping Taskのデータを対象に表示

#!/usr/bin/python
#-*- coding: utf-8 -*-
import numpy as np
import scipy.io
import scipy
import matplotlib
import matplotlib.pyplot as plt

_indir = "C:/neurotycho/20100604_S1_ST_K2_ToruYanagawa_mat_ECoG128-Event3/"

def load_mat(path):
    """
    loading a matlab data using scipy.io
    """
    return scipy.io.loadmat(path)

if __name__=="__main__":
    mat = load_mat(_indir+"ECoG_ch1.mat")#loading ECoG data
    data = mat["ECoGData_ch1"][0]
    event = load_mat(_indir+"Event.mat")##loading event data
    eindex = event["EventIndex"][0]#EventIndex is one-row vector contains indexes when events were occurred in ECoG data.
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.plot(data)#plotting ECoGdata
    ax.annotate('Inject anesthetic drug',
                xy=(eindex[0],data[eindex[0]]),
                xytext=(eindex[0]-170000,2000),
                arrowprops=dict(facecolor='black', shrink=0.1,),
                )
    plt.show()

result

Ca592b24adff54e62f5e2f7af236e919.png

薬液注入後にECoG波形に明らかな変化があることが分かる。

ECoGデータの電極間の相関を求める

#!/usr/bin/python
#-*- coding: utf-8 -*-
import numpy as np
import scipy.io
import matplotlib
import matplotlib.pyplot as plt
import glob
import re

_indir = "/Users/aihara/work/neurotycho/workdir/data/20100723S1_VGT_K2_KazuhitoTakenaka-ToruYanagawa_mat_ECoG128-Event3/"
def load_mat(path):
    return scipy.io.loadmat(path) 

def load_ecog_mats(path):
    """
    特定のディレクトリ以下のECoGデータを全て読み込んで配列に変換
    """
    pat = re.compile(r'ch(\d+)\.')
    files = glob.glob(path+"*_ch*")
    dic={}
    for f in files:
        result = pat.search(f)
        if result:
            id = result.group(1)
            name = "ECoGData_ch"+id
            dic[int(id)] = load_mat(f)[name][0]
    ret = []
    for k in sorted(dic.keys()):#電極の番号順に並び替え
        ret.append(dic[k])
    return ret

if __name__=="__main__":
    data = load_ecog_mats(_indir)
    correlation_mat = np.corrcoef(data)#全実験期間中の電極間の相関を求める
    fig = plt.figure()
    ax = fig.add_subplot(111)
    cax = ax.imshow(correlation_mat, interpolation='nearest')#二次元の画像として相関関係を描画
    cbar = fig.colorbar(cax)
    plt.show()
   


result

F200acaa400c60d2d4b02f804d44aa22.pngK2.png


赤や黄色である電極同士は相関が高い。基本的には隣り合っている者どうしの相関が高くなっている。全てのデータでまとめて計算しているためこのデータには余り意味が無いが信号の相関の計算と描画方法のデモである。