Eu tenho um diretório /gwas_test
e dentro dele eu tenho centenas de pastas de cada número de 1-200. Dentro de cada uma dessas pastas numeradas há outra pasta (que eu não preciso fazer nada) e 1 arquivo com estatísticas resumidas de estudos de associação genomewide (que eu preciso). Quero filtrar as variantes em p-value threshold
(coluna $14
) de <5e-08
e substituir o arquivo _imputed.txt mais antigo.
Formato de diretório
/panfs/panasas01/ssm/rkl/gwas_test/47/47_imputed.txt
/panfs/panasas01/ssm/rkl/gwas_test/50/50_imputed.txt
etc....
Formato de dados de amostra (por exemplo, 47_imputed.txt)
SNP CHR BP GENPOS ALLELE1 ALLELE0 A1FREQ INFO CHISQ_LINREG P_LINREG BETA SE CHISQ_BOLT_LMM_INF P_BOLT_LMM_INF
rs10399793 1 49298 0 T C 0.376316 0.338912 0.377712 5.4E-01 -0.0211143 0.0362302 0.339636 5.6E-01
rs2462492 1 54676 0 C T 0.598932 0.337095 0.0074522 9.3E-01 0.00137975 0.0358395 0.00148209 9.7E-01
rs114608975 1 86028 0 T C 0.896535 0.340982 2.25213 1.3E-01 0.0878816 0.0573706 2.34648 1.3E-01
rs6702460 1 91536 0 G T 0.542851 0.335954 0.00774451 9.3E-01 0.00564083 0.0352847 0.0255572 8.7E-01
Aqui está o código que usei:
find /panfs/panasas01/ssm/rkl/gwas_test/ -name "*_imputed.txt" -type f | while read fname;do
fileBaseName='basename "${fname}" '
fileDirName='dirname "${fname}" '
fileBaseName='basename "${fname}" '
fileDirName='dirname "${fname}" '
awk -v outputPath="${fileDirName}"
awk '($14<=5e-08) {print $1,$2,$3,$5,$6,$7,$11,$12,$14}' $fname > outputPath "{$fileDirName}/$fname"
done