วิธีการเชื่อมโยงรหัสไปยังสิ่งตีพิมพ์


40

เอกสารทางวิชาการในการคำนวณทางวิทยาศาสตร์ (และสาขาอื่น ๆ ในปัจจุบัน) มักจะเกี่ยวข้องกับรหัสจำนวนหนึ่งหรือแม้แต่ชุดซอฟต์แวร์ทั้งหมดที่เขียนขึ้นเป็นพิเศษสำหรับกระดาษนั้นหรือถูกนำมาใช้เพื่อให้ได้ผลลัพธ์ในกระดาษ วิธีที่ดีที่สุดในการช่วยให้ผู้อ่านกระดาษเข้าถึงรหัสคืออะไร วิธีการปัจจุบันของฉันคือการใส่ลิงค์ไปยังที่เก็บ Github (พร้อมกับแท็กเวอร์ชันเฉพาะ) ในกระดาษหรือในการอ้างอิง


2
การแบ่งปันรหัสเป็นความคิดที่ดีและควรทำมากกว่านี้ ฉันรู้ว่าฉันควรจะให้รหัสที่เกี่ยวข้องกับกระดาษดีกว่า Repo Github ดูเหมือนจะเป็นทางออกที่ดี แน่นอนว่าดีกว่าการรวมซอร์สโค้ดในภาคผนวกซึ่งฉันได้ทำไปแล้วสำหรับความพยายามในการเขียนรหัสที่น้อยลง
Barron

4
นี่คือคำถาม MO ที่เกี่ยวข้อง
JM

@JM ขอบคุณคำตอบของ MO นั้นดีมาก!
David Ketcheson

โปรดทราบว่าคุณสามารถเผยแพร่สมุดบันทึก ipython บน gitHub และพวกเขาจะแสดงผลยกเว้นชิ้นส่วนแบบโต้ตอบ
denfromufa

1
@denfromufa น่าเสียดายที่ Github ปิดการใช้งาน Mathjax ดังนั้นคณิตศาสตร์ก็ไม่ได้แสดงผลเช่นกัน ทำให้ไร้ประโยชน์สำหรับฟิลด์ที่เกี่ยวข้องมากที่สุด แต่มีผู้ดูอยู่เสมอ
David Ketcheson

คำตอบ:


17

ฉันคิดว่าคุณมีตัวเลือกน้อย

  1. หากคุณมีหน้าเว็บที่มีเสถียรภาพ - เช่นสถาบันที่ได้รับการสนับสนุนจากมหาวิทยาลัยหรือสถาบันที่ไม่แสวงหาผลกำไรอื่น ๆ ซึ่งไม่น่าจะหายไปในเร็ว ๆ นี้ - คุณสามารถเผยแพร่ได้ที่นี่
  2. คุณสามารถใช้บริการเช่น Github หรือ Bitbucket หรือ SourceForge เพื่อแจกจ่ายรหัส
  3. หากรหัสนั้นมีค่าทั่วไปเพียงเล็กน้อย (เป็นรหัสการวิเคราะห์สำหรับชุดเงื่อนไขที่เฉพาะเจาะจง ฯลฯ ) คุณสามารถทำให้รหัสนั้นพร้อมใช้งานเป็นการดาวน์โหลด "ข้อมูลเพิ่มเติม" ด้วยกระดาษที่คุณใช้
  4. คุณสามารถใช้การรวมกันของด้านบน

อย่างไรก็ตามในกรณีใด ๆ หรือทั้งหมดคุณควรระบุแหล่งที่มาอย่างชัดเจนในบทความและระบุประเภทของสิทธิ์ใช้งาน (GPL, ครีเอทีฟคอมมอนส์ ฯลฯ ) เพื่อให้ไม่มีปัญหาที่เกี่ยวข้องกับ IP ในบรรทัด


6
ฉันคิดว่าควรใส่รหัสของตัวเองในสถานที่ที่น่าอยู่ที่สุดเพื่อความอยู่รอดและในหลาย ๆ ที่ถ้าเป็นไปได้ หน้ามหาวิทยาลัยดูเหมือนว่าจะอยู่รอดได้น้อยกว่าบริการโฮสติ้งเช่น การมีวารสารทำให้สามารถใช้งาน snapshot ได้เช่นกัน น่าเสียดายที่ไม่มีวารสารที่ฉันรู้ว่าทำ repos โฮสติ้ง
Faheem Mitha

