Bonjour à tous,

Je suis en train de me réorienter en bioinformatique. En plein apprentissage de python, j'ai decide de passer un peu à la pratique. J'ai fait un script qui ouvre un fichier au format fasta. Il s'agit d'un fichier texte dans lequel on stocke des sequences nucléique (ATCG). Un fichier peut contenir une séquence nucléique ou plusieurs sequences.

Voici un exemple de fichier fasta avec plusieurs entrées :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>gi|373251181|ref|NG_001742.2| Mus musculus olfactory receptor GA_x5J8B7W2GLP-600-794 (LOC257854) pseudogène on chromosome 2
AGCCTGCCAAGCAAACTTCACTGGAGTGTGCGTAGCATGCTAGTAACTGCATCTGAATCTTTCAGCTGCT
TGTTGGGCCTCTCACAAGGCAGAGTGTCTTCATGGGACTTTGATATTTATTTTTGTACAACCTAAGAGGA
ACAAATCCTTTGACACTGACAAATTGGCTTCCATATTTTATACCTTAATCATCTCCATGTTGAATTCATT
GATCAACAGTTTAAGAAAAAAAGATGTAAAAATGCTTTTAGAAAGAGAGGCAAAGTTATGCACAATAACT
TCTCATGAAGTCACAGTTTGTTAAAAGTTGCCTTAGTTCACAATAAATAATTATGTATGCTCTATAATTT
CAGTGA
 
>gi|425889810|gb|JZ141974.1| ES4f_H12.esd SL-enriched library from schistosomula Schistosoma mansoni cDNA, mRNA sequence
ATGAAGTGAAAAATTTATTTATTTATAACAAAATGATGAATCAATGTACATTGTATTTATCTAATGTAGA
TATAGCCTAACTTCCCGCTTTTTTCAATGAGCGTATATTGCGTAATTCACGATATAATACATTTTGTTGA
ACAAGTGGATCAAATGCAACTTTCTCTTTACGATTATTAGCTAGACGAGGTCGAAAACCAACTACACAAT
GTCCTGAACCACTGGTACTTTCTAATAATACCATAACAGTTTTTATAAATCCTTGTGATGTTGACATAAA
GGATAAATGTGTATACTTGTACAAAGTTATTTATATTGGGTAATCTTCGTTGATATTATGTAATGATCAT
GCAACAAATCACAAGAGTAAAACCGTGACGG
Mon script (voir ci-dessous) a pour but de :

  1. Compter les différents acide nucléique pour chaque sequence.
  2. Enregistrer les résultats dans un fichier csv ou txt avec le nom de la sequence, le nombre de chaque acide nucléique.


Mon script lit bien les fichiers fasta et il créer bien le fichier que je lui demande. Seul problème, lorsque j'ouvre le tableau (csv ou txt) à l'aide de libre office ou excel. Les résultats sont décalés. C'est-à-dire que le nom de la séquence apparait bien dans la premiere ligne et à la premiere colonne. Mais les résultats associé à cette sequences sont écrite à partir de la seconde ligne et à la seconde colonne.

Comment résoudre ce problème ?

Petite question supplémentaire: comment faire un header ?

Voici le script que j'ai écris:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
#!/usr/bin/python3                                                                                                                                                                                                             
 
import sys, os
 
pyScriptName = sys.argv[0]
dataFileName = sys.argv[1]
outputFileName = sys.argv[2]
 
# Read fasta file                                                                                                                                                                                                              
fasta_dict = {}
 
with open(dataFileName, "r") as fasta_file, open(outputFileName, "w") as output_cpg:
    sequence_id = ""
    for line in fasta_file:
        if line.startswith(">"):
            sequence_id = line
            fasta_dict[sequence_id] = ""
        else:
            fasta_dict[sequence_id] += line.strip()
 
    for id in fasta_dict:                                                                                                                                                                                                     
        seq = fasta_dict[id]
        G_count = seq.count("G")
        C_count = seq.count("C")
        A_count = seq.count("A")
        T_count = seq.count("T")
        CpG_count = seq.count("CG")
        output_cpg.write(id +  ";" + str(G_count) + ";" + str(C_count) + ";" + str(A_count) + ";" + str(T_count) + ";" + str(CpG_count) + ";" + "\n")                                                
 
fasta_file.close()
output_cpg.close()
Merci pour votre aide.

A bientôt !