【问题标题】:modifying line names to avoid redundancies when files are merged in terminal在终端中合并文件时修改行名以避免冗余
【发布时间】:2015-06-24 15:53:17
【问题描述】:

我有两个包含生物 DNA 序列数据的文件。这些文件中的每一个都是 python 脚本的输出,该脚本根据序列开头的 DNA 条形码将每个 DNA 序列分配给样本 ID。这些 .txt 文件之一的输出如下所示:

>S066_1 IGJRWKL02G0QZG orig_bc=ACACGTGTCGC new_bc=ACACGTGTCGC bc_diffs=0
TTAAGTTCAGCGGGTATCCCTACCTGATCCGAGGTCAACCGTGAGAAGTTGAGGTTATGGCAAGCATCCATAAGAACCCTATAGCGAGAATAATTACTACGCTTAGAGCCAGATGGCACCGCCACTGATTTTAGGGGCCGCTGAATAGCGAGCTCCAAGACCCCTTGCGGGATTGGTCAAAATAGACGCTCGAACAGGCATGCCCCTCGGAATACCAAGGGGCGCAATGTGCGTCCAAAGATTCGATGATTCACTGAATTCTGCAATTCACATTACTTATCGCATTTCGCAGCGTTCTTCATCGATGACGAGTCTAG
>S045_2 IGJRWKL02H5XHD orig_bc=ATCTGACGTCA new_bc=ATCTGACGTCA bc_diffs=0
CTAAGTTCAGCGGGTAGTCTTGTCTGATATCAGGTCCAATTGAGATACCACCGACAATCATTCGATCATCAACGATACAGAATTTCCCAAATAAATCTCTCTACGCAACTAAATGCAGCGTCTCCGTACATCGCGAAATACCCTACTAAACAACGATCCACAGCTCAAACCGACAACCTCCAGTACACCTCAAGGCACACAGGGGATAGG

第一行是序列 ID,第二行是 DNA 序列。 ID第一部分的S_066表示该序列来自样本066,_1表示它在文件中的第一个序列(不是S_066本身的第一个序列)。由于所使用的 DNA 测序技术的细微差别,我需要从原始测序文件生成两个这样的文件,结果是我有其中两个文件的输出,然后我使用cat 将它们合并在一起.到目前为止一切顺利。

我的工作流程中的下一个下游步骤不允许使用相同的样本名称。现在它完成了一半,出错并关闭,因为它遇到了一些相同的序列 ID。因此,这两个文件中的第 400 个序列必须属于同一个样本,或者其他东西,生成相同的样本 ID(即两个文件可能有 S066_400)。

我想做的是使用一些代码在第二个文件的每隔一行的_ 之后立即插入一个数字(1000、4971 等),从第一行开始。这样,ID 将不再被混淆,我可以继续。因此,它将涵盖S066_2S066_24971S066_49712。部分问题在于 ID 的长度可能是可变的,因此它可以以S066_49BBT1_ 开头。

【问题讨论】:

  • 作为旁注:你到底为什么要在 bash 中这样做?

标签: unix terminal bioinformatics


【解决方案1】:

试试:

awk '/^\>/ {$1=$1 "_13"} {print $0}' filename > tmp.tmp
mv tmp.tmp filename

【讨论】:

  • 两件事 - 1. 这仅从第二个样本 ID 开始,然后继续。它不包括第一个样本 ID。 2. 这会在每个 ID 的末尾添加一个_13。所以,S066_02 现在读作S066_02_13。但是,我需要更类似于S066_0213S066_1302 的东西。对不起,如果我不够清楚,我已经在上面澄清了。
  • 好的,所以我自己修改以解决第二部分。我只需要它从文件的第一行开始,而不是第三行。
  • 这是正确的。我忘记将我的文本文件转换为纯文本,这导致了第一行问题。
猜你喜欢
  • 1970-01-01
  • 2011-01-31
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 2019-01-02
相关资源
最近更新 更多