Bilimsel iş akışı yönetim sistemi


30

Biri bana, tercihen Python'da iyi bir iş akışı yönetim sistemi (WMS) önerebilir mi? Şimdiye kadar GNU Make'ı kullanıyorum, fakat kaçınmak istediğim bir karmaşıklık katmanını tanıtıyor. İyi bir WMS, aşağıdaki özelliklere sahip olmalıdır:

  • komut satırı araçları ve Python scriptleri ile kolayca entegre edilebilir,
  • kullanımı basit ve hafif,
  • bağımlılıkları ele almak,
  • komut satırı arayüzü sağlamak,
  • kayıt mekanizması sağlamak,
  • (isteğe bağlı) veri kanıtı sağlar.

WMS'nin biyoinformatikte çok popüler olduğunu biliyorum (örneğin Galaxy ), ancak daha genel bir şey arıyorum.


2
Bu tam bir cevap değil, fakat aynı soruda GNU Make ve Python'dan bahsettiğinizden, sizi SCons'a yönlendireceğimi düşündüm: scons.org
Reid.Atcheson 13.03

Teşekkürler. Bilimsel iş akışları için SCON kullanmanın herhangi bir örneğini biliyor musunuz?
btel

Biraz çalışarak, çoğu zaman emacs yapabileceğinizi öğrendim (bazen dış araçlarla bütünleşerek). Muhtemelen aradığın şey bu değildir, çünkü genel olarak önemsiz bir şey derlemek için genellikle makefiles kullanmam gerektiğini düşünüyorum.
Dan

1
Python'un oluşturduğu sistem araçları olan SCON'larla waf hakkında bir cevap yazabilirim. SCON'ları birkaç aydır kullandım ve GNU Make'a göre neyin iyi ve kötü olduğuna dair bir bakış açısı sağlayabilir. Bununla birlikte, "kayıt mekanizması sağlayın" ve "veri kanıtı sağlayın" ile ne demek istediğinizi ayrıntılandırabilir misiniz diye merak ediyordum. Günlük kaydı açısından, sadece bir günlük dosyası mı istiyorsunuz yoksa sürüm kontrol sistemi gibi bir şey mi arıyorsunuz?
Geoff Oxberry

1
Günlük kaydı, önerdiğiniz gibi, tüm çalışmaların zaman damgalarıyla stderr ve (isteğe bağlı olarak) stdout komutunun yönlendirmesi gibi çok basit bir şey olabilir. Ek olarak, iş akışındaki her bir adımdaki ara sonuçlar ayrı bir dizinde tutulabilir. Veri kanıtlama, tüm hesaplama komut dosyalarının, giriş ve çıkış dosyalarının geçmişini tutan kontrol sürüm sistemi gibi bir şeydir. Şu anda Makefiles + git'i kullanıyorum ancak daha iyi entegre ve kullanımı daha kolay bir şey arıyorum. SCons'u duydum ama Make'e göre avantajının ne olduğunu bilmiyorum.
btel

Yanıtlar:


12

Tam tekrarlanabilirliğe izin veren günlük kaydı için, Sumatra python paketini . Versiyon kontrolü taahhüt numarası, makine durumu ve çıktı dosyalarını çalıştırılan her programa güzel bir şekilde bağlar ve çalıştırma bilgisi veritabanıyla etkileşime geçmek için bir django web arayüzüne sahiptir. Python API, scriptlerime giriş yapmayı çok kolaylaştırıyor.


Sumatra gerçekten ilginç görünüyor; Bir denemek zorundayım.
Geoff Oxberry

Tüm gereksinimlerimi yerine getirmiyor, ancak ihtiyacım olanlara en yakın olanı. Bu nedenle cevabı kabul ettim. Açıklama: Ben sumatra geliştiricilerinden biriyim.
1912'de

8

Bir ay önce, son derece tavsiye edilen web sitesine rastladım. "Ekonomistler için etkili programlama uygulamaları" gibi dersler veren Hans-Martin v. Gaudecker'ın . Onun Sonbahar 2010'da kurs onun Sonbahar 2011'de Elbette geçti, Scons tanıtıldı WAF'ın hızlı Scons ama hala Python tabanlı daha olması gerekiyordu. Her iki ders için de slaytlar indirilebilir durumda ve ben (sosyal bilimci olarak) onları çok öğretici ve aydınlatıcı buldum.


