Skip to content

要件定義 仕様設計

Kenji Doya edited this page Oct 11, 2021 · 7 revisions

要件定義

背景・目的

  • optinistは、レーザー励起顕微鏡を用いた光学ニューロイメージング用の統合データ解析ツール
  • 既存のカルシウムイメージングデータ分析ツール(CaImAnSuite2p等)やニューロン活動の解析ツール(OIST神経計算ユニットで開発したものを含む)を、GUIのもので結合・比較・パラメタ設定・可視化を可能にすることで解析方針探索を効率化する

機能概要

  • 既存の分析ツールを並列・統合して使用するための、プロセスフロードリブンのGUIフロントエンド提供
  • 神経生理学での標準データ形式であるNWBのサポート(pynwbCalcium imaging dataライブラリを活用する)
  • PythonベースのタスクランナーであるSnakeMakeを用いた、ローカルマシン、および、HPCクラスタでの処理実行

開発スコープ

  • optnistは機能概要記載の機能開発をスコープとする。
  • 開発したツールはGitHubで公開するとともに、DockerImageとして配布することにより容易な導入を可能にする。

除外事項

  • optinistは分析ツール実行を効率化するためのフロントエンドであり、分析ツールそのもの(CaImAnやsuite2p)や、分析処理の開発は行わない。

システム構成図

  • optinistはブラウザ上で動作するGUIアプリケーションとして実装する。
  • フロントエンドはUIライブラリであるReactと静的型付け言語であるTypeScriptWebとを使用し、WebフレームワークはFastAPIを使用する。
  • GUI上の処理はコマンドラインAPIを介して、カルシュームイメージングの各ツール(CaImAn、suite2p)のAPIをコールして分析処理を実行する。
  • 分析処理はタスクランナーであるSnakemakeを用いて処理パイプラインを構築して実行する。
  • 分析処理は、optinistを実行するローカルマシン上、また、HPCクラスタサーバ上で実行可能とする。
  • 分析処理の実行結果は、NWB形式で保存可能とする。
  • 分析処理の実行環境はdockerを用いて構築する。各ツールが公式に提供するdockerイメージが利用可能な場合は、それらを(ユーザが予めビルドして)使用し、複数のツールを同時使用する場合は、(ユーザが予めビルドした)条件を満たすイメージを用いる。

画面

  • optinistは分析処理選択/処理フローキャンバス/実行制御/入力データ・結果確認、等の主要機能を1画面で提供(シングルページアプリケーション)。
  • 1画面を分割した領域(ペイン)を単位として各機能を表示、提供

主要画面説明

  • 分析処理選択(Process Selection)
    • カルシュームイメージングの分析処理で用いるアルゴリズムを分析ツール別に表示
    • ユーザは選択した分析処理を処理フローキャンバス上に配置し実行順序を指定
  • 処理フローキャンバス(Flow Canvas)
    • 分析処理選択、で選択した各分析処理の実行順序を指定して処理パイプラインを構築
    • 処理フローの連結、切断、分岐等の指定はGUIを用いた直観的操作で行う
    • 分析処理フローの整合性チェック機能を提供(可能な限り)
  • パラメータ設定(Parameter Setting)
    • 処理フローキャンバス上で指定した分析処理が備えるパラメータを表示、設定
    • デフォルト値提供、設定頻度に応じた設定補助、パラメータ間の整合性チェック、の機能を提供(可能な限り)
    • パラメータ項目数が多い分析処理用に、階層的/段階的な設定画面を検討する
  • データビューア(Data Viewer)
    • 分析処理の入力データや分析処理後の出力結果を表示
    • 画像(Multipage-TIFF等)や時系列グラフ(Spike Extraction)を表示
    • 処理フローキャンバス上で指定した分析処理に対応した入出力を表示(可能な限り)
    • 保存済データの確認(画像、ログ)
  • 制御パネル(Control Panel)
    • 処理フローキャンバスで指定した分析処理パイプラインの実行・停止するボタン(アイコン)を備える

