Giter Club home page Giter Club logo

barebone-studio's People

Contributors

ahadjiev avatar 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

Watchers

 avatar

barebone-studio's Issues

ユニットテスト整備(BE)

以下optinistリポジトリでの対応の取り込み

その他タスク

  • github actionsのテスト設定のメンテナンス
    • すべてのtestを実行すると処理負荷が高いため、testのレベルを分け、github上では比較的軽量なテストを実施する構成とする
    • 以下に関連

frontendのlinter, formatterの追加

backendで導入したflake8, blackのように、frontendにもlinter, formatterおよびpre-commit, GitHub Actionsでのチェックを導入する。

  • linter: ESLint
  • formatter: Prettier
    • できればimport order用のpluginも追加する(prettier-plugin-organize-importsなど)
  • others
    • .vscode/settings.json
    • pre-commit
    • .github/workflows/linters.yml

FrontEnd静的コンテンツの自動ビルド構成

FrontEndの静的コンテンツ(HTMLページ)の生成の自動化

  • 対応内容

    • github actionでの実現 など
  • 備考

    • 基本的にはFrontEndの静的コンテンツは、開発時には使用されてい。(一般ユーザーより利用される)

開発規約の策定および明文化

開発時の設計ルールなどを策定および明文化する

環境情報

環境情報関連は、github公開情報内に記載あり(最新化必要))

  • 動作対象環境
  • ミドルウェア

コーディングルール

  • 参照するスタンダードなコーディングスタイル
    • ※なるべくlintツールで自動検出できるルールを考慮
  • 当プロジェクト内でのルールのカスタム内容

実装方針

  • ディレクトリ・ファイル構成に関する規定
  • UI・デザイン ルール(表示、フォーム)
  • ロギング・例外処理
  • 非機能(セキュリティ、パフォーマンス)

その他

  • テスト(方式やカバレッジ)
  • 運用(バージョン管理、デプロイ、等)

■仕様言語・フレームワーク 開発規約 参考情報

Api to access sample data from gui

Create an api to access sample data from gui
Add a button to the main GUI to activate the api
Update the tutorial to reflect this new approach

config.yamlのrename

Snakemakeの構成ファイル"config.yaml"をrenameする

名称のスコープが広く、misleadingなため

snakemake.yamlなど

Update Dialog UI

  • Currently, the dialog design is not unified. Unify dialog design with following rules.

    • Use MUI's Dialog, DialogTitle, DialogContent, DialogActions components.
    • On DialogActions,
      • For negative action (like cancel), use outlined button component
      • For positive action(like ok), use contained button component
    • Dialog can be closed with outbound click
    • Dialog can be closed with Esc key down.
  • This changes should be applied to multiuser mode (like user management page).

Workflow Reproduce機能UI調整

WorkflowのReproduce機能について、いくつかのUI改善を適用する。

  • Reproduce実行前に、確認ダイアログを表示する
  • Reproduce後、Workflow画面へ自動遷移する

詳細設計のドキュメンテーション

OptiNiStの機能一覧、および各機能の仕様概要を作成

作成対象の例

  • ユーザー向け

    • ドキュメントにない・説明が不十分な機能の説明
  • 開発者向け

    • 共通
      • frontendのコンポーネントとAPIとの関係
      • frontendのstateとコンポーネントの関係
    • Workflow画面詳細仕様
    • Visualize画面詳細仕様
  • Note

    • 可能であれば、なるべくソースコード上のコメントから、システム仕様を自動ドキュメント化できるとよい。(APIとコンポーネントの構成、etc)
  • 先行タスク

Workflow clearボタンの追加

  • fetch機能が追加されたことにより、新規ワークフローの構築の際に既存のノード削除が必要な手間が増えた
  • CLEARボタンでノード配置を初期状態に戻せるようにする

Snakemake multi-thread 対応

