tableau indicé/GET

Oliv
Invité n'ayant pas de compte PHPfrance

16 mars 2010, 18:06

Bonjour,je vous explique mon problème, je suis en train d'essayer de faire un analyseur de séquence d'ADN.Pour cela j'ai créer un formulaire banal avec un textarea, ou je vais rentrer une séquence composée de ATGC, comme par exemple au hazard ATGCTGACTGCCCCTA...J'ai creer un tableau indicé contenant pour chaque codon le nom de leur acidé aminé correspondant, sachant que chaque plusieurs codons peuvent avoir le meme nom d'acide aminé. Voici mon tableau indicé :

$codons=array('GCA' => 'Alanine',
'GCC' => 'Alanine',
'GCT' => 'Alanine',
'CGA' => 'Arginine',
'CGC' => 'Arginine',
'CGG' => 'Arginine',
'CGT' => 'Arginine',
'AGA' => 'Arginine',
'AGG' => 'Arginine',
'GAC' => 'Acide aspartique',
'GAT' => 'Acide aspartique',
'AAC' => 'Asparagine',
'AAT' => 'Asparagine',
'TGC' => 'Cysteine',
'TGT' => 'Cysteine',
'GAA' => 'Acide glutamique',
'GAG' => 'Acide glutamique',
'CAA' => 'Glutamine',
'CAG' => 'Glutamine',
'GGA' => 'Glycine',
'GGC' => 'Glycine',
'GGG' => 'Glycine',
'GGT' => 'Glycine',
'CAC' => 'Histidine',
'CAT' => 'Histidine',
'ATA' => 'Isoleucine',
'ATC' => 'Isoleucine',
'ATT' => 'Isoleucine',
'CTA' => 'Leucine',
'CTC' => 'Leucine',
'CTG' => 'Leucine',
'CTT' => 'Leucine',
'TTA' => 'Leucine',
'TTG' => 'Leucine',
'AAA' => 'Lysine',
'AAG' => 'Lysine',
'ATG' => 'Methionine',
'TTC' => 'Phenylalanine',
'TTT' => 'Phenylalanine',
'CCA' => 'Proline',
'CCC' => 'Proline',
'CCG' => 'Proline',
'CCT' => 'Proline',
'TCA' => 'Sérine',
'TCC' => 'Sérine',
'TCG' => 'Sérine',
'TCT' => 'Sérine',
'AGC' => 'Sérine',
'AGT' => 'Sérine',
'ACT' => 'Thréonine',
'ACC' => 'Thréonine',
'ACG' => 'Thréonine',
'ACT' => 'Thréonine',
'TGG' => 'Tryptophane',
'TAC' => 'Tyrosine',
'TAT' => 'Tyrosine',
'GTA' => 'Valine',
'GTC' => 'Valine',
'GTG' => 'Valine',
'GTT' => 'Valine',
'TAG' => 'STOP',
'TAA' => 'STOP',
'TGA' => 'STOP');

Au final,quand je rentre ma sequence dans mon formulaire et que je valide,jaimerai avoir un resultat m'indiquant combien j'ai de chaque codon ATG par exemple ainsi que tout les autres codons contenu dans ma sequence que j'ai rentrer dans le formulaire.

ex:

J'ai 3 codons GTT codant pour la valine
J'ai 6 codons TGA codant pour le STOP
.
.
.
.


Merci beaucoup

ViPHP
ViPHP | 5462 Messages

16 mars 2010, 18:10

hello,
avec array_count_values après avoir scindé ta chaine toutes les 3 lettres avec str_split
:wink:

2ACLGKB
Invité n'ayant pas de compte PHPfrance

16 mars 2010, 18:24

Avec une boucle for c pas possible? le prof veut que j'utilise une boucle for avecun tableau indicé et un tableau de frequence de chaque codon...
lol

ViPHP
ViPHP | 5462 Messages

16 mars 2010, 18:28

si mais c'est après ca, la on va avoir juste le tableau avec le nombre acide aminé
après tu fais une boucle sur ton tableau pour faire ta liste

EDIT oublie le str_split (je pensais que tu rentrais une sequence dans un textarea)

Mammouth du PHP | 881 Messages

16 mars 2010, 19:29

Si je comprends bien, tu n'as pas besoin de couper en séquences de trois caractères avant de commencer le traitement. Chaque caractère se trouve donc présent dans 3 codons comme ceci, le caractère 3 se trouve dans les codons, 123, 234 et 345.

Si tel est le cas et que tu doives coder une boucle "for", c'est simple

Code : Tout sélectionner

//Tu fais deux tableaux de combinaisons et noms, rigoureusement dans le même ordre $Possibles = array("ABC", "BCA", "CBA", ...); $Noms = array("Machine", "Globuline", "Ordinatine" ...); $Resultats = array(); for ($c=0; $c<(count($LaChaine)-2)$x++) { //Tu récoltes toutes les séquences de 3 caractères présentes dans ta chaine $codon[$c] = substr($LaChaine, $c, 3); //Ensuite tu traites cela //On cherche le codoon dans les $Possibles en on garde l'indice $Indice = array_search($codon[$c], $Possibles); //On incrémente la valeur du compteur approprié $Resultats[$Indice] = $Resultats[$Indice] + 1; }
Il ne te reste alors qu'à organiser la présentation de tes résultats.
Soyez artisans de paix

ViPHP
ViPHP | 5462 Messages

16 mars 2010, 19:35

mais non tu t'embetes
$dna = array_count_values($codons);
foreach($dna as $key => $val)
{
    echo sprintf("J'ai %d codons GTT codant pour la %s <br />\n", $val, $key);
}
Modifié en dernier par stealth35 le 23 mars 2010, 14:32, modifié 3 fois.

Mammouth du PHP | 881 Messages

16 mars 2010, 19:57

Ben oui!

C'est bien plus simple.
Soyez artisans de paix