Difference between revisions of "Manual jp"

From NeuroTychoWiki
Jump to: navigation, search
Line 136: Line 136:
 
=== result ===
 
=== result ===
 
[[File:F200acaa400c60d2d4b02f804d44aa22.png]]
 
[[File:F200acaa400c60d2d4b02f804d44aa22.png]]
 +
 
赤や黄色である電極同士は相関が高い。基本的には隣り合っている者どうしの相関が高くなっている
 
赤や黄色である電極同士は相関が高い。基本的には隣り合っている者どうしの相関が高くなっている

Revision as of 02:09, 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.png

赤や黄色である電極同士は相関が高い。基本的には隣り合っている者どうしの相関が高くなっている