在C / C ++中遍历Fasta文件

时间:2014-12-09 09:12:49

标签: c++ c fasta

我正在用C / C ++编写一个程序来遍历一个格式如下的Fasta文件:

>ID and header information
SEQUENCE1
>ID and header information
SEQUENCE2

等等

以便找到所有唯一序列(检查是否有任何其他序列的子集) 并将唯一序列(和所有标题)写入输出文件。

我的方法是:

  1. 在开头将所有序列复制到数组/列表中(更有效的方法是这样做?)
  2. 抓取标头,将其附加到输出文件,将该标头的序列与列表/数组中的所有内容进行比较。如果是唯一的,请将其写在标题下,如果不删除它。
  3. 但是,我有点不确定如何正确阅读线条。我需要读取标题的顶行,然后“返回?”到下一行读取序列。有时序列跨越两行,所以我会使用>(来自上面的例子)作为分隔符吗?如果我使用C ++,我想我会使用iostream来实现这个目标吗?

    如果有人能给我一个正确的方向推动我想要阅读我需要操作的信息/如何进行比较,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先,您可能希望使用存在alrady的内容,而不是编写自己的FASTA读取例程,请参阅:http://lh3lh3.users.sourceforge.net/parsefastq.shtml

在内部,您将拥有没有换行符的序列,这可能会有所帮助。我认为最高级别的最简单方法是

  1. 循环使用fasta并将序列写入文件
  2. 对该文件进行排序
  3. 使用已排序的文件,可以更容易地选择子序列,因此编写一个程序来查找"唯一的ID"
  4. 使用唯一的ID返回到原始的fasta并获取您需要的任何其他信息。