Aide Script PHP

Aide Script PHP - PHP - Programmation

Marsh Posté le 04-03-2008 à 23:20:00    

Bonjour :)
Voilà j'essai de faire un petit outil de traduction de l'ADN, mais voilà ça ne marche pas, maitres du php je réclame votre aide, j'ai dû faire plein de conneries... voici mon script :
 
<?
$sequ=$_POST['sequence']; //renomme la variable sequence
$sequ=strtoupper($sequ); //toute la sequence est mise en majuscule
 
echo "voici la séquence que vous avez entré : $sequ <br>";
 
$code=array("GCT"=>"A","GCC"=>"A","GCA"=>"A","GCG"=>"A","CGT"=>"R","CGC"=>"R","CGA"=>"R","CGG"=>"R",
"AGA"=>"R","AGG"=>"R","AAT"=>"N","AAC"=>"N","GAT"=>"D","GAC"=>"D","TGT"=>"C","TGC"=>"C","CAA"=>"E",
"CAG"=>"E","GAA"=>"Q","GAG"=>"Q","GGT"=>"G","GGC"=>"G","GGA"=>"G","GGG"=>"G","CAT"=>"H","CAA"=>"H",
"ATT"=>"I","ATC"=>"I","ATA"=>"I","TTA"=>"L","TTG"=>"L","CTT"=>"L","CTC"=>"L","CTA"=>"L","CTG"=>"L",
"AAA"=>"K","AAG"=>"K","ATG"=>"M","TTT"=>"F","TTC"=>"F","CCT"=>"P","CCC"=>"P","CCA"=>"P","CCG"=>"P",
"TCT"=>"S","TCC"=>"S","TCA"=>"S","TCG"=>"S","AGT"=>"S","AGC"=>"S","ACT"=>"T","ACC"=>"T","ACA"=>"T",
"ACG"=>"T","TGG"="W","TAT"=>"Y","TAC"=>"Y","GTT"=>"V","GTC"=>"V","GTA"=>"V","GTG"=>"V" );
 
$long=strlen($sequ);
for ($i=0; $i<$long; $i+=3)
{
 $codon=substr($sequ,$i,3);
 $aa=$code[$codon];
 $traduction=$traduction.$aa;
 echo "$traduction";
}
?>

Reply

Marsh Posté le 04-03-2008 à 23:20:00   

Reply

Marsh Posté le 04-03-2008 à 23:36:51    

Hellow

 

plusieurs trucs :
- $traduction est pas initialisée, met un

Code :
  1. $traduction='';

avant le for(), sinon il arrive sur

Code :
  1. $traduction=$traduction.$aa;

alors qu'il n'a jamais entendu parler de $traduction.
- prévois le cas où le $codon de 3 lettres n'est pas présent dans le tableau $code, et affiche au moins un message, d'erreur par ex.
- mets des espaces de temps en temps :o

 

Sinon ça a l'air de marcher.


Message édité par theredled le 04-03-2008 à 23:43:29

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 05-03-2008 à 00:58:33    

merci de ton aide, mais ça ne fonctionne toujours pas.
Je comprend pas comment définir le $traduction, à quoi sert de mettre $traduction=' ' ? je suis désolé hein, je débute en php :)

Reply

Marsh Posté le 05-03-2008 à 01:13:11    

Qu'est ce qui ne fonctionne pas ? qu'est ce que ça fait ?

 

Pour le $traduction :

 

Quand tu fais

Code :
  1. $traduction=$traduction.$aa;


Tu concatènes la valeur actuelle de $traduction avec la valeur actuelle de $aa, et tu écris le tout dans $traduction, on est d'accord ?

 

Seulement la première fois où tu arrives dans la boucle, $traduction n'a pas de "valeur actuelle", puisqu'il n'existe pas. Du coup ça peut pas marcher.
C'est pour ça que tu dois mettre $traduction = ''; avant le for. Comme ça $traduction existe, et il a une valeur (la valeur '')

 

edit: attention c'est bien '' (2 apostrophes = chaine vide, ou "" c'est pareil), et pas ' ' (= une chaine contenant un espace)


