Pipe (passe a saída do comando anterior para o próximo comando) com “|” ao usar “bsub”

2

Oi, eu acho que esta é uma pergunta muito básica:

Existe alguma sintaxe específica para fazer o "piping" ao usar "bsub"?

Estou perguntando isso porque quando eu tive um problema como este:

# try to run the same command successfully ran in another host
bsub fastx_trimmer -Q33 -f 1 -l 230 -i myfile.fastq | fastq_quality_trimmer -Q33 -t 18 -l 20 -o Trimmed_file.fastq &

mas encontrei um erro:

fastq_quality_trimmer: input file (-) has unknown file format (not FASTA or FASTQ), first character = J (74)

o segundo comando parece não conseguir descobrir a saída do primeiro comando.

# try to run command without using "|"
bsub fastx_trimmer -Q33 -f 1 -l 230 -i myfile.fastq -o Trimmed_file.fastq
# seemed to work!

bsub fastq_quality_trimmer -Q33 -t 18 -l 20 -i Trimmed_file.fastq -o Trimme_file2.fastq &
# Also seemed to work!

# try to pipe again, did not work...
bsub fastx_trimmer -Q33 -f 1 -l 230 -i myfile.fastq | fastq_quality_trimmer -Q33 -t 18 -l 20 -o Trimme_file2.fastq &

# when call command without bsub, it seemed to work. 
fastx_trimmer -Q33 -f 1 -l 230 -i myfile.fastq | fastq_quality_trimmer -Q33 -t 18 -l 20 -o Trimme_file2.fastq &
# so the issue seemed to be "bsub"

Eu gostaria de usar o bsub porque meu host está usando o nó do gate (o host anterior não tem nó de gate, portanto não importa se eu uso o "bsub" ou não), e não quero criar "engarrafamento" "executando o comando no nó do gate. Alguma sugestão?

    
por Jun 24.02.2017 / 03:56

2 respostas

3

O comando bsub exibirá o ID de envio do trabalho e o nome da fila para a qual ele foi submetido, se o envio for bem-sucedido.

bsub não fornecerá a saída de fastx_trimmer , o que significa que não pode ser usado para entrada direta em fastq_quality_trimmer através de um pipe.

Você precisará enviar o pipeline inteiro para a fila para que ele funcione corretamente, colocando os comandos em um script de shell e submetendo-o (idealmente, se você planeja executá-lo várias vezes) ou citando todo o pipeline pipeline corretamente na chamada para bsub .

    
por 24.02.2017 / 09:20
2

Recebi sugestões do meu amigo por email. Duas soluções: 1. coloque o comando real em "".

bsub "fastx_trimmer -Q33 -f 1 -l 230 -i myfile.fastq | fastq_quality_trimmer -Q33 -t 18 -l 20 -o Trimmed_file.fastq”
  1. escreva um script para o bsub.

Eu tentei a solução 1. funcionou muito bem. Coloque aqui caso outras pessoas tenham problemas semelhantes.

    
por 24.02.2017 / 07:07