1
SCons güzel bir rad. Çok karmaşık ya da çok basit şemaları eşit derecede iyi destekliyor !
meawoppl

2
SCons ile daha hızlı bir geliştirme aracı arasındaki geçiş genellikle bağımlılık kontrolüyle ilgilidir. Ana diller için (C, C ++, Fortran, D, Python, Java, vb.), SCons, oluşturulan dosyalar ile ilgilenirken hassas olabilecek zaman damgaları yerine MD5 karma tabanlı bir algoritma kullanarak bağımlılıkları otomatik olarak belirleyecektir. Diğer her şey, SCON'ları performansta yener (yazılım oluşturmak için gereken zaman) çünkü çok fazla bağımlılık kontrolü yapmazlar veya bağımlılık kontrolünü başka bir araca (kullanılan derleyiciler gibi) boşaltırlar.
Geoff Oxberry

1
Cevabınızın ilk linki şimdi 404. Görünen o ki yeni sayfası uni-bonn.de/~hmg308/teaching.html
liori 20:12

SCons yapılandırılabilir "güncel" kontrolüne sahiptir, böylece zaman damgası, karma veya bazı kombinasyonlar arasından seçim yapabilirsiniz. Bununla birlikte, kendimi küçümsüyorum: Birkaç şey çok kolay (örneğin, SCons'un iyi Alet paketlerine sahip olduğu bir araç zinciri kullanarak yazılım derleme) ve neredeyse her şey mümkün, ancak çok çabuk çirkinleşiyor.
Eric Anderson

4

VisTrails'e bir göz atın . Ben kullanmadım (sadece homebrew şeyler etrafındamake ), ama iyi düşünülmüş, iyi doktorlarla ve NASA'da gerçek kullanıcılar var.
(1-2 kişi, 4-5, daha fazlası için araçlar mı arıyorsunuz?) ?)

Eklendi: tam olarak sorunuz değil, ama tekrar etmeye değer olduğunu düşünüyorum:
açık bir şekilde ihtiyaç duyulan tek tip, tekrarlanabilir bilgisayar deneyleri için

  • Tekdüzen dizin yapıları, örneğin, ne-ne / in / out / script / log /
  • üniform ayar ve yankı Bir çalıştırma için tüm parametrelerin
  • Çalışmaları özetlemek / çizmek / değerlendirmek için komut dosyaları.

Ayrıca bkz. Software-carpentry.org : "Çözmeye çalıştığımız sorun, bilim adamlarının çoğu zaman zamanlarının% 40'ını veya daha fazlasını yazılımla güreşmekle geçirmeleri, ancak% 95'inin veya daha fazlasının öncelikle kendi kendine öğretilmesidir".


4

Sorunuzda bahsettiğiniz tüm gereksinimler Swift paralel komut dosyası sistemi tarafından yerine getirilir.

Bir yılını Swift grubuyla doktora sonrası araştırmacı olarak geçirdim (bilimsel iş akışında doktora). Farklı alanlardan bilim adamlarına ve araştırmacılara hesaplama ihtiyaçlarını karşılamalarında yardımcı oluyoruz.

Swift, iş akışlarını paralel olarak yürütmek için açık kaynaklı bir çerçevedir. GUI box-arrow arabiriminin aksine, iş akışları oluşturmaya yönelik bir betik arabirimi sağladığını vurgulamak için paralel betik denir.

Swift ile başvurunuzu başlatmanıza ve çalıştırmanıza şahsen yardımcı olabilirim. Swift hakkında daha fazla bilgi için lütfen buraya bir göz atın .


Scicomp'e hoş geldiniz! Düzenlemek için cevabınızı biraz daha genişletmeyi düşünüyor musunuz (cevabınızın altındaki küçük gri düzenleme düğmesini tıklayın). Ayrıca, Swift ile olan bağlantınızı cevabınızda biraz daha netleştirebilir misiniz? Teşekkürler!
Aron Ahmadia

1

Taverna açık kaynaklı bir WMS'dir, Python değil Java.


