2010-09-21 9 views
19

मैं कंप्यूटर विज्ञान से आया हूं। पृष्ठभूमि, लेकिन अब मैं जीनोमिक्स कर रहा हूँ।जैव सूचना विज्ञान परियोजनाओं को व्यवस्थित करने का सबसे अच्छा तरीका?

मेरी परियोजनाओं में जैव सूचनाओं में शामिल हैं, जिनमें आमतौर पर शामिल हैं: अनुक्रमों और विभिन्न जीनोम-एनोटेशन-फीचर्स के बीच अनुक्रमों को संरेखित करना, जैविक नमूने के विभिन्न वर्गों, समय-पाठ्यक्रम डेटा, microarray, उच्च-थ्रूपुट अनुक्रमण ("next-generation" sequencing, हालांकि यह वर्तमान पीढ़ी वास्तव में है) डेटा, इस तरह की चीजें।

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

इसके बजाए, इस क्षेत्र में हर कोई क्या करता है, एक पर्ल-स्क्रिप्ट या AWK-दूसरे के बाद एक-लाइनर है, आमतौर पर एक बार उपयोग के लिए।

मुझे लगता है कि कारण यह है कि इनपुट डेटा और प्रारूप इतनी तेजी से बदलते हैं, प्रश्नों को जल्द ही उत्तर दिया जाना चाहिए (समय सीमा!), कि परियोजना संगठन के लिए कोई समय नहीं लगता है।

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

आप अलग-अलग प्रारूपों में एक ही जानकारी के साथ पूरे निर्देशिका पेड़ के साथ समाप्त होते हैं जब तक आप अगले चरण के लिए आवश्यक एक विशेष प्रारूप तक नहीं पहुंच जाते हैं, और "tmp_SNP_cancer_34521_unique_IDs_not_Chimp.csv" जैसे नामों वाली दर्जन फाइलें हैं जहां आपके पास नहीं है एक दिन बाद मामूली विचार आपने इस फाइल को क्यों बनाया और यह वास्तव में क्या है।

थोड़ी देर के लिए मैं MySQL का उपयोग कर रहा था जिसने मदद की, लेकिन अब जिस गति में नया डेटा जेनरेट किया गया है और स्वरूपों में परिवर्तन ऐसा है कि उचित डेटाबेस डिज़ाइन करना संभव नहीं है।

मैं एक एकल प्रकाशन जो इन मुद्दों के साथ सौदों के बारे में पता कर रहा हूँ (नोबल, डब्ल्यू एस (2009 जुलाई)। कम्प्यूटेशनल जीव विज्ञान परियोजनाओं के आयोजन के लिए एक त्वरित गाइड। PLoS कंप्यूटर बॉय 5 (7), e1000424 +)। लेखक रकम लक्ष्य काफी अच्छी तरह से:

मूल सिद्धांत मार्गदर्शक सरल है: किसी अपरिचित अपनी परियोजना के साथ अपने कंप्यूटर फ़ाइलों को देखो और विस्तार से समझते हैं कि आप क्या किया और क्यों में सक्षम होना चाहिए।

ठीक है, मैं यही चाहता हूं! लेकिन मैं पहले से ही उस लेखक के समान अभ्यासों का पालन कर रहा हूं, और मुझे लगता है कि यह बिल्कुल अपर्याप्त है।

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

(मैं Taverna के अर्थ में "वर्कफ़्लो" शब्द का उपयोग नहीं कर रहा हूं; वर्कफ़्लो द्वारा मेरा मतलब केवल उन चरणों, आदेशों और प्रोग्रामों का अर्थ है जिन्हें आप किसी विशेष लक्ष्य तक पहुंचने के लिए निष्पादित करना चुनते हैं)।

आप अपनी जैव सूचना विज्ञान परियोजनाओं को व्यवस्थित कैसे करते हैं?

+0

मेरे सवालों का है: कैसे * आप * => समुदाय विकी – fredley

+1

बहुत बढ़िया सवाल करना । मुझे अपने आप को संतोषजनक उत्तर नहीं मिला है। मैं जवाब के लिए तत्पर हूं! – pufferfish

उत्तर

11

मैं अनुसंधान वैज्ञानिकों की एक टीम में एम्बेडेड एक सॉफ्टवेयर विशेषज्ञ हूं, हालांकि पृथ्वी विज्ञान में, जीवन विज्ञान नहीं। आप जो कुछ लिखते हैं वह मुझसे परिचित है।

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

इससे पहले कि आप किसी भी लड़ाई से लड़ना शुरू करें, आपको यह सुनिश्चित करने के लिए अपने विचारों की गंभीरता से जांच करनी होगी कि सामान्य प्रयोजन सॉफ्टवेयर इंजीनियरिंग के बारे में आपने जो कुछ सीखा है, वह आपकी वर्तमान स्थिति के लिए मान्य है। ऐसा मत मानो कि यह है।

