Giter VIP home page Giter VIP logo

optinist's Introduction

optinist optinist

PYPI PYPI

OptiNiSt(Optical Neuroimage Studio) is a GUI based workflow pipeline tools for processing two-photon calcium imaging data.

OptiNiSt helps researchers try multiple data analysis methods, visualize the results, and construct the data analysis pipelines easily and quickly on GUI. OptiNiSt's data-saving format follows NWB standards.

OptiNiSt also supports reproducibility of scientific research, standardization of analysis protocols, and developments of novel analysis tools as plug-in.

Support library

ROI detection

Postprocessing

  • Basic Neural Analysis(Event Trigger Average...)
  • Dimension Reduction(PCA...)
  • Neural Decoding(LDA...)
  • Neural Population Analysis(Correlation...)

Saving Format

Key Features

🔰 Easy-To-Create Workflow

  • zero-knowledge of coding: OptiNiSt allows you to create analysis pipelines easily on the GUI.

⚡ Visualizing analysis results

  • quick visualization: OptiNiSt supports you visualize the analysis results by plotly.

🚀 Managing Workflows

  • recording and reproducing: OptiNiSt records and reproduces the workflow pipelines easily.

Installation

Need anaconda or miniconda environment.

conda create -n optinist python=3.8
conda activate optinist

Install from pip.

pip install optinist

launch.

run_optinist

Open browser. http://localhost:8000

Documentation

https://optinist.readthedocs.io/en/latest/

Using GUI

Workflow

  • OptiNiSt allows you to make your analysis pipelines by graph style using nodes and edges on GUI. Parameters for each analysis are easily changeable.

workflow

Visualize

  • OptiNiSt allows you to visualize the analysis results with one click by plotly. It supports a variety of plotting styles.

visualize

Record

  • OptiNiSt supports you in recording and reproducing workflow pipelines in an organized manner.

record

Contributors

Proposers

Kenji Doya, Yukako Yamane OIST Neural Computation Unit

Main Developers

Shogo Akiyama, Yoshifumi Takeshima

Support Developers

Tatsuya Tanabe, Yosuke Kaneko, Syuya Saeki

References

[Suite2p] Marius Pachitariu, Carsen Stringer, Mario Dipoppa, Sylvia Schröder, L. Federico Rossi, Henry Dalgleish, Matteo Carandini, Kenneth D. Harris. "Suite2p: beyond 10,000 neurons with standard two-photon microscopy". 2017 [CaImAn] Andrea Giovannucci Is a corresponding author, Johannes Friedrich, Pat Gunn, Jérémie Kalfon, Brandon L Brown, Sue Ann Koay, Jiannis Taxidis, Farzaneh Najafi, Jeffrey L Gauthier, Pengcheng Zhou, Baljit S Khakh, David W Tank, Dmitri B Chklovskii, Eftychios A Pnevmatikakis. "CaImAn: An open source tool for scalable Calcium Imaging data Analysis". 2019 [LCCD] Tsubasa Ito, Keisuke Ota, Kanako Ueno, Yasuhiro Oisi, Chie Matsubara, Kenta Kobayashi, Masamichi Ohkura, Junichi Nakai, Masanori Murayama, Toru Aonishi, "Low computational-cost cell detection method for calcium imaging data", 2022 [PyNWB] Oliver Rübel, Andrew Tritt, Ryan Ly, Benjamin K. Dichter, Satrajit Ghosh, Lawrence Niu, Ivan Soltesz, Karel Svoboda, Loren Frank, Kristofer E. Bouchard, "The Neurodata Without Borders ecosystem for neurophysiological data science", bioRxiv 2021.03.13.435173, March 15, 2021

optinist's People

Contributors

dependabot[bot] avatar emuemujp avatar hiiaka avatar itutu-tienday avatar kuwabaram avatar levinhsang1234 avatar milesoist avatar quanpython avatar reihashimoto avatar rysk-t avatar sanglevinh avatar shogoakiyama avatar toshikwa avatar toto-maru avatar ttya16 avatar ut29 avatar ykyamane avatar yoshifumi14 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

optinist's Issues

実行ログの表示

追加機能についての概要
実行時のエラーが適切に表示されないため、エラーの原因がわからない。python側での実行ログをjs側で表示できないかを検討する。
代替案としては、python側でエラーコードを作成し、エラー時にjs側に返す方法があるが、エラーコードを各項目が多いため、なるべくさけたい。

重要度
この機能の重要度を[低、中、高]に分ける。
低: この機能は開発要件の最低条件に含まれていない。
中: この機能は開発要件に含まれているが、早急に対応する必要はない。
高: この機能を早急に対応しなければ、他の開発に影響を与える。

ブランチ名
feature/output-log

期限
2021/12月

ライブラリ
使用する・使用できそうなライブラリなど。

その他
その他コメントなど。

実験管理機能

追加機能についての概要
実験管理機能を追加する。

重要度

ブランチ名
特になし。

期限
特になし。

ライブラリ
特になし。

その他
特になし。

websocketによる実行フロー途中での結果表示

追加機能についての概要
実行が全て完了しないと結果が返ってこないため、1つのアルゴリズムが終わるたびに実行結果を表示できるようにしたい。
web socket(fast apiにある)などを使う。

重要度

ブランチ名
feature/websocket

期限
2021/11/15

ライブラリ
使用する・使用できそうなライブラリなど。

その他
その他コメントなど。

画面レイアウトの修正

追加機能についての概要
画面のレイアウトをCSSで修正する。
また、いい感じの色や配置に調整する。

重要度

ブランチ名
feature/css

期限
特になし。

ライブラリ
特になし。

その他
特になし。

plotlyでROIを色付けする

追加機能についての概要
画像のROIを可視化するため、plotlyで実現可能かを調査する。

重要度

ブランチ名
feature/plotly-roi

期限
2022/1月中旬

ライブラリ
plotly

その他
特になし。

cssの変更

追加機能についての概要
追加機能について数行程度で説明する。

重要度

ブランチ名
feature/cssなど

期限
特になし。

ライブラリ
特になし。

その他
特になし。

OptinistのDataWrapper機能

追加機能についての概要
アルゴリズムごとの入出力を吸収する必要があるのと、出力結果のフォーマットが何なのかをjs側で判断するために、DataWrapper機能を作成する。
まずはdummy関数で実験してみる。

重要度

ブランチ名
feature/datawrapper

期限
2021/11/1

ライブラリ
なし。

その他
なし。

パラメータの表示機能

追加機能についての概要
フローチャートのAlgoをクリックしたら、パラメータを表示する機能。

重要度

  • 機能自体は今すぐに必要はないが、frontendとbackendの連携を確認する上で重要。

ブランチ名
feature/frontend/parameter

期限
2021/8/30

ライブラリ
axios

その他
特になし。

時系列プロットのオフセット

追加機能についての概要
Plotyのプロットをデフォルト1個にすることで、見通しをよくする。

重要度

ブランチ名
追加機能のbranchを書く。

期限
この機能の完成期限。

ライブラリ
使用する・使用できそうなライブラリなど。

その他
その他コメントなど。

datajointとsnakemakeの機能差のリサーチ

ライブラリによってはsnakemakeではなく、datajointを使用してパイプラインを定義する場合もあるようなので、snakemakeとdatajointの機能差などを調べておく必要がある。

react flowの追加機能

追加機能についての概要
react flowで作っているEdgeとBlockを消す機能がExampleにあるため使ってみる。
また、実行時に今どこのノードを実行しているかなどは、Blockの色変更やEdgeのanimatedでやる。

重要度

ブランチ名
feature/react-flow

期限
特になし。

ライブラリ
特になし。

その他
特になし。

出力結果の表示機能

追加機能についての概要
出力結果の時系列データなどをchartjsなどで表示する。
また、その他の出力結果の可視化などの表示も検討する。

重要度

ブランチ名
feature/frontend/output

期限
10/11

ライブラリ
Chartjs

その他
特になし。

出力結果の変数ごとにpull down選択に追加する機能

追加機能についての概要
今だとimagesとfluoで決め打ちになっているが、python側でresult辞書に入れたkeyを、js側で選択できるようにする。

重要度

ブランチ名
feature/

期限
2021/11/8

ライブラリ
なし。

その他
なし。

snakemakeによる実行フローの作成

追加機能についての概要
snakemakeをつかうことにより、クラスタ実行などが容易に可能になる。
snakemakeについて調査し、今の実行フローを置き換える。

重要度

ブランチ名
追加機能のbranchを書く。

期限
この機能の完成期限。

ライブラリ
使用する・使用できそうなライブラリなど。

その他
その他コメントなど。

csvファイルを実行する機能

追加機能についての概要
読んだcsvファイルを実行する機能を作成する。

重要度

ブランチ名
feature/csv-input

期限
2021/1/14

ライブラリ
特になし。

その他
特になし。

実行パイプラインの作成

追加機能についての概要
分析ツールの入力と出力をツールごとに吸収できるようにする。

重要度

ブランチ名
feature/pipeline

期限
2021/10/25

ライブラリ
なし。

その他
CaImAnとSuite2pのそれぞれのフローではできる。
CaImAnとSuite2pの出力はそれぞれ異なるため、NWBなどで揃えるなどの検討が必要。

Scatter plotを追加

