과학적인 워크 플로우 관리 시스템


30

누구나 나에게 좋은 워크 플로우 관리 시스템 (WMS)을 추천 할 수 있습니까? 지금까지 GNU Make를 사용해 왔지만 피하고 싶은 복잡한 계층을 소개합니다. 올바른 WMS에는 다음 기능이 있어야합니다.

  • 명령 행 도구 및 Python 스크립트와 쉽게 통합
  • 사용하기 쉽고 가벼우 며
  • 종속성을 처리하고
  • 명령 행 인터페이스 제공
  • 로깅 메커니즘 제공
  • (선택 사항) 데이터 출처를 제공합니다.

나는 WMS가 생물 정보학 (예 : Galaxy ) 에서 매우 인기가 있다는 것을 알고 있지만 더 일반적인 것을 찾고 있습니다.


2
이것은 완전한 대답은 아니지만 동일한 질문에서 GNU Make와 Python을 언급했기 때문에 SCons를 가리킬 것이라고 생각했습니다. scons.org
Reid.Atcheson

감사. 과학 워크 플로에 SCons를 사용하는 예를 알고 있습니까?
btel

약간의 작업으로 emacs가 대부분의 작업을 수행 할 수 있음을 알았습니다 (때로는 외부 도구와 통합하여). 그래도 필자가 찾고있는 것이 아닐 것입니다. 일반적으로 여전히 makefile을 사용하여 사소한 것을 컴파일해야하기 때문에.
Dan

1
Python 빌드 시스템 도구 인 SCons 및 waf에 대한 답변을 작성할 수 있습니다. 저는 몇 달 동안 SCons를 사용해 왔으며 GNU Make와 관련하여 무엇이 좋고 나쁜지에 대한 관점을 제공 할 수 있습니다. 즉, "로깅 메커니즘 제공"및 "데이터 출처 제공"의 의미에 대해 자세히 설명 할 수 있는지 궁금합니다. 로깅과 관련하여 로그 파일 만 원하십니까? 아니면 버전 제어 시스템과 유사한 것을 원하십니까?
Geoff Oxberry

1
로깅은 모든 실행의 타임 스탬프, stderr 및 (선택적으로) stdout의 리디렉션과 함께 로그 파일과 같은 매우 간단한 것일 수 있습니다. 또한 워크 플로우의 각 단계에서 중간 결과를 별도의 디렉토리에 유지할 수 있습니다. 데이터 출처는 모든 계산 스크립트, 입력 및 출력 파일의 기록을 유지하는 제어 버전 시스템과 유사합니다. 현재 Makefiles + git을 사용하고 있지만 더 통합되고 사용하기 쉬운 것을 찾습니다. 나는 SCons에 대해 들었지만 Make보다 이점이 무엇인지 모르겠습니다.
btel

답변:


12

완전한 재현성을 허용하는 로깅의 경우 Sumatra python 패키지를 적극 권장합니다 . 버전 제어 커밋 번호, 머신 상태 및 출력 파일을 각 프로그램 실행에 잘 연결하고 실행 정보 데이터베이스와 상호 작용하는 장고 웹 인터페이스가 있습니다. 파이썬 API를 사용하면 스크립트에 로깅을 포함시키기가 매우 쉽습니다.


수마트라는 정말 재미있어 보인다. 나는 그것을 시도해야합니다.
Geoff Oxberry

그것은 모든 요구 사항을 충족 시키지는 않지만 필요한 것에 가장 가깝습니다. 따라서 나는 대답을 받아 들였다. 공개 : 저는 수마트라 개발자 중 한 사람입니다.
btel

8

몇 달 전에 저는 "경제학자들을위한 효과적인 프로그래밍 관행"과 같은 강의를 가르치는 Hans-Martin v. Gaudecker 의 추천 웹 사이트를 우연히 발견했습니다 . 2010 년 가을 코스에서 SCons를 소개했고 2011 년 가을 코스에서 waf 로 전환 했는데, 이는 SCons보다 빠르지 만 여전히 Python 기반입니다. 두 코스의 슬라이드는 모두 다운로드 할 수 있으며 (사회 과학자로서) 매우 유익하고 깨달았습니다.