対応内容

  • 課題

    • 現在(v1.0.0)のoptinistで、multiuser modeで複数ユーザーからWorkflowを同時実行した場合、以下のような実行エラーが発生するケースがある。

      snakemake.exceptions.CreateRuleException: The name all is already used by another rule

    • 詳細な要因は確認中だが、そもそもSnakemakeのWorkflow処理が thread-safe ではないことが要因と想定される。
  • 対策

    • 暫定対策
      • 最上位ルール「rule: all」のキーワードが重複しているようなため、この部分をWorkflow実行プロセスごとに一意とすることで、擬似的に thread-safeとする (※要検証)
  • 参考情報

  • 関連issue

RUNの仕様整理、改修

RUNで要求される機能が不明確なため、明確化し、それに適合するようコードを改修する

  • タスク

    • 仕様整理
      • 以下のような仕様も適切かどうか確認する
        • NWB params、Snakemake paramsへの変更がRUNの際には反映されない
    • 改修実装
  • 先行タスク

関数ブロックに関数IDを表示

複数同名の関数を実行した際にどの関数IDがどの関数ブロックに割り当てられているかわからない
・Workflow画面
・Visualize画面

コンソールエラーのfix

開発者ツールで、mapされているコンポーネントなどにkeyが振られていないなどの理由でError, warningsが出ている件の解消

ノードパラメータ表示の改善

  • フィールド名をテキストボックススタイルからTypographyに
    • テキストボックスだと編集可能であるように見えてミスリーディングなため
  • 各種データ型への適応
    • リスト型のパラメータなどが正常にリストとして処理されていない可能性が高い(stringになっている)ため、挙動の確認・修正
    • oist#537 による仕様変更に依存する可能性がある

[106] Error when using 1D data as Input in HDF5 node

  • IscellDataのような1次元のデータをHDF5ノードで選択し、入力として使用するとエラーになる。
    if data.ndim == 3:
    info = {rule_config.return_arg: ImageData(data, "")}
    nwbfile["image_series"]["external_file"] = info[rule_config.return_arg]
    info["nwbfile"] = {}
    info["nwbfile"][FILETYPE.IMAGE] = nwbfile
    elif data.ndim == 2:
    info = {rule_config.return_arg: TimeSeriesData(data, "")}
    • ndim == 1の時の処理が定義されていないのが原因のため、分岐を追加
    • ndimが2, 3の時はnwbfileのdictに割り当てる処理があるため、どのセクションに割り当てるかの確認が必要

poetryの導入

解決したい課題

  • pip installで時間がかかる
    • 現在開発者向けのpython module installではpip install -e '.[dev]'を使用している
    • この手法では都度optinistのビルドが発生し時間がかかる

対策

  • poetryを標準で採用する
    • poetry install --no-rootのオプションでビルドが発生しないため
    • poetryを使用しないでも、同等の解決策があればそちらでも良い
      • ただし、pyproject.tomlとrequirements.txtの二重管理にはならないようにする(pyproject.tomlで完結できるのがbest)

その他

  • poetryは仮想環境を標準で生成してしまうため、createしたconda環境に直接インストールするように設定する
  • dockerでの環境構築処理も合わせて対応する
  • ドキュメンテーションも修正する
    • docs/installation内の各種ドキュメント

複数Workflow同時実行時のエラー発生事象の調査

以下の事象について、調査および改善を実施する。

事象

  • Workflowを同時実行すると、原因不明だが、複数のWorkflowがエラーで中断されるケースが確認されている。

  • テストパターン

    • 5つのWorkspace(1~5)別にブラウザのタブを作成し、タブごとに ほぼ同タイミングで Workflowを実行(RUN ALL)。
    • 実行環境は Mac(macOS 13)
  • 結果

    • 不定期に、一部 or すべてのタブのWorkflowが、エラーで中断されるケースが確認されている。

