Tescilli kütüphanelere ihtiyacınız varsa tekrarlanabilir araştırma yapmanın en iyi yolu nedir?


19

Hesaplamada tekrarlanabilir araştırmalar, bir hesaplama kağıdındaki sonuçları üretmek için gereken kodu diğer araştırmacılar tarafından kullanılabilir hale getirmeyi amaçlar, böylece bu koddaki sonuçları yeniden üretmek için bu kodu çalıştırabilirler. Tüm araştırmalarımı tekrarlanabilir hale getirmek istiyorum, ancak biraz takılmaya çalışıyorum: özel bir kütüphanede ( CHEMKIN- II ; lisans koşulları belirsiz).

Bu yazılım bileşenlerini açık kaynaklı sürümlerle değiştirmek aşırı zaman alıcı olacaktır. CHEMKIN-II için açık kaynaklı bir yedek Cantera olarak adlandırılır , ancak Cantera C ++ 'da, CHEMKIN-II ise Fortran 77'de bulunur. C ++ için farklılaştırma araçları.

Bu tescilli paketlere ihtiyacım olduğu göz önüne alındığında, araştırmacıların CHEMKIN-II'ye erişemeyebileceğini varsayarak araştırmamı mümkün olduğunca tekrarlanabilir hale getirmenin en iyi yolu nedir? DAEPACK bir kaynaktan kaynağa çevirmen olduğu için DAEPACK'i dağıtmam gerekmiyor; Türevlerini hesaplayan Fortran kaynak dosyaları olan çıktısını ekleyebilirim.

Daha genel olarak, çalışmanızda özel yazılıma ihtiyacınız varsa ve bu özel yazılıma yaygın olarak erişilemiyorsa (örn. MATLAB, Mathematica, vb.), Çalışmanızı nasıl yeniden üretilebilir hale getirirsiniz?


DAEPACK CHEMKIN-II kaynak kodunu değiştiriyor mu yoksa sadece CHEMKIN-II'yi dahili olarak mı kullanıyor?
Dan

DAEPACK, CHEMKIN-II kaynak kodunu ayrıştırır ve Jacobian matrislerini, sparite desenlerini ve aralık uzantılarını hesaplayan alt rutinler içeren Fortran kaynak dosyaları oluşturur. Kaynak kodunu değiştirmez; bu anlamda bir derleyici gibi.
Geoff Oxberry

DAEPACK'in çıktısı CHEMKIN-II kaynağı değiştirilirse, neden dağıtmanıza izin verilir?
Dan

Bu türetilmiş bir iştir, ancak kaynağın değiştirilip değiştirilmediği benim için net değildir. Değişken isimleri kopyalanır, ancak bu argümanla yazdığım birçok program "değiştirilmiş CHEMKIN-II kaynağı" dır. Bu noktayı kontrol etmem gerekecekti.
Geoff Oxberry

CHEMKIN-II lisansı değiştirilmemiş kaynağı serbestçe dağıtmanıza ve değişiklikleri dağıtma şeklinizi kısıtlamanıza izin veriyor mu? Lisansının bir kopyasını çevrimiçi bulamıyorum.
Dan

Yanıtlar:


13

"Tekrarlanabilir araştırma" tanımının, yazarın elde edilen sonuçları yeniden üretmek için gereken tüm araçları ücretsiz olarak sağlamasını gerektirdiğini düşünmüyorum. Bazıları tescilli ise, gerekli yazılımı elde etmek için düzenlemeleri yapmak, yazarı değil, gelecekteki kullanıcı için görevlidir. (Başka birisinin sonuçlarınızı yeniden üretmesi için yazılımı oluşturmak zorunda kalmazsınız, değil mi?) Tabii ki, kullandığınız özel yazılımın tam olarak hangi sürümünü kullandığınızı belirtme sorumluluğuna sahip olacaksınız, ancak beklemek mantıksızdır. sadece açık kaynaklı olduğu için açık kaynak kodlu bir yazılımla uyumlu bir araştırma kodu oluşturmalısınız .

