awk - 允许与子集 .fastq 不匹配的 Grep
问题描述
我在 linux 集群上使用 bash。如果它们包含与查询序列的匹配项,我正在尝试从 .fastq 文件中提取读取。下面是一个包含三个读取的示例 .fastq 文件。
$ cat example.fastq
@SRR1111111.1 1/1
CTGGANAAGTGAAATAATATAAATTTTTCCACTATTGAATAAAAGCAACTTAAATTTTCTAAGTCG
+
AAAAA#EEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEA<AAEEEEE<6
@SRR1111111.2 2/1
CTATANTATTCTATATTTATTCTAGATAAAAGCATTCTATATTTAGCATATGTCTAGCAAAAAAAA
+
AAAAA#EE6EEEEEEEEEEEEAAEEAEEEEEEEEEEEE/EAE/EAE/EA/EAEAAAE//EEAEAA6
@SRR1111111.3 3/1
CTATANTATTGAAATAATAATGTAGATAAAACTATTGAATAACAGCAACTTAAATTTTCAATAAGA
+
AAAAA#EE6EEEEEEEEEEEEAAEEAEEEEEEEEEEEE/EAE/EAE/EA/EAEAAAE//EEAEAA6
我想提取包含序列 GAAATAATA 的读取。我可以使用 grep 执行此提取,如以下命令所示。
$ grep -F -B 1 -A 2 "GAAATAATA" example.fastq > MATCH.fastq
$ cat MATCH.fastq
@SRR1111111.1 1/1
CTGGANAAGTGAAATAATATAAATTTTTCCACTATTGAATAAAAGCAACTTAAATTTTCTAAGTCG
+
AAAAA#EEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEA<AAEEEEE<6
@SRR1111111.3 3/1
CTATANTATTGAAATAATAATGTAGATAAAACTATTGAATAACAGCAACTTAAATTTTCAATAAGA
+
AAAAA#EE6EEEEEEEEEEEEAAEEAEEEEEEEEEEEE/EAE/EAE/EA/EAEAAAE//EEAEAA6
然而,这种策略不能容忍任何不匹配。例如,包含序列 GAAAT G ATA 的读取将被忽略。我需要这种提取来容忍查询序列中任何位置的一个不匹配。所以我的问题是我怎样才能做到这一点?是否有与 grep 功能相似的序列比对包可用?是否有任何可用的 fastq 子集包可以执行这种类型的操作?需要注意的是,速度非常重要。感谢您的指导。
解决方案
这是一个agrep
用于获取匹配记录数的解决方案和一个 awk,它使用某些上下文打印出这些记录(由于缺少-A
和-B
in agrep
):
$ agrep -1 -n "GAAATGATA" file |
awk -F: 'NR==FNR{for(i=($1-1);i<=($1+2);i++)a[i];next}FNR in a' - file
输出:
@SRR1111111.1 1/1
CTGGANAAGTGAAATAATATAAATTTTTCCACTATTGAATAAAAGCAACTTAAATTTTCTAAGTCG
+
AAAAA#EEEEEEEEEEEEEEEEEEEEEEEAEEEEEEEEEEEEEEEEEEEEEEEEEA<AAEEEEE<6
@SRR1111111.3 3/1
CTATANTATTGAAATAATAATGTAGATAAAACTATTGAATAACAGCAACTTAAATTTTCAATAAGA
+
AAAAA#EE6EEEEEEEEEEEEAAEEAEEEEEEEEEEEE/EAE/EAE/EA/EAEAAAE//EEAEAA6
推荐阅读
- uiimage - 为什么我的 TabView 在图像加载时变回主页选项卡?
- reactjs - 使用 React ref 回调渲染后滚动到数组中的元素
- azure-cosmosdb - CosmosDB - 实体框架核心 - 包含无法翻译
- vue.js - Vue-cli生产构建-浏览器缓存问题?
- docker - kubectl 运行 nginx ,minikube Ubuntu apiserver 18.04 问题
- javascript - Jquery查找日期是否在日期范围之间
- javascript - 如何在 JMeter 的 Webdriver Sampler 中获取警报消息?
- postgresql - Postgres 查找两个表之间的日期不重叠的位置
- iis - IIS10 url 重写
- url - 如何更改wildfly中的根URL