開発中画面(2021/09/22)

その他画面

  • その他分析制御に必要な各種設定を行うための画面構成(ボタン・アイコン)を備える必要性が生じる可能性がある。
    • 想定される各種設定(オプション設定)
      • CUI画面立ち上げ
      • 分析ツール/アルゴリズム編集(追加・削除・表示ON/OFF)
      • 実行マシン指定(ローカルマシン or クラスタサーバ)
      • クラスタサーバログイン機能
  • 上記各種設定の具体的な実装(する・しない、画面構成等)は開発を進めながら相談させて下さい

開発スケジュール/導入・移行計画

  • optinist開発は大きく4フェーズで進める
      1. 要件定義・仕様設計(~2021年9月中旬)
      1. プロトタイプ版開発(~2021年10月中旬)
      1. テスト版開発(~2021年12月)
      1. リリース版開発(~2022年3月)

1. 要件定義・仕様設計(~2021年9月中旬)

  • 開発要件資料、ヒアリングに基づき開発内容となる要件定義、開発仕様設計を行う。
  • 要件定義、開発仕様はoptinist開発GithubレポジトリのWikiに記載する。
  • 将来の公開時ドキュメンテーション(README)のベースとする。
  • 本フェーズ終了後に他者知財権侵害が無いことを確認するための遡及調査を実施予定。

2. プロトタイプ版開発(~2021年10月中旬)

  • UI/UXを確認するための最小限の機能を備えた初期開発版。
  • CaImAnとsuite2pとの2つの分析ツールが提供するニューロン抽出機能に関する分析処理・アルゴリズムを実行できるだけの実装開発を行う。

3. テスト版開発(~2021年12月)

    1. プロトタイプ版、のフィードバックに基づく改善版。
  • 開発スコープは、2. プロトタイプ版、の開発後に相談・設定させて下さい。

4. リリース版開発(~2022年3月)

    1. テスト版、のフィードバックに基づきパブリックリリースに向けた改善版。
  • 一般ユーザ・リサーチャ・エンジニアが使用可能なレベルで開発する必要がある。
  • 具体的な開発スコープは、3. テスト版、の開発後に相談・設定させて下さい。

遡及調査について

  • optinist開発が他者知財権を侵害しないことを確認するために特許先行技術調査を実施する。
  • 実施方法は、optinist開発仕様に基づき仮想的な請求項を作成し、特許事務所に調査を依頼する。
  • 調査期間は1カ月程度を想定。1. 要件定義・仕様設計、終了後に速やかに実施する。

運用・保守

  • optinistはローカルマシン上で動作するブラウザアプリケーションであり、リモートサーバ・クラウド等の運用保守は不要。
  • そのため、主な保守作業は、コード実装の改修とGithubレポジトリのバージョンアップを想定。
  • optinist開発の開発について2022年3月までのアプリケーション実装・機能開発はアラヤが担当する。
  • 2022年3月までの開発終了後にoptinistはGithub上でパブリックリリースされる想定であり、その後の運用については現時点では未定。

想定される運用・保守対応

  • バグ対応に伴う実装改修(GithubのIssue対応等)
  • 採用ライブラリ/ツールの必須バージョンアップ対応に伴う実装改修(セキュリティ対応等)
  • 対応分析ツールのバージョンアップ対応に伴う実装改修(API変更等)
  • 新規の分析ツールを組み込むための対応に伴う実装改修
  • ブラウザバージョンアップ対応に伴う実装改修(UI/UX等)
  • その他修正対応に伴る実装改修
  • (Githubを利用しない)一般ユーザとのコミュニケーションIFの設定必要性は別途議論する(専用コミュニティ、問い合わせ窓口の開設・運用)

開発体制

  • 銅谷Lab様
    • 銅谷先生
    • 山根さん
    • Carlosさん
    • Yuzheさん
  • アラヤ
    • 金井(代表)
    • 蓮井(PM)
    • 秋山(担当)
    • 金子(担当)
    • 田邊(担当)

