Convertir image en chaine d'ADN
Résolu/Fermé
Soma1316
Messages postés
17
Date d'inscription
vendredi 3 mars 2023
Statut
Membre
Dernière intervention
25 mai 2023
-
Modifié le 5 avril 2023 à 15:28
Soma1316 Messages postés 17 Date d'inscription vendredi 3 mars 2023 Statut Membre Dernière intervention 25 mai 2023 - 6 avril 2023 à 07:05
Soma1316 Messages postés 17 Date d'inscription vendredi 3 mars 2023 Statut Membre Dernière intervention 25 mai 2023 - 6 avril 2023 à 07:05
A voir également:
- Convertir image en chaine d'ADN
- Convertir youtube en mp3 avec audacity - Guide
- Chaine tnt gratuite sur mobile - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Image iso - Guide
- Nouvelle chaîne tnt gratuite 2024 - Accueil - TV & Vidéo
2 réponses
mamiemando
Messages postés
33357
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 novembre 2024
7 799
Modifié le 5 avril 2023 à 15:46
Modifié le 5 avril 2023 à 15:46
Bonjour,
En fait il faudrait déjà expliquer ce que tu veux faire, car il y a plusieurs manière de corriger ce message d'erreur, mais ces corrections n'ont pas la même signification. En particulier, on ne sait pas comment est encodée ton image. Dans le cas général pix est un np.array (H, W, N) où :
- H est la hauteur de l'image,
- W la largeur de l'image
- N le nombre de canaux (typiquement 3 pour une image RGB)
Ton code semble supposer que W=1 et N=2. Est-ce le cas (que vaut pix.shape) ?
Ensuite il y a au moins quelque chose d'étrange sur la borne supérieure de i pour pouvoir parler de i+2 (quand i va attendre len(bin_arr) - 1, le slice ne va considérer qu'un seul élément de bin_arr).
Hormis cela, voici deux solutions possibles :
- Soit tu compares deux np.array (mais il faut que tu sois conscient.e que dans bin_array[i : i + 2] comporte deux tableaux (note que selon ce que tu veux faire, all peut être remplacé par any)
def binary_to_dna(bin_arr): dna_arr = [] for i in range(0, len(bin_arr) - 1, 2): if bin_arr[i : i + 2].all() == np.array([0, 0]).all(): dna_arr.append('A') elif bin_arr[i : i + 2].all() == np.array([0, 1]).all(): dna_arr.append('C') elif bin_arr[i : i + 2].all() == np.array([1, 0]).all(): dna_arr.append('G') elif bin_arr[i : i + 2].all() == np.array([1, 1]).all(): dna_arr.append('T') return ''.join(dna_arr)
- Soit tu extrais les deux valeurs (au lieu de prendre un slice), puis tu fais une comparaison de listes.
def binary_to_dna(bin_arr): dna_arr = [] for i in range(0, len(bin_arr) - 1, 2): l = [bin_arr[i, 0], bin_arr[i + 1, 0]] if l == [0, 0]: dna_arr.append('A') elif l == [0, 1]: dna_arr.append('C') elif l == [1, 0]: dna_arr.append('G') elif l == [1, 1]: dna_arr.append('T') break return ''.join(dna_arr)
Bonne chance
6 avril 2023 à 07:05
Merci beaucoup.