Message édité par theredled le 05-03-2008 à 01:17:10

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 05-03-2008 à 12:00:38    

ben mon probleme vient de là aussi : je suis sous mac os X et j'ai MAMP comme APACHE,  
et mon souci c'est qu'il n'affiche pas les erreurs quand la page php se charge après la page html, la pge reste blanche...

Reply

Marsh Posté le 05-03-2008 à 12:13:26    

Alors le problème vient *surtout* de là :D
 
S'il n'affiche pas les erreurs, c'est soit qu'il les ignore, soit il les logge, bref ; va faire un tour du côté de ton php.ini (fichier de configuration de php), et vérifie déja que "display_errors" est à "on" et que "error_reporting" est à E_ALL.
 
ps: Pour ton info MAMP ça veut dire "MacOS + Apache + Mysql + PHP"


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 06-03-2008 à 10:59:48    

comment tu fais pour ouvrir php.ini?

Reply

Marsh Posté le 06-03-2008 à 11:01:20    

Tu dois avoir un truc dans MAMP, sinon tu cherches sur le disque dur...


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 06-03-2008 à 11:19:13    

ben je vois que dans phpinfo, le display_errors est sur off mais je ne sais pas comment le modifier...

Reply

Marsh Posté le 06-03-2008 à 11:30:12    

Bah tu remplaces "off" par "on" et tu enregistres :o


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 06-03-2008 à 11:30:12   

Reply

Marsh Posté le 06-03-2008 à 18:42:37    

oui c'est bon j'y suis enfin arrivé malgré mes 2 mains gauches... c'est sur on :)

Reply

Marsh Posté le 06-03-2008 à 18:56:31    

Bon alors du coup c'est quoi cette erreur :o


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 09-03-2008 à 13:36:46    

re salut, l'erreur c'est : Parse error: syntax error, unexpected '=', expecting ')' in /Applications/MAMP/htdocs/tests-php/projet.php on line 7

Reply

Marsh Posté le 09-03-2008 à 14:28:16    

Je suis désolé de t'apprendre que tu as une erreur de syntaxe à la ligne 7 de ton fichier projet.php, aux alentours d'un signe "=" [:dawa]
 
Vérifie tout seul, moi je la vois.


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 09-03-2008 à 14:50:46    

maintenat que j'ai réparé, j'ai ça...
Notice: Undefined index: traduction in /Applications/MAMP/htdocs/tests-php/projet.php on line 10
 
Fatal error: Call to undefined function str_substr() in /Applications/MAMP/htdocs/tests-php/projet.php on line 13

Reply

Marsh Posté le 09-03-2008 à 14:53:09    

la ligen 10 c'est bon mais la ligne 13 je comprend pas

Reply

Marsh Posté le 09-03-2008 à 15:43:45    

t'as pas de "str_substr()" ligne 13 ?


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 09-03-2008 à 16:58:59    

si... :) mais je vois pas le souci, désolé de t'embeter mais je suis un noob en php

Reply

Marsh Posté le 09-03-2008 à 17:18:18    

ben cette fonction n'existe pas en php... :o


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 26-03-2008 à 14:34:56    

re bonjour :), j'ai encore besoin d'aide pour mon petit script biologique...
en fait j'ai fait un tableau à deux dimensions de cette forme là :  
 

Code :
  1. $codeinv=array("A"=>array("GCT","GCC","GCA","GCG" ),"R"=>array("CGT","CGC","CGA","CGG","AGA","AGG" ),"N"=>array("AAT","AAC" ),"D"=>array("GAT","GAC" ),"C"=>array("TGT","TGC" ),"E"=>array("CAA","CAG" ),"Q"=>array("GAA","GAG" ),"G"=>array("GGT","GGC","GGA","GGG" ),"H"=>array("CAT","CAA" ),"I"=>array("ATT","ATC","ATA" ),"L"=>array("TTA","TTG","CTT","CTC","CTA","CTG" ),"K"=>array("AAA","AAG" ),"M"=>array("ATG" ),"F"=>array("TTT","TTC" ),"P"=>array("CCT","CCC","CCA","CCG" ),"S"=>array("TCT","TCC","TCA","TCG", "AGT","AGC" ),"T"=>array("ACT","ACC","ACA","ACG" ),"W"=>array("TGG" ),"Y"=>array("TAT","TAC" ),"V"=>array("GTT","GTC","GTA","GTG" )); //definit un tableau indicé à deux dimensions associant à un acide aminé plusieurs codons


 