[Bir yana, yazılımın bir kısmı tescilli olduğunda tekrarlanabilirliği hakkında konuşmanın yanı sıra, öncelikle daha temel bir sorunun ele alınması gerektiğini düşünüyorum: yazılım farklı kurulumlarda (örneğin, farklı mimariler ve Örneğin, farklı sayıda işlemcinin bir sonucu olarak yuvarlama hataları ve tahsislerdeki farklılıklar, birçok moleküler simülasyon hesaplamasının, sadece tahsise dahil olan işlemci sayısını değiştirerek farklı sonuçlar vereceği anlamına gelir. (İstatistiksel ortalamalar aynı olmalıdır. ancak yörüngeler çok farklı olabilir ve muhtemelen sonuçlanır.)]


2
Tekrarlanabilir araştırmaların, yazarı gerekli tüm yazılımları ücretsiz olarak sağlama zorunluluğu olmadığına kesinlikle katılıyorum. Ancak, herkese açık olarak bulunmayan yazılımlar sorun yaratır. Tekrarlanabilir araştırma hareketinin amaçlarından biri, toplumda bu sorun hakkında bir farkındalık oluşturmaya yardımcı olmak ve insanları sadece tekrarlanabilirlik uğruna destek sağlamayı planlamasalar bile araştırma kodunu kamuya açık hale getirmeye teşvik etmektir.
khinsen

2
Ticari olarak satılan kod hala kullanılabilir kod. Artık lisans almak mümkün değilse, bu elbette farklı bir konudur. Ancak, bir kodun orijinal yazarının, yalnızca tekrar üretilebilirlik amacıyla başka bir kitaplığı yerleştirmek için bir kodu yeniden yazması gerekmez . (Daha fazla kod uygulanabilirliği ve kullanımı için bir argüman var, ancak tekrarlanabilirlik argümanı prima facie gerekli değil - ancak yeterli olduğu iddia edilebilir.)
aeismail

4

"Tekrarlanabilir araştırmaların", diğer okuyucularınızın ve bilim adamlarınızın sonuçlarınızı tamamen yeniden oluşturmak için yalnızca "Çalıştır" ı (veya derlemek ya da neyi derlemek) tıklaması gerektiği anlamına gelmediğini hiç düşünmemiştim. Başka bir şey değilse, bu, tescilli bir istatistiksel analiz paketi kullanan herkesin araştırmasını öldürür veya modası geçmiş bir platform veya dil için yapılmışsa, işleri "tekrar üretilemez" hale getirir. Ya da bu nedenle, birisi kodunuzu yeniden üretmek istiyor, ancak kullandığınız dili anlamıyor / kullanmıyor.

CrossValidated, konuyla ilgili benzer bir tartışmaya sahipti - "tekrarlanabilir", analizimi verilerimde çoğaltabileceğiniz veya deneyin kendisinin sıfırdan yeniden çalıştırılabileceği ve doğrulayıcı sonuçlar sağlayabileceği anlamına mı geliyor? Bağlantı burada: /stats/14999/how-are-we-defining-reproducible-research

Bence en önemli unsur, yeterince ilgilenen biri tarafından kaydedilebilecek düzeyde ne yaptığınızı açıklamaktır ve ticari araçlar kullanılmışsa, bu araçlardan bahsedilir. Çünkü bu, hem denemeyi çoğaltma hem de kod hatalarını tekrar kontrol etme amaçlarına hizmet eder.


2

Kullandığınız kodlardan herhangi birini dağıtma hakkına sahip olamayacağınız durumda, algoritmanın çok ayrıntılı bir açıklaması yapabileceğiniz en iyi şey olabilir. Kodunuzun ne kadar karmaşık olduğuna bağlı olarak, birisi ilgilerini çeken her şeyi mevcut araçlardan çoğaltabilir.

Aksi takdirde, etrafta sorun ve çalışmanızın ne kadarını serbest bırakmanıza izin verildiğini görün ve ardından bırakın.


Bunların çoğu bu sohbet sohbetinden geliyor .
Dan

1

Tekrarlanabilir araştırma yapmanın en iyi yolu, belirli bir platformda belirli kodlar gibi kısa ömürlü hiçbir şeye güvenmemek. Dün delinmiş kartlarda, bugün silikondaki elektronlarda, yarın proteinli lazerlerde, hatta canlı hücrelerde, yarın ertesi gün kuantum noktalarında ve gelecek hafta ne olacağını kim bilirdi.

Tekrarlanabilir araştırma, kavramlarını ve fikirlerini netleştirmeli ve donanım veya yazılım gibi mevcut araçları araştırma sonuçlarını yeniden üretmek için bir ön koşula tanıtmamalıdır. Kullanılan algoritmalar açık bir evrensel biçimde detaylandırılmalıdır; belirli bir donanımın, derleyicinin veya yazılım paketinin geçerli sürümü yalnızca araştırma sonuçlarını göstermek için bir araç olarak kullanılabilir.


Sanırım hem insan anlayışı hem de uzun vadeli yorumlanabilirlik kavramlarına ve fikirlerine ve kısa vadeli doğrulama koduna ihtiyacımız var.
khinsen

1

Oluşturulan Fortran kodunu yayınlamak sizin durumunuzda çok iyi bir çözüm gibi geliyor.

Genel bir kural olarak, yayınlanmamış yazılım kullanımının tekrarlanabilir araştırma hedefleriyle bağdaşmadığını düşünüyorum. Tekrarlanabilir araştırmayı, hemen uygulanması gereken bir şeyden ziyade uzun vadeli bir hedef olarak görmemizin nedenlerinden biri de budur.


1

Elsevier için çalışıyorum. Şirketim, yazarların makaleleriyle çalıştırılabilir kod parçaları yayınlamalarını sağlamak için dergi konularında Kolaj çerçevesini (Yürütülebilir Kağıt Büyük Mücadelesine yanıt olarak geliştirilmiştir) kullanmaya başladı. Bu özellik, okuyucuların makalede bildirilen sonuçları çoğaltmasını ve yayınlanmış materyali kendi araştırmaları için yeniden kullanmasını kolaylaştırır. Collage, açık kaynaklı yazılıma ek olarak çok çeşitli ö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.