科学的ワークフロー管理システム


30

できればPythonで、優れたワークフロー管理システム(WMS)を勧められますか?これまでGNU Makeを使用してきましたが、避けたい複雑さの層が導入されています。優れたWMSには次の機能が必要です。

  • コマンドラインツールやPythonスクリプトと簡単に統合できます。
  • 使いやすく軽量
  • 依存関係を処理する、
  • コマンドラインインターフェースを提供し、
  • ロギングメカニズムを提供します。
  • (オプション)データの出所を提供します。

WMSはバイオインフォマティクス(Galaxyなど)で非常に人気があることは知っていますが、もっと一般的なものを探しています。


2
これは完全な答えではありませんが、同じ質問でGNU MakeとPythonについて言及しているので、SConsにあなたを向けると思いました:scons.org
Reid.Atcheson

ありがとう。科学的なワークフローにSConsを使用した例を知っていますか?
btel

少しの作業で、emacsでそのほとんどを実行できることがわかりました(外部ツールと統合することもあります)。おそらく、あなたが探しているものではないでしょう。私は一般に、メイクファイルを使って些細でないものをコンパイルしなければならないことがわかります。
ダン

1
PythonビルドシステムツールであるSConsとwafについての回答を書くことができます。私はここ数ヶ月間SConsを使用してきましたが、GNU Makeに比べてSConsの良い点と悪い点についての見通しを与えることができます。そうは言っても、「ロギングメカニズムを提供する」と「データの出所を提供する」ことによって、あなたが何を意味するのか詳しく説明できるかどうか疑問に思っていました。ロギングに関しては、単にログファイルが必要ですか、それともバージョン管理システムのようなものを探していますか?
ジェフオックスベリー

1
ロギングは、すべての実行のタイムスタンプ、stderrのリダイレクト、および(オプションで)stdoutを使用して、ログファイルのような非常に単純なものにすることができます。さらに、ワークフローの各ステップからの中間結果を別のディレクトリに保存することもできます。データの出所は、すべての計算スクリプト、入力ファイル、および出力ファイルの履歴を保持する制御バージョンシステムのようなものです。現在、Makefiles + gitを使用していますが、より統合された使いやすいものを探しています。SConsのことは聞いたことがありますが、Makeの利点は何なのか分かりません。
-btel

回答:


12

完全な再現性を可能にするロギングには、Sumatra pythonパッケージを強くお勧めします。バージョン管理のコミット番号、マシンの状態、出力ファイルを各プログラムの実行にうまくリンクし、実行情報のデータベースとやり取りするためのジャンゴWebインターフェイスを備えています。Python APIを使用すると、スクリプトへのロギングを簡単に含めることができます。


スマトラは本当に面白そうです。私はそれを試してみる必要があります。
ジェフオックスベリー

すべての要件を満たしているわけではありませんが、必要なものに最も近いものです。したがって、私は答えを受け入れました。開示:私はスマトラの開発者の一人です。
btel

8

数ヶ月前、私は「エコノミストのための効果的なプログラミングの実践」のようなコースを教えているハンス・マーティン対ガウデッカーの非常に推奨されているウェブサイトに出会った。彼は2010年秋のコースでSConsを紹介し、2011年秋のコースで彼はwafに切り替えました。これはSConsよりも高速ですが、Pythonベースであることになっています。両方のコースのスライドはダウンロードでき、私は(社会科学者として)非常に有益で啓発的なものだと感じました。


1
SConsはかなりラッドです。非常に複雑なスキーマや非常に単純なスキーマも同様にサポートします!
meawoppl

2
SConsと高速なビルドツールのトレードオフは、一般的に依存関係のチェックに関係しています。メインストリーム言語(C、C ++、Fortran、D、Python、Javaなど)の場合、SConsは、タイムスタンプではなくMD5ハッシュベースのアルゴリズムを使用して依存関係を自動的に決定します。他のすべては、依存関係チェックをあまり行わないか、依存関係チェックを他のツール(使用するコンパイラなど)にオフロードするため、パフォーマンス(ソフトウェアのビルドに必要な時間)でSConsを上回ります。
ジェフオックスベリー

1
回答の最初のリンクは404です。彼の新しいページはuni-bonn.de/~hmg308/teaching.htmlにあるようです
liori

SConsには、構成可能な「最新」チェック機能があるため、タイムスタンプ、ハッシュ、またはそれらの組み合わせを選択できます。そうは言っても、私はそれに幻滅しつつあります:いくつかのことは非常に簡単です(たとえば、SConsが優れたツールパッケージを備えたツールチェーンを使用してソフトウェアをコンパイルするなど)、ほとんど何でも可能ですが、それは非常に早くquicklyくなります。
エリックアンダーソン14

4

見てくださいVistrailsのを。私は使用していませんが(自家製のもののみmake)、よく考えられており、良いドキュメントで、NASAなどの実際のユーザー
がいます(1〜2人、4〜5人用のツールをお探しですか? ?)

