Tài liệu nào tôi nên đưa vào cùng với một bài báo (hoặc đăng trực tuyến) để làm cho nghiên cứu tính toán của tôi có thể tái tạo được?


23

Khả năng sinh sản ngày càng trở nên quan trọng trong nghiên cứu khoa học tính toán. (Ví dụ, xem bài viết này của Roger Peng trong Khoa học ; Tôi cũng biết về các bài báo và trang web khác như vậy.) Tuy nhiên, tôi không rõ có bao nhiêu thông tin tôi nên đưa vào một bài báo (hoặc trực tuyến) để thực hiện nghiên cứu tính toán của tôi có thể tái sản xuất (giả sử không có trở ngại nào khác, như thỏa thuận sở hữu trí tuệ). Có bất kỳ hướng dẫn nào ngoài đó không, và nếu không, mọi người có thể đề xuất những bước mà các nhà nghiên cứu nên thực hiện để làm cho nghiên cứu khoa học tính toán của họ có thể tái tạo được không?

Sử dụng cụ thể trong câu trả lời sẽ là những cách có thể để thực hiện những đề xuất đó - về cơ bản, quy trình công việc. Các quy trình công việc không dựa trên hệ thống hoặc dựa trên Linux là thích hợp hơn. Ngoài ra, thảo luận về bất kỳ kinh nghiệm cá nhân có liên quan mà bạn đã có cũng sẽ hữu ích.

Trong trường hợp cụ thể của tôi, tôi đang viết một bài báo lý thuyết với một vài phép tính ví dụ đủ đơn giản để chúng có thể được thực hiện trong MATLAB. Tôi nghĩ rằng trong trường hợp này, bao gồm tập lệnh MATLAB, cũng như lưu ý phiên bản cụ thể của MATLAB trên máy của tôi, sẽ đủ để đảm bảo khả năng tái tạo. Tuy nhiên, tôi chắc chắn có nhiều kịch bản phức tạp hơn ngoài kia, và lời khuyên về cách thực hiện nghiên cứu tái sản xuất sẽ rất hữu ích để biết cho các dự án trong tương lai.

Câu trả lời:


17

Theo thứ tự quan trọng.

Mã nguồn

  1. Làm cho mã thực hiện các khía cạnh chính của thuật toán của bạn có sẵn. Ngay cả khi người dùng không thể xây dựng hoặc chạy nó, họ có thể đọc chính xác những gì đã được thực hiện. Tôi đã nhiều lần nhận thấy các quyết định đơn giản không được ghi lại trong một bài báo, nhưng một vài phút với mã nguồn đã được trả lời một cách thuyết phục.
  2. Làm cho nó chạy được. Điều này liên quan đến việc ghi lại các phiên bản của các thư viện phụ thuộc và thường yêu cầu bạn phải viết mã di động. Hãy chắc chắn rằng nó được xây dựng trên ít nhất một máy khác ngoài máy của bạn (thật dễ dàng để có các phụ thuộc ẩn nếu bạn chưa bao giờ xây dựng nó trong một môi trường sạch).
  3. Chỉ định phiên bản của mã đã được sử dụng. Nếu không phải là phiên bản chính thức được phát hành (và đôi khi ngay cả sau đó), hãy ghi lại SHA1 của phiên bản. (Điều này áp dụng một cách tự nhiên nhất cho các DSCM như Git và Mercurial, nhưng có thể được sử dụng ở bất cứ đâu.) Đây là một cách rất đáng tin cậy để đảm bảo rằng ai đó thực sự có cùng phiên bản mã.
  4. Bao gồm các tham số cấu hình và máy chủ bao gồm nhà cung cấp trình biên dịch, phiên bản và cờ tối ưu hóa, thư viện hệ thống như libc, loại CPU, loại bộ nhớ và cấu trúc liên kết (đặc biệt là cho nghiên cứu hiệu suất).

Thông số thời gian chạy / tập tin đầu vào

Bao gồm các đặc điểm kỹ thuật đầu vào đầy đủ. Nếu nó được tạo bởi một tập lệnh, bao gồm tập lệnh đó. Nếu đó là dữ liệu lớn, hãy ghi lại cách lấy và xử lý dữ liệu. Nếu thuật toán của bạn có tính ngẫu nhiên, chỉ định trình tạo số ngẫu nhiên và hạt giống đã được sử dụng.

Các kịch bản để tạo số liệu và bảng

Sẽ rất hữu ích khi bao gồm các tập lệnh này, cả hai để làm rõ bất kỳ câu hỏi nào về những gì các số liệu thực sự hiển thị và để người đọc thử nghiệm cách mọi thứ thay đổi nếu chúng thay đổi tham số hoặc sửa đổi thuật toán.


Làm thế nào quan trọng sẽ bao gồm các bài kiểm tra đơn vị? Làm thế nào tốt tôi nên tài liệu mã tôi bao gồm cho khả năng tái sản xuất?
Geoff Oxberry