1
SCons는 꽤 rad입니다. 그것은 지원 이 매우 동일하게 schemae 매우 간단 복잡하거나!
meawoppl

2
SCons와 더 빠른 빌드 도구 간의 트레이드 오프는 일반적으로 종속성 검사와 관련이 있습니다. 주류 언어 (C, C ++, Fortran, D, Python, Java 등)의 경우 SCons는 생성 된 파일을 처리 할 때 깨지기 쉬운 타임 스탬프 대신 MD5 해시 기반 알고리즘을 사용하여 종속성을 자동으로 결정합니다. 종속성 검사를 많이 수행하지 않거나 사용되는 컴파일러와 같은 다른 도구로 종속성 검사를 오프로드하기 때문에 성능면에서 소프트웨어를 구축하는 데 필요한 시간보다 SCons를 능가합니다.
Geoff Oxberry

1
답의 첫 번째 링크는 404입니다. 그의 새 페이지는 uni-bonn.de/~hmg308/teaching.html에 있습니다
liori

SCons에는 "최신 상태"검사를 구성 할 수 있으므로 타임 스탬프, 해시 또는 일부 조합 중에서 선택할 수 있습니다. 즉, 나는 그것에 매료되고 있습니다. 몇 가지가 매우 쉽고 (예를 들어 SCons가 좋은 툴 패키지를 가진 툴 체인을 사용하여 소프트웨어를 컴파일하는 것) 거의 모든 것이 가능하지만, 아주 빨리 추악합니다.
Eric Anderson

4

VisTrails를 살펴 보십시오 . 나는 그것을 사용하지 않았지만 (가정용 사제 만 사용 make) 좋은 문서로 잘 생각하고 NASA 등에서 실제 사용자를 가지고
있습니다. ?)

추가 : 당신의 질문은 아니지만 반복할만한 가치가 있다고 생각합니다 :
균일하고 재현 가능한 컴퓨터 실험을 위해서는 분명히 필요합니다.

  • 균일 한 디렉토리 구조 (예 : when-what / in / out / scripts / log /)
  • 실행에 대한 모든 매개 변수 의 균일 한 설정 및 에코
  • 실행을 요약 / 플롯 / 평가하는 스크립트.

참조 software-carpentry.org "과학자들은 종종 소프트웨어보다 자신의 시간 레슬링의 40 %를 지출하거나 우리가 해결하려는 문제이지만, 95 % 이상의 그들은 주로 자기가 가르쳐있다".


4

귀하의 질문에 언급 된 모든 요구 사항은 Swift 병렬 스크립팅 시스템으로 충족됩니다.

나는 박사후 연구원으로 과학적 워크 플로 박사로 Swift 그룹과 1 년을 보냈습니다. 우리는 다른 분야의 과학자와 연구원들이 그들의 계산 요구를 해결하도록 돕고 있습니다.

Swift는 워크 플로를 병렬로 실행하기위한 오픈 소스 프레임 워크입니다. GUI 상자 화살표 인터페이스 대신 워크 플로를 작성하기위한 스크립팅 인터페이스를 제공한다는 사실을 강조하기 위해 주로 병렬 스크립팅이라고합니다.

Swift로 애플리케이션을 시작하고 실행하는 데 개인적으로 도움을 줄 수 있습니다. Swift에 대한 자세한 내용은 여기를 참조 하십시오 .


Scicomp에 오신 것을 환영합니다! 답변을 조금 더 확장 (답변 아래의 작은 회색 수정 버튼 클릭)하여 수정 하시겠습니까? 또한 답변에서 Swift와의 연결을 좀 더 명확하게 할 수 있습니까? 감사!
Aron Ahmadia

1

Taverna 는 Python이 아니라 Java 인 오픈 소스 WMS입니다.


사용 했습니까?
Deathbreath

