Como mesclar dois arquivos gz no novo arquivo de saída com nome específico

0

Eu tenho 96 arquivos de leitura raw * fastqc.gz de 24 amostras. Cada amostra foi sequenciada em duas pistas para cada par.

Eu gostaria de mesclar leituras para cada par de ambas as faixas em um arquivo de saída com o mesmo identificador de nome do nome do arquivo de amostra (2271_merged_R1_001.fastq.gz).

File names are in this order:
22[71-94]*R[1-2]_001.fastq.gz;

**2271**_ID890_1_S1_L001_**R1_001.fastq.gz**
**2271**_ID890_1_S1_L002_**R1_001.fastq.gz**

**2271**_ID890_1_S1_L001_**R2_001.fastq.gz**
**2271**_ID890_1_S1_L002_**R2_001.fastq.gz**

Eu tentei o seguinte script curto, mas apenas dois arquivos de saída estão sendo gerados (primeiro e último).

PARA arquivos R1

  for rf in 22[71-94]*R1_001.fastq.gz; do zcat $rf > 22"${71-94}"_merged_R1_001.fastq.gz ; done

PARA arquivos R2

for rf in 22[71-94]*R2_001.fastq.gz; do zcat $rf > 22"${71-94}"_merged_R2_001.fastq.gz ; done

Minhas perguntas são:  1. Por que apenas dois arquivos de saída são gerados?  2. O número de leituras nos arquivos de saída não é a soma dos arquivos mesclados das duas faixas.  3. Existe uma maneira legal, eu poderia fazer a mesclagem de leituras de ambas as pistas para ambos (R1 e R2) em uma única etapa, em vez de executá-la duas vezes para cada tipo de leitura.

O que deu errado no código? e como eu poderia verificar se os arquivos de saída estão completamente mesclados?

Obrigado

    
por TCFP HCDG 25.04.2018 / 17:01

1 resposta

0

Primeiro, 22[71-94]*R1_001.fastq.gz não se expande para o que você acha que se expande para

Isto é efetivamente 22[1-9]*R1_001.fastq.gz - neste, [71-94] é um agrupamento de caracteres em que "7 OR 1 a 9 OU 4" simplifica para "1 a 9".

22{71..94}*R1_001.fastq.gz é provavelmente a expansão que você estava procurando, mas seu loop executará zcat uma vez para cada arquivo encontrado, não concatenará as coisas juntas. Efetivamente, cada arquivo R1 sequencialmente obtém zcat -ed no mesmo arquivo de saída, sobrescrevendo as gravações anteriores.

Eu acredito que isso é o que você está procurando, considerando uma suposição (veja abaixo):

for num in {71..94}; do zcat 22"$num"*R1_{L001,L002}.fastq.gz > "22${num}_merged_R1_001.fastq" ; done

Suposição: Você quer que o resultado seja descompactado, assim eu removi o .gz dos arquivos resultantes (como apontado por Patrick)
Se esse não for o caso, basta alterar zcat para cat e anexar .gz ao arquivo resultante novamente.

    
por 25.04.2018 / 18:02

Tags