मैं अपनी पाइपलाइन चलाने के लिए सांपमेक का उपयोग कर रहा हूं।
rule fisrt_rule:
input: "{sample}/path/to/{sample}.txt"
output: "{sample}/path/to/{sample}.stat"
shell:
"""
do something
"""
rule next_rule:
input:
folder="{sample}/path/to/",
output:
raw="{sample}/path/to/{sample}.raw.txt"
shell:
"""
do something
"""
next_rule
में सॉफ़्टवेयर केवल वही फ़ोल्डर चाहता है जहां फ़ाइलें हैं और फ़ाइल का नाम नहीं है, लेकिन चूंकि सांपमेक पिछले नियम को इनपुट के रूप में नहीं लेता है, इसलिए यह कहता है कि files do not exist
। पिछले आउटपुट को इनपुट के रूप में लेने के बिना सांपमेक को नियम चलाने के लिए कहने का कोई तरीका है?
1
user3224522
29 जिंदा 2021, 17:33
1 उत्तर
सबसे बढ़िया उत्तर
आप शेल स्क्रिप्ट के भीतर निर्देशिका का नाम निकाल सकते हैं:
rule next_rule:
input:
folder= "{sample}/path/to/{sample}.stat",
output:
raw= "{sample}/path/to/{sample}.raw.txt"
shell:
"""
folder=`dirname {input.folder}`
do something $folder
"""
पिछले आउटपुट को इनपुट के रूप में लेने के बिना सांपमेक को नियम चलाने के लिए कहने का कोई तरीका है?
हो सकता है कि आप ऐसा करने के लिए कुछ तर्क के साथ आ सकते हैं, लेकिन मुझे लगता है कि आप सांपमेक के उद्देश्य और डिजाइन सिद्धांतों के खिलाफ जाएंगे।
1
dariober
29 जिंदा 2021, 18:00
संबंधित सवाल
नए सवाल
snakemake
स्नेकेमेक पायथन-शैली विनिर्देश भाषा के साथ एक वर्कफ़्लो प्रबंधन प्रणाली है।
params
का उपयोग करके आपको यह सुनिश्चित करना होगा कि स्ट्रिंगoutdir= "{sample}/path/to"
उस नियम के अनुरूप है जिसने इसे उत्पन्न किया है। मेरा मतलब है, थोड़ा दोहराव है- अगर आप एक को बदलते हैं तो आपको दूसरे को भी बदलना याद रखना होगा।