अपने कम्प्यूटेशनल अनुसंधान को प्रतिलिपि प्रस्तुत करने योग्य बनाने के लिए मुझे एक पत्रिका लेख (या ऑनलाइन पोस्ट) के साथ क्या सामग्री शामिल करनी चाहिए?


23

कम्प्यूटेशनल साइंस रिसर्च में रिप्रोड्यूसबिलिटी अधिक से अधिक महत्वपूर्ण हो गई है। (उदाहरण के लिए, रोजर पेंग द्वारा इस लेख को विज्ञान में देखें ; मैं ऐसे अन्य लेखों और वेब साइटों से भी अवगत हूं।) हालांकि, यह मेरे लिए स्पष्ट नहीं है कि मुझे जर्नल लेख (या ऑनलाइन) बनाने के लिए कितनी जानकारी शामिल करनी चाहिए। मेरे कम्प्यूटेशनल अनुसंधान प्रतिलिपि प्रस्तुत करने योग्य (यह मानते हुए कि बौद्धिक संपदा समझौतों की तरह कोई अन्य बाधाएं नहीं हैं)। क्या कोई दिशा-निर्देश हैं, और यदि नहीं, तो क्या लोग सुझाव दे सकते हैं कि शोधकर्ताओं को अपने कम्प्यूटेशनल विज्ञान अनुसंधान को प्रतिलिपि प्रस्तुत करने योग्य बनाने के लिए क्या कदम उठाने चाहिए?

उत्तर में विशेष रूप से उपयोग उन सुझावों को लागू करने के लिए संभव तरीके होंगे - मूल रूप से वर्कफ़्लो। वर्कफ़्लोज़ जो सिस्टम-अज्ञेयवादी या लिनक्स-आधारित हैं, बेहतर हैं। इसके अलावा, आपके द्वारा किए गए किसी भी प्रासंगिक व्यक्तिगत अनुभव पर चर्चा करना भी उपयोगी होगा।

अपने विशेष मामले में, मैं एक युगल उदाहरण के साथ एक सैद्धांतिक पेपर लिख रहा हूं जो कि सरल है कि वे MATLAB में किए जा सकते हैं। मुझे लगता है कि इस मामले में, MATLAB स्क्रिप्ट सहित, साथ ही साथ मेरी मशीन पर MATLAB के विशिष्ट संस्करण को ध्यान में रखते हुए, प्रतिलिपि प्रस्तुत करने योग्यता सुनिश्चित करने के लिए पर्याप्त होगा। हालाँकि, मुझे यकीन है कि वहाँ और अधिक जटिल परिदृश्य हैं, और भविष्य के प्रोजेक्ट्स के बारे में जानने के लिए प्रजनन योग्य अनुसंधान करने के बारे में सलाह बहुत उपयोगी होगी।

जवाबों:


17

महत्व के मोटे क्रम में।

सोर्स कोड

  1. वह कोड बनाएं जो आपके एल्गोरिथ्म के प्रमुख पहलुओं को उपलब्ध करता है। यहां तक ​​कि अगर उपयोगकर्ता इसे बना या चला नहीं सकता है, तो वे वास्तव में पढ़ सकते हैं कि क्या किया गया है। मैंने कई बार साधारण निर्णयों पर ध्यान दिया है जो एक पेपर में दर्ज़ नहीं किए गए थे, लेकिन स्रोत कोड के साथ कुछ मिनटों का जो निष्कर्ष दिया गया था।
  2. इसे चलाने योग्य बनाओ। इसमें आश्रित पुस्तकालयों के संस्करणों का दस्तावेजीकरण शामिल है और आमतौर पर आपको कुछ पोर्टेबल कोड लिखने की आवश्यकता होती है। सुनिश्चित करें कि यह आपके अलावा अन्य कम से कम एक मशीन का निर्माण करता है (यदि आपने इसे साफ-सुथरे तरीके से नहीं बनाया है तो छिपी हुई निर्भरता रखना आसान है)।
  3. उपयोग किए गए कोड के संस्करण को निर्दिष्ट करें। यदि औपचारिक रूप से जारी किया गया संस्करण नहीं है (और कभी-कभी तब भी), तो संस्करण के SHA1 का दस्तावेजीकरण करें। (यह सबसे स्वाभाविक रूप से DSCMs जैसे Git और Mercurial पर लागू होता है, लेकिन कहीं भी उपयोग किया जा सकता है।) यह गारंटी देने का एक बहुत विश्वसनीय तरीका है कि किसी के पास वास्तव में कोड का समान संस्करण है।
  4. कंपाइलर वेंडर, वर्जन, और ऑप्टिमाइज़ेशन फ़्लैग, सिस्टम लाइब्रेरी जैसे लिबक, सीपीयू टाइप और मेमोरी टाइप और टोपोलॉजी (विशेष रूप से प्रदर्शन अध्ययन के लिए) सहित कॉन्फ़िगरेशन और होस्ट पैरामीटर शामिल करें।

