-
Notifications
You must be signed in to change notification settings - Fork 13
アルゴリズム追加手順書
アルゴリズム一覧は以下のディレクトリに記録されている。 https://github.com/oist/optinist/tree/develop/optinist/wrappers
以下ではcorrelation関数を登録する手順を例に説明する。 githubのブランチは最新版に更新しておく。
git pull origin develop
correlationアルゴリズムの記述手順を説明していく。
まず、data_wrapperとargs_checkをimportする。 関数名の上に@args_checkをつけることで、関数実行前に引数の型チェックを行ってくれる。これにより、自動的に引数を合わせてくれる。(今後変更の可能性ある。)
from wrappers.data_wrapper import *
from wrappers.args_check import args_check
関数が変数名と受け取る型を定義する。 correlationはtimeseries、iscellを受け取る。 timeseriesデータは時系列データを記述し、GUI上でプロットするためにTimeSeriesDataクラスでWrapしている。 iscellは前の変数からの返り値を受け取るために、作った変数である。型で引数を判定しているためIscellDataで前の関数と型を合わせている。(今後の仕様変更で変わる可能性がある。)
@args_check
def correlation(timeseries: TimeSeriesData, iscell: IscellData):
timeseries = timeseries.data
iscell = iscell.data
・・・・・・・
返り値は辞書型で返すようにして頂きたい。ここではinfoという辞書型を作成している。 次の関数への引数とする場合はvalueをクラス型でWrapしている。 correlationデータはCorrelationDataクラスでWrapすることで、GUI側でheatmapで描画してくれる。 他にもImageData、TimeseriesDataクラスはそれぞれ画像と時系列データとして、GUI上で描画される。
返り値として適したクラスがない場合は、data_wrapperファイルに自分で記述して頂きたい。 https://github.com/oist/optinist/blob/develop/optinist/wrappers/data_wrapper/wrapper.py
@args_check
def correlation(timeseries: TimeSeriesData, iscell: IscellData):
・・・・・・
info = {}
info['corr'] = CorrelationData(corr)
return info
以上の手順により出来上がったcorrelation関数は以下の通りである。
from wrappers.data_wrapper import *
from wrappers.args_check import args_check
@args_check
def correlation(timeseries: TimeSeriesData, iscell: IscellData):
timeseries = timeseries.data
iscell = iscell.data
ind = np.where(iscell > 0)[0]
timeseries = timeseries[ind, :]
# calculate correlation ##################
num_cell = timeseries.shape[0]
corr = np.ones([num_cell, num_cell]) * np.nan
for i in range(num_cell):
for j in range(num_cell):
if(i != j):
corr[i, j] = np.corrcoef(timeseries[i, :], timeseries[j, :])[0, 1]
info = {}
info['corr'] = CorrelationData(corr)
return info
作成したアルゴリズムをGUI側で使いたい場合には、アルゴリズムの登録を行う必要がある。 correlationの登録は以下に記述されている。 このように、関数名をkeyに、その関数をvalueにして登録すればGUI上で使用できる。(それでもGUIで表示されない場合はもう一度docker-compose upする必要がある。) https://github.com/oist/optinist/blob/develop/optinist/wrappers/original_wrapper/__init__.py
from .correlation import correlation
original_wrapper_dict = {
'correlation': correlation
}
アルゴリズムのパラメータはconfigディレクトリに保存されている。ファイルはyamlファイルで書かれている。 2の手順で関数名をcorrelationと登録した場合には、correlation.yamlとして作ると自動でファイルを参照する。 *現在の仕様ではアルゴリズム名と一対一で対応するようにしているため、ファイル名は関数名と同じでないとエラーする。 https://github.com/oist/optinist/tree/develop/optinist/config
caiman_mc.yaml
border_nan: 'copy'
gSig_filt: null
is3D: False
max_deviation_rigid: 3
max_shifts: [6, 6]
min_mov: null
niter_rig: 1
nonneg_movie: True
num_frames_split: 80