Hệ thống quản lý quy trình làm việc khoa học


30

Ai đó có thể giới thiệu cho tôi một hệ thống quản lý quy trình công việc tốt (WMS), tốt nhất là bằng Python không? Cho đến nay tôi vẫn đang sử dụng GNU Make, nhưng nó giới thiệu một lớp phức tạp mà tôi muốn tránh. Một WMS tốt nên có các tính năng sau:

  • dễ dàng tích hợp với các công cụ dòng lệnh và tập lệnh Python,
  • đơn giản để sử dụng và nhẹ,
  • xử lý các phụ thuộc,
  • cung cấp giao diện dòng lệnh,
  • cung cấp cơ chế đăng nhập,
  • (tùy chọn) cung cấp dữ liệu xuất xứ.

Tôi biết rằng WMS rất phổ biến trong tin sinh học (ví dụ Galaxy ), nhưng tôi đang tìm kiếm một cái gì đó tổng quát hơn.


2
Đây không phải là một câu trả lời hoàn chỉnh, nhưng vì bạn đã đề cập đến GNU Make và Python trong cùng một câu hỏi, tôi nghĩ tôi sẽ hướng bạn tới SCons: scons.org
Reid.Atcheson

Cảm ơn. Bạn có biết bất kỳ ví dụ nào sử dụng SCons cho quy trình làm việc khoa học không?
btel

Tôi đã thấy rằng với một chút công việc, bạn có thể khiến emacs thực hiện hầu hết điều đó (đôi khi bằng cách tích hợp với các công cụ bên ngoài). Tuy nhiên, đó có thể không phải là thứ bạn đang tìm kiếm, vì tôi thấy tôi thường vẫn phải sử dụng tệp tạo tệp để biên dịch bất cứ thứ gì không cần thiết.
Dan

1
Tôi có thể viết câu trả lời về SCons và waf, đó là các công cụ hệ thống xây dựng Python. Tôi đã sử dụng SCons được vài tháng rồi và có thể cung cấp cho bạn một số quan điểm về những điều tốt và xấu về nó so với GNU Make. Điều đó nói rằng, tôi đã tự hỏi nếu bạn có thể giải thích những gì bạn có nghĩa là "cung cấp cơ chế ghi nhật ký" và "cung cấp nguồn gốc dữ liệu". Về mặt đăng nhập, bạn chỉ muốn một logfile, hay bạn đang tìm kiếm một cái gì đó giống như một hệ thống kiểm soát phiên bản?
Geoff Oxberry

1
Ghi nhật ký có thể là một cái gì đó rất đơn giản như logfiles, như bạn đề xuất, với dấu thời gian của tất cả các lần chạy, chuyển hướng của thiết bị xuất chuẩn và thiết bị xuất chuẩn (tùy chọn). Ngoài ra, người ta có thể giữ các kết quả trung gian từ mỗi bước trong quy trình làm việc trong một thư mục riêng. Nguồn gốc dữ liệu là một cái gì đó giống như một hệ thống phiên bản điều khiển lưu giữ lịch sử của tất cả các tập lệnh tính toán, các tệp đầu vào và đầu ra. Hiện tại, tôi sử dụng Makefiles + git nhưng tôi tìm kiếm thứ gì đó tích hợp tốt hơn và dễ sử dụng hơn. Tôi đã nghe nói về SCons nhưng tôi không biết lợi thế của nó so với Make là gì.
btel

Câu trả lời:


12

Để đăng nhập cho phép tái sản xuất đầy đủ, tôi khuyên bạn nên sử dụng gói trăn Sumatra . Nó liên kết độc đáo số cam kết kiểm soát phiên bản, trạng thái máy và các tệp đầu ra cho mỗi chương trình chạy và có giao diện web django để tương tác với cơ sở dữ liệu thông tin chạy. API python giúp việc đăng nhập các tập lệnh của tôi trở nên rất dễ dàng.


Sumatra trông thực sự thú vị; Tôi sẽ phải thử.
Geoff Oxberry

Nó không đáp ứng tất cả các yêu cầu của tôi, nhưng nó gần nhất với những gì tôi cần. Do đó, tôi đã chấp nhận câu trả lời. Tiết lộ: Tôi là một trong những nhà phát triển của sumatra.
btel

8