रन-टाइम पैरामीटर / इनपुट फ़ाइलें

पूरा इनपुट विनिर्देश शामिल करें। यदि यह किसी स्क्रिप्ट द्वारा जनरेट किया गया था, तो उस स्क्रिप्ट को शामिल करें। यदि यह विशाल डेटा है, तो डेटा को कैसे प्राप्त करें और संसाधित करें, इसे कैसे दस्तावेज़ करें। यदि आपके एल्गोरिथ्म में यादृच्छिकता है, तो उपयोग किए गए यादृच्छिक संख्या जनरेटर और बीज को निर्दिष्ट करें।

आंकड़े और तालिकाओं को उत्पन्न करने का प्रयास

इन लिपियों को शामिल करने के लिए बहुत मददगार है, दोनों किसी भी प्रश्न को स्पष्ट करने के लिए कि आंकड़े वास्तव में क्या दिखाते हैं और पाठक को प्रयोग करते हैं कि अगर वे पैरामीटर बदलते हैं या एल्गोरिथ्म को संशोधित करते हैं तो चीजें कैसे बदलती हैं।


इकाई परीक्षणों को शामिल करना कितना महत्वपूर्ण होगा? मुझे प्रतिलिपि प्रस्तुत करने योग्यता के लिए मुझे कितनी अच्छी तरह से दस्तावेज़ कोड शामिल करना चाहिए?
ज्योफ ऑक्सीबेरी

यदि आप केवल परिणाम के पुनरुत्पादकता चाहते हैं, तो यूनिट परीक्षण और मैनुअल पेज / उपयोगकर्ता के मैनुअल आवश्यक नहीं हैं। यदि आप भविष्य के coauthors या अपने सॉफ़्टवेयर (उद्धरण ...) के उपयोगकर्ताओं को आकर्षित करने की कोशिश कर रहे हैं, तो पुन: उपयोग और इसे अच्छी तरह से प्रलेखित करने के लिए सॉफ़्टवेयर लिखना सार्थक है। ध्यान दें कि आपका सॉफ़्टवेयर दूसरों के उपयोग के लिए है या नहीं, इसके लिए परीक्षण और दस्तावेज़ीकरण आपको लंबे समय में समय की बचत कर सकते हैं, सिर्फ इसलिए कि यह आपको घूमने और अधिक आत्मविश्वास से प्रयोग करने देता है।
जेड ब्राउन

6

अधिकांश पत्रिकाओं को किसी भी औपचारिक तरीके से इसके लिए सेट नहीं किया गया है, लेकिन हमने हाल ही में आर्काइव ऑफ न्यूमेरिकल सॉफ्टवेयर की स्थापना की है जिसका विशेष रूप से स्रोत कोड और बाकी सब कुछ है जो लेख का हिस्सा होना आवश्यक है। इसे देखें: http://journals.tdl.org/ans सबमिशन का स्वागत है!


2
मान लें कि आप संपादकीय बोर्ड के कुछ सदस्य के पालतू सॉफ्टवेयर परियोजना का उपयोग करते हैं । मैं मदद नहीं कर सकता लेकिन यह महसूस करता हूं कि यह आवश्यकता पत्रिका की अखंडता को कम करती है।
जैक पॉल्सन

1
@JackPoulson: यह एक ऐसा बिंदु है जिसकी हमने संपादकों के बीच लंबाई पर चर्चा की है, और जिसकी चर्चा हमने समुदाय के अन्य लोगों के साथ और भी अधिक लंबाई में की है। मुझे लगता है कि हम सभी आपकी बात को देखते हैं, लेकिन एक ही समय में, हमें ऐसा लगा कि हम इसे दो कारणों से किसी अन्य तरीके से नहीं कर सकते हैं: (i) हम नहीं जानते कि यादृच्छिक प्रोजेक्ट X के लिए समीक्षक कहां ढूंढें। (ii) समुदाय में एक निश्चित सहमति है कि कौन सी परियोजनाएं उच्च गुणवत्ता वाली हैं और कौन सी नहीं हैं; हम नहीं चाहते थे कि ANS हर वानबेब प्रोजेक्ट के लिए एक आउटलेट बने। जैसा कि हम वेबपेज पर बताते हैं, हम अंततः सभी उच्च-गुणवत्ता वाले पैकेजों को शामिल करना चाहते हैं।
वोल्फगैंग बैंगर्थ

