Difference between revisions of "Manual jp"
From NeuroTychoWiki
Line 91: | Line 91: | ||
== 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 === | ||
+ | [[File:F200acaa400c60d2d4b02f804d44aa22.png]] | ||
+ | 赤や黄色である電極同士は相関が高い。基本的には隣り合っている者どうしの相関が高くなっている |
Revision as of 02:09, 1 March 2011
Contents
Windows環境におけるpythonでの解析環境の構築マニュアル
注意:このマニュアルに書いてあるソフトウェアをインストールする際には、パソコンの管理者権限が必要です。また、windowsに関しては32bit版を想定しております。
Python
- http://www.python.org/download/releases/2.6.6/ から、Pythonのバージョン2.6.6の"Windows x86 MSI Installer"をダウンロード
- インストーラーを起動
- インストーラープログラムを以下の手順で進める
- 特に指定が無い画面については、"Next"ボタンを押して先に進めてください。
- "Install for all users"を選択して、"Next"ボタンを押す
- 画面に書かれているものから変更せずにそのまま"Next"ボタンを押す
- File:Data/050998d9a57e931e46c2c70119982d27.png "Next"ボタンを押してインストールを開始する
Numpy
Numpyはオープンソースのpython用の数値計算用のライブラリです。
- http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/ から、"numpy-1.5.1-win32-superpack-python2.6.exe"をダウンロード
- File:d9f9e4c26024b18dc4b21b099e7f900d.png]]
- インストーラーを起動
- インストーラープログラムを以下の手順で進める
Scipy
Scipyはオープンソースのpython用数学、科学、工学のための数値解析モジュールです。
- http://sourceforge.net/projects/scipy/files/scipy/0.8.0/ から、"scipy-0.8.0-win32-superpack-python2.6.exe" をダウンロード
- インストーラーを起動
- インストーラープログラムを以下の手順で進める
Matplotlib
Matplotlibはpython用のグラフ描画の為のライブラリです。
- matplotlibのページ http://matplotlib.sourceforge.net/ にアクセス
- download リンクをクリックしてダウンロードページに移動.
- "matplotlib-1.0.1.win32-py2.6.exe".をダウンロード
- インストーラーを起動
- インストーラープログラムを以下の手順で進める
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
薬液注入後に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()