donc en fait mon but est de dire que pour chaque acide aminé (càd A,R,N...) quel est le pourcentage de chaque codon qui lui est associé (GCT,GCC,GCA,...)
 
Ce qui donnerait cela :
Dans la séquence que vous avez soumis, les A sont codés à 32% par GCT, à 20% par GCC, etc...
 
donc il faudrait que j'arrive à isoler chaque acide aminé comme un tableau à part avec les codons qui lui sont associés.
 
Mais mon souci c'est que j'ai du mal à parcourir ces tableau et je ne m'y retrouve plus vraiment. Je ne vous demande pas de tout me faire, mais juste de me mettre sur la voie... Merci bcp :)


Message édité par Cachouguinteur le 26-03-2008 à 14:35:44
Reply

Marsh Posté le 26-03-2008 à 14:59:36    

s'il vous plait, j'ai vraiment besoin d'aide...

Reply

Marsh Posté le 26-03-2008 à 15:04:20    

et t'es obligé d'upper au bout de 20 minutes?[:mlc]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-03-2008 à 15:23:39    

Si tu veux te retrouver avec des tableaux du genre :

"A"=>array("GCT","GCC","GCA","GCG" )


puis  

"R"=>array("CGT","CGC","CGA","CGG","AGA","AGG" )


puis...
 
tu peux parcourir ton ton tableau avec foreach():
 

Code :
  1. foreach($codeinv AS $acideAmine=>$codons)
  2. {
  3.    // dans la première boucle
  4.    // $acideAmine contient "A"
  5.    // $codons contient array("GCT","GCC","GCA","GCG" )
  6. }


 
 
 
par contre je n'ai pas compris pourquoi "les A sont codés à 32% par GCT, à 20% par GCC, etc... "


---------------
oui oui
Reply

Marsh Posté le 26-03-2008 à 15:37:55    

ben en fait je voudrais que mon programme fasse ça :  
l'utilisateur rentre sa séquence dans le fichier html (une succession de codons) et le prog le convertit en acides aminés. et je veux que pour chaque acide aminé, il me dise combien il y a de codons (en %)

Reply

Marsh Posté le 26-03-2008 à 16:02:57    

t'aurais un exemple avec ce que l'utilisateur entre, ce que tu connais et le résultat attendu ?

 


à partir de

Code :
  1. $codeinv=array("A"=>array("GCT","GCC","GCA","GCG" ),"R"=>array("CGT","CGC","CGA","CGG","AGA","AGG" ),"N"=>array("AAT","AAC" ),"D"=>array("GAT","GAC" ),"C"=>array("TGT","TGC" ),"E"=>array("CAA","CAG" ),"Q"=>array("GAA","GAG" ),"G"=>array("GGT","GGC","GGA","GGG" ),"H"=>array("CAT","CAA" ),"I"=>array("ATT","ATC","ATA" ),"L"=>array("TTA","TTG","CTT","CTC","CTA","CTG" ),"K"=>array("AAA","AAG" ),"M"=>array("ATG" ),"F"=>array("TTT","TTC" ),"P"=>array("CCT","CCC","CCA","CCG" ),"S"=>array("TCT","TCC","TCA","TCG", "AGT","AGC" ),"T"=>array("ACT","ACC","ACA","ACG" ),"W"=>array("TGG" ),"Y"=>array("TAT","TAC" ),"V"=>array("GTT","GTC","GTA","GTG" )); //definit un tableau indicé à deux dimensions associant à un acide aminé plusieurs codons


je ne comprends pas comment tu détermines que "les A sont codés à 32% par GCT" (mais j'ai sans doute loupé quelque chose).

 


Message édité par art_dupond le 26-03-2008 à 16:05:11

---------------
oui oui
Reply

Marsh Posté le 26-03-2008 à 16:38:20    

ben exemple, l'utilisateur rentre : GCTGCCCCTCCCGCG (ça c'est une succession de codons, le programme les sépare 3 par 3), ensuite il y a une traduction en acides aminés : ce qui donne AAPPA
 