Nếu bạn chỉ muốn tái tạo kết quả, kiểm tra đơn vị và trang hướng dẫn sử dụng / hướng dẫn sử dụng là không cần thiết. Nếu bạn đang cố gắng thu hút các đồng tác giả hoặc người dùng phần mềm trong tương lai (trích dẫn ...), thì việc viết phần mềm để sử dụng lại và ghi lại tài liệu kỹ lưỡng là điều đáng giá. Lưu ý rằng bất kể phần mềm của bạn có dành cho người khác sử dụng hay không, các bài kiểm tra và tài liệu có thể giúp bạn tiết kiệm thời gian trong thời gian dài, chỉ vì nó cho phép bạn di chuyển và thử nghiệm một cách tự tin hơn.
Jed Brown

6

Hầu hết các tạp chí không được thiết lập cho điều này theo bất kỳ cách chính thức nào, nhưng gần đây chúng tôi đã thành lập Lưu trữ Phần mềm Số được dành riêng để có mã nguồn và mọi thứ khác cần thiết là một phần của bài viết. Hãy xem thử: http://journals.tdl.org/ans Đệ trình được chào đón!


2
Giả sử bạn sử dụng dự án phần mềm thú cưng của một số thành viên trong ban biên tập . Tôi không thể không cảm thấy rằng yêu cầu này làm giảm tính toàn vẹn của tạp chí.
Jack Poulson

1
@JackPoulson: Đây là một điểm mà chúng tôi đã thảo luận rất lâu giữa các biên tập viên và chúng tôi đã thảo luận ở độ dài lớn hơn với những người khác trong cộng đồng. Tôi nghĩ rằng tất cả chúng ta đều thấy quan điểm của bạn, nhưng đồng thời, chúng tôi cảm thấy như chúng tôi không thể làm điều đó theo bất kỳ cách nào khác vì hai lý do: (i) Chúng tôi không biết tìm người đánh giá cho dự án ngẫu nhiên X. (ii) Có một sự đồng thuận nhất định trong cộng đồng trong đó các dự án có chất lượng cao và không; chúng tôi không muốn ANS trở thành một lối thoát cho mọi dự án của Wannabe. Khi chúng tôi tuyên bố trên trang web, chúng tôi muốn bao gồm tất cả các gói chất lượng cao cuối cùng.
Wolfgang Bangerth

2
Vì lý do gì mà người đánh giá phải làm quen với "dự án ngẫu nhiên X" thay vì "trường ngẫu nhiên X"? Tôi đưa ra điều này bởi vì tôi nghĩ rằng tạp chí đang bỏ lỡ một loại giấy tờ quan trọng, vì có những hạn chế nghiêm trọng về những gì có thể thực hiện với danh sách các gói đã cho. Ví dụ, không thể có đóng góp cơ bản nào cho điện toán song song, vì bất cứ điều gì liên quan đến việc gọi vào MPI, hoặc, trời cấm, BLAS hoặc LAPACK, dường như đều vi phạm các tiêu chuẩn của tạp chí. Tôi sẽ rất vui khi nói về điều này hơn nữa nhé.
Jack Poulson

@JackPoulson: Theo như tôi có thể nói, nếu bạn muốn đóng góp cơ bản cho điện toán song song, ngoài việc viết một bài báo trong một tạp chí khác, bạn cũng có thể viết một bài báo "Giới thiệu thư viện" trong ANS để đảm bảo rằng thư viện của bạn thêm vào danh sách thư viện đã được phê duyệt
Geoff Oxberry

1
@GeoffOxberry: Wolfgang và tôi đã có một cuộc trò chuyện thân thiện, và kết luận chung là danh sách các thư viện đại số tuyến tính nên được mở rộng đáng kể, nhưng mục tiêu của tạp chí là dành cho các thư viện "chất lượng cao" thay vì chỉ đơn giản là tái tạo và do đó phải có một số quy trình kiểm tra.
Jack Poulson

3

Trong

Stodden, V. 2009. “Khung pháp lý cho tái sản xuất nghiên cứu khoa học.” Luyện tập gì .

Victoria Stodden khuyên bạn nên xuất bản "bản tóm tắt nghiên cứu" đầy đủ và liệt kê các thành phần sau trên p. 38:

  1. Tài liệu nghiên cứu
  2. Dữ liệu - bao gồm tài liệu và mã để xử lý dữ liệu
  3. Thí nghiệm - tất cả mã nguồn; tài liệu, tham số, cài đặt và phụ thuộc hệ điều hành
  4. Kết quả của thí nghiệm - số liệu, dữ liệu, tệp nguồn minh họa; và tài liệu và giải thích về việc xử lý các kết quả thí nghiệm
  5. Bất kỳ vật liệu phụ trợ

2

Ít nhất, mã nguồn và dữ liệu bạn đã sử dụng để thực hiện các thử nghiệm của mình phải được cung cấp ở đâu đó. Thêm hướng dẫn để xây dựng mã của bạn nếu cần thiết. Thực sự có rất ít tạp chí truy cập mở mà không có quy tắc mở và thành lập.


2

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ả đưa tất cả dữ liệu và mã cần thiết để sao chép kết quả và số liệu vào bài báo 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 nguồn mở và độc quyền; 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.