Cách tốt nhất để làm nghiên cứu tái sản xuất nếu bạn cần các thư viện độc quyền là gì?


19

Nghiên cứu sinh sản trong tính toán nhằm mục đích tạo ra mã cần thiết để tạo ra kết quả trong một bài báo tính toán có sẵn cho các nhà nghiên cứu khác để họ có thể chạy mã này để tái tạo kết quả trong bài báo đó. Tôi muốn làm cho tất cả các nghiên cứu của mình có thể sao chép được, nhưng tôi đang gặp một chút khó khăn: một vài bài báo tôi đang làm việc sử dụng gói phân biệt tự động trong nhà (gọi là DAEPACK ) trên một thư viện độc quyền ( CHEMKIN- II ; điều khoản cấp phép không rõ ràng).

Sẽ rất tốn thời gian để thay thế các thành phần phần mềm này bằng các phiên bản nguồn mở. Một thay thế nguồn mở cho CHEMKIN-II tồn tại được gọi là Cantera , nhưng Cantera ở trong C ++, trong khi CHEMKIN-II ở Fortran 77. Sẽ cần rất nhiều nỗ lực để sửa đổi đủ mã Cantera để có thể xử lý tự động công cụ phân biệt cho C ++.

Cho rằng tôi cần các gói độc quyền này, cách tốt nhất để làm cho nghiên cứu của tôi có thể tái tạo càng tốt, giả sử rằng các nhà nghiên cứu có thể không có quyền truy cập vào CHEMKIN-II? Vì DAEPACK là một dịch giả nguồn-nguồn, nên tôi không nhất thiết phải phân phối DAEPACK; Tôi có thể bao gồm đầu ra của nó, đó sẽ là các tệp nguồn Fortran tính toán các dẫn xuất.

Nói chung, nếu bạn yêu cầu phần mềm độc quyền trong công việc của mình và phần mềm độc quyền đó không có sẵn rộng rãi (nghĩa là không phải MATLAB, Mathicala, v.v.), làm thế nào để bạn làm cho tác phẩm của mình có thể tái tạo được?


DAEPACK có sửa đổi mã nguồn CHEMKIN-II không, hay nó chỉ sử dụng CHEMKIN-II trong nội bộ?
Dan

DAEPACK phân tích mã nguồn CHEMKIN-II và tạo các tệp nguồn Fortran có chứa các chương trình con tính toán ma trận Jacobian, các mẫu thưa và các phần mở rộng khoảng. Nó không sửa đổi mã nguồn; Nó giống như một trình biên dịch theo nghĩa đó.
Geoff Oxberry

Nếu đầu ra của DAEPACK được sửa đổi nguồn CHEMKIN-II, tại sao bạn được phép phân phối nó?
Dan

Đó là công việc bắt nguồn, nhưng tôi không rõ nguồn gốc nếu nó bị sửa đổi. Tên biến được sao chép, nhưng theo lập luận đó, nhiều chương trình tôi đã viết là "nguồn CHEMKIN-II đã sửa đổi". Tôi phải kiểm tra điểm đó.
Geoff Oxberry

Giấy phép CHEMKIN-II có cho phép bạn phân phối nguồn không được sửa đổi một cách tự do và hạn chế cách bạn phân phối các thay đổi không? Tôi không thể tìm thấy một bản sao của giấy phép trực tuyến.
Dan

Câu trả lời:


13

Tôi không nghĩ rằng định nghĩa về "nghiên cứu tái sản xuất" đòi hỏi tác giả cung cấp miễn phí tất cả các công cụ cần thiết để tái tạo kết quả thu được. Nếu một số trong số đó là độc quyền, thì người dùng tương lai, không phải là tác giả, sẽ thu xếp để có được phần mềm cần thiết. (Bạn sẽ không phải xây dựng phần mềm cho người khác để tạo lại kết quả của mình, phải không?) Tất nhiên, bạn sẽ có trách nhiệm chỉ định chính xác bản phát hành phần mềm độc quyền nào bạn đã sử dụng, nhưng điều đó không hợp lý để mong đợi bạn tạo mã nghiên cứu tương thích với phần mềm nguồn mở chỉ vì nó là nguồn mở.