Il y a donc 3 fois l'acide aminé A et deux fois le P.
Je voudrais que le programme me dise que A est codé à 33% par GCT, 33% par GCC et 33% par GCG, et que P est codé à 50% par CCT et 50% par CCC. Voilà
 
En réalité les séquences soumises sont bcp plus longue et c'est pour ça que je souhaiterais établir ces statistiques.

Reply

Marsh Posté le 26-03-2008 à 16:53:41    

je dirais de créer un tableau comme ça :

  
Code :
  1. $code=array("GCT"=>"A","GCC"=>"A","GCA"=>"A","GCG"=>"A","CGT"=>"R","CGC"=>"R","CGA"=>"R","CGG"=>"R",
  2. "AGA"=>"R","AGG"=>"R","AAT"=>"N","AAC"=>"N","GAT"=>"D","GAC"=>"D","TGT"=>"C","TGC"=>"C","CAA"=>"E",
  3. "CAG"=>"E","GAA"=>"Q","GAG"=>"Q","GGT"=>"G","GGC"=>"G","GGA"=>"G","GGG"=>"G","CAT"=>"H","CAA"=>"H",
  4. "ATT"=>"I","ATC"=>"I","ATA"=>"I","TTA"=>"L","TTG"=>"L","CTT"=>"L","CTC"=>"L","CTA"=>"L","CTG"=>"L",
  5. "AAA"=>"K","AAG"=>"K","ATG"=>"M","TTT"=>"F","TTC"=>"F","CCT"=>"P","CCC"=>"P","CCA"=>"P","CCG"=>"P",
  6. "TCT"=>"S","TCC"=>"S","TCA"=>"S","TCG"=>"S","AGT"=>"S","AGC"=>"S","ACT"=>"T","ACC"=>"T","ACA"=>"T",
  7. "ACG"=>"T","TGG"="W","TAT"=>"Y","TAC"=>"Y","GTT"=>"V","GTC"=>"V","GTA"=>"V","GTG"=>"V" );
  8. //(Boucler sur chaque groupe de 3)
  9. if(!isset($AA[$code[$codon]][$codon])
  10. {
  11.    $AA[$code[$codon]][$codon] = 1;
  12. }
  13. else
  14. {
  15.    $AA[$code[$codon]][$codon]++;
  16. }
  17. // donc par exemple, si le codon est "GCT", tu auras $AA['A']['GCT'] = 1; la première fois qu'il en trouve un, puis il incrémentera chaque fois qu'il en trouve un autre
  18. // on fait de même pour avoir le nombre total de "A" trouvés (tu peux aussi le calculer par après si tu veux)
  19. if(!isset($AA[$code[$codon]]['total'])
  20. {
  21.    $AA[$code[$codon]]['total'] = 1;
  22. }
  23. else
  24. {
  25.    $AA[$code[$codon]]['total']++;
  26. }
 

A à la fin, pour savoir combien de "A" ont été codés par "GCT", il suffit de faire

 
Code :
  1. if(isset($AA['A']['GCT']) && isset($AA['A']['total'])
  2. {
  3.     $pourcentage = $AA['A']['GCT'] / $AA['A']['total'];
  4. }
  5. else
  6. {
  7.    $pourcentage = 0;
  8. }
 



Message édité par art_dupond le 26-03-2008 à 16:59:26

---------------
oui oui
Reply

Marsh Posté le 26-03-2008 à 18:40:40    

ça correspond à quoi isset? désolé, je suis débutant :)

Reply

Marsh Posté le 26-03-2008 à 19:06:43    

lis la doc?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 26-03-2008 à 20:25:23    

merci pour ton aide art_dupond, j'ai fait une face pour tester ta solution, en définissant les variables mais il me dit : "Parse error: syntax error, unexpected '{' " qui se situe dans la ligne 13 sur ton exemple, j'avoue que je comprend pas trop...

Reply

Marsh Posté le 26-03-2008 à 21:33:18    

j'ai oublié une " )" juste avant.


---------------
oui oui
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed