Hesaplamalı araştırmamın tekrarlanmasını sağlamak için bir dergi makalesine (ya da çevrimiçi gönderime) hangi materyali eklemeliyim?


23

Bilgisayar bilimi araştırmalarında tekrarlanabilirlik giderek daha önemli hale geldi. (Örneğin, bkz Roger Peng bu makaleyi Science , ben de bu tür başka makale ve web sitelerinin farkındayım.) Ancak, bu marka için bir dergi makale ile içermelidir ne kadar bilgi bana net değil (veya çevrimiçi) hesaplamalı araştırmam tekrar üretilebilir (fikri mülkiyet anlaşmaları gibi başka engeller olmadığı varsayılarak). Orada herhangi bir kılavuz var mı ve olmasa da insanlar araştırmacıların bilgisayar bilimleri araştırmalarını tekrarlanabilir hale getirmek için hangi adımları atmaları gerektiğini önerebilirler?

Özellikle cevaplarda kullanım, bu önerileri yerine getirmenin olası yolları olacaktır - temel olarak iş akışları. Sistem agnostik veya Linux tabanlı iş akışları tercih edilir. Ayrıca, yaşadığınız herhangi bir kişisel deneyimi tartışmak da yardımcı olacaktır.

Benim özel durumumda, MATLAB'da yapılabilecek kadar basit olan birkaç örnek hesaplama ile teorik bir makale yazıyorum. Bu durumda, MATLAB betiği de dahil olmak üzere, makinemdeki MATLAB'ın belirli bir versiyonunu belirtmenin tekrarlanabilirliği sağlamak için yeterli olacağını düşünüyorum. Ancak, orada daha karmaşık senaryolar olduğundan eminim ve tekrarlanabilir araştırmanın nasıl yapılacağına dair tavsiyeler gelecekteki projeler için bilmek çok yararlı olacaktır.

Yanıtlar:


17

Kabaca önem sırasına göre.

Kaynak kodu

  1. Algoritmanızın anahtar yönlerini uygulayan kodu hazır bulundurun. Kullanıcı inşa edemez veya çalıştıramasa bile, tam olarak ne yapıldığını okuyabilir. Birkaç kez bir belgede belgelenmemiş, kaynak koduyla birkaç dakika kesin olarak yanıtlanan basit kararları fark ettim.
  2. Çalıştırılabilir hale getir. Bu, bağımlı kütüphanelerin sürümlerini belgelendirmeyi içerir ve genellikle biraz taşınabilir kod yazmanızı gerektirir. Kendi makinenizden en az bir makinede bulunduğundan emin olun (hiç temiz bir ortamda inşa etmediyseniz, gizli bağımlılıklara sahip olmak kolaydır).
  3. Kullanılan kodun sürümünü belirtin. Resmi olarak yayımlanmış bir sürüm değilse (ve bazen o zaman bile) sürümün SHA1'ini belgeleyin. (Bu, en doğal olarak Git ve Mercurial gibi DSCM'ler için geçerlidir, ancak her yerde kullanılabilir.) Bu, birinin kodun gerçekten aynı sürümüne sahip olduğunu garanti etmenin çok güvenilir bir yoludur.
  4. Derleyici satıcısını, sürümleri ve optimizasyon bayraklarını, libc, CPU tipi ve bellek tipi ve topolojisi gibi sistem kitaplıklarını (özellikle performans çalışmaları için) içeren yapılandırma ve ana bilgisayar parametrelerini dahil edin.

Çalışma zamanı parametreleri / giriş dosyaları

Tam girdi özelliğini ekleyin. Bir komut dosyası tarafından oluşturulmuşsa, o komut dosyasını ekleyin. Büyük veri ise, verilerin nasıl elde edilip işlendiğini belgeleyin. Algoritmanızın rasgeleliği varsa, rasgele sayı üretecini ve kullanılan tohumu belirtin.

Şekil ve tablo üretmek için komut dosyaları

Hem rakamların gerçekte ne gösterdiği hakkındaki soruları netleştirmek hem de okuyucunun parametreleri değiştirdiğinde veya algoritmayı değiştirdiğinde durumların nasıl değiştiğini denemesine izin vermek için bu komut dosyalarını eklemek çok yararlıdır.


Birim testlerini dahil etmek ne kadar önemli olurdu? Yeniden üretilebilirlik için dahil ettiğim kodu ne kadar iyi belgelemeliyim?
Geoff Oxberry

Sonuçların tekrar üretilebilirliğini istiyorsanız, ünite testleri ve manuel sayfalar / kullanım kılavuzları gerekli değildir. Gelecekteki ortak yazarları veya yazılımın kullanıcılarını (alıntılar ...) çekmeye çalışıyorsanız, yazılımı tekrar kullanmak ve baştan sona belgelemek için faydalıdır. Yazılımınızın başkalarının kullanması için tasarlanıp tasarlanmadığına bakılmaksızın, testler ve dokümantasyonun uzun vadede zamandan tasarruf etmenizi sağladığından, yalnızca daha rahat hareket etmenize ve daha fazla deney yapmanıza olanak sağladığını unutmayın.
Jed Brown

