Archive

Pgm python de recherche codon stop et start

GheKha

Bonjour
Proposition de code Python pour rechercher codons stop et start dans une sequence de bases nucleotides; avec quelques exemples

algorithme prediction de gene stop et start

def next_codon_stop(sequence, index):
“”"
recherche du 1er codon stop dans une sequence de nucleotides, apres un index donné
“”"
sequence = sequence.upper() #mise en majuscule d’eventuelles minuscules
seq = sequence.split() #gestion/suppression d’eventuels espaces
sequence = ‘’.join(seq)

index -= 1  # en Python, index sur une sequence demarre à 0
if index + 3 <= len(sequence):
    while index + 3 <= len(sequence):
        # triplets successifs
        print(sequence[index:index + 3] + ' ', end='')
        # test sur triplet / codons stop 'TAG' ou 'TGA' ou 'TAA'
        if (sequence[index:index + 3] == 'TAG') or (sequence[index:index + 3] == 'TGA') or (sequence[index:index + 3] == 'TAA'):
            return index + 1    # remettre index non Python
        index += 3
    return 0    # si aucune occurence stop trouvée
else:
    return 0    # si index > dernier triplet de la sequence

def next_codon_start(sequence, index):
“”"
recherche du 1er codon start dans une sequence de nucleotides, apres un index donné
“”"
sequence = sequence.upper()
seq = sequence.split()
sequence = ‘’.join(seq)

index -= 1      # en Python, index sur une sequence demarre à 0
if index + 3 <= len(sequence):
    while index + 3 <= len(sequence):
        # triplets successifs
        print(sequence[index:index + 3] + ' ', end='')
        # test sur triplet / codon start 'ATG'
        if (sequence[index:index + 3] == 'ATG'):
            return index + 1    # remettre index non Python
        index += 3
    return 0    # si aucune occurence start trouvée
else:
    return 0    # si index > dernier triplet de la sequence

def imprime(seq, ind):
print(f’La sequence = {seq}’)
print(f’de longueur {len(seq)}’)
print(f’\n\tindex codon stop = {next_codon_stop(seq, ind)} à partir index {ind}’)
print(f’\n\tindex codon start = {next_codon_start(seq, ind)} à partir index {ind}’)

seq1 = ‘TTAAGCTTAATGGGCACGAGCCGGTAGGCGGATTAA’
index = 1 # index possibles de valeur = (1 + n*3)
imprime(seq1, index)
print()

seq2 = ‘TTCATTATG’
index = 7
imprime(seq2, index)
print()

index = 1
seq3 = ‘GAT ATC AGT AGC ttC TAc ATT taG TTA ccA’
imprime(seq3, index)
print()

index = 1
seq4 = ‘GCC TAA AGT TAA TAC CAA ATT tAA TTA cAT CAA’
imprime(seq4, index)

adrienollier

Bonjour, pourriez-vous mieux présenter votre code Python (voir Bonnes pratiques pour partager du code dans le forum) ?

Merci

GheKha

Bonsoir.
Ayant terminé ce MOOC depuis pls semaines, et déjà reparti sur 4 autres MOOC, je n’ai actuellement pas le temps d’améliorer la lisibilité de mon pgm… mais promis, dans 2 mois, je m’y replonge.
Il est vrai que j’avais fait ça à l’arrache… Sorry
Cordialement

GheKha
## Projet recherche de codon dans une sequence d'ADN par GheKha
## Verion 2  -  Fevrier 2020


def next_codon_stop(sequence, index):
	"""
	recherche du 1er codon stop trouvé dans une sequence de nucleotides, à partir d'un index donné
	:param sequence: de nucleotide à tester
	:param index: de départ de la recherche
	:return: l'index trouvé pour le codon stop
	"""
	sequence = sequence.upper()		# mise en majuscule d’eventuelles minuscules
	seq = sequence.split()			# gestion/suppression d’eventuels espaces
	sequence = ''.join(seq)

	index -= 1  					# en Python, index sur une sequence demarre à 0
	if index + 3 <= len(sequence):
		while index + 3 <= len(sequence):
			# triplets successifs
			print(sequence[index:index + 3] + ' ', end='')
			# test sur triplet / codons stop 'TAG' ou 'TGA' ou 'TAA'
			if (sequence[index:index + 3] == 'TAG') or (sequence[index:index + 3] == 'TGA') or (sequence[index:index + 3] == 'TAA'):
				return index + 1    # remettre index non Python
			index += 3
		return 0    				# si aucune occurence stop trouvée
	else:
		return 0    				# si index > dernier triplet de la sequence

def next_codon_start(sequence, index):
	"""
	recherche du 1er codon start trouvé dans une sequence de nucleotides, à partir d'un index donné
	:param sequence: de nucleotide à tester
	:param index: de départ de la recherche
	:return: l'index trouvé pour le codon start
	"""

	sequence = sequence.upper()
	seq = sequence.split()
	sequence = ‘’.join(seq)

	index -= 1      				# en Python, index sur une sequence demarre à 0
	if index + 3 <= len(sequence):
		while index + 3 <= len(sequence):
			# triplets successifs
			print(sequence[index:index + 3] + ' ', end='')
			# test sur triplet / codon start 'ATG'
			if (sequence[index:index + 3] == 'ATG'):
				return index + 1    # remettre index non Python
			index += 3
		return 0    				# si aucune occurence start trouvée
	else:
		return 0    				# si index > dernier triplet de la sequence

def imprime(seq, ind):
	"""
	Module d'impression des résultats après appel de la recherche de l'index d'arrivée
	:param seq: sequence à tester
	:param ind: index de départ de la recherche
	:return: imprime le resultat formaté
	"""
	print(f’La sequence = {seq}’)
	print(f’de longueur {len(seq)}’)
	print(f’\n\tindex codon stop = {next_codon_stop(seq, ind)} à partir index {ind}’)
	print(f’\n\tindex codon start = {next_codon_start(seq, ind)} à partir index {ind}’)



"""
Differents exemples avec pls valeurs de sequences, et index
mais vous pouvez en essayer d'autres
"""
seq1 = ‘TTAAGCTTAATGGGCACGAGCCGGTAGGCGGATTAA’
index = 1		# index possibles de valeur = (1 + n*3)
imprime(seq1, index)
print()

seq2 = ‘TTCATTATG’
index = 7
imprime(seq2, index)
print()

index = 1
seq3 = ‘GAT ATC AGT AGC ttC TAc ATT taG TTA ccA’
imprime(seq3, index)
print()

index = 1
seq4 = ‘GCC TAA AGT TAA TAC CAA ATT tAA TTA cAT CAA’
imprime(seq4, index)"""