#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])