Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中读取FASTA文件的最佳方法#_C#_Bioinformatics_Fasta - Fatal编程技术网

C# 在c中读取FASTA文件的最佳方法#

C# 在c中读取FASTA文件的最佳方法#,c#,bioinformatics,fasta,C#,Bioinformatics,Fasta,我有一个包含几个蛋白质序列的FASTA文件。格式如下 ---------------------- >protein1 MYRALRLLARSRPLVRAPAAALASAPGLGGAAVPSFWPPNAAR MASQNSFRIEYDTFGELKVPNDKYYGAQTVRSTMNFKIGGVTE RMPTPVIKAFGILKRAAAEVNQDYGLDPKIANAIMKAADEVAE GKLNDHFPLVVWQTGSGTQTNMNVNEVISNRAIEMLGGELGSK IPVHPNDHVNK

我有一个包含几个蛋白质序列的FASTA文件。格式如下

----------------------
>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++感兴趣,在映泰上查看这个问题的答案:


    帮自己一个忙,如果不需要的话,不要重新发明轮子。

    谢谢大家。我感谢你的帮助