Sistem manajemen alur kerja ilmiah


30

Adakah yang bisa merekomendasikan saya sistem manajemen alur kerja yang baik (WMS), lebih disukai di Python? Sejauh ini saya telah menggunakan GNU Make, tetapi memperkenalkan lapisan kompleksitas yang ingin saya hindari. WMS yang baik harus memiliki fitur-fitur berikut:

  • mengintegrasikan dengan mudah dengan alat baris perintah dan skrip Python,
  • mudah digunakan dan ringan,
  • menangani dependensi,
  • menyediakan antarmuka baris perintah,
  • menyediakan mekanisme penebangan,
  • (opsional) memberikan sumber data.

Saya tahu bahwa WMS sangat populer dalam bioinformatika (misalnya Galaxy ), tetapi saya mencari sesuatu yang lebih umum.


2
Ini bukan jawaban yang lengkap, tetapi karena Anda menyebutkan GNU Make dan Python dalam pertanyaan yang sama, saya pikir saya akan mengarahkan Anda ke SCons
Reid.Atcheson

Terima kasih. Apakah Anda tahu ada contoh menggunakan SCons untuk alur kerja ilmiah?
btel

Saya telah menemukan bahwa dengan sedikit pekerjaan, Anda bisa mendapatkan emacs untuk melakukan sebagian besar (kadang-kadang dengan mengintegrasikan dengan alat luar). Mungkin bukan itu yang Anda cari, karena saya menemukan saya umumnya masih harus menggunakan makefile untuk mengkompilasi apa pun yang tidak penting.
Dan

1
Saya dapat menulis jawaban tentang SCON dan waf, yang merupakan alat sistem membangun Python. Saya telah menggunakan SCons selama beberapa bulan sekarang, dan dapat memberi Anda beberapa perspektif tentang apa yang baik dan buruk tentang hal itu dibandingkan dengan GNU Make. Yang mengatakan, saya bertanya-tanya apakah Anda bisa menguraikan apa yang Anda maksud dengan "menyediakan mekanisme logging" dan "memberikan sumber data". Dalam hal logging, apakah Anda hanya ingin logfile, atau Anda mencari sesuatu yang lebih seperti sistem kontrol versi?
Geoff Oxberry

1
Logging mungkin sesuatu yang sangat sederhana seperti file log, seperti yang Anda sarankan, dengan cap waktu semua proses, pengalihan stderr dan (opsional) stdout. Selain itu, seseorang dapat menyimpan hasil antara dari setiap langkah dalam alur kerja di direktori yang terpisah. Sumber data lebih mirip sistem versi kontrol yang menyimpan sejarah semua skrip komputasi, file input dan output. Saat ini, saya menggunakan Makefiles + git tetapi saya mencari sesuatu yang lebih terintegrasi dan lebih mudah digunakan. Saya telah mendengar tentang SCons tetapi saya tidak tahu apa kelebihannya dari Make.
btel

Jawaban:


12

Untuk logging yang memungkinkan reproduksi penuh, saya sangat merekomendasikan paket python Sumatra . Ini baik menghubungkan nomor komit kontrol versi, keadaan mesin, dan file output untuk setiap program yang dijalankan dan memiliki antarmuka web Django untuk berinteraksi dengan database info run. API python membuatnya sangat mudah untuk memasukkan logging di skrip saya.


Sumatera terlihat sangat menarik; Saya harus mencobanya.
Geoff Oxberry

Itu tidak memenuhi semua persyaratan saya, tetapi paling dekat dengan apa yang saya butuhkan. Karena itu, saya menerima jawabannya. Pengungkapan: Saya adalah salah satu pengembang sumatra.
btel

8

Beberapa bulan yang lalu, saya menemukan situs web Hans-Martin v. Gaudecker yang sangat direkomendasikan yang mengajarkan kursus seperti "Praktek pemrograman yang efektif untuk ekonom". Dalam kursus Musim Gugur 2010, ia memperkenalkan SCons, dalam kursus Musim Gugur 2011, ia beralih ke waf , yang seharusnya lebih cepat dari SCons tetapi masih berbasis Python. Slide untuk kedua kursus tersedia untuk diunduh dan saya (sebagai ilmuwan sosial) menemukan mereka sangat instruktif dan mencerahkan.


