たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

mermaid.jsでガントチャートを書く

mermaid.jsには様々な機能がある。その中でもガントチャート機能に着目した。

mermaid.jsガントチャートの特徴

  • 利点
  • 欠点
    • 拡張性なし (モジュールAPIなど)
    • タスクの依存先は1つのみ (and条件などは無理)
    • 公式docが整備不十分

そもそも論だが、ガントチャートは依存関係を書く機能を有するグラフなのか?

#

mermaid.js対応エディタがたくさんあるみたいで、彼らを使うのも手かも?

mermaid.jsのatomエディタ拡張、これはぐぅ神.
github.com

本家

レポジトリ
github.com

gitbook, readme代わり
mermaid · GitBook
特にgantt部分
Gantt diagram · GitBook

なんとlive editorが!
https://mermaidjs.github.io/mermaid-live-editor/#/edit/c2VxdWVuY2VEaWFncmFtCkEtPj4gQjogUXVlcnkKQi0+PiBDOiBGb3J3YXJkIHF1ZXJ5Ck5vdGUgcmlnaHQgb2YgQzogVGhpbmtpbmcuLi4KQy0+PiBCOiBSZXNwb25zZQpCLT4+IEE6IEZvcndhcmQgcmVzcG9uc2UK

関連記事

色設定の仕方
qiita.com

簡単な使い方
qiita.com

後で読む
作図系ツール・ライブラリまとめ · GitHub

ガントチャートjsライブラリ
magnet88jp.hateblo.jp
blog.htmlhifive.com

plantuml.com

google chart
Gantt Charts  |  Charts  |  Google Developers

内部解析

ガントチャートソース
mermaid/src/diagrams/gantt at master · knsv/mermaid · GitHub

Jisonとやらでparserを作製・js化している模様。

ganttRenderer.js
mermaid/ganttRenderer.js at master · knsv/mermaid · GitHub
こいつがガントチャート部の肝その1。
exportしてるオブジェクトは

  • setConf: configを渡すとganttRenderer内部のconfigを更新
  • draw: 描写

のみ。
draw()の中ではひたすら愚直にd3.jsで要素を作っている。健気だ…
draw()内では本当にrenderingしかしておらず、依存関係に基づいたstart-time計算などはされていない。parser側かな?
gantt.yy.getTasks()でtaskArrayを取得している。このgetTasks()があやしい

ganttDb.js内のgetStartDate()が鍵だった。
“after"を正規表現で検出し、依存タスクの時間関係をDateにコンパイルしている。こうすれば後は描写するだけ
mermaid/ganttDb.js at master · knsv/mermaid · GitHub

d3.jsのバージョンは3.5.17で固定 (package.jsonより mermaid/package.json at master · knsv/mermaid · GitHub )。やっぱり古くからのライブラリはv4に移行しづらいよな。

draw

annotation by myself

/**
 * Draw gantt chart
 * @param {string} text - gantt data, which will be parsed soon
 * @param {string} id - id of something HTML object
 * @returns {void}
 */
function draw(text, id){}

text引数は (“./parser/gantt”).parser.parse()で即座にパースして終わり。
id引数はgetElementByIdでelemを出すために即使用して終わり.

構造まとめ

parser => "after" compiler => draw (d3.js)

生物学実験プロトコルの記述と自動化

プロトコルマークアップ

  • 利点
    • 実験時間の自動見積もり
    • 実験スケジュールの自動構築
  • 欠点
    • human readability は少し下がる (MLなら読めはするけど)
    • 一度構築するまでがめんどくさい

バイオ実験の特徴

  • 特徴
    • 木構造で表現するならDAGになるはず
      • というか、木構造に必ずしもならない(分岐と合流)
      • 単純なstep by stepでは表現が不十分 (“and"条件があるから)

私がとりあえずしたいこと

  • 実験時間をささっと自動で出す
  • 実操作時間が知りたい

    • 並行で実験を仕掛けるのにとても重要
    • 待たなきゃいけない時間と待てる時間
    • 階層
  • 木構造をどうやって表現するんだ?

必要なもの・抽象度

high level

low level

MLを基本にしてフローチャートを自動生成?
MLで操作とかも全部記述?

実装

  • mergaid.js
  • D3.js

関連

protocols.io: 実験プロトコルの共有サイト protocols.io - Life Sciences Protocol Repository

Autoprotocol: 言語らしい。 Autoprotocol
Transcripticというcloud実験企業がもともと開発したみたい?

EXACT: 実験操作オントロジー Aberystwyth University - EXACT

BioStream: 実験プロトコル記述言語、non activeぽい https://groups.google.com/forum/#!topic/diybio/g-o4sq75jY0

Antha: 実験プロトコル記述言語 antha-lang, coding biology.

SBML: Systems Biology Markup Language SBML - Wikipedia

記述言語を用いた細胞生理学実験シミュレーション手法: 記述言語を用いた細胞生理学実験シミュレーション手法

googleフォーラム、プロトコルの共有について
https://groups.google.com/forum/#!topic/diybio/2SZqjV4umeQ

Google assistantとApi.ai

Google assistantとApi.aiの関係、またActions on Googleとの関係はどのようなものか。

概要

この図のようになってる。
f:id:tarepan5884:20170805031405p:plain
Google assistantが全ての基礎にいる。
Google assistantからActionをトリガーすると、Api.aiに引き渡される。
Api.aiはcustom logicでfulfillmentを埋めつつ、ユーザーと対話する。
Actions on Googleは、Api.aiで作った会話セット (Action?)を公開するためのプラットフォーム。
Google assistantでAction名を言うと事前ダウンロードなしで作ったActionをトリガーしてくれる。これはActions on Googleのおかげ.

予備実験

本実験の前におこなわれる(資源的に)小規模な実験 実験科学の予備実験に議論は絞りたい

  • 予備実験
  • 予備的実験

  • 予備データ(Preliminary data)

  • パイロットプラント (プラントだけど)
  • プロトタイプ
  • 概念検証 (Proof of Concept)

予備実験はスケールが小さい本実験
-> 本実験の計画が出来ていないと実行不可能

利点・意義

予備実験をおこなう意義とは

資源的に小規模 -> 外した時の損害が小さい

  • 損害
    • お金
    • モノ
    • 時間
    • 信用

外したらどうするのか
-> 本実験計画を改良・変更・中止できる
実験計画に撤収基準を盛り込むべき
を撤収する

Pilot experiment - Wikipedia

転写開始点

一般に、転写開始点が厳密に決まっているとは限らない.
複数個所からのスタートもありうる

T7プロモーター

T7プロモーターからの転写: 転写開始点が厳密に決まっている模様

The +1 base (in bold) is the first base incorporated into RNA during transcription. The underline shows the minimum promoter sequence needed for efficient transcription. mMESSAGE mMACHINE T7 Transcription Kit - Thermo Fisher Scientific
マニュアル