Skip to content
Snippets Groups Projects
Commit c38dc9b0 authored by Pacome Riobe's avatar Pacome Riobe
Browse files

Premier jet pour le parser et le tableau

parent 34fe3f9b
No related branches found
No related tags found
No related merge requests found
Code 0 → 100644
import gffutils
import pandas as pd
import os
def gff_a_html(gff_file, output_html):
"""
Analyse un fichier GFF et génère un tableau HTML avec les informations des gènes extraites
Parameters:
- gff_file (str): chemin de ou est enregistré le fichier GFF
- output_html (str): chemin de ou on veux que le fichier HTML s'enregistre
Returns:
- rien mais enregistre un fichier HTML avec un tableau de donnée la ou on lui a demandé
"""
# base de données temporaire du fichier
db = gffutils.create_db(gff_file, dbfn=":memory:", force=True, keep_order=True, merge_strategy="create_unique", sort_attribute_values=True)
# memory : pour pas stocker sur disque (RAM)
#force = true : recrée base si elle existe déja
#merge_strategy="create_unique" : pour que les valeurs fusionnée reste unique
#sort_attribute_values=True : tri valeurs
data = [] # Liste stock infos
# éléments GFF
for feature in db.all_features(): #all_feature() est une methode des gffutils
entry = {
"Feature Type": feature.featuretype,
"ID": feature.id,
"Start": feature.start,
"End": feature.end,
"Strand": feature.strand,
"Locus ID": feature.attributes.get("locus_tag", ["N/A"])[0],
"Parent": feature.attributes.get("Parent", ["None"])[0],
"Gene Product": feature.attributes.get("product", ["Unknown"])[0],
}
data.append(entry)
# TABLEAU :
df = pd.DataFrame(data, columns=["ID", "Start", "End", "Locus ID", "Gene Product"])
# fichier HTML
df.to_html(output_html, index=False)
print(f"HTML table generated: {output_html}")
if __name__ == "__main__":
gff_file = "/Users/claramoreno/PycharmProjects/PythonProjectPaster/exemple.gff.py"
output_html = "/Users/claramoreno/PycharmProjects/PythonProjectPaster/output.html"
print(gff_a_html(gff_file,output_html))
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment