Décalage sur les lignes d'un fichier csv ou txt produit par mon script en python3
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:
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 :
- 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:
Code:
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 !