1
นักเรียนไม่ควรใส่ซอฟต์แวร์ลงในหน้าแรกส่วนตัว อย่างไรก็ตามฉันจะยืนยันว่าสำหรับรหัสการวิจัยทั่วไปอาจมีความเป็นไปได้ที่จะได้รับจากการเผยแพร่ในหน้าเว็บที่เกี่ยวข้องกับกลุ่มการวิจัยมากกว่าหน้าภายนอกที่มีการสูญหายของแหล่งที่มา สำหรับวารสารมันเป็นความจริงที่ว่าพวกเขาไม่ได้ทำโฮสติ้งที่เก็บ อย่างไรก็ตามความสามารถในการมี "ข้อมูลเพิ่มเติม" ในรูปแบบของรหัสการวิจัยที่ฉันคิดว่าเป็นไปตามข้อกำหนดส่วนใหญ่ของการพัฒนาซอฟต์แวร์ทางวิทยาศาสตร์ที่รับผิดชอบ (หากจำเป็น)
aeismail

ฉันรู้สึกว่าหน้ามหาวิทยาลัยมีแนวโน้มที่จะหลงทางมากกว่าไซต์โฮสต์ปกติ แน่นอนว่าไซต์โฮสต์ส่วนใหญ่ที่ได้รับความนิยมในปัจจุบัน (Bitbucket, Github, Google Code) นั้นไม่ได้มีมานานแล้ว ในทางกลับกันตัวอย่างเช่น Sourceforge นั้นอยู่พักหนึ่งแล้ว
Faheem Mitha

มีปัญหาอื่น ๆ ที่ต้องระวัง; ความกังวลเรื่องทรัพย์สินทางปัญญาและข้อบังคับของมหาวิทยาลัยหรือรัฐบาลอาจควบคุมการเลือกคลังเก็บสินค้าด้วย แต่ข้อโต้แย้งก็คือมีรหัสจำนวนหนึ่ง ( NAMDเป็นหนึ่งในตัวอย่างที่สำคัญ) ที่ประสบความสำเร็จในการเผยแพร่เว็บไซต์ของมหาวิทยาลัย โดยทั่วไป "ความสำคัญ" ของรหัสจะกำหนดว่ามองเห็นได้อย่างไร ฉันสงสัยว่ารหัสที่พัฒนาฐานผู้ใช้ที่สำคัญจะหายไปอย่างสมบูรณ์
aeismail

1
จริง แต่ถ้ารหัสไม่ชัดเจนไม่ได้หมายความว่ามันจะโอเคถ้ามันหายไป และหวังว่ารหัสทางวิทยาศาสตร์ส่วนใหญ่จะอยู่ภายใต้ใบอนุญาตฟรีและไม่มีข้อ จำกัด ที่ไม่สมเหตุสมผล ฉันเชื่อว่าตัวอย่างของ NIH คือการบังคับใช้สิ่งนี้สำหรับงานที่พัฒนาด้วยเงินของผู้เสียภาษี ฉันคิดว่านี่น่าจะเป็นกรณีของโครงการที่ได้รับเงินสนับสนุนของผู้เสียภาษี
Faheem Mitha

8

คำถามที่ยอดเยี่ยมและคำตอบที่ดี แต่ฉันคิดว่าไม่มีใครตอบคำถามเรื่องความเพียรพยายามอย่างเพียงพอหากเป้าหมายคือการบรรลุมาตรฐานเดียวกันที่สอดคล้องกับการตีพิมพ์ตัวเอง (ซึ่งอาจโง่เมื่อได้รับโอกาสรหัสยังคงทำงานแต่อย่างน้อยก็อาจมีประโยชน์เช่นเดียวกับสิ่งพิมพ์เหมือนกันทั้งหมด)

เว็บไซต์เสริมวารสารมหาวิทยาลัยไม่คงอยู่

เว็บไซต์ของมหาวิทยาลัยไม่น่าจะให้ความมั่นคงหรือความซ้ำซ้อนในการเก็บเนื้อหาที่โฮสต์ไว้ เนื้อหานั้นยากต่อการอ้างอิงและมักจะขาดข้อมูลเมตาของเครื่องที่อ่านได้

โชคไม่ดีที่ปรากฏว่าวารสารไม่ได้ทำสิ่งที่ดีกว่าในการบำรุงรักษาวัสดุเสริม (ดูAnderson and al. 2006 ) และอาจไม่ยอมรับรูปแบบที่จำเป็นหรือแม้กระทั่งรับวัสดุเสริมเลย (ดูตัวอย่างที่น่าสังเกต )

