ระบบการจัดการเวิร์กโฟลว์ทางวิทยาศาสตร์


30

ทุกคนสามารถแนะนำระบบการจัดการเวิร์กโฟลว์ที่ดี (WMS) ให้ฉันโดยเฉพาะอย่างยิ่งใน Python ได้หรือไม่? จนถึงตอนนี้ฉันใช้ GNU Make อยู่แล้ว แต่มันแนะนำความซับซ้อนหลายระดับที่ฉันต้องการหลีกเลี่ยง WMS ที่ดีควรมีคุณสมบัติดังต่อไปนี้:

  • รวมเข้ากับเครื่องมือบรรทัดคำสั่งและสคริปต์ Python ได้อย่างง่ายดาย
  • ใช้งานง่ายและมีน้ำหนักเบา
  • จัดการการอ้างอิง
  • จัดเตรียมอินเตอร์เฟสบรรทัดคำสั่ง
  • จัดเตรียมกลไกการบันทึก
  • (ไม่บังคับ) ให้ข้อมูลที่มา

ฉันรู้ว่า WMS เป็นที่นิยมอย่างมากในด้านชีวสารสนเทศ (เช่นGalaxy ) แต่ฉันกำลังมองหาบางสิ่งที่กว้างกว่า


2
นี่ไม่ใช่คำตอบที่สมบูรณ์ แต่เมื่อคุณพูดถึง GNU Make and Python ในคำถามเดียวกันฉันคิดว่าฉันจะชี้ให้คุณเห็น SCons: scons.org
Reid.Atcheson

ขอบคุณ คุณรู้จักตัวอย่างใดบ้างที่ใช้ SCons สำหรับเวิร์กโฟลว์ทางวิทยาศาสตร์
btel

ฉันพบว่าด้วยการทำงานเล็กน้อยคุณสามารถทำให้ emacs ทำสิ่งนั้นได้มากที่สุด (บางครั้งโดยการรวมเข้ากับเครื่องมือภายนอก) อาจไม่ใช่สิ่งที่คุณกำลังมองหาเนื่องจากฉันพบว่าฉันยังคงต้องใช้ makefiles เพื่อรวบรวมสิ่งที่ไม่จำเป็น
Dan

1
ฉันสามารถเขียนคำตอบเกี่ยวกับ SCons และ waf ซึ่งเป็น Python build tools ของระบบ ฉันใช้ SCons มาสองสามเดือนแล้วและสามารถให้มุมมองเกี่ยวกับสิ่งที่ดีและไม่ดีเกี่ยวกับ GNU Make ที่กล่าวว่าฉันสงสัยว่าคุณสามารถอธิบายเกี่ยวกับสิ่งที่คุณหมายถึงโดย "ให้กลไกการเข้าสู่ระบบ" และ "ให้แหล่งข้อมูล" ในแง่ของการบันทึกคุณเพียงแค่ต้องการไฟล์บันทึกหรือคุณกำลังมองหาบางอย่างที่มากกว่าระบบควบคุมเวอร์ชัน?
Geoff Oxberry

1
การบันทึกอาจเป็นสิ่งที่ง่ายมากเช่น logfiles ตามที่คุณแนะนำด้วยการประทับเวลาของการวิ่งทั้งหมดการเปลี่ยนเส้นทางของ stderr และ (ทางเลือก) stdout นอกจากนี้หนึ่งสามารถเก็บผลกลางจากแต่ละขั้นตอนในเวิร์กโฟลว์ในไดเรกทอรีที่แยกต่างหาก ที่มาของข้อมูลเป็นอะไรที่มากกว่าระบบควบคุมเวอร์ชันที่เก็บประวัติของสคริปต์การคำนวณไฟล์อินพุตและเอาต์พุตทั้งหมด ขณะนี้ฉันใช้ Makefiles + git แต่ฉันมองหาบางสิ่งบางอย่างที่รวมเข้าด้วยกันและใช้งานง่ายขึ้น ฉันเคยได้ยินเกี่ยวกับ SCons แต่ฉันไม่ทราบว่ามันมีประโยชน์อย่างไรต่อ Make
btel

คำตอบ:


12

สำหรับการบันทึกที่อนุญาตให้ทำซ้ำได้อย่างสมบูรณ์ฉันขอแนะนำแพ็คเกจSumatra python มันเชื่อมโยงการควบคุมเวอร์ชันการยินยอมหมายเลขสถานะเครื่องและไฟล์เอาต์พุตไปยังแต่ละโปรแกรมที่รันและมีเว็บอินเตอร์เฟส django เพื่อโต้ตอบกับฐานข้อมูลของข้อมูลรัน หลาม API ทำให้ง่ายในการรวมการบันทึกในสคริปต์ของฉัน


สุมาตราดูน่าสนใจจริงๆ ฉันจะต้องลองดู
Geoff Oxberry

ไม่ตอบสนองความต้องการทั้งหมดของฉัน แต่ใกล้เคียงกับสิ่งที่ฉันต้องการ ดังนั้นฉันยอมรับคำตอบ การเปิดเผยข้อมูล: ฉันเป็นหนึ่งในผู้พัฒนาสุมาตรา
btel

8