제안 해 주셔서 감사합니다. Taverna 웹 사이트를 보았지만 주로 그래픽 도구처럼 보입니다. 차라리 커맨드 라인 기반의 무언가를 찾습니다. Taverna는 명령 줄 도구를 제공하지만 워크 플로 만 실행 하지만 빌드하지는 않습니다 (정확합니까?). 그것은 또한 생물 정보학 중심으로 보인다.
btel

나에게, 당신은 make 나 scons와 같은 빌드 시스템보다는 수치 실험에 적합한 LIMS를 찾고 있습니까?
GertVdE

물어 죄송합니다. LIMS는 정확히 무엇을 의미합니까?
btel

1
실험실 정보 관리 시스템. 실험실 실험 기록을 유지하는 도구 제품군입니다. 그러나 이들은 일반적으로 예를 들어 화학 분석에 사용됩니다. "실리코 실험", 즉 컴퓨터에서 시뮬레이션하고 "로깅"이 필요한 실험-> 입력 / 출력 데이터 저장, 사용 된 소프트웨어 버전, 가설, ...에 대해
Google에 문의 할 수 있습니다


0

Dexy 는 그것이 당신이 쫓는 것과 똑같습니다. 사이트에서 :

Dexy는 문서 작업을 위해 설계된 많은 기능을 갖춘 다목적 프로젝트 자동화 도구입니다. Dexy는 Python으로 작성되었으며 명령 행 인터페이스가 있습니다. MIT 라이센스가있는 오픈 소스 소프트웨어입니다.

Dexy는 무엇을합니까?

Dexy를 사용하면 반복적 인 부분을 수행하여 기술 문서를 쉽게 만들 수 있습니다. Dexy는 도구와 스크립트에 일관된 인터페이스를 제공하므로 수동으로 실행할 필요가 없습니다. 프로젝트의 dexy 구성은 실행할 항목, 순서 및 매개 변수를 추적합니다. 이렇게하면 전체 프로세스가 캡처되므로 누구나 하나의 간단한 명령을 사용하여 프로세스를 실행할 수 있으며 결과는 일관됩니다.

API 사용 방법을 보여주는 예제가 포함 된 블로그 게시물을 작성하려고합니다. Dexy는 자동적으로 :

  • 예제 코드를 실행하여 결과를 저장하십시오.
  • 예제 코드에 구문 강조 표시 (피그먼트 사용)
  • API 호출 결과 및 미리 작성된 예제 코드를 게시물에 삽입 (jinja 사용)
  • 마크 다운 형식의 블로그 게시물을 HTML로 변환합니다 (python markdown 또는 pandoc 사용).
  • 드래프트 모드에서 WordPress API에 HTML 업로드 (WordPress API 사용)
  • 조정이 끝나면 블로그 게시물을 게시하십시오.

나는 몇 년 동안 Dexy를 따라 왔으며, 내가 얻은 인상은 널리 채택되지 않았으며 적극적으로 개발되지 않았다는 것입니다. 이러한 특성은 닭과 계란 문제 일 수 있습니다 (작은 사용자 기반은 적극적으로 개발되지 않았으며, 적극적으로 개발되지 않으면 사용자 기반 성장을 손상시킵니다). 그것은 매우 시원하게 보이고, 얼굴에는 과학자들이 IPython, knitr 및 맞춤형 스크립트를 넘어 재현성을 확대해야한다고 생각합니다. 그러나 어떤 이유로 든 ... 사용되지 않는 것 같습니다. 아나 넬슨 (Ana Nelson)은 블로그에 대해 그다지 글을 쓰지 않았으며 글을 썼습니다.
Geoff Oxberry

최신 Blob 게시물은 1 월부터 올렸으며 올해에는 3 번의 커밋이있었습니다. 특히 활발하지 않고 실제로 더 이상 작업이 필요하지 않은 프로젝트 중 하나 인 경우, 매우 활동적이지는 않지만 죽은 것은 아닙니다. 최근 개발 이력이 훨씬 더 많은 다른 프로젝트가 있습니다. 닭과 계란 문제에 관해서는, 아마도 여기에
공언

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.