ด้วยเหตุผลเหล่านี้คนที่เกี่ยวข้องกับการจัดเก็บข้อมูลระยะยาวของข้อมูลที่จะมีการเปิดอย่างเป็นเอกฉันท์ต่อการเรียกร้องให้ใช้ของที่เก็บทุ่มเทมากกว่าเว็บไซต์หรืออุปกรณ์เสริมและวารสารจำนวนมากในขณะอาณัติการปฏิบัตินี้ ดูเหมือนว่าเป็นธรรมเท่านั้นที่รหัสจะจัดขึ้นในมาตรฐานนี้

คำตอบของหลาย ๆ สำเนา?

Github และไซต์ที่เกี่ยวข้องยังไม่สามารถพิสูจน์อายุการใช้งานที่ยาวนานกว่า 100 ปีของห้องสมุดมหาวิทยาลัยและสำนักพิมพ์ที่เป็นที่ยอมรับ โดยการอำนวยความสะดวกในการกระจายอย่างกว้างขวางมันอาจเป็นวิธีการแก้ปัญหาที่คนอื่นได้สะท้อนในความคิดเห็นรวมถึงเพื่อนคนหนึ่งที่ไม่สามารถแสดงความคิดเห็นใน stackexchange

... ขอให้เราช่วยสิ่งที่เหลืออยู่: ไม่ใช่โดยห้องใต้ดินและล็อคที่กั้นพวกเขาจากสายตาของสาธารณชนและใช้ในการส่งพวกเขาไปสู่การเสียเวลา แต่โดยการทวีคูณสำเนาดังกล่าว

- โธมัสเจฟเฟอร์สัน, วันที่ 18 กุมภาพันธ์ พ.ศ. 2334

Figshare & CLOCKSS มาตรฐาน

มาตรฐานการเก็บถาวรเดียวที่ฉันรู้คือfigshareซึ่งสามารถรับที่เก็บรหัสเต็ม (เป็น "ชุดไฟล์" ในขณะนี้ แต่ฉันเชื่อว่าอีกไม่นานจะมีตัวเลือกที่จะแสดงรายการเป็นรหัส "ประเภท") ชิ้นส่วนสำคัญของ figshare ไม่เพียง แต่เป็น DOI ที่สามารถอ้างอิงได้ด้วย metadata แบบเป็นโปรแกรมเท่านั้น แต่ยังมีบริการสำรองข้อมูลของCLOCKSSซึ่งเก็บสำเนาเนื้อหาทั้งหมดไว้ที่โหนดทางภูมิศาสตร์และทางภูมิศาสตร์ที่กระจายอยู่ 12 แห่งทั่วโลก หาก figshare ออกไปจากธุรกิจหรือหยุดอยู่สิ่งนี้จะทริกเกอร์เนื้อหาทั้งหมดให้เป็นอิสระจาก CLOCKSS

ดังนั้นฉันขอแนะนำให้ใช้ Github เพื่อแจกจ่ายรหัส แต่ยังต้องจัดทำสำเนาจดหมายเหตุให้ figshare ณ เวลาที่เผยแพร่


1
figshare เป็นขั้นตอนที่ยอดเยี่ยมถึงแม้ว่าใบอนุญาต CC-BY ไม่ใช่ใบอนุญาตซอฟต์แวร์และฉันไม่รู้ว่านักวิทยาศาสตร์หลายคนยินดีที่จะปล่อยรหัสของพวกเขาภายใต้ CC0 ดังนั้นนี่คือปัญหาที่ต้องแก้ไข ฉันรู้สึกซาบซึ้งที่พวกเขาใช้ DOI และ CLOCKSS แม้ว่ามันยอดเยี่ยม
Aron Ahmadia

ใช่ประเด็นสำคัญเกี่ยวกับใบอนุญาตยังคงเป็นปัญหาอยู่โดยเฉพาะอย่างยิ่งสำหรับซอฟต์แวร์ที่ได้รับการพัฒนาอย่างเต็มที่ สำหรับสคริปต์ในการทำซ้ำการวิเคราะห์ฉันเห็นว่า CC0 เหมาะสมกว่า
cboettig

รหัส Google อาจดีขึ้นเล็กน้อยสำหรับผู้ชมที่กว้างขึ้นเนื่องจากคุณสามารถมีหน้าเว็บที่ดีกว่าพร้อมสรุปรูปภาพลิงก์ DOI การมองเห็นที่สูงขึ้นในการค้นหา ฯลฯ คุณควรใส่ tgz ลงในส่วนดาวน์โหลดและให้ลิงก์ที่หน้าแรก โปรดจำไว้ว่าผู้ที่ไม่ได้เป็นนักพัฒนาส่วนใหญ่ไม่คุ้นเคยกับการควบคุมเวอร์ชันเลยแม้แต่นิดเดียว git / hg การโค่นล้มเป็นเท่าที่ฉันจะไปสำหรับผู้ชมที่กว้างขึ้น
stali

