Commit c7b394b5 authored by Theo Serralta's avatar Theo Serralta

Modification of code and it works !

parent 66b472e7
import pysam #import pysam
seq_inf= {}#On defini le dictionnaire #seq_inf= {}#On definit le dictionnaire
samfile = pysam.AlignmentFile("/home/theo/dev/git/cnvCallerGPU/3544.bam", "rb")#Importation du fichier bam #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 #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 #seq_id=read.query_name#Attribution de l'ID de la sequence
chro=read.reference_name#Attribution du nom du chromosome #chro=read.reference_name#Attribution du nom du chromosome
start=read.reference_start#Attribution position départ #start=read.reference_start#Attribution position départ
lenght=read.query_length#Attribution longueur sequence #lenght=read.query_length#Attribution longueur sequence
end=read.reference_end#Attribution position fin #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]={}#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 #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() #samfile.close()
def depth_function(data):#Definition d'une fonction qui va calculer la profondeur #def depth_function(seq_inf):#Definition d'une fonction qui va calculer la profondeur
for chro, data in seq_inf.items(): # for chro, data in seq_inf.items():
depth = [0] * [-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. # 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 # 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[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 #depth_function(seq_inf)#On fait appel à la fonction pour le dictionnaire de base
#import pyopencl as cl #import pyopencl as cl
...@@ -29,3 +29,36 @@ depth_function(seq_inf)#On fait appel à la fonction pour le dictionnaire de bas ...@@ -29,3 +29,36 @@ depth_function(seq_inf)#On fait appel à la fonction pour le dictionnaire de bas
#queue = cl.CommandQueue(ctx) #queue = cl.CommandQueue(ctx)
#mf = cl.mem_flags #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])
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment