【发布时间】:2021-11-20 19:49:25
【问题描述】:
希望你一切都好。我发现了与我要问的问题相近的问题,但没有一个是完全正确的。在过去的两周里,我一直在为此苦苦挣扎,终于设法取得了足够的进展,我觉得我可以在这里提问!
我已经从我 BLASTED 的序列中下载了一个 HitTable
accno percent seqstart seqend
AC020656|33 84.713 116580 116735
AC020656|33 90.303 118279 118443
AC020656|33 87.654 120390 121470
AC020656|33 82.609 121323 121390
AC123694|11 77.622 158333 158474
AC123694|11 84.559 158238 160142
我要做的是找出每个条目(入藏号)的这些匹配中哪些是重叠的,哪些不是重叠的,这样我就可以继续我的管道的其余部分。我的目标是将 ID(或整行,此时我并不大惊小怪!)放入单独的文件中,然后使用它们来提取相应的 FASTA 文件,这样我就可以根据它是否重叠或应用更合适的程序不是。
我觉得最好的方法是使用awk 来:
- 检查 ID ($1) 是否相同(同时检查 AC020656|33 第 4 行和 AC123694|11 第 4 行!)
- 如果 seq end ($4) 小于下一行的 seq start ($3),则进行比较。如果是这样,将其打印到名为“nonover.txt”的文件中,否则打印到“overlap.txt”
我通过修改HERE找到的代码开始尝试这个答案:
awk '($1==c1 && $3==c3 && $4==c4){print line RS $0}{line=$0;c1=$1;c4<$3}' mydata.txt
但是,毫不奇怪,它不起作用,因为我显然遗漏了一些东西。我链接的答案中的 OP 非常友好地解释了它,我有信心对其进行调整,但好吧,那是我的无能!
我还尝试使用找到的代码 HERE 和 HERE 来应用我的问题,我觉得这与我正在尝试做的事情很接近。我还查看了 awk 的手册,虽然它确实有点帮助(我尝试使用 getline 函数,但总是遇到错误),但老实说,我认为我不够精通解决这个问题立即发布。
正如 markp-fuso 所指出的,我对上述内容的预期输出理想情况下是两个文件,其中包含以下数据:
noverlap.txt (as each rows seqend is smaller than the next rows seqstart, therefore it's not overlapped)
accno percent seqstart seqend
AC020656|33 84.713 116580 116735
AC020656|33 90.303 118279 118443
AC020656|33 87.654 120390 121470
overlap.txt (as each rows seqend is larger than the next rows seqstart, and it is overlapping)
accno percent seqstart seqend
AC020656|33 87.654 120390 121470
AC020656|33 82.609 121323 121390
AC123694|11 77.622 158333 158474
AC123694|11 84.559 158238 160142
正如 Ed Morton 所指出的,如果某些条目重叠而其他条目不重叠,应该如何处理 acc.no - 可以将它们与 noverlap.txt 中的一些条目分开和重叠.txt。我将检查两个文件夹之间是否有任何相同的 acc.no,首先处理重叠,然后添加到不重叠的条目中,然后从那里继续。此处可以重复(请参阅两个 txt 文件中的 AC020656|33 87.654 120390 121470),我知道我是如何处理这些的,只是为了确认在我的真实数据上使用的方法。
TL;DR:使用基于 id(Acc.no)的分组,我可以将列中的数据与不同列和下面的行中的数据进行比较吗?对适合操作系统用户的循环、脚本或单/两行答案感到满意
提前感谢您,非常欢迎任何建议,感谢您抽出时间阅读/回答我的问题。
更新:感谢出色的 Ed Morton 提供的完美解决方案。我只是在添加我正在做的事情,以删除在非重叠 txt 文件中找到的单个重复条目(但发现它们应该在重叠的位置),这正在修改在此答案中找到的代码HERE
【问题讨论】:
-
如果您有 4 行相同的 acc ($1) 并且前 2 行的 seq 重叠但第二 2 行不重叠怎么办?该 acc 的所有 4 行是否都进入 1 个文件,如果是,重叠文件或 nooverlap 文件?如果不是 - 会发生什么?请edit您的示例输入/输出包含该案例。
-
好点,我还没有看到任何这样的案例,但已经相应地更新了理想的情况!