#import pysam #seq_inf= {}#On definit le dictionnaire #samfile = pysam.AlignmentFile("/home/theo/dev/git/cnvCallerGPU/3544.bam", "rb")#Importation du fichier bam #for read in samfile.fetch(until_eof=True):#Boucle qui va lire le fichier bam en entier #seq_id=read.query_name#Attribution de l'ID de la sequence #chro=read.reference_name#Attribution du nom du chromosome #start=read.reference_start#Attribution position départ #lenght=read.query_length#Attribution longueur sequence #end=read.reference_end#Attribution position fin #seq_inf[chro]={}#Création d'un nouveau dictionnaire avec le nom du chromosome à chaque itération de boucle #seq_inf[chro]=({"seq_id" : seq_id, "start" : start, "end" : end, "lenght" : lenght, "depth" : 0})#attribution de différentes informations pour chaque chromosome à chaque itération de boucle #samfile.close() #def depth_function(seq_inf):#Definition d'une fonction qui va calculer la profondeur # for chro, data in seq_inf.items(): # depth = [0] * (data[-1]["end"] +1) #on crée une liste qui stock la profondeur de chaque chromosome. On prend la dernière position lue de chaque dictionnaire. On rajoute +1 parce que ça compte à partir de 0. # for position in range(start, end +1):#on reprend les position start et end défini au début # depth[position] += 1 #On calcule la profondeur en ajoutant +1 à chaque itération #depth_function(seq_inf)#On fait appel à la fonction pour le dictionnaire de base #import pyopencl as cl #ctx = cl.create_some_context() #queue = cl.CommandQueue(ctx) #mf = cl.mem_flags import pysam seq_inf = {} # On définit le dictionnaire samfile = pysam.AlignmentFile("/home/theo/dev/git/cnvCallerGPU/3544.bam", "rb") # Importation du fichier bam for read in samfile.fetch(until_eof=True): # Boucle qui va lire le fichier bam en entier seq_id = read.query_name # Attribution de l'ID de la séquence chro = read.reference_name # Attribution du nom du chromosome start = read.reference_start # Attribution position de départ length = read.query_length # Attribution longueur de la séquence end = read.reference_end # Attribution position de fin if chro not in seq_inf: seq_inf[chro] = [] # Création d'une liste vide pour chaque chromosome seq_inf[chro].append({"seq_id": seq_id, "start": start, "end": end, "length": length, "depth": 0}) samfile.close() def depth_function(seq_inf): # Définition d'une fonction qui va calculer la profondeur for chro, data in seq_inf.items(): for record in data: start = record.get("start") # Utiliser get() pour obtenir la valeur de "start" end = record.get("end") # Utiliser get() pour obtenir la valeur de "end" if start is not None and end is not None:#Comme j'ai des None on calcule la profondeur quand on peut... depth = [0] * (end - start + 1) # On crée une liste qui stocke la profondeur pour chaque position du chromosome for position in range(start, end + 1): #on reprend les position start et end défini au début depth[position - start] += 1 # On calcule la profondeur en ajoutant +1 à chaque iteration depth_function(seq_inf) # On fait appel à la fonction pour le dictionnaire de base print(seq_inf[chro])