[Bên cạnh đó, ngoài việc nói về khả năng tái tạo của phần mềm khi một số phần mềm là độc quyền, tôi nghĩ rằng một câu hỏi cơ bản hơn cần được giải quyết trước: phần mềm có cho kết quả có thể lặp lại qua các cài đặt khác nhau không (ví dụ, đối với các kiến ​​trúc khác nhau và Ví dụ, lỗi vòng và sự khác biệt trong phân bổ do số lượng bộ xử lý khác nhau có nghĩa là nhiều tính toán mô phỏng phân tử sẽ cho kết quả khác nhau chỉ bằng cách thay đổi số lượng bộ xử lý có trong phân bổ. (Trung bình thống kê sẽ đạt cùng mức nơi, nhưng quỹ đạo có thể và có thể sẽ kết thúc rất khác nhau.)]


2
Tôi chắc chắn đồng ý rằng nghiên cứu tái sản xuất không bắt buộc tác giả phải cung cấp miễn phí tất cả các phần mềm cần thiết. Tuy nhiên, phần mềm hoàn toàn không có sẵn công khai sẽ gây ra vấn đề. Một trong những mục tiêu của phong trào nghiên cứu tái sản xuất là giúp xây dựng nhận thức về vấn đề này trong cộng đồng, khuyến khích mọi người công khai mã nghiên cứu ngay cả khi họ không có kế hoạch hỗ trợ cho nó, chỉ vì mục đích tái sản xuất.
khinsen

2
Mã bán thương mại vẫn là mã có sẵn. Nếu không còn có thể có được giấy phép, đó tất nhiên là một vấn đề khác. Nhưng tác giả ban đầu của một mã không nên viết lại mã để chứa một thư viện khác chỉ nhằm mục đích tái tạo. (Có một đối số được đưa ra để có khả năng sử dụng và sử dụng mã lớn hơn, nhưng đối số tái sản xuất không phải là prima facie - mặc dù có thể lập luận là đủ.)
aeismail

4

Tôi chưa bao giờ có ý kiến ​​rằng "nghiên cứu có thể tái tạo" có nghĩa là các độc giả và nhà khoa học của bạn chỉ cần nhấp vào "Chạy" (hoặc biên dịch hoặc những gì có bạn) để tái tạo hoàn toàn kết quả của bạn. Nếu không có gì khác, điều đó sẽ giết chết nghiên cứu của bất cứ ai sử dụng gói phân tích thống kê độc quyền hoặc làm cho mọi thứ "không thể thực hiện được" nếu chúng được tạo ra cho một nền tảng hoặc ngôn ngữ không hợp thời trang. Hoặc cho vấn đề đó, có ai đó muốn sao chép mã của bạn, nhưng không hiểu / sử dụng ngôn ngữ bạn sử dụng.

CrossValidated đã có một cuộc thảo luận tương tự về chủ đề này - "tái sản xuất" có nghĩa là bạn có thể sao chép phân tích của tôi trên dữ liệu của tôi hoặc bản thân thử nghiệm có thể được chạy lại từ đầu và cung cấp kết quả xác nhận. Liên kết có tại đây: /stats/14999/how-are-we-defining-reproducible-research

Tôi nghĩ yếu tố quan trọng hơn là mô tả những gì bạn đã làm ở cấp độ mà nó có thể được mã hóa lại bởi một người đủ quan tâm và nếu sử dụng các công cụ thương mại, những công cụ đó sẽ được đề cập. Bởi vì điều đó phục vụ cả lợi ích của việc sao chép thử nghiệm và kiểm tra lỗi mã lỗi.


2

Trong trường hợp của bạn, nơi bạn thậm chí có thể không có quyền phân phối bất kỳ mã nào bạn đã sử dụng, một mô tả rất sâu về thuật toán có thể là điều tốt nhất bạn có thể làm. Tùy thuộc vào mức độ phức tạp của mã của bạn, ai đó có thể sao chép bất kỳ thứ gì họ quan tâm đến họ từ bất kỳ công cụ nào họ có sẵn.

Mặt khác, hỏi xung quanh và xem bao nhiêu công việc bạn được phép phát hành, và sau đó phát hành đó.


Rất nhiều này xuất phát từ này hội thoại trong chat.
Dan

1

Cách tốt nhất để thực hiện nghiên cứu tái sản xuất là không dựa vào bất cứ thứ gì tồn tại ngắn như mã cụ thể trên nền tảng cụ thể. Hôm qua chúng tôi đã tính toán trên các thẻ đục lỗ, hôm nay trên các điện tử bằng silicon, ngày mai có thể là trên các tia laser có protein hoặc thậm chí là các tế bào sống, ngày này qua ngày khác trên các chấm lượng tử, và ai biết được điều gì sẽ xảy ra vào tuần tới.

Nghiên cứu sinh sản phải làm cho các khái niệm và ý tưởng của nó rõ ràng và không thúc đẩy các công cụ hiện có như phần cứng hoặc phần mềm thành điều kiện tiên quyết để tái tạo kết quả nghiên cứu. Các thuật toán được sử dụng phải được chi tiết dưới dạng phổ quát rõ ràng; phiên bản hiện tại của một gói phần cứng, trình biên dịch hoặc phần mềm cụ thể chỉ có thể được sử dụng như một công cụ để chứng minh kết quả nghiên cứu.


Tôi nghĩ rằng chúng ta cần cả hai - các khái niệm và ý tưởng cho sự hiểu biết của con người và khả năng diễn giải dài hạn, và mã để xác minh ngắn hạn.
khinsen

1

Xuất bản mã Fortran được tạo ra có vẻ như là một giải pháp rất tốt trong trường hợp của bạn.

Theo nguyên tắc chung, tôi nghĩ rằng việc sử dụng phần mềm chưa được công bố là không tương thích với các mục tiêu của nghiên cứu tái sản xuất. Đó là một trong những lý do tại sao tôi thấy nghiên cứu có thể tái tạo là một mục tiêu dài hạn hơn là một cái gì đó mà người ta có thể yêu cầu phải được áp dụng ngay lập tức.


1

Tôi làm việc cho Elsevier. Công ty của tôi đã bắt đầu sử dụng khung Ghép ảnh (được phát triển để đáp ứng với Thử thách lớn trên giấy thực thi) trong các vấn đề tạp chí để cho phép các tác giả xuất bản các đoạn mã thực thi với bài viết của họ. Tính năng này giúp người đọc dễ dàng tái tạo các kết quả được báo cáo trong bài viết và sử dụng lại tài liệu đã xuất bản cho nghiên cứu của riêng họ. Cắt dán hỗ trợ nhiều loại phần mềm độc quyền, ngoài phần mềm nguồn mở; nhiều thông tin hơn có thể được tìm thấy trong video thông tin ở đây và tại Trang web Môi trường Tác giả Cắt dán .

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.