Some month ago, I stumbled upon the highly recommended website of Hans-Martin v. Gaudecker who teaches courses like "Effective programming practices for economists". In his Autumn 2010 course he introduced SCons, in his Autumn 2011 course he switched to waf, which is supposed to be faster than SCons but still Python-based. The slides for both courses are available for download and I (as a social scientist) found them very instructive and enlightening.


1
SCons is pretty rad. It supports very complicated or very simple schemae equally well!
meawoppl

2
The tradeoff between SCons and any faster build tool generally has to do with dependency checking. For mainstream languages (C, C++, Fortran, D, Python, Java, etc.), SCons will automatically determine dependencies using an MD5 hash-based algorithm, rather than time stamps, which can be fragile when dealing with generated files. Everything else beats SCons in performance (time needed to build software) because they don't do as much dependency checking, or they offload the dependency checking to some other tool (like the compilers used).
Geoff Oxberry

1
The first link of your answer is 404 now. It seems that his new page is at uni-bonn.de/~hmg308/teaching.html
liori

SCons has configurable "up-to-dateness" checking, so you can choose between timestamp, hash, or some combination. That said, I'm growing disenchanted with it: A few things are very easy (e.g. compiling software using a tool chain for which SCons has good Tool packages) and almost anything is possible, but it gets ugly pretty quickly.
Eric Anderson

4

Take a look at VisTrails. I haven't used it (only homebrew stuff around make), but it looks well thought-out, with good doc, and has real users at NASA etc.
(Are you looking for tools for 1-2 people, 4-5, more ?)

Added: not quite your question, but I think worth repeating:
for uniform, reproducible computer experiments one obviously needs

  • uniform directory structures, e.g. when-what/ in/ out/ scripts/ log/
  • uniform setting and echoing of all parameters for a run
  • scripts to summarize / plot / evaluate runs.

See also software-carpentry.org: "The problem we’re trying to solve is that scientists often spend 40% or more of their time wrestling with software, but 95% or more of them are primarily self-taught".


4

All the requirements you mentioned in your question are fulfilled by the Swift parallel scripting system.

I've spent a year with Swift group as a postdoctoral researcher (PhD in scientific workflows). We've been helping scientists and researchers from different domains address their computational needs.

Swift is an open source framework for running workflows in parallel manner. It is called parallel scripting mainly to highlight the fact that it provides a scripting interface to creating workflows as opposed to the GUI box-arrow interface.

I can personally help you getting started and running your application with Swift. To know more about Swift, please take a look here.


Welcome to scicomp! Do you mind expanding your answer a little more (click the little gray edit button below your answer) to edit. Also, can you make your connection to Swift a little more clear in your answer? Thanks!
Aron Ahmadia

1

Taverna is an open-source WMS, not Python but Java.


Have you used it?
Deathbreath

Thanks for the suggestion. I saw the Taverna website, but it looks like a mainly graphical tool. I rather look for something command-line-based. Taverna does provide command-line tool, but it is only to execute workflows, but not build them (is it correct?). It also seems very much bioinformatics-oriented.
btel

It seems to me, you're more looking for a LIMS suitable for numerical experiments, rather than a build system like make or scons?
GertVdE

Sorry to ask. What does LIMS stand for exactly?
btel

1
Laboratory Information Management System. It's a family of tools to keep log of lab experiments. But these are typically, for example, for chemical analyses. You might want to Google for "in silico experiments", i.e. experiments that are simulations on a computer and require "logging" -> storing input/output data, what version of the software was used, hypotheses, ...
GertVdE


0

Dexy sounds like it is exactly what you area after. From the site:

Dexy is a multi-purpose project automation tool with lots of features designed for working with documents. Dexy is written in Python and has a command-line interface. It's open source software with an MIT license.

What does Dexy do?

Dexy makes it easier to create technical documents by doing the repetitive parts for you. Dexy provides a consistent interface to tools and scripts so you don't have to run them manually. Your project's dexy configuration keeps track of what to run, in which order, and with what parameters. This way, your whole process is captured so anyone can run it using one simple command and the results will be consistent.

You want to write a blog post with examples showing how to use an API. Dexy will automatically:

  • run your example code, saving the results
  • apply syntax highlighting to your example code (using pygments)
  • insert the results of API calls and your prettified example code into your post (using jinja)
  • convert your markdown-formatted blog post to HTML (using python markdown or pandoc).
  • upload the HTML to the WordPress API in draft mode (using the WordPress API)
  • publish your blog post when you are finished tweaking it

I've followed Dexy for a few years, and the impressions I've gotten are that it's not widely adopted, and it's not actively developed. These traits could be a chicken-and-egg problem (a small user base means it's not actively developed, not being actively developed hurts user base growth). It looks super cool, and on it's face, I think it's exactly what scientists need to broaden reproducibility beyond IPython, knitr, and bespoke scripts, but for some reason...it just doesn't seem like it gets used. Ana Nelson doesn't even blog that much about it, and she wrote it.
Geoff Oxberry

Well, the latest blob post is from January, and there have been 3 commits this year. Not super active, but not dead, especially if it's one of those project that just gets to stable and doesn't really need any more work. There are other project I use with much deader recent development histories. As for the chicken-and-egg problem, maybe an upvote here and wherever else it's mentioned on SE would help :P
naught101

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.