エラーケース詳細

  • ケース1) すべてのタブ(1~5)のWorkflowでエラー発生

    • 対象Workflowは「caiman_mc → caiman_cnmf」
    • すべてのタブ(1~5)のcaiman_cnmfで、エラーが発生。
    • エラーログ
      • 以下の .snakemake/log には以下の記録あり。(タブ3,5 でのみエラー?)
      • その他のログは、このケースではその後WorkflowのRUNが行われたため、ログが上書きされ残されていない。
        [Wed Aug 30 17:27:25 2023]
        Error in rule 2:
            jobid: 1
            input: /Volumes/workspace/optinist-sv-storedir/output/5/e23f5698/caiman_mc_qfusonsrx3/caiman_mc.pkl
            output: /Volumes/workspace/optinist-sv-storedir/output/5/e23f5698/caiman_cnmf_fux2p3gk0h/caiman_cnmf.pkl
            conda-env: /Volumes/workspace/optinist-for-server/.snakemake/conda/f286fa37fa6660cd11b27453490b9fad_
        
        [Wed Aug 30 17:27:25 2023]
        Error in rule 2:
            jobid: 1
            input: /Volumes/workspace/optinist-sv-storedir/output/3/96c67ad9/caiman_mc_oyjgd3wwys/caiman_mc.pkl
            output: /Volumes/workspace/optinist-sv-storedir/output/3/96c67ad9/caiman_cnmf_pri9m2zneq/caiman_cnmf.pkl
            conda-env: /Volumes/workspace/optinist-for-server/.snakemake/conda/f286fa37fa6660cd11b27453490b9fad_
        
  • ケース2) タブ1,2 でエラーが発生。

    • エラー内容は以下
      • タブ1 … なぜかタブ1のプロセスで、タブ2のプロセスのoutput_fileのパスを参照しているログが記録されている。
      • タブ2 … タブ1のエラーログと同様。以下の内容
        • error.log
          line 937, in update\n
          raise AmbiguousRuleException(file, producer, ambiguities[0])\n
          snakemake.exceptions.AmbiguousRuleException: Rules 6 and 5 are ambiguous for the file
          /Volumes/workspace/optinist-sv-storedir/output/2/0fa2aee5/input_0/mouse2p_2_donotouse.pkl.\n
          Consider starting rule output with a unique prefix, constrain your wildcards, or use the ruleorder directive.\n
          Wildcards:\n \t6: \n \t5: \n
          Expected input files:\n \t6:
          /Volumes/workspace/optinist-sv-storedir/input/2/mouse2p_2_donotouse.tiff\n \t5:
          /Volumes/workspace/optinist-sv-storedir/input/2/mouse2p_2_donotouse.tiff\n
          Expected output files:\n \t6:
          /Volumes/workspace/optinist-sv-storedir/output/2/0fa2aee5/input_0/mouse2p_2_donotouse.pkl\n \t5:
          /Volumes/workspace/optinist-sv-storedir/output/2/0fa2aee5/input_0/mouse2p_2_donotouse.pkl\n
          

検証

  • 以下の動作パターンを検証したが、正常動作を確認。
    • パターン … 5つのWorkflowのうち、暫定的に 1つWorkflowを強制的に終了(raise Error)するコードを追加し、動作確認
    • 結果 … エラーが派生したWorkflow以外は、すべて処理に成功。 (期待する動作)

想定される要因

その他

自動テストトリガの追加

現在、GitHubActionsでの自動テストトリガーがmainへのPRのみのため、develop-mainへのPRでも発火させる

ノード構成共有(export, import)機能

概要

デバイス間でノード構成のみ共有する

  • records画面でのexport対象として、構成ファイルを追加
  • workflow画面にimportボタンを追加

仕様

構成ファイル

  • workflow.yaml
    exportする構成ファイルには、inputファイルのパスや、outputのパスなどは含めず、あくまでノード構成とパラメータの再現のみ
    • edgeDict
    • nodeDict
  • experiment.yaml
    • unique_id
    • workspace_id
    • name
    • started_at
    • finished_at
    • success
    • hasNWB
    • function
      • nodeId: #ノードごとに
        • success
        • message
        • hasNWB
        • started_at
        • finished_at
        • outputPaths

Frontend

ノード構成自体はフロントエンド依存なので、フロントエンドで完結させる
読み込んだ構成は揮発性(RUN_ALLで実行されるまでは特に保存されない)

