resultados diferentes no terminal vs submissão qsub

1

Estou tentando executar um comando no terminal e também enviá-lo ao cluster, mas estou obtendo resultados diferentes.

Quando eu digito no terminal isso:

$ for i in *_1.fastq.gz; do echo $i >> t.txt; zcat $i | \
    grep "GCTGGCAAAAAGAAGGTAACATGTTTT" >> t.txt ; echo >> t.txt ; done

Eu recebo a saída assim

adrenal_4a_ERR315335_1.fastq.gz
GCANAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGGAACTATGTAGCATAGTGTCTTAACACCTCAGTAAAGAGATCGGAAGAGCACA

adrenal_4a_ERR315452_1.fastq.gz
GCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGGAACTATGTAGCATAGTGTCTTAACACCTCAGTAAAGAGATCGGAAGAGCACA
CAAGAACAGAATGAAGAAAGTCAGGGGGACTGCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGAAACTATGTAGCATAGTGTCTT

adrenal_4c_ERR315392_1.fastq.gz

adrenal_4c_ERR315450_1.fastq.gz

and so on..

Isso é o que a saída é esperada.

Quando envio o mesmo comando para o cluster HPC via qsub , estou obtendo um resultado completamente diferente:

$ qsub -l h_vmem=4G -cwd -j y -b y -N n_tr -R y \
    "for i in *_1.fastq.gz; do echo $i >> t.txt; zcat $i | \
       grep "GCTGGCAAAAAGAAGGTAACATGTTTT" >> t.txt ; echo >> t.txt ; done"

adrenal_4a_ERR315452_1.fastq.gz
GCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGGAACTATGTAGCATAGTGTCTTAACACCTCAGTAAAGAGATCGGAAGAGCACA
CAAGAACAGAATGAAGAAAGTCAGGGGGACTGCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGAAACTATGTAGCATAGTGTCTT

adrenal_4a_ERR315452_1.fastq.gz

appendix_4a_ERR315437_1.fastq.gz
GCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGGAACTATGTAGCATAGTGTCTTAACACCTCAGTAAAGAGATCGGAAGAGCACA
CAAGAACAGAATGAAGAAAGTCAGGGGGACTGCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGAAACTATGTAGCATAGTGTCTT

adrenal_4a_ERR315452_1.fastq.gz
GCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGGAACTATGTAGCATAGTGTCTTAACACCTCAGTAAAGAGATCGGAAGAGCACA
CAAGAACAGAATGAAGAAAGTCAGGGGGACTGCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGAAACTATGTAGCATAGTGTCTT

adrenal_4a_ERR315452_1.fastq.gz
GGACTGCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGAAACTATGTAGCATAGTGTCTTAACACCTCAGTAAAGAGATCGGAAGA

appendix_4a_ERR315465_1.fastq.gz
GCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGGAACTATGTAGCATAGTGTCTTAACACCTCAGTAAAGAGATCGGAAGAGCACA
CAAGAACAGAATGAAGAAAGTCAGGGGGACTGCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGAAACTATGTAGCATAGTGTCTT

adrenal_4a_ERR315452_1.fastq.gz

appendix_4b_ERR315345_1.fastq.gz
GCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGGAACTATGTAGCATAGTGTCTTAACACCTCAGTAAAGAGATCGGAAGAGCACA
CAAGAACAGAATGAAGAAAGTCAGGGGGACTGCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGAAACTATGTAGCATAGTGTCTT

adrenal_4a_ERR315452_1.fastq.gz
GCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGGAACTATGTAGCATAGTGTCTTAACACCTCAGTAAAGAGATCGGAAGAGCACA
CAAGAACAGAATGAAGAAAGTCAGGGGGACTGCAAAGGCCAATGTTGGTGCTGGCAAAAAGAAGGTAACATGTTTTAAGAAACTATGTAGCATAGTGTCTT

O que estou fazendo de errado aqui?

    
por user3138373 09.07.2018 / 19:55

2 respostas

6

Você está usando o tipo errado de aspas para o seu comando.

As aspas duplas ( "..." ) permitem que o shell avalie suas variáveis, como $i , e porque você já usou essa variável e ficou com o valor adrenal_4a_ERR315452_1.fastq.gz , significa que seu qsub vê isso para execução:

for i in *_1.fastq.gz; do echo adrenal_4a_ERR315452_1.fastq.gz >> t.txt; zcat adrenal_4a_ERR315452_1.fastq.gz | grep GCTGGCAAAAAGAAGGTAACATGTTTT >> t.txt ; echo >> t.txt ; done

Altere as aspas mais externas para aspas simples ( '...' ) e elas funcionarão conforme o esperado:

qsub -l h_vmem=4G -cwd -j y -b y -N n_tr -R y 'for i in *_1.fastq.gz; do echo $i >> t.txt; zcat $i | grep "GCTGGCAAAAAGAAGGTAACATGTTTT" >> t.txt ; echo >> t.txt ; done'
    
por 09.07.2018 / 20:12
1

Tente fazer isso em vez disso:

$ qsub -l h_vmem=4G -cwd -j y -b y -N n_tr -R y \
    'for i in *_1.fastq.gz; do echo $i >> t.txt; zcat $i | \
        grep "GCTGGCAAAAAGAAGGTAACATGTTTT" >> t.txt ; echo >> t.txt ; done'

Observe a diferença?

Alterei suas aspas duplas (") para aspas simples (').

 'for i in ....t.txt ; done'
 ^^^                     ^^^

Isto irá protegê-los do seu shell local expandindo qualquer coisa dentro. Quando você usa aspas duplas, o *_1.fastq.gz é suscetível de ser expandido localmente vs. no nó do cluster de computador.

    
por 09.07.2018 / 20:11