1
SCons cantik. Ini mendukung skema yang sangat rumit atau sangat sederhana sama baiknya!
meawoppl

2
Pengorbanan antara SCons dan alat membangun yang lebih cepat umumnya berkaitan dengan pengecekan ketergantungan. Untuk bahasa umum (C, C ++, Fortran, D, Python, Java, dll.), SCons akan secara otomatis menentukan dependensi menggunakan algoritme berbasis hash MD5, dan bukan perangko waktu, yang dapat rapuh saat berurusan dengan file yang dihasilkan. Segala sesuatu yang lain mengalahkan SCons dalam kinerja (waktu yang diperlukan untuk membangun perangkat lunak) karena mereka tidak melakukan pengecekan dependensi terlalu banyak, atau mereka membongkar pemeriksaan dependensi ke beberapa alat lain (seperti kompiler yang digunakan).
Geoff Oxberry

1
Tautan pertama jawaban Anda adalah 404 sekarang. Tampaknya halaman barunya adalah di uni-bonn.de/~hmg308/teaching.html
liori

SCons memiliki pemeriksaan "up-to-dateness" yang dapat dikonfigurasi, sehingga Anda dapat memilih antara cap waktu, hash, atau kombinasi. Yang mengatakan, saya semakin kecewa dengan itu: Beberapa hal sangat mudah (misalnya mengkompilasi perangkat lunak menggunakan rantai alat yang SCons memiliki paket Alat yang baik) dan hampir semuanya mungkin, tetapi itu menjadi jelek dengan cepat.
Eric Anderson

4

Lihatlah VisTrails . Saya belum menggunakannya (hanya barang-barang rumahan make), tetapi terlihat dipikirkan dengan baik, dengan dokumen yang bagus, dan memiliki pengguna nyata di NASA dll.
(Apakah Anda mencari alat untuk 1-2 orang, 4-5, lebih banyak ?)

Ditambahkan: tidak cukup pertanyaan Anda, tapi saya pikir layak untuk diulang:
untuk eksperimen komputer yang seragam dan dapat diproduksi ulang yang jelas dibutuhkan

  • struktur direktori yang seragam, misalnya kapan-apa / masuk / keluar / skrip / log /
  • pengaturan seragam dan gema semua parameter untuk menjalankan
  • skrip untuk meringkas / plot / evaluasi berjalan.

Lihat juga software-carpentry.org : "Masalah yang kami coba selesaikan adalah bahwa para ilmuwan sering menghabiskan 40% atau lebih dari waktu mereka bergulat dengan perangkat lunak, tetapi 95% atau lebih dari mereka pada dasarnya otodidak".


4

Semua persyaratan yang Anda sebutkan dalam pertanyaan Anda dipenuhi oleh sistem skrip paralel Swift.

Saya menghabiskan satu tahun dengan kelompok Swift sebagai peneliti postdoctoral (PhD dalam alur kerja ilmiah). Kami telah membantu para ilmuwan dan peneliti dari berbagai domain mengatasi kebutuhan komputasi mereka.

Swift adalah kerangka kerja sumber terbuka untuk menjalankan alur kerja secara paralel. Ini disebut skrip paralel terutama untuk menyoroti fakta bahwa ia menyediakan antarmuka skrip untuk membuat alur kerja yang bertentangan dengan antarmuka kotak-panah GUI.

Saya pribadi dapat membantu Anda memulai dan menjalankan aplikasi Anda dengan Swift. Untuk mengetahui lebih lanjut tentang Swift, silakan lihat di sini .


Selamat datang di scicomp! Apakah Anda keberatan memperluas jawaban Anda sedikit lebih banyak (klik tombol edit abu-abu di bawah jawaban Anda) untuk mengedit. Juga, dapatkah Anda membuat koneksi Anda ke Swift sedikit lebih jelas dalam jawaban Anda? Terima kasih!
Aron Ahmadia

1

Taverna adalah WMS open-source, bukan Python tetapi Java.


Sudahkah Anda menggunakannya?
Deathbreath

