मैं अपनी पाइपलाइन चलाने के लिए सांपमेक का उपयोग कर रहा हूं।

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
बहुत-बहुत धन्यवाद, अब मैं आपके सुझाव का प्रयास करूंगा। अभी के लिए मैंने एक पैरा जोड़ा: outdir= "{sample}/path/to" next_rule में, काम कर रहा है। तो मूल रूप से मेरी समझ में यह सांपमेक में इतना सीधा नहीं है।
 – 
user3224522
29 जिंदा 2021, 18:09
1
params का उपयोग करके आपको यह सुनिश्चित करना होगा कि स्ट्रिंग outdir= "{sample}/path/to" उस नियम के अनुरूप है जिसने इसे उत्पन्न किया है। मेरा मतलब है, थोड़ा दोहराव है- अगर आप एक को बदलते हैं तो आपको दूसरे को भी बदलना याद रखना होगा।
 – 
dariober
29 जिंदा 2021, 18:15
नियम निष्पादन आदेश के संबंध में, मुझे लगता है कि यह अच्छा है कि सांपमेक आपको अधिक स्वतंत्रता नहीं देता है क्योंकि इस तरह से आपको पूरा यकीन है कि आउटपुट हमेशा सुसंगत और इनपुट के साथ अप-टू-डेट होता है।
 – 
dariober
29 जिंदा 2021, 18:17
चिंता न करें - यह महत्वपूर्ण नहीं है। अगर मुझे थोड़ा समय मिलता है तो मैं इसे बेहतर तरीके से समझाने की कोशिश करूंगा लेकिन यह कोई बड़ी बात नहीं है!
 – 
dariober
29 जिंदा 2021, 18:55