Question

I possède un fichier FASTA contenant plusieurs séquences de protéines. Le format est

----------------------
>protein1
MYRALRLLARSRPLVRAPAAALASAPGLGGAAVPSFWPPNAAR
MASQNSFRIEYDTFGELKVPNDKYYGAQTVRSTMNFKIGGVTE
RMPTPVIKAFGILKRAAAEVNQDYGLDPKIANAIMKAADEVAE
GKLNDHFPLVVWQTGSGTQTNMNVNEVISNRAIEMLGGELGSK
IPVHPNDHVNKSQ

>protein2
MRSRPAGPALLLLLLFLGAAESVRRAQPPRRYTPDWPSLDSRP
LPAWFDEAKFGVFIHWGVFSVPAWGSEWFWWHWQGEGRPYQRF
MRDNYPPGFSYADFGPQFTARFFHPEEWADLFQAAGAKYVVLT
TKHHEGFTNW*

>protein3
MKTLLLLAVIMIFGLLQAHGNLVNFHRMIKLTTGKEAALSYGF
CHCGVGGRGSPKDATDRCCVTHDCCYKRLEKRGCGTKFLSYKF
SNSGSRITCAKQDSCRSQLCECDKAAATCFARNKTTY`

-----------------------------------

Y at-il un bon moyen de lire dans ce fichier et stocker les séquences séparément?

Merci

Était-ce utile?

La solution

Je pense que peut-être un peu plus de détails sur la structure de fichier exact pourrait être utile. Il suffit de regarder ce que vous avez (et un coup d'oeil rapide sur les échantillons sur wikipedia ) suggèrent que la nom de la protéine est préfixées avec >, suivie d'au moins une coupure de ligne, de sorte que ce serait un bon endroit pour commencer.

Vous pourriez diviser le fichier sur saut de ligne, et recherchez un caractère > pour déterminer le nom.

De là, il est un peu moins clair parce que je ne suis pas sûr si les données de séquence est en une seule ligne (pas de saut de ligne) ou si elle pourrait avoir des sauts de ligne. S'il n'y en a pas, alors vous devriez être en mesure de stocker seulement cette information de séquence, et de passer à l'autre nom de la protéine. Quelque chose comme ceci:

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);
}

Si, puis continuer à brancher étaient moi, je serais probablement utiliser TDD et quelques exemples de données pour construire un analyseur simple dans des échantillons jusqu'à ce que je sentais que j'avais couvert tous les écarts importants dans le format.

Autres conseils

Pour ce faire, une façon est de:

  1. Créer un vecteur où chaque emplacement titulaire d'un nom et la séquence
  2. Allez à travers la ligne de fichiers en ligne

    • Si la ligne commence par > puis ajoutez un élément à la fin du vecteur et enregistrer le line.substring (1) l'élément comme le nom de protéines. Initialiser la séquence dans le élément à égale "".
    • Si le line.length == 0 alors il est blanc et ne rien faire
    • Sinon la ligne ne démarre pas avec > puis elle fait partie de la séquence de sorte aller vecteur courant element.sequence + = Ligne. Ainsi, chaque ligne façon entre >protein2 et >protein3 est concaténer et enregistré au séquence de protein2

Peut-on utiliser une langue autre que C #? Il existe d'excellentes bibliothèques pour traiter les fichiers FASTA et autre séquence biologique en Perl, Python, Ruby, Java, et R (du haut de ma tête). Ils sont généralement marqués Bio * (à savoir BioPerl, BioJava, etc)

Si vous êtes intéressé par C ou C ++, consultez les réponses à cette question à plus Biostar: http://biostar.stackexchange.com/questions/1516/cc- bibliothèques pour-bio-informatique

Faites-vous une faveur et ne pas réinventer la roue si vous n'avez pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top