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 :
Mon script (voir ci-dessous) a pour but de :
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
- Compter les différents acide nucléique pour chaque sequence.
- 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:
Merci pour votre aide.
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()
A bientôt !
Partager