1
@stali จำได้ว่า github ยังสนับสนุนหน้าเว็บที่กำหนดเองสำหรับที่เก็บผ่านgh-pagesและ tarballs ที่ดาวน์โหลดได้จากการดาวน์โหลด แต่ Google และ Github ไม่ได้ให้ DOI แยกต่างหากสำหรับรหัสและไม่ได้แก้ไขปัญหาการเก็บถาวรที่ยืนยาวเกินกว่าอายุของ บริษัท afaik
cboettig

4

คุณสามารถใช้เทคนิค pdf แฟนซีเพื่อแนบรหัสเข้ากับ pdf ได้ (นั่นคือไฟล์รหัสนั้นถูกฝังลงใน pdf และสามารถ "ดาวน์โหลด" ได้ด้วยการคลิกที่ปุ่มบางปุ่มใน pdf) ซึ่งสามารถทำได้ด้วยแพ็คเกจไฟล์แนบตัวอย่างเช่น แน่นอนการทำงานกับ preprints นี้ (แม้ว่าฉันไม่รู้ว่ามันใช้งานได้กับ arxiv แล้ว) แต่คุณอาจพบปัญหากับไฟล์เจอร์นัล ...


เจ๋งมาก! ฉันไม่รู้ว่า LaTeX สามารถทำสิ่งนี้ได้
qubyte

4

สำหรับสคริปต์ขนาดเล็กที่เฉพาะเจาะจงสำหรับโครงการวิจัยเฉพาะสถานที่ที่ดีที่สุดสำหรับการตีพิมพ์คือเว็บไซต์ของวารสารในฐานะ "ข้อมูลเสริม" ลงในกระดาษ นั่นคือสิ่งที่ง่ายที่สุดในการค้นหาสำหรับคนที่อ่านบทความ

แพคเกจที่มีความสำคัญยิ่งที่น่าสนใจสำหรับโครงการอื่น ๆ และควรเผยแพร่แยกต่างหาก น่าเสียดายที่ไม่มีวิธีแก้ปัญหาที่ดีในเวลานี้ ตามหลักการแล้วการตีพิมพ์รหัสจะสามารถเข้าถึงได้อย่างถาวรผ่าน DOI เช่นเดียวกับกระดาษ แต่ฉันไม่ทราบว่ามีไซต์โฮสติ้งใดที่แจก DOIs และรับประกันความคงทนของพวกเขา ที่เก็บสาธารณะเช่น Github หรือ Bitbucket อาจเป็นทางออกที่ดีที่สุดในตอนนี้

ทางออกที่ดีที่สุดคือการเผยแพร่กระดาษบรรจุด้วยรหัสและข้อมูลที่ไปด้วย แต่ก็ยังไม่เป็นไปได้ทางเทคนิค ฉันกำลังทำงานกับต้นแบบการวิจัยสำรวจความคิดนี้ดูเว็บไซต์นี้สำหรับรายละเอียด


1
+1 สำหรับ ActivePapers ฉันไม่คิดว่ามันจะตอบสนองความต้องการของฉันในตอนนี้ แต่ฉันดีใจที่เห็นคนที่ทำงานเกี่ยวกับวิธีการแก้ปัญหา!
David Ketcheson

figshare ให้ Dois: ดูfigshare.com/blog/...
Jeromy Anglim

3

ฉันใช้กลยุทธ์สองประการอันเนื่องมาจากความจริงที่ว่าฉันคาดว่าจะมีการเปลี่ยนแปลงสถาบันในเร็ว ๆ นี้ดังนั้น URL มหาวิทยาลัยของฉันจึงไม่เสถียรเลยแม้แต่น้อย

เมื่อรหัสค่อนข้างสั้นฉันได้ลองใส่มันเป็นภาคผนวกเพิ่มเติมในสมุดบันทึกของตัวเองภายใต้สมมติฐานที่ว่าพวกเขาอาจจะทำหน้าที่ได้ดีในการเก็บกระดาษและรหัสในที่เดียวกัน สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับโค้ดที่ไม่มีความสนใจทั่วไปในวงกว้าง - รหัสที่ค่อนข้างไร้ประโยชน์หากไม่มีเอกสารที่ต้องถามบริบท