Kullandın mı
Deathbreath

Önerin için teşekkürler. Taverna web sitesini gördüm, ama esas olarak grafiksel bir araç gibi görünüyor. Komut satırı tabanlı bir şey aramayı tercih ederim. Taverna komut satırı aracı sağlar, ancak yalnızca iş akışlarını yürütmek , ancak bunları oluşturmak değildir (doğru mu?). Aynı zamanda biyoinformatik odaklı çok görünüyor.
btel,

Bana öyle geliyor ki, make veya scons gibi bir inşa sistemi yerine, sayısal deneylere uygun bir LIMS mi arıyorsunuz?
GertVdE

Sorduğum için üzgünüm. LIMS tam olarak ne anlama geliyor?
btel

1
Laboratuvar Bilgi Yönetim Sistemi. Laboratuvar deneylerinin kaydını tutmak için bir araç ailesi. Ancak bunlar tipik olarak örneğin kimyasal analizler içindir. Google’da "silico deneylerinde", yani bir bilgisayarda simülasyon yapan ve "günlüğe kaydetme" gerektiren> giriş / çıkış verilerini depolayan, yazılımın hangi versiyonunun kullanıldığı, hipotezler, ...
GertVdE


0

Dexy , tam olarak neyin peşinde olduğunuza benziyor. Siteden:

Dexy, belgelerle çalışmak için tasarlanmış birçok özelliğe sahip çok amaçlı bir proje otomasyon aracıdır. Dexy Python ile yazılmış ve bir komut satırı arayüzü var. MIT lisanslı açık kaynaklı bir yazılımdır.

Dexy ne yapar?

Dexy, sizin için tekrarlayan parçaları yaparak teknik belgeler oluşturmayı kolaylaştırır. Dexy, araçlara ve komut dosyalarına tutarlı bir arayüz sağlar, böylece bunları manuel olarak çalıştırmanıza gerek kalmaz. Projenizin dexy yapılandırması neyin çalıştırılacağını, hangi sırayla ve hangi parametrelerle izini tutar. Bu şekilde, tüm işleminiz yakalanır, böylece herkes basit bir komut kullanarak onu çalıştırabilir ve sonuçlar tutarlı olacaktır.

Bir API'nin nasıl kullanılacağını gösteren örneklerle bir blog yazısı yazmak istiyorsunuz. Dexy otomatik olarak:

  • Örnek kodunuzu çalıştırın, sonuçları kaydedin.
  • Örnek kodunuzu vurgulayarak sözdizimi uygulayın (pygments kullanarak)
  • API çağrıları sonuçlarını ve örnek kodunuzu yazınıza ekleyin (jinja kullanarak)
  • markdown biçimli blog gönderinizi HTML'ye dönüştürün (python markdown veya pandoc kullanarak).
  • HTML'yi taslak modunda WordPress API'sine yükleyin (WordPress API'sini kullanarak)
  • ince ayar bittiğinde blog yayınınızı yayınlayın

Dexy'yi birkaç yıl takip ettim ve edindiğim izlenimler yaygın olarak benimsenmediği ve aktif olarak geliştirilmediği yönünde. Bu özellikler bir tavuk-yumurta problemi olabilir (küçük bir kullanıcı tabanı, aktif olarak geliştirilmediği, aktif olarak geliştirilmemesi, kullanıcı tabanının büyümesine zarar verir). Süper havalı görünüyor ve yüzünde, bilim adamlarının IPython, knitr ve ısmarlama senaryoların ötesinde yeniden üretilebilirliği genişletmek için tam da ihtiyaç duydukları şey olduğunu düşünüyorum. Ana Nelson bu konuda pek blog yazmıyor ve yazdı.
Geoff Oxberry

Son blob, Ocak ayına ait ve bu yıl 3 görev yapıldı. Süper aktif değil, ama ölü değil, özellikle de kararlı olan ve daha fazla çalışmaya ihtiyaç duymayan projelerden biriyse. Çok yakın geçmişte gelişme tarihçesiyle kullandığım başka projeler var. Tavuk ve yumurta problemi gelince, belki burada bir yükseliş ve SE'de belirtilen her yerde yardımcı olur: P
naught101

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.