Vài tháng trước, tôi tình cờ thấy trang web rất được đề xuất của Hans-Martin v. Gaudecker , người dạy các khóa học như "Thực hành lập trình hiệu quả cho các nhà kinh tế". Trong khóa học Mùa thu 2010 của mình, anh đã giới thiệu SCons, trong khóa học Mùa thu 2011, anh đã chuyển sang waf , được cho là nhanh hơn SCons nhưng vẫn dựa trên Python. Các slide cho cả hai khóa học đều có sẵn để tải xuống và tôi (với tư cách là một nhà khoa học xã hội) thấy chúng rất hướng dẫn và khai sáng.


1
SCons là rad khá. Nó hỗ trợ lược đồ rất phức tạp hoặc rất đơn giản như nhau!
meawoppl

2
Sự đánh đổi giữa SCons và bất kỳ công cụ xây dựng nhanh hơn thường phải làm với việc kiểm tra phụ thuộc. Đối với các ngôn ngữ chính (C, C ++, Fortran, D, Python, Java, v.v.), SCons sẽ tự động xác định các phụ thuộc bằng thuật toán băm MD5, thay vì dấu thời gian, có thể dễ vỡ khi xử lý các tệp được tạo. Mọi thứ khác đều đánh bại SCons về hiệu suất (cần có thời gian để xây dựng phần mềm) vì họ không thực hiện kiểm tra phụ thuộc nhiều hoặc họ giảm tải kiểm tra phụ thuộc vào một số công cụ khác (như trình biên dịch được sử dụng).
Geoff Oxberry

1
Liên kết đầu tiên của câu trả lời của bạn là 404 bây giờ. Có vẻ như trang mới của anh ấy ở uni-bonn.de/~hmg308/teaching.html
liori

SCons có chức năng kiểm tra "tính kịp thời" có thể định cấu hình, do đó bạn có thể chọn giữa dấu thời gian, hàm băm hoặc một số kết hợp. Điều đó nói rằng, tôi ngày càng không hài lòng với nó: Một vài điều rất dễ dàng (ví dụ: biên dịch phần mềm bằng chuỗi công cụ mà SCons có các gói Công cụ tốt) và hầu như mọi thứ đều có thể, nhưng nó trở nên xấu đi khá nhanh.
Eric Anderson

4

Hãy xem VisTrails . Tôi chưa sử dụng nó (chỉ những thứ homebrew xung quanh make), nhưng nó có vẻ rất chu đáo, với tài liệu tốt và có người dùng thực sự tại NASA, v.v.
(Bạn đang tìm kiếm công cụ cho 1-2 người, 4-5, hơn thế nữa ?)

Đã thêm: không hoàn toàn là câu hỏi của bạn, nhưng tôi nghĩ đáng để nhắc lại:
đối với các thí nghiệm máy tính có thể lặp lại , thống nhất, rõ ràng người ta cần

  • cấu trúc thư mục thống nhất, ví dụ khi-what / in / out / scripts / log /
  • thiết lập thống nhất và lặp lại tất cả các tham số cho một lần chạy
  • kịch bản để tóm tắt / cốt truyện / đánh giá chạy.

Xem thêm phần mềm-carpentry.org : "Vấn đề chúng tôi đang cố gắng giải quyết là các nhà khoa học thường dành 40% thời gian để vật lộn với phần mềm, nhưng 95% hoặc nhiều hơn trong số đó chủ yếu là tự học".


4

Tất cả các yêu cầu bạn đề cập trong câu hỏi của bạn được đáp ứng bởi hệ thống kịch bản song song Swift.

Tôi đã dành một năm với nhóm Swift với tư cách là nhà nghiên cứu sau tiến sĩ (Tiến sĩ về quy trình làm việc khoa học). Chúng tôi đã giúp các nhà khoa học và nhà nghiên cứu từ các lĩnh vực khác nhau giải quyết nhu cầu tính toán của họ.

Swift là một khung công tác mã nguồn mở để chạy các luồng công việc theo cách song song. Nó được gọi là kịch bản song song chủ yếu để làm nổi bật thực tế là nó cung cấp giao diện kịch bản để tạo các luồng công việc trái ngược với giao diện mũi tên hộp GUI.

Cá nhân tôi có thể giúp bạn bắt đầu và chạy ứng dụng của bạn với Swift. Để biết thêm về Swift, vui lòng xem tại đây .


Chào mừng bạn đến với scicomp! Bạn có nhớ mở rộng câu trả lời của mình thêm một chút không (nhấp vào nút chỉnh sửa nhỏ màu xám bên dưới câu trả lời của bạn) để chỉnh sửa. Ngoài ra, bạn có thể làm cho kết nối của bạn với Swift rõ ràng hơn một chút trong câu trả lời của bạn không? Cảm ơn!
Aron Ahmadia

1

Taverna là một WMS mã nguồn mở, không phải Python mà là Java.