Terima kasih untuk sarannya. Saya melihat situs web Taverna, tetapi sepertinya alat utamanya berupa grafis. Saya lebih suka mencari sesuatu yang berbasis command-line. Taverna memang menyediakan alat baris perintah, tetapi hanya untuk mengeksekusi alur kerja, tetapi tidak membangunnya (apakah benar?). Tampaknya juga sangat berorientasi pada bioinformatika.
btel

Menurut saya, Anda lebih mencari LIMS yang cocok untuk eksperimen numerik, daripada sistem build seperti make atau scon?
GertVdE

Maaf untuk bertanya. Apa artinya LIMS?
btel

1
Sistem Manajemen Informasi Laboratorium. Ini adalah keluarga alat untuk menyimpan catatan percobaan laboratorium. Tapi ini biasanya, misalnya, untuk analisis kimia. Anda mungkin ingin ke Google untuk "dalam percobaan silico", yaitu percobaan yang merupakan simulasi pada komputer dan memerlukan "logging" -> menyimpan data input / output, versi perangkat lunak apa yang digunakan, hipotesis, ...
GertVdE


0

Dexy terdengar seperti apa yang kamu cari. Dari situs:

Dexy adalah alat otomatisasi proyek serba guna dengan banyak fitur yang dirancang untuk bekerja dengan dokumen. Dexy ditulis dalam Python dan memiliki antarmuka baris perintah. Ini perangkat lunak open source dengan lisensi MIT.

Apa yang dilakukan Dexy?

Dexy memudahkan Anda membuat dokumen teknis dengan melakukan bagian berulang untuk Anda. Dexy menyediakan antarmuka yang konsisten ke alat dan skrip sehingga Anda tidak harus menjalankannya secara manual. Konfigurasi dexy proyek Anda melacak apa yang harus dijalankan, dalam urutan apa, dan dengan parameter apa. Dengan cara ini, seluruh proses Anda ditangkap sehingga siapa pun dapat menjalankannya menggunakan satu perintah sederhana dan hasilnya akan konsisten.

Anda ingin menulis posting blog dengan contoh-contoh yang menunjukkan cara menggunakan API. Dexy akan secara otomatis:

  • jalankan kode contoh Anda, simpan hasilnya
  • menerapkan penyorotan sintaksis ke kode contoh Anda (menggunakan pygments)
  • masukkan hasil panggilan API dan kode contoh Anda yang sudah diprogram ke dalam posting Anda (menggunakan jinja)
  • konversi posting blog Anda yang diformat dengan markdown ke HTML (menggunakan python markdown atau pandoc).
  • unggah HTML ke WordPress API dalam mode draft (menggunakan WordPress API)
  • publikasikan posting blog Anda ketika Anda selesai men-tweak

Saya telah mengikuti Dexy selama beberapa tahun, dan kesan yang saya dapatkan adalah bahwa itu tidak diadopsi secara luas, dan itu tidak dikembangkan secara aktif. Ciri-ciri ini bisa menjadi masalah ayam dan telur (basis pengguna kecil berarti itu tidak dikembangkan secara aktif, tidak dikembangkan secara aktif akan merusak pertumbuhan basis pengguna). Itu terlihat sangat keren, dan di wajahnya, saya pikir itulah yang dibutuhkan para ilmuwan untuk memperluas reproduktifitas di luar IPython, rajutan, dan skrip yang dipesan lebih dahulu, tetapi untuk beberapa alasan ... sepertinya tidak terbiasa. Ana Nelson bahkan tidak banyak menulis blog tentang itu, dan dia menulisnya.
Geoff Oxberry

Nah, posting gumpalan terbaru adalah dari Januari, dan ada 3 komitmen tahun ini. Tidak super aktif, tetapi tidak mati, terutama jika itu adalah salah satu proyek yang baru saja stabil dan tidak benar-benar membutuhkan pekerjaan lagi. Ada proyek lain yang saya gunakan dengan sejarah perkembangan terakhir yang jauh lebih mematikan. Adapun masalah ayam-dan-telur, mungkin upvote di sini dan di mana pun itu disebutkan pada SE akan membantu: P
naught101

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.