मेरे मामले में मैंने उठाई गई पहली लड़ाई स्रोत कोड नियंत्रण का कार्यान्वयन था।जब आपके पास संस्करण नियंत्रण नहीं होता है तो उन सभी चीजों के उदाहरण ढूंढना मुश्किल नहीं था:

  • कुछ उपयोगकर्ताओं के पास 'समान' कोड के विभिन्न संस्करणों के साथ दर्जनों निर्देशिकाएं थीं, और केवल उनमें से सबसे अजीब विचार यह था कि उनमें से अधिकतर अद्वितीय थे, या वे वहां क्यों थे;
  • कुछ उपयोगकर्ताओं ने उन्हें ओवरराइट करके उपयोगी संशोधन खो दिए हैं और वे जो भी किया है उसे याद रखने में सक्षम नहीं हैं;
  • उन परिस्थितियों को ढूंढना आसान था जहां लोग एक ही कार्यक्रम के बारे में काम कर रहे थे लेकिन वास्तव में अलग-अलग दिशाओं में असंगत रूप से विकसित हो रहे थे;
  • आदि आदि आदि

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

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

0

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

प्रस्तुति के बारे में ... फिर इस दुनिया में अन्य लोग हैं जो बहुत चुनौतीपूर्ण समय सीमाएं हैं, और वे अभी भी अच्छे सॉफ्टवेयर डिज़ाइन का उपयोग कर रहे हैं।

कई मामलों में, एक अच्छे सॉफ्टवेयर डिजाइन के बाद परियोजनाओं को रोक नहीं है और यहां तक ​​कि इसके डिजाइन और रखरखाव को भी गति दे सकता है (कम से कम लंबे समय तक)।

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

शुभकामनाएं।

6
जैव सूचना विज्ञान-विशिष्ट जवाब के लिए

, आप की संभावना (जैव सूचना विज्ञान StackExchange 1.0 साइट) BioStar पर अधिक इन दो प्रश्न में दिलचस्पी होगी

+0

यह आश्चर्यजनक है। यह एक स्टैक एक्सचेंज 1.0 साइट है, और यह अभी भी मौजूद है (लगभग 3 घंटे पहले अंतिम पोस्ट)! –

1

यहां समस्या का हिस्सा सॉफ्टवेयर बनाम दस्तावेज़ीकरण के लिए प्रलेखन के बीच भेद है प्रकाशन।

सॉफ्टवेयर विकास (और शोध योजना) डिजाइन के लिए, महत्वपूर्ण दस्तावेज संरचनात्मक और जानबूझकर है। इस प्रकार, डेटा मॉडलिंग, कारण आप कुछ क्यों कर रहे हैं, आदि। मैं आपकी शोध योजना को दस्तावेज करने के लिए सीएस में सीखे गए कौशल का उपयोग करने की दृढ़ता से अनुशंसा करता हूं। आप जो करना चाहते हैं उसके लिए एक योजना होने के कारण आप लंबे समय तक विश्लेषण कर रहे हैं, जबकि बहु-कार्य करने के लिए आपको बहुत सारी स्वतंत्रता मिलती है।

दूसरी तरफ, जैव सूचना विज्ञान कार्य बहुत सारे विश्लेषण है। यहां, आपको एक प्रयोगशाला नोटबुक जैसे दस्तावेज़ों का इलाज करने की आवश्यकता है, और जरूरी नहीं कि एक परियोजना योजना। आप दस्तावेज बनना चाहते हैं जो आपने किया था, शायद एक संक्षिप्त टिप्पणी क्यों (उदा। जब आप डेटा समस्या निवारण कर रहे हैं), और आउटपुट और परिणाम क्या हैं। मैं जो करता हूं वह काफी सरल है। सबसे पहले, मैं एक निर्देशिका में शुरू करता हूं और एक गिट रेपो बनाता हूं। फिर, जब भी मैं कुछ फ़ाइल बदलता हूं, तो मैं इसे रेपो को प्रतिबद्ध करता हूं। जितना संभव हो, मैं डेटा आउटपुट को ऐसे तरीके से नामित करने का प्रयास करता हूं जिससे मैं अपने गिट में फ़ाइलों को अनदेखा कर सकूं। फिर, जितना संभव हो, मैं एक समय में एक परियोजना के लिए एक टर्मिनल सत्र पर काम करता हूं, और जब मैंने एक विराम बिंदु मारा (जैसे कि जब मुझे ग्रिड में भेजे गए नौकरियों का एक सेट मिला है, तो मैं 'इतिहास चलाता हूं | cut -c 8- 'और इसे एक प्रयोगशाला नोट फ़ाइल में पेस्ट करें। फिर मैंने जो किया है उसके लिए टिप्पणियां जोड़ने के लिए फ़ाइल को संपादित करें, और याद रखें, गिट चेक/गिट चेकआउट में गिट एड/प्रतिबद्ध लाइन बदलें (मेरे पास एक स्क्रिप्ट है जो यह करती है प्रतिबद्ध संदेशों के आधार पर)। जब तक मैं इसे सही निर्देशिका में शुरू करता हूं, और मेरा बाहरी डेटा दूर नहीं जाता है, इसका मतलब है कि मैं बाद में पूरी प्रक्रिया को फिर से बना सकता हूं।

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

-2

आप इस पत्र में एक नजर है हो सकता है: "A quick guide to organizing computational biology projects"

यह सिर्फ के बारे में आप क्या कह रहे हैं है ....

+1

यदि आपने मेरी मूल पोस्ट पढ़ ली है, तो आपने देखा होगा कि मैं वास्तव में उस पेपर का हवाला देते हूं और इसे पहले से ही संदर्भित करता हूं। –

संबंधित मुद्दे

 संबंधित मुद्दे