Executando muitas amostras

Executar o pipeline em algumas amostras é relativamente simples, mas quando precisamos executá-lo em centenas de amostras pode ser um pouco complicado digitar todos os comandos. Para esse propósito, é uma boa ideia escrever um script de wrapper para lidar com a execução.

Como exemplo, vamos supor que você tenha os seguintes arquivos:

.
└── fastq
    ├── ERR1664623_1.fastq.gz
    ├── ERR1664623_2.fastq.gz
    ├── ERR1664624_1.fastq.gz
    ├── ERR1664624_2.fastq.gz
    ├── ERR1664635_1.fastq.gz
    ├── ERR1664635_2.fastq.gz
    ├── ERR1664636_1.fastq.gz
    ├── ERR1664636_2.fastq.gz
    ├── ERR1664664_1.fastq.gz
    ├── ERR1664664_2.fastq.gz
    ├── ERR1664665_1.fastq.gz
    └── ERR1664665_2.fastq.gz

Primeiro, precisaremos criar uma lista dos prefixos de amostra que você gostaria de executar. Para fazer isso, podemos executar o seguinte comando.

ls fastq/ | grep _1.fastq.gz | sed 's/_1.fastq.gz//' > samples.txt

Isso colocará todos os prefixos de arquivo em um arquivo chamado samples.txt. Podemos então usar em paralelo para executar nosso comando tb-profiler para cada amostra no arquivo como este. Antes de executar o tb-profiler, devemos criar as pastas onde ele armazenará os arquivos bam, vcf e os resultados. Temos que fazer isso porque, caso contrário, as várias instâncias do tb-profiler executadas em paralelo irão todas tentar criar as mesmas pastas ao mesmo tempo e você terá um erro.

mkdir bam vcf results

Agora estamos prontos para executar tb-profiler em paralelo.

cat samples.txt | parallel --bar -j 2 tb-profiler profile -1 fastq/{}_1.fastq.gz -2 fastq/{}_2.fastq.gz -p {}

Você pode ajustar o parâmetro -j para permitir que mais trabalhos sejam executados em paralelo. Eu defini isso para 2, mas se você tiver um HPC ou computador poderoso, você pode aumentá-lo.

Last updated