Наукова система управління робочим процесом


30

Хтось може порекомендувати мені гарну систему управління робочим потоком (WMS), бажано в Python? Поки що я використовував GNU Make, але він вносить шар складності, якого я хочу уникнути. Хороший WMS повинен мати такі особливості:

  • легко інтегруватися з інструментами командного рядка та сценаріями Python,
  • простий у використанні та легкий,
  • вирішувати залежності,
  • забезпечити інтерфейс командного рядка,
  • забезпечити механізм ведення журналу,
  • (необов'язково) забезпечувати корекцію даних.

Я знаю, що WMS дуже популярні в біоінформатиці (наприклад, Galaxy ), але я шукаю щось більш загальне.


2
Це не повна відповідь, але оскільки ви згадали GNU Make і Python в тому ж запитанні, я подумав, що я націлю
Reid.Atcheson

Спасибі. Чи знаєте ви будь-які приклади використання SCON для наукових робочих процесів?
btel

Я виявив, що трохи працюючи, ви можете змусити emacs робити більшу частину цього (іноді, інтегруючись із зовнішніми інструментами). Це, мабуть, не те, що ви шукаєте, хоча, як я вважаю, мені зазвичай доводиться використовувати файли для складання нічого нетривіального.
День

1
Я можу написати відповідь про SCons та waf, які є інструментами для побудови Python. Я вже декілька місяців використовую SCON, і я можу дати вам деяку точку зору на те, що добре і що погано в цьому відносно GNU Make. З цього приводу, мені було цікаво, чи можете ви детальніше пояснити, що ви маєте на увазі під "забезпечити механізм ведення журналів" та "забезпечити корекцію даних". Що стосується ведення журналу, то ви просто хочете записати файл чи шукаєте щось більше, як система контролю версій?
Джефф Оксберрі

1
Ведення журналу може бути чимось дуже простим, як реєстраційні файли, як ви пропонуєте, із часовими позначками всіх запусків, переадресацією stderr та (необов'язково) stdout. Крім того, можна було б зберігати проміжні результати з кожного кроку в робочому процесі в окремій папці. Проведення даних - це щось подібне до системи контрольних версій, яка зберігає історію всіх обчислювальних сценаріїв, вхідних та вихідних файлів. В даний час я використовую Makefiles + git, але шукаю щось краще інтегроване та простіше у використанні. Я чув про SCons, але не знаю, у чому його перевага перед Make.
btel

Відповіді:


12

Для ведення лісозаготівлі, що забезпечує повну відтворюваність, я настійно рекомендую пакет пітонів Sumatra . Він добре пов'язує номер комісії з контролю версій, стан машини та вихідні файли для кожного запуску програми та має веб-інтерфейс django для взаємодії з базою даних про інформацію про запуск. API python дозволяє дуже легко включати вхід до моїх сценаріїв.


Суматра виглядає дійсно цікаво; Мені доведеться спробувати.
Джефф Оксберрі

Він не відповідає всім моїм вимогам, але найближчий до того, що мені потрібно. Тому я прийняв відповідь. Розкриття: Я один із розробників сумари.
btel

8

Десь місяць тому я натрапив на настійно рекомендований веб-сайт Ганса-Мартіна проти Гаддекера, який викладає курси на кшталт "Ефективні практики програмування для економістів". У своєму курсі «Осінь 2010» він представив SCons, в курсі «Осінь 2011» він перейшов на waf , який повинен бути швидшим, ніж SCons, але все ще на основі Python. Слайди обох курсів доступні для завантаження, і я (як соціальний вчений) вважав їх дуже повчальними та освічуючими.


1
SCons є доволі радісним. Він однаково добре підтримує дуже складні або дуже прості схеми!
meawoppl

2
Компроміс між SCON і будь-яким швидшим інструментом побудови пов'язаний, як правило, з перевіркою залежності. Для основних мов (C, C ++, Fortran, D, Python, Java та ін.) SCons автоматично визначатиме залежності, використовуючи хеш-алгоритм на основі MD5, а не часові позначки, які можуть бути крихкими при роботі з генерованими файлами. Все інше перемагає SCON у продуктивності (час, необхідний для створення програмного забезпечення), тому що вони не роблять так багато перевірки залежності, або вони вивантажують перевірку залежності на інший інструмент (наприклад, використовувані компілятори).
Джефф Оксберрі

1
Перше посилання вашої відповіді зараз - 404. Здається, що його нова сторінка знаходиться на сайті uni-bonn.de/~hmg308/teaching.html
liori

SCons має налаштовану перевірку "сучасності", тому ви можете вибрати між часовою позначкою, хешем або деякою комбінацією. Це означає, що я стає невдоволений цим: Кілька речей дуже прості (наприклад, компілювання програмного забезпечення за допомогою ланцюжка інструментів, для яких SCons має хороші пакети інструментів), і майже все можливо, але це стає некрасивим досить швидко.
Ерік Андерсон

4

Погляньте на VisTrails . Я не використовував його (лише домашні речі make), але він виглядає добре продуманим, з хорошим документом і має реальних користувачів в NASA тощо.
(Шукаєте інструменти для 1-2 людей, 4-5 і більше ?)

Додано: не зовсім ваше запитання, але я думаю, що варто повторити:
для рівномірних відтворюваних комп'ютерних експериментів очевидно потрібен

  • рівномірні структури каталогів, наприклад, коли-що / у / вихід / сценарії / журнал /
  • рівномірне налаштування та відлуння всіх параметрів для пробігу
  • сценарії для підведення підсумків / побудови / оцінки пробігів.

Дивіться також software-carpentry.org : "Проблема, яку ми намагаємося вирішити, полягає в тому, що вчені часто витрачають 40% або більше часу на боротьбу з програмним забезпеченням, але 95% і більше з них в основному самоучки".


4

Усі вимоги, які ви згадали у своєму запитанні, виконує паралельна сценарна система Swift.

Я провів рік із групою Свіфт як докторантуру (доктор наук в галузі наукових робочих процесів). Ми допомагаємо вченим та дослідникам з різних областей вирішувати їхні обчислювальні потреби.

Swift - це програма з відкритим кодом для паралельного запуску робочих процесів. Його називають паралельним сценарієм в основному, щоб підкреслити той факт, що він забезпечує сценарій інтерфейсу для створення робочих процесів на відміну від інтерфейсу GUI-стрілки GUI.

Я особисто можу допомогти вам розпочати роботу та запустити свою програму із Swift. Щоб дізнатись більше про Swift, загляньте тут .


Ласкаво просимо до scicomp! Ви не хочете розширити свою відповідь ще трохи (натисніть маленьку сіру кнопку редагування нижче своєї відповіді), щоб змінити її. Крім того, чи можете ви зробити свій зв’язок зі Свіфт трохи чіткішим у своїй відповіді? Спасибі!
Арон Ахмадія

1

Taverna - це WMS з відкритим кодом, не Python, а Java.


Ви його використовували?
Смерть

Дякую за пропозицію. Я бачив веб-сайт Taverna, але це схоже на переважно графічний інструмент. Я швидше шукаю щось на основі командного рядка. Таверна надає інструмент командного рядка, але це лише для виконання робочих процесів, але не для їх побудови (чи правильно це?). Це також здається дуже орієнтованим на біоінформатику.
btel

Мені здається, ви більше шукаєте LIMS, придатний для чисельних експериментів, а не систему складання, як make або scons?
GertVdE

Вибачте, питаю. Що конкретно означає LIMS?
btel

1
Лабораторна система управління інформацією. Це сімейство інструментів для ведення журналу лабораторних експериментів. Але це, як правило, для хімічних аналізів. Ви можете скористатися Google для "експериментів з силіконом", тобто експериментів, які є моделюванням на комп'ютері і вимагають "ведення журналу" -> зберігання вхідних / вихідних даних, яка версія програмного забезпечення використовувалася, гіпотези, ...
GertVdE


0

Dexy звучить так, як це саме те, що ви шукаєте після. З сайту:

Dexy - це багатоцільовий інструмент автоматизації проектів з безліччю функцій, призначених для роботи з документами. Dexy написаний на Python і має інтерфейс командного рядка. Це програмне забезпечення з відкритим кодом з ліцензією MIT.

Що робить Dexy?

Dexy полегшує створення технічних документів, роблячи деталі, що повторюються. Dexy надає стійкий інтерфейс до інструментів та сценаріїв, тому не потрібно їх запускати вручну. Конфігурація дексі для вашого проекту відстежує, що потрібно запустити, в якому порядку та з якими параметрами. Таким чином, весь ваш процес захоплюється, тому кожен може запустити його за допомогою однієї простої команди, і результати будуть узгодженими.

Ви хочете написати допис у блозі з прикладами, що показують, як використовувати API. Dexy автоматично:

  • запустіть свій приклад код, зберігаючи результати
  • застосувати підсвічування синтаксису до прикладу коду (використовуючи пігменти)
  • вставити результати викликів API і ваш попередньо прикладний код у свою посаду (використовуючи jinja)
  • конвертувати розміщену в блозі розмітку у форматі розмітки в HTML (використовуючи python markdown або pandoc).
  • завантажте HTML в API WordPress у режимі чернетки (використовуючи API WordPress)
  • опублікуйте свою публікацію в блозі, коли ви закінчите її переробляти

Я стежив за Dexy протягом декількох років, і враження, які я склав, - це те, що він не широко прийнятий, і він не активно розвинений. Ці риси можуть бути проблемою з курячими яйцями (невелика база користувачів означає, що вона недостатньо розвинена, а не активно розвивається шкодить зростанню бази користувачів). Це виглядає дуже круто, і на обличчі, я думаю, що саме це потрібно вченим для розширення відтворюваності за межами сценаріїв IPython, knitr та індивідуальних замовлень, але чомусь ... це просто не здається, що воно звикає. Ана Нельсон навіть не дуже багато пише про це, і вона це написала.
Джефф Оксберрі

Що ж, останнє повідомлення про блог - з січня, і цього року було 3 комісії. Не надто активний, але не мертвий, особливо якщо це один із тих проектів, який просто стає стабільним і не потребує більше роботи. Є й інший проект, який я використовую з більш мертвими історіями недавнього розвитку. Що стосується проблеми з куркою та яйцем, можливо, тут допоможе відгук і де б там не було зазначено в SE: P
naught101

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.