6

Pek çok dergi bunun için resmi bir şekilde kurulmamıştır, ancak kısa bir süre önce özellikle kaynak kodunu alması amaçlanan Sayısal Yazılım Arşivi'ni ve gerekli olan her şeyi makalenin bir parçası haline getirdik. Şuna bir göz atın: http://journals.tdl.org/ans Gönderimler bekliyoruz!


2
Yazı işleri kurulu üyelerinden birinin evcil hayvan yazılımı projesini kullandığınızı varsayarsak . Yardım edemem ama bu gereksinimin derginin bütünlüğünü bozduğunu hissediyorum.
Jack Poulson,

1
@JackPoulson: Bu, editörler arasında uzun süre tartıştığımız ve toplumdaki diğer kişilerle daha da uzun süre tartıştığımız bir nokta. Sanırım hepimiz amacınızı görüyoruz ama aynı zamanda iki nedenden ötürü başka bir şekilde yapamayacağımızı hissettik: (i) Tesadüfi X projesi için hakemler nerede bulacağımızı bilmiyoruz. Toplulukta, hangi projelerin yüksek kalitede olduğu ve hangilerinin olmadığı konusunda belirli bir fikir birliği vardır; ANS'nin her wannabe projesi için bir çıkış noktası olmasını istemedik. Web sayfasında belirttiğimiz gibi, sonunda tüm yüksek kaliteli paketleri dahil etmek istiyoruz.
Wolfgang Bangerth,

2
Hangi nedenle, bir gözden geçirenin “rastgele alan X” yerine “rastgele proje X” ile aşina olması gerekir? Bunu ortaya koydum, çünkü derginin belirli bir kağıt sınıfında eksik olduğunu düşünüyorum, çünkü verilen paketler listesinde nelerin uygulanabileceği konusunda ciddi kısıtlamalar var. Örneğin, paralel hesaplamaya temel katkılar yapılmayabilir; MPI veya Cennet Yasağı, BLAS veya LAPACK'a yapılan çağrılara dalmayı içeren herhangi bir şey derginin standartlarını ihlal ediyor gibi görünebilir. Bu çevrimdışı hakkında konuşmaktan mutlu olurum.
Jack Poulson

@JackPoulson: Söyleyebileceğim kadarıyla, paralel hesaplamaya temel bir katkı yapmak istiyorsanız, başka bir dergide bir yazı yazmanın yanı sıra, kütüphanenizin hazır olduğundan emin olmak için ANS'ye bir "Kütüphane Tanıtımı" kağıdı da yazabilirsiniz. onaylanan kitaplık listesine eklendi.
Geoff Oxberry

1
@GeoffOxberry: Wolfgang ve ben dostane bir sohbetimiz oldu ve ortak zemin sonucu, lineer cebir kütüphanelerinin listesinin büyük ölçüde genişletilmesi gerektiği, ancak derginin amacının sadece yeniden üretilebilirlikten ziyade "yüksek kaliteli" kütüphaneler için olduğu ve bu nedenle bazı veterinerlik süreci olması gerekir .
Jack Poulson

3

İçinde

Stodden, V. 2009. “Tekrarlanabilir Bilimsel Araştırmalar İçin Yasal Çerçeve.” CiSE .

Victoria Stodden, tam olarak "araştırma özeti" nin yayınlanmasını tavsiye eder ve aşağıdaki bileşenleri p. 38:

  1. Araştırma ödevi
  2. Veri - verilerin işlenmesi için dokümantasyon ve kod dahil
  3. Deney - tüm kaynak kodları; belgeler, parametreler, ayarlar ve işletim sistemi bağımlılıkları
  4. Deneyin sonuçları - rakamlar, veriler, örnek kaynak dosyaları; ve deneysel sonuçların işlenmesinin belgelenmesi ve açıklanması
  5. Herhangi bir yardımcı malzeme

2

En azından, denemelerinizi yapmak için kullandığınız Kaynak kod ve veriler bir yerde güvenilir olmalıdır. Gerekirse kodunuzu oluşturmak için talimatlar ekleyin. Gerçekten çok az sayıda açık erişim dergileri var ki açık ve yerleşik bir kural yok.


2

Elsevier için çalışıyorum. Şirketim, yazarların sonuçları ve rakamları tekrarlamalarında ihtiyaç duydukları tüm verileri ve kodu dahil etmelerini sağlamak için, dergi sayılarında Collage uygulamasını (Çalıştırılabilir Kağıt Büyük Mücadelesine cevaben geliştirilen) kullanmaya başladı. Bu özellik, okuyucuların makalede bildirilen sonuçları yeniden üretmelerini ve yayınlanan materyalleri kendi araştırmaları için yeniden kullanmalarını kolaylaştırır. Collage, çok çeşitli açık kaynaklı ve özel yazılımları destekler; Daha fazla bilgi bilgilendirme videoda bulunabilir burada ve en Kolaj Yazma Çevre Sitesi .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.