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


30

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

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

Я знаю, что WMS очень популярны в биоинформатике (например, Galaxy ), но я ищу что-то более общее.


2
Это не полный ответ, но так как вы упомянули GNU Make и Python в одном и том же вопросе, я подумал, что я укажу
Reid.Atcheson

Спасибо. Знаете ли вы какие-либо примеры использования SCons для научных рабочих процессов?
btel

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

1
Я могу написать ответ о SCons и waf, которые являются инструментами системы сборки Python. Я использую SCons уже несколько месяцев и могу дать вам представление о том, что в этом хорошего и плохого по сравнению с GNU Make. Тем не менее, мне было интересно, если бы вы могли уточнить, что вы подразумеваете под «обеспечить механизм ведения журнала» и «обеспечить происхождение данных». С точки зрения ведения журнала, вы просто хотите файл журнала, или вы ищете что-то более похожее на систему контроля версий?
Джефф Оксберри

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

Ответы:


12

Для ведения журнала, обеспечивающего полную воспроизводимость, я настоятельно рекомендую пакет Python Sumatra . Он прекрасно связывает номер коммита управления версиями, состояние машины и выходные файлы с каждым запуском программы и имеет веб-интерфейс django для взаимодействия с базой данных информации о прогоне. 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 есть хорошие пакеты инструментов), и почти все возможно, но это становится довольно уродливым довольно быстро.
Эрик Андерсон

4

Посмотрите на VisTrails . Я не использовал его (только доморощенный материал make), но он выглядит хорошо продуманным, с хорошим документооборотом и имеет реальных пользователей в НАСА и т. Д.
(Вы ищете инструменты для 1-2 человек, 4-5, больше ?)

Добавлено: не совсем ваш вопрос, но я думаю, стоит повторить:
для единообразных, воспроизводимых компьютерных экспериментов, очевидно, нужны

  • единые структуры каталогов, например когда-что / in / out / scripts / log /
  • единообразная настройка и отображение всех параметров для пробега
  • сценарии для подведения итогов / построения / оценки прогонов.

См. Также software-carpentry.org : «Проблема, которую мы пытаемся решить, состоит в том, что ученые часто тратят 40% или более своего времени на борьбу с программным обеспечением, но 95% или более из них в основном самоучки».


4

Все требования, которые вы упомянули в своем вопросе, выполняются системой параллельных сценариев Swift.

Я провел год в группе Swift в качестве научного сотрудника (доктор наук в области научных процессов). Мы помогаем ученым и исследователям из разных областей удовлетворить их вычислительные потребности.

Swift - это платформа с открытым исходным кодом для параллельного запуска рабочих процессов. Он называется параллельным сценарием, главным образом для того, чтобы подчеркнуть тот факт, что он предоставляет интерфейс сценариев для создания рабочих процессов, а не интерфейс GUI box-arrow.

Я могу лично помочь вам начать работу с приложением Swift. Чтобы узнать больше о Swift, пожалуйста, посмотрите здесь .


Добро пожаловать в Scicomp! Не возражаете ли вы расширить свой ответ немного больше (нажмите маленькую серую кнопку редактирования под вашим ответом) для редактирования. Кроме того, можете ли вы сделать ваше подключение к Swift более понятным в своем ответе? Благодарность!
Арон Ахмадиа

1

Taverna - это WMS с открытым исходным кодом, не Python, а Java.


Вы использовали это?
Смертельное дыхание

Спасибо за предложение. Я видел веб-сайт Taverna, но он выглядит в основном как графический инструмент. Я скорее ищу что-то на основе командной строки. Taverna предоставляет инструмент командной строки, но он предназначен только для выполнения рабочих процессов, но не для их построения (это правильно?). Это также кажется очень ориентированным на биоинформатику.
Btel

Мне кажется, вы больше ищете ЛИМС, подходящий для численных экспериментов, а не систему сборки, такую ​​как make или scons?
GertVdE

Извините, что спросил. Что именно означает ЛИМС?
btel

1
Лабораторная система управления информацией. Это семейство инструментов для ведения журнала лабораторных экспериментов. Но это, как правило, например, для химических анализов. Возможно, вы захотите использовать Google для «экспериментов in silico», то есть экспериментов, которые являются симуляциями на компьютере и требуют «ведения журнала» -> сохранения данных ввода / вывода, какой версии программного обеспечения использовались, гипотезы, ...
GertVdE


0

Dexy звучит так, будто это именно то, что вы делаете после С сайта:

Dexy - это многоцелевой инструмент автоматизации проектов с множеством функций, предназначенных для работы с документами. Dexy написан на Python и имеет интерфейс командной строки. Это программное обеспечение с открытым исходным кодом с лицензией MIT.

Что делает Dexy?

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

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

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

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

Ну, последний пост от января, и в этом году было 3 коммитов. Не супер активный, но и не мертвый, особенно если это один из тех проектов, который только что вышел в стабильный режим и больше не нуждается в дополнительной работе. Есть другой проект, который я использую с гораздо более недавними историями развития. Что касается проблемы курицы с яйцом, то, возможно, здесь и в любом другом месте может помочь
всплывающее сообщение

0

Knime или Rapidminer, вероятно, также могут удовлетворить все требования. Должны ли они быть на связи :)


Может быть, Кеплер тоже.
Grimbly

Кроме того, Nifi довольно изящен , но я не думаю, что он полностью покрывает все требования.
Grimbly
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.