Bạn đã sử dụng nó?
Deathbreath

Cám ơn vì sự gợi ý. Tôi thấy trang web của Taverna, nhưng nó trông giống như một công cụ đồ họa chủ yếu. Tôi thay vì tìm kiếm một cái gì đó dựa trên dòng lệnh. Taverna không cung cấp công cụ dòng lệnh, nhưng nó chỉ để thực hiện các quy trình công việc chứ không xây dựng chúng (có đúng không?). Nó cũng có vẻ rất nhiều định hướng tin sinh học.
btel

Dường như với tôi, bạn đang tìm kiếm một LIMS phù hợp cho các thử nghiệm số, thay vì một hệ thống xây dựng như make hoặc scons?
GertVdE

Xin lỗi cho hỏi. LIMS có nghĩa là gì?
btel

1
Hệ thống quản lý thông tin phòng thí nghiệm. Đó là một gia đình các công cụ để ghi nhật ký thí nghiệm. Nhưng đây là những ví dụ điển hình cho các phân tích hóa học. Bạn có thể muốn Google cho "trong các thử nghiệm silico", tức là các thử nghiệm mô phỏng trên máy tính và yêu cầu "ghi nhật ký" -> lưu trữ dữ liệu đầu vào / đầu ra, phiên bản phần mềm nào đã được sử dụng, giả thuyết, ...
GertVdE


0

Dexy nghe có vẻ chính xác là những gì bạn khu vực sau. Từ trang web:

Dexy là một công cụ tự động hóa dự án đa mục đích với nhiều tính năng được thiết kế để làm việc với các tài liệu. Dexy được viết bằng Python và có giao diện dòng lệnh. Đó là phần mềm nguồn mở có giấy phép MIT.

Dexy làm gì?

Dexy giúp tạo tài liệu kỹ thuật dễ dàng hơn bằng cách thực hiện các phần lặp đi lặp lại cho bạn. Dexy cung cấp giao diện nhất quán cho các công cụ và tập lệnh để bạn không phải chạy chúng theo cách thủ công. Cấu hình khéo léo của dự án của bạn theo dõi những gì sẽ chạy, theo thứ tự và với các tham số. Bằng cách này, toàn bộ quá trình của bạn được nắm bắt để bất kỳ ai cũng có thể chạy nó bằng một lệnh đơn giản và kết quả sẽ nhất quán.

Bạn muốn viết một bài đăng blog với các ví dụ cho thấy cách sử dụng API. Dexy sẽ tự động:

  • chạy mã ví dụ của bạn, lưu kết quả
  • áp dụng tô sáng cú pháp cho mã ví dụ của bạn (sử dụng pygments)
  • chèn kết quả của các lệnh gọi API và mã ví dụ đã được chỉnh sửa của bạn vào bài đăng của bạn (sử dụng jinja)
  • chuyển đổi bài đăng trên blog được định dạng markdown của bạn thành HTML (sử dụng python markdown hoặc pandoc).
  • tải HTML lên API WordPress ở chế độ nháp (sử dụng API WordPress)
  • xuất bản bài đăng trên blog của bạn khi bạn hoàn thành việc chỉnh nó

Tôi đã theo dõi Dexy trong một vài năm và những ấn tượng tôi nhận được là nó không được chấp nhận rộng rãi và nó không được phát triển tích cực. Những đặc điểm này có thể là vấn đề trứng gà (cơ sở người dùng nhỏ có nghĩa là nó không được phát triển tích cực, không được phát triển tích cực làm tổn hại đến sự tăng trưởng cơ sở người dùng). Nó trông rất tuyệt, và trên khuôn mặt của nó, tôi nghĩ đó chính xác là những gì các nhà khoa học cần để mở rộng khả năng tái tạo ngoài các tập lệnh IPython, đan và bespoke, nhưng vì một số lý do ... có vẻ như nó không được sử dụng. Ana Nelson thậm chí không viết blog nhiều về nó, và cô ấy đã viết nó.
Geoff Oxberry

Vâng, bài viết mới nhất của blob là từ tháng 1, và đã có 3 lần cam kết trong năm nay. Không siêu tích cực, nhưng không chết, đặc biệt nếu đó là một trong những dự án ổn định và không thực sự cần thêm bất kỳ công việc nào. Có những dự án khác tôi sử dụng với lịch sử phát triển gần đây đã chết hơn nhiều. Đối với vấn đề trứng gà, có thể một upvote ở đây và bất cứ nơi nào khác được đề cập trên SE sẽ giúp ích: P
naught101

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.