gpt4 book ai didi

linux - FASTQ header 中字符串后的 Bash 条件 IF 语句

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:51 24 4
gpt4 key购买 nike

我只想提取覆盖率高于 2 且长度高于 504 的读数。这些都存储在 FASTQ 文件的每个 header 中。然而,我无法设计出一款可以根据这些品质进行过滤的单行代码。查看输入 FASTQ 的两行的示例。

感谢您的帮助。

>NODE_303303_length_504_cov_30.000000
CAGGATGTTGATCGGAAGAGCACACGTCTGAACTCCAGTCACATTACTCGATCTCGT
>NODE_303603_length_56_cov_1.000000
CAGGATGAGATCGGAAGAGCACACGTCTGAACTCCAGTCACATTACTCGATCTCGT

最佳答案

建议您提供输入文件和输出文件,以更清楚地表达您想要完成的任务。另外,请包含您尝试过的任何代码。

让我试试:

假设每个输入行如下所示:

>NODE_<node>_length_<length>_cov_<cov> <data>
<data1>
<data2>...
>NODE_<node>_length_<length>_cov_<cov> <data>

然后我们可以使用下划线和空格作为字段分隔符来解析输入。这是一个可能适合您的 awk 程序:

awk -F'[_ ]' '
$1 == ">NODE" { p = 0 }
$1 == ">NODE" && $4 > 504 && $6 > 2 { p=1 }
p == 1 { print }
' FASTQ_file

使用您的示例作为输入,没有输出。但这是另一个示例输入文件:

>NODE_303603_length_560_cov_2.000000 CAGGATGAGATCGGAAGAGCACACGTCTGAACTCCAGTCACATTACTCGATCTCGT
more data - don't expect to see this output
>NODE_303603_length_505_cov_2.000000 CAGGATGAGATCGGAAGAGCACACGTCTGAACTCCAGTCACATTACTCGATCTCGT
more data - don't expect to see this output
>NODE_303603_length_505_cov_2.000001 CAGGATGAGATCGGAAGAGCACACGTCTGAACTCCAGTCACATTACTCGATCTCGT
more data
this is the data we expect to see
>NODE_303303_length_504_cov_30.000000 CAGGATGTTGATCGGAAGAGCACACGTCTGAACTCCAGTCACATTACTCGATCTCGT
more data - don't expect to see this output

这是我们将所有内容放在一起时的输出:

 awk -F'[_ ]' '
$1 == ">NODE" { p = 0 }
$1 == ">NODE" && $4 > 504 && $6 > 2 { p=1 }
p == 1 { print }
' FASTQ_file

>NODE_303603_length_505_cov_2.000001 CAGGATGAGATCGGAAGAGCACACGTCTGAACTCCAGTCACATTACTCGATCTCGT
more data
this is the data we expect to see

关于linux - FASTQ header 中字符串后的 Bash 条件 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58559901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com