Materi apa yang harus saya sertakan dengan artikel jurnal (atau posting online) untuk membuat riset komputasional saya dapat direproduksi?

23

Reproduksibilitas menjadi semakin penting dalam penelitian sains komputasi. (Sebagai contoh, lihat artikel ini oleh Roger Peng di Science ; Saya juga mengetahui artikel dan situs web seperti itu.) Namun, tidak jelas bagi saya berapa banyak informasi yang harus saya sertakan dengan artikel jurnal (atau online) untuk membuat penelitian komputasional saya dapat direproduksi (dengan asumsi tidak ada hambatan lain, seperti perjanjian kekayaan intelektual). Adakah pedoman di luar sana, dan jika tidak, dapatkah orang menyarankan langkah-langkah apa yang harus diambil para peneliti untuk membuat riset sains komputasional mereka dapat direproduksi?

Penggunaan khusus dalam jawaban akan menjadi cara yang mungkin untuk menerapkan saran tersebut - alur kerja, pada dasarnya. Alur kerja yang berbasis sistem agnostik atau Linux lebih disukai. Juga, mendiskusikan pengalaman pribadi yang relevan yang Anda miliki juga akan sangat membantu.

Dalam kasus khusus saya, saya sedang menulis makalah teoritis dengan beberapa contoh perhitungan yang cukup sederhana sehingga dapat dilakukan di MATLAB. Saya akan berpikir bahwa dalam kasus ini, termasuk skrip MATLAB, serta mencatat versi spesifik MATLAB pada mesin saya, akan cukup untuk memastikan reproduksibilitas. Namun, saya yakin ada skenario yang lebih rumit di luar sana, dan saran tentang bagaimana melakukan penelitian yang dapat direproduksi akan sangat membantu untuk mengetahui proyek-proyek masa depan.

Geoff Oxberry
sumber

Jawaban:

17

Dalam urutan kasar kepentingan.

Kode sumber

  1. Buat kode yang mengimplementasikan aspek-aspek kunci dari algoritma Anda tersedia. Bahkan jika pengguna tidak dapat membangun atau menjalankannya, mereka dapat membaca apa yang dilakukan. Saya telah beberapa kali memperhatikan keputusan sederhana yang tidak didokumentasikan dalam sebuah makalah, tetapi beberapa menit dengan kode sumber menjawab dengan meyakinkan.
  2. Jadikan itu runnable. Ini melibatkan mendokumentasikan versi pustaka dependen dan biasanya mengharuskan Anda untuk menulis kode portabel. Pastikan itu dibangun di atas setidaknya satu mesin selain milik Anda (mudah untuk memiliki dependensi tersembunyi jika Anda belum pernah membangunnya di lingkungan yang bersih).
  3. Tentukan versi kode yang digunakan. Jika bukan versi yang dirilis secara resmi (dan terkadang bahkan kemudian), dokumentasikan SHA1 versi tersebut. (Ini paling alami berlaku untuk DSCM seperti Git dan Mercurial, tetapi dapat digunakan di mana saja.) Ini adalah cara yang sangat dapat diandalkan untuk menjamin bahwa seseorang benar-benar memiliki versi kode yang sama.
  4. Sertakan konfigurasi dan parameter host termasuk vendor compiler, versi, dan flag optimisasi, pustaka sistem seperti libc, tipe CPU, dan tipe memori dan topologi (terutama untuk studi kinerja).

Parameter run-time / input file

Sertakan spesifikasi input lengkap. Jika dihasilkan oleh skrip, sertakan skrip itu. Jika ini adalah data yang sangat besar, dokumentasikan cara mendapatkan dan memproses data. Jika algoritme Anda memiliki keacakan, tentukan generator nomor acak dan seed yang digunakan.

Script untuk menghasilkan angka dan tabel

Sangat membantu untuk menyertakan skrip-skrip ini, baik untuk mengklarifikasi pertanyaan apa pun yang ditunjukkan oleh angka-angka itu dan membiarkan pembaca bereksperimen dengan bagaimana berbagai hal berubah jika mereka mengubah parameter atau memodifikasi algoritma.

Jed Brown
sumber
Seberapa pentingkah untuk memasukkan tes unit? Seberapa baik saya harus mendokumentasikan kode yang saya sertakan untuk reproduksi?
Geoff Oxberry
Jika Anda hanya ingin reproduksibilitas hasil, uji unit dan halaman manual / manual pengguna tidak diperlukan. Jika Anda mencoba menarik penulis di masa depan atau pengguna perangkat lunak Anda (kutipan ...), maka menulis perangkat lunak untuk digunakan kembali dan mendokumentasikannya secara menyeluruh adalah bermanfaat. Perhatikan bahwa terlepas dari apakah perangkat lunak Anda ditujukan untuk digunakan orang lain, tes dan dokumentasi mungkin menghemat waktu Anda dalam jangka panjang, hanya karena itu memungkinkan Anda bergerak dan bereksperimen dengan lebih percaya diri.
Jed Brown
6

