diff --git a/Code b/Code new file mode 100644 index 0000000000000000000000000000000000000000..d3cc52170a48623442c7a18454c2f293d3ee1dbe --- /dev/null +++ b/Code @@ -0,0 +1,51 @@ +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