成果物

  • ドキュメント(要件定義・基本設計・詳細設計を記載、本Wiki)
  • ソースコード(本レポジトリリリース)

品質管理

テスト方法

  • 基本はブラウザ操作に基づき実装意図通りに動作することをテストする。
  • モジュールレベルでのテストは必要があれば実施。
  • テストケースは、開発フェーズ毎のマイルストーンに応じて定める(大き目な粒度を想定)。

その他

  • (特になし)

基本設計

ユーザフロー(T.B.D.)

(図を用意)

  • 下記ユーザを想定。
    • 開発者(アラヤ)
    • ユーザ(銅谷Lab様)
    • 拡張者(銅谷Lab様/アラヤ)
  • 開発者は、開発フェーズ毎のマイルストーンに応じたアプリケーションの機能実装を行う。リリース後は、リリース機能に対する
  • ユーザは、optinistの使用に関わる、ダウンロード・インストール・環境構築・実行、を行う。
  • 拡張者は、optinistの新規の分析ツール・アルゴリズムの対応を要求する。独自ツールの場合は分析ツールを提供する。
    • (ユーザかもしれない)

機能一覧

  • 分類/機能名/概要/備考 の項目で示したい *

主な機能

  • 複数の分析ツール・処理を実行可能な統合的な解析機能
  • ユーザ自作の分析処理を追加可能な拡張性
  • GUIでの実験設定の変更・実行・可視化
  • 分析処理パイプラインの実行環境制御(ローカルマシン or クラスタサーバ)

機能(T.B.D.)

  • (機能の概要と、実現方法・実装方法を記載する)

入出力機能(T.B.D.)

  • データ読み込み
    • 画像ファイル読み込み機能(シングルページファイル)
      • 対応フォーマット(Tiff)
    • 画像ファイル読み込み機能(マルチページファイル)
      • Multi-Page Tiff
    • マルチページファイル分割機能
    • 読み込みデータプレビュー機能

画面対応機能(T.B.D.)

  • 分析処理選択
    • 対応分析ツール毎、処理ステージ(分類)毎の、単位処理(モジュール)表示機能
    • 処理モジュール単位のパラメータ設定機能
    • 処理モジュール単位のパラメータ設定依存性チェック機能
  • 処理フローキャンパス
    • ドラッグ&ドロップでの処理モジュールフローの指定機能
    • 処理モジュール間のクリック(ドラッグ)接続指定による処理フロー構築機能
    • 処理モジュール間の設定依存チェック機能
  • パラメータ設定
  • データビューア
  • 制御パネル

対応分析ツール(T.B.D.)

  • CaImAn(バージョン:1.9.3 Latest on Aug)
  • suite2p(バージョン:v0.10.1 Latest on Jul)

対応分析処理/パラメータ(T.B.D.)

  • (分析ツール毎にどの分析処理に対応するか、一覧表を図で用意する)
  • CaImAn/suite2pの対応処理/パラメータは、山根様ご提供の資料参照(CaImAn/Suite2Pfuction.xlsx)

データ保存(T.B.D.)

  • (NWBでのsave/load対応)
  • (各ツール毎のNWBでのsave/load対応)
  • (クロスツールでのNWBのsave/load対応)
  • etc.

画面レイアウト

  • 1画面、5分割(分析処理選択/処理フローキャンバス/パラメータ設定/データビューア/制御パネル)の画面レイアウト

画面遷移(T.B.D.)

  • 現状1画面のブラウザアプリケーションであり画面遷移は想定していない(2021/09/22)
  • ブラウザアプリケーション起動後にスタートページを設ける可能性がある
    • 管理・設定画面の必要性の考慮と合わせて相談させて下さい。

外部インタフェース(T.B.D)

  • optinistは分析ツール以外の外部システムとのAPI連携/インタフェースはない