追加機能についての概要
pcaとtsneでのScatter plotを追加する。

重要度

ブランチ名
feature/scatter-plot

期限
2022/1/31

ライブラリ
特になし。

その他
特になし。

Dockerfileとimageの作成

追加機能についての概要
optinistのdockerfileとimageを作成する。

重要度

ブランチ名
feature/docker

期限
2021/10/18

ライブラリ
dockerfileとdocker-composeをうまく組み合わせてみる。

その他
frontend側とbackend&CUI側は別々のdockerfileを作成する。
その上でdocker-composeでうまく一緒にさせる。

ノード操作によるタブの追加と削除機能

追加機能についての概要
今の状態だとparameterとoutputタブを消してしまうと、そのまま戻らなくなる。クリックしたら、生成されるようにする。そのときのタブ名はアルゴリズム名+α

重要度

ブランチ名

期限
2021/11/1

ライブラリ
なし。

その他
なし。

caiman_cnmf関数をnp.arrayで実行する

追加機能についての概要
snakemakeを導入するために、memmapを読み込むcaiman_cnmf関数を修正する必要がある。

重要度

ブランチ名
特になし。

期限
特になし。

ライブラリ
特になし。

その他
その他コメントなど。

可視化する画像の枚数変更が効かない

追加機能についての概要
可視化する画像の枚数を変更しても変更されない場合がある。

重要度

ブランチ名
特になし。

期限
特になし。

ライブラリ
特になし。

その他
特になし。

GUI側からの実行機能

追加機能についての概要
GUI側フローチャートを作成し実行を行う。

重要度

ブランチ名
feature/gui_run

期限
2021/09/22

ライブラリ
ない。

その他
フロントエンドのblockとバックエンドの関数を対応させる。
実行ボタンとフローチャートを管理するためにフックをうまく使う。
田邊さんの機能とconflictしないように、調整する。

NWBで保存機能

追加機能についての概要
Calcium ImageなどではNWB formatがよく使われる。このformatで保存する機能を作成する。

重要度

ブランチ名
feature/newb

期限
2021/12/27

ライブラリ
pynwb

その他
特になし。

plotlyによる画像表示

追加機能についての概要
plotlyにimageを表示する機能がある。plotlyでやることにより、jsonや配列形式での画像がプロットできるため、マウスオーバーで細胞の値を確認するなどの応用ができる。

重要度

ブランチ名
feature/plotly-image

期限
2021/11/15

ライブラリ
使用する・使用できそうなライブラリなど。

その他
このサイトが参考になる。
https://codepen.io/antoinerg/pen/OJJPxJK

サーバーサイドのファイル選択機能

追加機能についての概要
サーバーサイドのファイル選択機能

  • backend/files以下のファイルを表示して、選択できるようにする。
  • 選択した画像を今まで通り表示できるようにする。

重要度

ブランチ名
feature/files

期限
2021/11/08

フローチャートのblockのレイアウト作成

追加機能についての概要
フローチャートのblockのレイアウト作成する。

  • プルダウンでアルゴリズムを選択。
  • クリックしたらパラメータを表示など。

重要度

ブランチ名
feature/frontend/flowchart

マージブランチ名
develop/frontend

期限
2021/9/6

ライブラリ
Material UIで統一する予定。

その他
特にない。

実行・停止ボタンの作成

追加機能についての概要
フローチャートで結合された処理を実行・停止するボタンの作成する。

重要度

ブランチ名
feature/frontend/runbutton

マージブランチ名
develop/frontend

期限
2021/9/6

ライブラリ
MaterialUIで統一する予定。

その他
特にない。

react flowのブロックレイアウトの変更

追加機能についての概要
react flowのブロックを、今は1つの入力しか受け取らないが、複数入力・出力に変更する。
複数の入出力への変更は以下のコードを参照する。
https://reactflow.dev/examples/custom-node/
また、その変数はpython側で確認する。

重要度

ブランチ名
特になし。

期限
2021/11/8

ライブラリ
特になし。

その他
特になし。

入力画像の読み込み速度の改善

追加機能についての概要
tiffデータを全てpngにばらした後に表示するようにしているが、pngに保存したものから表示できるようにする。

重要度

ブランチ名
feature/fix-input

期限
2021/10/25

ライブラリ
なし。

その他
なし。

flowchartのwebsocketが閉じられる

追加機能についての概要
visualizeタブを押すとflowchart側のwebsocketが落ちる。

重要度

ブランチ名
追加機能のbranchを書く。

期限
2022/01/31

ライブラリ
特になし。

その他
特になし。

ファイルが表示できないバグ

追加機能についての概要
ファイルを同じ名前で保存した場合に、上書きされてしまバグがあった。
関数名、変数名でファイルを保存するように変更する。