Sebagian besar jurnal tidak diatur untuk hal ini dengan cara formal apa pun, tetapi kami baru-baru ini mendirikan Archive of Numerical Software yang secara khusus dimaksudkan untuk memiliki kode sumber dan segala sesuatu yang diperlukan menjadi bagian dari artikel. Lihatlah: http://journals.tdl.org/ans Pengajuan dipersilahkan!

Wolfgang Bangerth
sumber
2
Dengan asumsi Anda menggunakan proyek perangkat lunak hewan peliharaan dari beberapa anggota dewan editorial . Saya merasa bahwa persyaratan ini menurunkan integritas jurnal.
Jack Poulson
1
@JackPoulson: Ini adalah poin yang telah kami bahas secara panjang lebar di antara para editor, dan yang telah kami bahas lebih panjang lagi dengan orang lain di komunitas. Saya pikir kita semua memahami maksud Anda, tetapi pada saat yang sama, kami merasa tidak dapat melakukannya dengan cara lain karena dua alasan: (i) Kami tidak tahu di mana menemukan pengulas untuk proyek acak X. (ii) Ada konsensus tertentu dalam komunitas di mana proyek-proyek berkualitas tinggi dan mana yang tidak; kami tidak ingin ANS menjadi outlet untuk setiap proyek wannabe. Seperti yang kami nyatakan di laman web, kami ingin menyertakan semua paket berkualitas tinggi pada akhirnya.
Wolfgang Bangerth
2
Untuk alasan apa seorang reviewer harus terbiasa dengan "proyek acak X" daripada "bidang acak X"? Saya membahas hal ini karena saya pikir jurnal tersebut kehilangan kelas makalah yang signifikan, karena ada batasan parah tentang apa yang mungkin untuk diterapkan dengan daftar paket yang diberikan. Misalnya, tidak ada kontribusi mendasar untuk komputasi paralel, karena apa pun yang melibatkan panggilan ke MPI, atau, dilarang keras, BLAS atau LAPACK, tampaknya akan melanggar standar jurnal. Saya akan senang membicarakan hal ini lebih lanjut secara offline.
Jack Poulson
@JackPoulson: Sejauh yang saya tahu, jika Anda ingin membuat kontribusi mendasar untuk komputasi paralel, selain menulis makalah di jurnal lain, Anda juga dapat menulis makalah "Pendahuluan Perpustakaan" di ANS untuk memastikan bahwa perpustakaan Anda ditambahkan ke daftar perpustakaan yang disetujui.
Geoff Oxberry
1
@ GeoffOxberry: Wolfgang dan saya memiliki percakapan damai, dan kesimpulan bersama adalah bahwa daftar perpustakaan aljabar linier harus sangat diperluas, tetapi tujuan jurnal adalah untuk perpustakaan "berkualitas tinggi" daripada sekadar reproduksibilitas, dan Oleh karena itu harus ada beberapa proses pemeriksaan.
Jack Poulson
3

Di

Stodden, V. 2009. "Kerangka Hukum untuk Penelitian Ilmiah Reproducible." CiSE .

Victoria Stodden merekomendasikan untuk menerbitkan "ringkasan penelitian" lengkap, dan mendaftar komponen-komponen berikut pada hal. 38:

  1. Makalah penelitian
  2. Data - termasuk dokumentasi dan kode untuk memproses data
  3. Percobaan - semua kode sumber; dokumentasi, parameter, pengaturan, dan dependensi sistem operasi
  4. Hasil percobaan - gambar, data, file sumber ilustrasi; dan dokumentasi serta penjelasan tentang pemrosesan hasil eksperimen
  5. Bahan bantu apa pun
David Ketcheson
sumber
2

Setidaknya, kode sumber dan data yang Anda gunakan untuk melakukan percobaan harus dapat diakses di suatu tempat. Tambahkan instruksi untuk membuat kode Anda jika perlu. Sungguh ada begitu sedikit jurnal akses terbuka yang tidak ada aturan yang terbuka dan mapan.

asmatik
sumber
2

Saya bekerja untuk Elsevier. Perusahaan saya telah mulai menggunakan kerangka kerja Collage (dikembangkan sebagai tanggapan terhadap Tantangan Besar Kertas yang Dapat Dilakukan) dalam masalah jurnal untuk memungkinkan penulis memasukkan semua data dan kode yang diperlukan untuk mereproduksi hasil dan angka dalam makalah mereka. Fitur ini memudahkan pembaca untuk mereproduksi hasil yang dilaporkan dalam artikel dan menggunakan kembali materi yang dipublikasikan untuk penelitian mereka sendiri. Collage mendukung berbagai macam perangkat lunak open-source dan proprietary; informasi lebih lanjut dapat ditemukan di video informasi di sini dan di Situs Web Collage Authoring Environment .

Hylke Koers
sumber