追加:まったくあなたの質問ではありませんが、繰り返す価値があると思います:
均一で再現可能なコンピューター実験には明らかに必要です

  • 均一なディレクトリ構造。たとえば、what-what / in / out / scripts / log /
  • 実行のすべてのパラメーターの均一な設定とエコー
  • 実行を要約/プロット/評価するスクリプト。

software-carpentry.orgも参照してください。「私たちが解決しようとしている問題は、科学者がソフトウェアと格闘する時間の40%以上をしばしば費やすことですが、95%以上は主に独学です」。


4

質問で言及したすべての要件は、Swift並列スクリプトシステムによって満たされています。

Swiftグループでポスドク研究員(科学ワークフローの博士号)として1年間過ごしました。私たちは、さまざまな分野の科学者や研究者が彼らの計算ニーズに対処するのを支援してきました。

Swiftは、ワークフローを並行して実行するためのオープンソースフレームワークです。GUIボックス矢印インターフェイスとは対照的に、ワークフローを作成するためのスクリプトインターフェイスを提供するという事実を強調するために、主に並列スクリプトと呼ばれます。

Swiftでアプリケーションを開始して実行するのを個人的に支援できます。スウィフトについての詳細を知るためには、見てくださいここに


scicompへようこそ!回答をもう少し広げて(回答の下にある小さな灰色の編集ボタンをクリックして)編集してください。また、回答でSwiftへの接続をもう少し明確にすることはできますか?ありがとう!
アロンアーマディア

1

TavernaはオープンソースのWMSであり、PythonではなくJavaです。


使ったことがありますか?
デスブレス

提案をありがとう。TavernaのWebサイトを見ましたが、主にグラフィカルツールのように見えます。私はむしろコマンドラインベースのものを探しています。Tavernaはコマンドラインツールを提供しますが、ワークフローを実行するだけで、ビルドはしません(正しいですか?)。また、非常にバイオインフォマティクス指向のようです。
btel

makeやsconsのようなビルドシステムではなく、数値実験に適したLIMSをもっと探しているようですね。
GertVdE

聞いてすみません。LIMSは正確に何を表していますか?
-btel

1
検査室情報管理システム。これは、実験室での実験のログを記録するためのツールファミリーです。ただし、これらは通常、たとえば化学分析用です。あなたが「インシリコ実験」、つまりコンピュータ上のシミュレーションであり、「ログ」を必要と実験のためにGoogleにお勧めします- >入力/出力データを格納し、使用されたどのようなソフトウェアのバージョン、仮説、...
GertVdE


0

Dexyは、まさにあなたが求めているもののように聞こえます。サイトから:

Dexyは、ドキュメントを操作するために設計された多くの機能を備えた多目的プロジェクト自動化ツールです。DexyはPythonで書かれており、コマンドラインインターフェイスを備えています。これは、MITライセンス付きのオープンソースソフトウェアです。

Dexyは何をしますか?

Dexyを使用すると、繰り返し作業を行うことで技術文書を簡単に作成できます。Dexyはツールとスクリプトへの一貫したインターフェースを提供するため、手動で実行する必要はありません。プロジェクトのdexy構成は、実行するもの、順序、パラメーターを追跡します。このように、プロセス全体がキャプチャされるため、誰でも1つの簡単なコマンドを使用して実行でき、結果は一貫しています。

APIの使用方法を示すサンプルを含むブログ投稿を作成します。Dexyは自動的に:

  • サンプルコードを実行し、結果を保存します
  • サンプルコードに構文の強調表示を適用する(pygmentsを使用)
  • API呼び出しの結果とプリティのサンプルコードを投稿に挿入します(jinjaを使用)
  • マークダウン形式のブログ投稿をHTMLに変換します(Pythonマークダウンまたはpandocを使用)。
  • 下書きモードでWordPress APIにHTMLをアップロードします(WordPress APIを使用)
  • 調整が完了したらブログ投稿を公開します

私は数年間Dexyをフォローしてきましたが、広く採用されておらず、積極的に開発されていないという印象を受けました。これらの特性は鶏と卵の問題である可能性があります(小さなユーザーベースは、積極的に開発されていないことを意味し、積極的に開発されていないことはユーザーベースの成長を損ないます)。見た目はとてもクールで、一見すると、科学者がIPython、knitr、および特注のスクリプトを超えて再現性を拡大するために必要なのはまさにそれだと思いますが、何らかの理由で...それが使用されるようには思えません。アナ・ネルソンはそれについてそれほどブログさえしません、そして、彼女はそれを書きました。
ジェフオックスベリー

さて、最新のblob投稿は1月のもので、今年は3件のコミットがあります。特に安定していて、実際にこれ以上の作業を必要としないプロジェクトの1つである場合、特にアクティブではありませんが、死んでいません。私が使用している他のプロジェクトには、最近の開発履歴が非常に遅いものがあります。鶏と卵の問題については、多分ここで、そしてSEで言及されている他の場所で、
賛成票

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.