重要度

ブランチ名
feature/bug-fix

期限
2021/12/13

ライブラリ
特になし。

その他
特になし。

visualizeのファイル名変更

追加機能についての概要
visualizeする際にファイル名がよく分からない

重要度

ブランチ名
特になし。

期限
特になし。

ライブラリ
特になし。

その他
特になし。

新規関数の追加

追加機能についての概要
PCAやグレンジャーなどの関数を追加する。

重要度

ブランチ名
追加機能のbranchを書く。

期限
この機能の完成期限。

ライブラリ
使用する・使用できそうなライブラリなど。

その他
その他コメントなど。

poetryを使ってパッケージ依存関係を解決する

追加機能についての概要
statsmodelを入れた際に依存関係でエラーするため、requirements.txtからpoetryに変更する。

重要度

ブランチ名
feature/poetry

期限
2021/12/13

ライブラリ
poetry

その他
特になし。

csvデータのプロットをMUIに変更

追加機能についての概要
plotlyのcsv出力だとデータが重なるためデータが多いと見づらいので、muiに変更。

重要度

ブランチ名
特になし。

期限
特になし。

ライブラリ
特になし。

その他
特になし。

react_flowのBlockコピー機能

追加機能についての概要
react_flowのBlockコピー機能。ract_flowで可能かどうかを調べる。
できないなら代替案なども考えたい。

重要度
低 ~ 中

ブランチ名
feature/block-setting

期限
この機能の完成期限。

ライブラリ
使用する・使用できそうなライブラリなど。

その他
その他コメントなど。

neuro scienceの分析ツールの機能確認_20210830

追加機能についての概要
neuro scienceの分析ツールの機能確認して、一連の実行フローを確認する。

重要度

ブランチ名
feature/cui/analysis

マージブランチ名
develop/cui

期限
2021/09/06

ライブラリ
CaImAn、suite2p、DeepLabcutなどは確認する。

その他
なし

plotlyでのheatmapの描画機能

追加機能についての概要
heatmapを使用するため、js側でplotlyでの描画を試す。
また、そのときのformatをpython側と確認する。

重要度

ブランチ名
特になし。

期限
2021/11/8

ライブラリ
plotly

その他
特になし。

tiffデータの読込と表示_20210906

追加機能についての概要
画像が入っているtiffデータを読み込んで、UIに描画する

重要度

ブランチ名
feature/frontend/imgview

マージブランチ名
develop/frontend

期限
2021/09/06

ライブラリ
mogrifyなどでデータを分割したりなど。

その他
なし

workflowライブラリの調査

追加機能についての概要
snakemake以外のworkflowライブラリについて調査する。

  1. DAG解析
  2. 関数ごとに仮想環境を変える
  3. 並列実行
  4. モニタリング
  5. 同じワークフローの場合はスキップしてくれる(途中実行)

重要度

ブランチ名
特になし。

期限
特になし。

ライブラリ
特になし。

その他
特になし。

出力結果のファイル名を指定する機能

追加機能についての概要
GUI側でフローを実行する前に出力結果をファイルに保存するかどうか、またそのときのファイル名をカスタマイズできるようにする。

重要度

ブランチ名
feature/plot

期限
2021/10/18

ライブラリ
特になし。

その他
特になし。

TreeViewの構造化

追加機能についての概要
CaimanとSuite2pなどのツールごとに階層的に表示できるようにする。

重要度

ブランチ名
feature/treeview

期限
2021/11/8

ライブラリ
なし。

その他
なし。

読み込み画像に輝度調整機能を入れる

追加機能についての概要
読み込み画像に対して輝度調整を行いたい。スライドボタンなどで、調整して見えるようにする機能が欲しい。

重要度

ブランチ名
feature/image-filter

期限
2021/11/1

ライブラリ
使用する・使用できそうなライブラリなど。

その他
その他コメントなど。

pipenvの使い方

  • インストール
pip install
pip install -r requirements.txt
  • requirements.txtを生成
pipenv lock -r > requirements.txt
  • 実行
pipwnv shell
pipenv run python main.py

パラメータが送信されないバグ

追加機能についての概要
今の設計ではブロックをクリックしたときにパラメータを呼び出しているが、ブロックをクリックしない場合にパラメータを呼び出さず空のまま送信するバグがある。

重要度

ブランチ名
bugs/params

期限
2021/11/15

ライブラリ
使用する・使用できそうなライブラリなど。

その他
その他コメントなど。

サーバ機能の作成_20210830

追加機能についての概要
fastapiの導入。

重要度

ブランチ名
develop/backend

期限
8/30

ライブラリ
fastapi

その他

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.