2
किस कारण से एक समीक्षक को "यादृच्छिक क्षेत्र X" के बजाय "यादृच्छिक प्रोजेक्ट X" से परिचित होना पड़ता है? मैं इसे ऊपर लाता हूं क्योंकि मुझे लगता है कि पत्रिका कागजों के एक महत्वपूर्ण वर्ग को याद कर रही है, क्योंकि पैकेज की दी गई सूची के साथ लागू करने के लिए क्या संभव है पर गंभीर सीमाएं हैं। उदाहरण के लिए, समानांतर कंप्यूटिंग में कोई मौलिक योगदान नहीं हो सकता है, क्योंकि MPI, या स्वर्ग निषेध, BLAS या LAPACK में कॉल में डुबोने वाली कोई भी चीज, जर्नल के मानकों का उल्लंघन करती प्रतीत होगी। मुझे इस बारे में आगे ऑफ़लाइन बात करने में खुशी होगी।
जैक पोल्सन

@JackPoulson: जहां तक ​​मैं बता सकता हूं, यदि आप किसी अन्य जर्नल में एक पेपर लिखने के अलावा, समानांतर कंप्यूटिंग में एक मौलिक योगदान देना चाहते हैं, तो आप यह सुनिश्चित करने के लिए ANS में "लाइब्रेरी परिचय" पेपर भी लिख सकते हैं कि आपकी लाइब्रेरी है पुस्तकालयों की अनुमोदित सूची में जोड़ा गया।
ज्योफ ऑक्सीबेरी

1
@GeoffOxberry: वोल्फगैंग और मेरे बीच एक सौहार्दपूर्ण वार्तालाप था, और आम जमीनी निष्कर्ष यह था कि रैखिक बीजगणित पुस्तकालयों की सूची को बहुत विस्तारित किया जाना चाहिए, लेकिन यह कि पत्रिका का लक्ष्य केवल प्रतिलिपि प्रस्तुत करने की क्षमता की तुलना में "उच्च-गुणवत्ता" वाली पुस्तकालयों के लिए है, और इसलिए कुछ वीटिंग प्रक्रिया होनी चाहिए ।
जैक पॉल्सन

3

में

Stodden, वी 2009 "प्रतिलिपि प्रस्तुत करने योग्य के लिए लीगल फ़्रेमवर्क वैज्ञानिक अनुसंधान।" CISE

विक्टोरिया स्टोडन पूर्ण "शोध संकलन" प्रकाशित करने की सलाह देते हैं, और निम्नलिखित घटकों को पी पर सूचीबद्ध करते हैं। 38:

  1. शोध पत्र
  2. डेटा - डेटा के प्रसंस्करण के लिए प्रलेखन और कोड सहित
  3. प्रयोग - सभी स्रोत कोड; प्रलेखन, पैरामीटर, सेटिंग्स और ऑपरेटिंग सिस्टम निर्भरता
  4. प्रयोग के परिणाम - आंकड़े, डेटा, चित्रण स्रोत फाइलें; और प्रयोगात्मक परिणामों के प्रसंस्करण के प्रलेखन और स्पष्टीकरण
  5. कोई सहायक सामग्री

2

कम से कम, आपके प्रयोग करने के लिए आपके द्वारा उपयोग किया जाने वाला सोर्स कोड और डेटा कहीं न कहीं एक्सेप्टेबल होना चाहिए। यदि आवश्यक हो तो अपना कोड बनाने के लिए निर्देश जोड़ें। वास्तव में इतनी कम ओपन जर्नल्स हैं कि एक खुला और स्थापित नियम नहीं है।


2

मैं एल्सेवियर के लिए काम करता हूं। मेरी कंपनी ने जर्नल मुद्दों में कोलाज फ्रेमवर्क (एक्ज़ीक्यूटेबल पेपर ग्रैंड चैलेंज के जवाब में विकसित) का उपयोग करना शुरू कर दिया है ताकि लेखकों को अपने कागजात में परिणामों और आंकड़ों को पुन: पेश करने के लिए आवश्यक सभी डेटा और कोड को शामिल करने में सक्षम बनाया जा सके। यह सुविधा पाठकों के लिए लेख में रिपोर्ट किए गए परिणामों को पुन: पेश करना और अपने स्वयं के अनुसंधान के लिए प्रकाशित सामग्री का पुन: उपयोग करना आसान बनाती है। कोलाज़ ओपन-सोर्स और मालिकाना सॉफ्टवेयर की एक विस्तृत विविधता का समर्थन करता है; अधिक जानकारी यहाँ जानकारी वीडियो में और कोलाज़ संलेखन पर्यावरण वेबसाइट पर देखी जा सकती है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.