แต่สำหรับซอร์สโค้ด, ซอฟต์แวร์จริงและโครงการที่ซับซ้อนมากขึ้นหรือสิ่งที่น่าสนใจทั่วไปฉันได้ติดตามการใช้กลยุทธ์ของคุณในการลิงก์ไปยังพื้นที่เก็บข้อมูล GitHub ซึ่งอย่างน้อยควรจะมีเสถียรภาพสำหรับอายุการใช้งานเฉลี่ยของเอกสารของฉัน


2

ลองดูที่http://www.runmycode.org พวกเขาโฮสต์เว็บไซต์สหายสำหรับรหัสที่เกี่ยวข้องกับงานวิจัย หากรหัสคือ R, Matlab หรืออื่น ๆ ไม่กี่รหัสก็จะเรียกใช้รหัสสำหรับคุณ ฉันยังไม่ได้ลอง แต่ฉันตั้งใจจะทำ ฉันคิดว่า David Donoho และผู้ทำงานร่วมกันของเขาใช้มัน


อา คุณเคยใช้มันแล้ว runmycode.org/CompanionSite/site.do?siteId=158
Paul G. Constantine

@ David Ketcheson และฉันยังทำการทดลองในเดือนธันวาคมโดยใช้ wakari.io stack และ IPython notebooks สำหรับหนึ่งในรหัสที่ใช้ Python ของเรา คุณสามารถตรวจสอบโน๊ตบุ๊ค PyClaw การทำสำเนาที่นี่
Aron Ahmadia

0

ห้องสมุดของมหาวิทยาลัยอาจเป็นสถานที่สำหรับศูนย์นี้หรือเป็นที่ตั้งของมหาวิทยาลัย


-2

ในฐานะผู้อ่านข้อความในกระดาษถึงผลกระทบที่รหัสสามารถรับได้โดยการติดต่อผู้เขียนโดยตรงจะมีประสิทธิภาพ ในฐานะผู้เขียนสิ่งนี้สามารถช่วยส่งเสริมความร่วมมือและให้โอกาสฉันในการเตือนผู้คนให้อ้างอิงบทความของฉันหากพวกเขาใช้รหัสในงานของพวกเขา


4
นั่นเป็นมุมมองที่น่าสนใจและฉันอยากรู้ว่ามันธรรมดาแค่ไหน โดยส่วนตัวมันเป็นสิ่งที่ฉันพยายามหลีกหนี ฉันรู้สึกว่ามันเหมือนกับการตีพิมพ์บทความที่ไม่สมบูรณ์และต้องการให้ผู้อ่านขอสิ่งที่สมบูรณ์ ดูsciencecodemanifesto.org
David Ketcheson

2
การมีที่อยู่ติดต่อไว้ในเอกสารที่มีชื่อเสียงมากที่สุดฉบับหนึ่งของฉันก็คือตายไปแล้วและไม่แน่ใจเกี่ยวกับคนอื่น ๆ - โดยทั่วไปแล้วฉันไม่เห็นด้วยกับวิธีนี้ "ติดต่อฉัน" ไม่จำเป็นว่าจะเป็นสิ่งที่ง่ายที่สุดในโลกที่จะทำโดยเฉพาะในทศวรรษหน้า
Fomite

2
วิธีการ "ติดต่อฉัน" ยังไม่รับประกันความสามารถในการทำซ้ำ เมื่อคุณติดต่อฉันเพื่อขอรหัสบางอย่างฉันอาจส่งรุ่นที่เป็นเวอร์ชั่นล่าสุดมาให้คุณไม่ใช่รุ่นที่ฉันใช้ในเอกสารต้นฉบับ ถ้าเพียงเพราะฉันไม่ได้มีรุ่นดั้งเดิมอีกต่อไป
khinsen

3
การศึกษาเชิงประจักษ์จริง ๆ แล้วติดต่อผู้เขียนและขอข้อมูลแม้ว่าผู้เขียนได้ลงนามในข้อตกลงสิทธิ์การใช้งานเพื่อให้ตามคำขอแสดงว่าผู้เขียนน้อยปฏิบัติตาม ตัวอย่างเช่นดูdx.doi.org/10.1371/journal.pone.0007078และการอ้างอิงในนั้น หากวิธีนี้ใช้ไม่ได้ผลกับข้อมูลฉันคิดว่ามันไม่ใช่วิธีแก้ปัญหาที่ดีสำหรับรหัสเช่นกัน
cboettig
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.