Convertir la chaine d'ADN complémentaire en une matrice bina
Fermé
Soma1316
Messages postés
17
Date d'inscription
vendredi 3 mars 2023
Statut
Membre
Dernière intervention
25 mai 2023
-
Modifié le 15 mars 2023 à 18:06
mamiemando Messages postés 33535 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 février 2025 - 15 mars 2023 à 18:15
mamiemando Messages postés 33535 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 février 2025 - 15 mars 2023 à 18:15
A voir également:
- Convertir la chaine d'ADN complémentaire en une matrice bina
- Convertir youtube en mp3 avec audacity - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Chaine tnt gratuite sur mobile - Guide
- Nouvelle chaîne tnt gratuite 2024 - Accueil - TV & Vidéo
- Convertir epub en kindle - Guide
2 réponses
yg_be
Messages postés
23473
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 février 2025
Ambassadeur
1 568
13 mars 2023 à 18:55
13 mars 2023 à 18:55
bonjour,
si j'étais toi, j'examinerais la longueur de la chaine, comparée au produit des dimensions de l'image.
peux-tu partager du texte plutôt qu'une image?
mamiemando
Messages postés
33535
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 février 2025
7 828
15 mars 2023 à 18:15
15 mars 2023 à 18:15
Bonjour
Merci de partager le code comme expliqué ici
Il y a plusieurs choses qui ne vont pas :
- L'erreur en elle-même a lieu ligne 5 : rien ne garantir que la chaîne adn est suffisamment longue pour que le caractère à l'index i * img.width + j existe. Dit autrement, le code actuel ne peut marcher que si :
len(adn) >= img.width * img.height
ce qui est faux en général. En l'occurrence, len(adn) est vraisemblablement trop courtes par rapport à la taille de l'image. Il faudrait donc décider de ce qu'il faut faire concernant les pixels restants. La manière la plus simple est de les laisser tels quels en interrompant la boucle:
binary_complement = np.zeros((img.height, img.width), dtype=int)) for i in range(img.height): for j in range(img.width): indexs = i * img.width + j if indexs >= len(adn): print("Chaîne ADN trop courte") break ...
- La manière dont est initialisé la matrice n'est pas top. Il vaudrait mieux choisir un type numpy (par exemple np.uint32 soit 4 octets par case)
- Tu stockes dans la case (i, j) un trois caractères par exemple '1' '0' et '\0' soit trois octets. Mais ça n'est pas une valeur binaire que tu stockes (qui elle tiendrait en 2 bits soit moins d'un octet). Or les fonctions traditionnellement utilisées pour rendre une image sous forme de numpy.array en nuance de gris s'attendent à avoir une matrice pour laquelle chaque entier est une valeur stockée sur un octet. Il vaudrait donc mieux remplacer ces chaînes par leur valeur numérique (0 au lieu de "00" ; 1 au lieu de "01", 2 au lieu de "10", 3 au lieu de "11", etc)
Bonne chance