par Terminale S+3 » jeu. 2 févr. 2023 22:40
Bonjour,
Je travaille sur un projet en Python, et je suis coincé à une étape du projet. Je ne sais pas comment m'y prendre (au niveau du raisonnement), ce n'est pas l'aspect codage qui me pose problème. Je vais vous expliquer sur quoi je travaille :
Une séquence d'ADN est composé de 4 nucléotides : A, C, G, et T. Une enzyme de restriction peut couper un fragment d'ADN à une position spécifique lorsqu'il reconnait un motif particulier.
Par exemple, l'enzyme EcoRI reconnait le motif "GAATTC" et coupe en +1. On obtient alors "G" et "AATTC". L'endroit de coupure s'appelle le site de restriction. Ainsi, si mon fragment d'ADN est AAAAAGAATTCAA, la coupure par l'enzyme de restriction donnera deux fragments "AAAAAG" et "AATTCAA".
Jusqu'à maintenant, j'ai codé plusieurs fonctions, en suivant l'énoncé, dont les suivantes :
Une fonction qui prend en argument deux séquences de même taille, et qui retourne le nombre de différences entre ces deux séquences.
J'utilise cette fonction dans une deuxième fonction, qui s'appelle toutes_positions, qui me renvoie la liste de toutes les positions où un motif apparait dans une séquence.
Ma fonction troisième fonction fragment_lineaire utilise la fonction toutes_positions. Fragment_linéaire prend en argument une séquence, un motif, et la position de coupure. La fonction cherche dans la séquence le motif précis, et coupe à la position indiquée. Elle me retourne la liste des longueurs de chaque fragment, après coupure de l'enzyme de restriction.
C'est cela, l'enjeu : avoir la longueur de chaque fragment.
Voici comment fragment_lineaire fonctionne. Il utilise toutes_positions pour trouver liste des positions où se trouve le motif. J'additionne à chaque élément de cette liste la position de coupure, et j'ajoute la position 0 en début de liste.
Ensuite, je procède par soustraction pour avoir la longueur de chaque fragment.
J'obtiens ainsi la liste des longueurs de chaque fragment.
Voici où je bloque.
Le cas précédent suppose que le fragment d'ADN est linéaire.
Cependant, certains ADN peuvent être circulaire. Je souhaite créer une nouvelle fonction, fragment_circulaire. Comment faire ? L'une des difficultés, c'est que le site de restriction peut être "caché" par la représentation arbitrairement linéaire des fragments circulaires. Par exemple, ma séquence circulaire est CAGCAG, le motif est AGC, et je coupe en +1.
Il y aura bien un site de restriction, entre l'avant dernier et le dernier nucléotide. Il faudrait donc que ma fonction puisse "recoller" le début et la fin pour regarder s'il y a un motif.
Je me rends compte que c'est un peu long, je m'arrête ici. N'hésitez pas s'il vous faut un éclaircissement.
Merci de votre temps
Bonjour,
Je travaille sur un projet en Python, et je suis coincé à une étape du projet. Je ne sais pas comment m'y prendre (au niveau du raisonnement), ce n'est pas l'aspect codage qui me pose problème. Je vais vous expliquer sur quoi je travaille :
Une séquence d'ADN est composé de 4 nucléotides : A, C, G, et T. Une enzyme de restriction peut couper un fragment d'ADN à une position spécifique lorsqu'il reconnait un motif particulier.
Par exemple, l'enzyme EcoRI reconnait le motif "GAATTC" et coupe en +1. On obtient alors "G" et "AATTC". L'endroit de coupure s'appelle le site de restriction. Ainsi, si mon fragment d'ADN est AAAAAGAATTCAA, la coupure par l'enzyme de restriction donnera deux fragments "AAAAAG" et "AATTCAA".
Jusqu'à maintenant, j'ai codé plusieurs fonctions, en suivant l'énoncé, dont les suivantes :
Une fonction qui prend en argument deux séquences de même taille, et qui retourne le nombre de différences entre ces deux séquences.
J'utilise cette fonction dans une deuxième fonction, qui s'appelle [i]toutes_positions[/i], qui me renvoie la liste de toutes les positions où un motif apparait dans une séquence.
Ma fonction troisième fonction [i]fragment_lineaire[/i] utilise la fonction [i]toutes_positions[/i].[i] Fragment_linéaire[/i] prend en argument une séquence, un motif, et la position de coupure. La fonction cherche dans la séquence le motif précis, et coupe à la position indiquée. Elle me retourne la liste des longueurs de chaque fragment, après coupure de l'enzyme de restriction.
C'est cela, l'enjeu : avoir la longueur de chaque fragment.
Voici comment fragment_lineaire fonctionne. Il utilise toutes_positions pour trouver liste des positions où se trouve le motif. J'additionne à chaque élément de cette liste la position de coupure, et j'ajoute la position 0 en début de liste.
Ensuite, je procède par soustraction pour avoir la longueur de chaque fragment.
J'obtiens ainsi la liste des longueurs de chaque fragment.
Voici où je bloque.
Le cas précédent suppose que le fragment d'ADN est linéaire.
Cependant, certains ADN peuvent être circulaire. Je souhaite créer une nouvelle fonction, [i]fragment_circulaire[/i]. Comment faire ? L'une des difficultés, c'est que le site de restriction peut être "caché" par la représentation arbitrairement linéaire des fragments circulaires. Par exemple, ma séquence circulaire est CAGCAG, le motif est AGC, et je coupe en +1.
Il y aura bien un site de restriction, entre l'avant dernier et le dernier nucléotide. Il faudrait donc que ma fonction puisse "recoller" le début et la fin pour regarder s'il y a un motif.
Je me rends compte que c'est un peu long, je m'arrête ici. N'hésitez pas s'il vous faut un éclaircissement.
Merci de votre temps