利用フロー

  • workflow画面右上のボタン群に"import"を追加
  • "import"をクリックするとOSのファイル選択が表示される
    • yaml形式のファイルが選択可能
  • 選択したファイルはtemporaryなフォルダにアップロードされる
  • フロントで対象のファイルをロードし、js-yamlなどのライブラリでparseする
  • 構成の内容がノードに反映される
  • inputファイルノードはパスが空になっているので、自身の環境のファイルをアップロード/select
  • RUN_ALLで実行

リリース手順の整備

  • リリースフローの整備

    • レビュー体制
    • レビュー内容(テスト項目)
    • ブランチ管理
  • 自動化可能な内容の適用

    • mainブランチへのマージをトリガーにGitHubActionsなどで自動化
      • pypiへのpush
      • dockerhubへのpush
      • readthedocsへの反映
  • リリース用のmakeコマンドのメンテナンス

  • リリース手順書の作成

    • #92 で作成したリポジトリで記載
  • 関連

Workflow Reproduce時にVisualizeデータも復元する

Workflow Reproduce時にVisualizeデータも復元する様、仕様アップデートする

  • 補足
    • MultiUser版optinistでは、Workflowのfetch(最終実行WFの復元)時に、Visualizeデータも復元されている。
    • #38 でWorkflow設定のexport/import機能が追加されているが、この機能との調整も必要(import直後はVisualizeデータは存在しないことを考慮)

UI module connecting lines

UI connecting lines can connect to any colour. However, only matching colours work when your try to run.
Connecting lines between non-matching colours should produce a flag. Maybe a different colour line. Green for OK, red for not possible.

Workflow RUN仕様整理・修正

/WorkflowのRUN機能(変更点のみの差分実行機能)について、仕様整理と、必要な改修を実施する。

FE-BEの動作モードの連動

  • 課題

    • optinist の動作モードは現在2つあるが(standalone, multiuser)、FEとBEで動作モードの設定が連動していない。(別々に設定必要)
    • 上記のため、設定が不一致する可能性があるが、現状では設定不一致となった場合、要因が判別しづらくなっている。(ログの不足等)
  • 対策

    • FEとBEの動作モードの設定個所を一元化する
      • ※具体的な方式は、検証から
    • 動作モードの不一致があった場合のエラー処理を明確にする(API error応答, ログ出力)

UI modle descriptions

There is currently a pop-up which appears when hovering over the colour blocks of each module. However, it does not give any new information. It would be good if this gives a longer module description.
As there are pop-ups for the input and output, it could suggest which other the modules it can connect too

テストパターン整備②

手動での動作確認パターンを整理する

  • 目的

    • テスト仕様の最新化
    • 設計ドキュメントメンテナンスのための情報整理
  • タスク

    • テスト項目リスト作成
    • テスト用データの整備
    • テスト用ワークフローの整備

ソフトウェアバージョンアップ対応・対応ルール策定

optinistのソフトウェア・ミドルウェアのバージョンアップの実施、および実施ルールの策定
※FE、BEの両方を対象(※適宜issueを分割)

  • バージョンアップ実施作業

  • バージョンアップ実施ルールの策定

    • バージョンアップの内容(機能強化、セキュリティ情報、etc)
    • バージョンアップの頻度(年4回、etc)

bareboneとforkリポジトリの効率的なマージ運用の検討

現在optinistをベースとして、

  • barebone
    • for-server
    • MRI analysis studio

などのforkプロジェクトが存在するが、これらのリポジトリ間で

  • 共通の開発内容のmergeを容易にする運用
  • 差分の開発内容の切り捨て方

などを明確にする

Workflow画面でのWorkspace情報表示

MutiUser modeでの動作時、Workflow画面で、現在のWorkspace情報を表示するようにする

  • 現在 左サイドメニューにWorkflow情報(ID, name)が表示されているが、この付近に Workspace Name を表示させる。
  • また必須ではないが、Workspace ID(内部ID)も掲載しておくと、多少 開発者向けに利便性がある。

テストパターン整備

手動での動作確認パターンを整理する

  • 目的

    • テスト仕様の最新化
    • 設計ドキュメントメンテナンスのための情報整理
  • タスク

    • テスト項目リスト作成
    • テスト用データの整備
    • テスト用ワークフローの整備

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.