C# 在c中读取FASTA文件的最佳方法#
我有一个包含几个蛋白质序列的FASTA文件。格式如下C# 在c中读取FASTA文件的最佳方法#,c#,bioinformatics,fasta,C#,Bioinformatics,Fasta,我有一个包含几个蛋白质序列的FASTA文件。格式如下 ---------------------- >protein1 MYRALRLLARSRPLVRAPAAALASAPGLGGAAVPSFWPPNAAR MASQNSFRIEYDTFGELKVPNDKYYGAQTVRSTMNFKIGGVTE RMPTPVIKAFGILKRAAAEVNQDYGLDPKIANAIMKAADEVAE GKLNDHFPLVVWQTGSGTQTNMNVNEVISNRAIEMLGGELGSK IPVHPNDHVNK
----------------------
>protein1
MYRALRLLARSRPLVRAPAAALASAPGLGGAAVPSFWPPNAAR
MASQNSFRIEYDTFGELKVPNDKYYGAQTVRSTMNFKIGGVTE
RMPTPVIKAFGILKRAAAEVNQDYGLDPKIANAIMKAADEVAE
GKLNDHFPLVVWQTGSGTQTNMNVNEVISNRAIEMLGGELGSK
IPVHPNDHVNKSQ
>protein2
MRSRPAGPALLLLLLFLGAAESVRRAQPPRRYTPDWPSLDSRP
LPAWFDEAKFGVFIHWGVFSVPAWGSEWFWWHWQGEGRPYQRF
MRDNYPPGFSYADFGPQFTARFFHPEEWADLFQAAGAKYVVLT
TKHHEGFTNW*
>protein3
MKTLLLLAVIMIFGLLQAHGNLVNFHRMIKLTTGKEAALSYGF
CHCGVGGRGSPKDATDRCCVTHDCCYKRLEKRGCGTKFLSYKF
SNSGSRITCAKQDSCRSQLCECDKAAATCFARNKTTY`
-----------------------------------
有没有一种很好的方法来读取此文件并单独存储序列
感谢要做到这一点,一种方法是:
- 如果行以
开头,则添加 向量末尾的元素 并将行保存。子字符串(1)保存到 元素作为蛋白质名称。 在中初始化序列 元素等于>
李>”
- 如果line.length==0,则为 无所事事
- 否则该行不会以
那么它是序列的一部分,所以 go当前向量元素。序列 +=行。因此,>
和>protein2
之间的每一行 连接并保存到>protein3
protein2的序列
我想也许更详细地了解一下确切的文件结构会有所帮助。只要看看你所拥有的(并快速浏览一下上面的样本),就会发现蛋白质的名称前面有一个
,后面至少有一个换行符,所以这是一个很好的开始
您可以在换行符上拆分文件,并查找
字符以确定名称
从这里开始就不那么清晰了,因为我不确定序列数据是否都在一行中(没有换行符),或者它是否可以有换行符。如果没有,那么您应该能够只存储该序列信息,并转到下一个蛋白质名称。大概是这样的:
var reader = new StreamReader("C:\myfile.fasta");
while(true)
{
var line = reader.ReadLine();
if(string.IsNullOrEmpty(line))
break;
if(line.StartsWith(">"))
StoreProteinName(line);
else
StoreSequence(line);
}
如果是我,我可能会使用TDD和一些样本数据来构建一个简单的解析器,然后继续插入样本,直到我觉得我已经涵盖了格式中的所有主要差异。你能使用C#以外的语言吗?在Perl、Python、Ruby、Java和R中,有许多优秀的库用于处理FASTA文件和其他生物序列(我想不起来)。它们通常被标为Bio*(即BioPerl、BioJava等) <>如果你对C或C++感兴趣,在映泰上查看这个问题的答案:
帮自己一个忙,如果不需要的话,不要重新发明轮子。谢谢大家。我感谢你的帮助