PHP:fusion de tableau par 1 variable commune

Fermé
mickeynad Messages postés 18 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 15 juillet 2010 - 10 avril 2010 à 13:53
mickeynad Messages postés 18 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 15 juillet 2010 - 11 avril 2010 à 10:29
Bonjour tout le monde,

Voila je débute sur php et cela fait 2 jours que je bloque sur un tri de tableaux.
Je vous explique. Je dois parser deux fichiers de maniere a implémenter une base de données : Un fichier fasta et un fichier texte.
Une fois parsé, le fichier fasta me donne :
-> l'identifiant de la proteine
-> l'organisme
-> la sequence

Une fois parsé, le fichier texte me donne :
->l'identifiant de la proteine
->la base de données de référence
->le nom de la protéine

J'ai réussi a parser les 2 fichiers individuellements. Tout marche tres bien. Sauf que je veux faire un code unique ou je pourrai fusionner ces deux tableaux par l'identifiant de la proteine de maniere a ce qu'a chaque fois que l'identifiant est le meme dans les 2 fichiers, j'affiche tous les attributs des 2 fichiers soit :
Identifiant Proteine -> organisme, sequence, base de données de référence, nom de la proteine.

Voici mon code fasta :

<?php
 
//Parseur pour Leishmania
 
//Chargement du fichier fasta 
$fichier_Leishmania = 'LmajorAnnotatedProteins_TriTrypDB-2.0.fasta';
 
//On teste l'ouverture du fichier
if (!$f = fopen("$fichier_Leishmania","rb")) 
  { echo "Echec de l'ouverture de $fichier_Leishmania "; }
 
//On parcourt le fichier fasta
while (!feof($f))
{
 //On regarde si la ligne commence par un chevron
  if(preg_match('/^>/',$line))
    {
     $proteine = explode ('|', $line);
 
     //On recupere l'id de la proteine et le nom de l'organisme (qui est toujours le meme donc gain de temps en le definissant une fois!)
     echo "Identifiant : ".$proteine[1]."<br />\n"."Organisme : Leishmania_major"."<br />\n";
 
     //On saute une ligne pour recuperer la sequence
     $line = fgets($f);
 
     //Printage des lignes jusqu'au prochain chevron correspondantes a la sequence
     while ($line{0} != '>' && !feof($f))
        {
        // On lit une ligne et on passe à la ligne suivante tout en la printant
 
        echo ($sequence = $line);
        $line = fgets($f);
       
        }
    
    }
    else $line=fgets($f);
    echo "<br>";
    echo "<br>";
}
 
?>



Cela donne un resultat du genre :

identifiant : LmjF09.0003 
Organisme : Leishmania_major
MGKESTVPTGCGAVNREVVLERMLVEEVAKRDDAERAAEELRKQMQLLKAEALDLRQARD LTKGSVLCTAAAHEGTAVSTVRDAECAESRESALKGENHRLRQLVKRQNALIDVLRRQKV LLEASAAINISVRDFDKQLEIHKV 

Identifiant : LmjF09.0005 
Organisme : Leishmania_major
MTCVTGDDTGVVKIWDISKSSGATLKFSFGEQSRKRAIMGMCWQDSSTSSVAFSSSNGVL SVLDINDYVVSSSVKANTVAGLPNAMSFVKGKLVVVSKDGEASIFSSDLTSSSCFSGNGP IDAVHIHRKFGMVAMGGRENDLCVYDLASDSLEEPVFKARNVRDHILDVPFPVFVTGACI VNPYVFATCTAYHQVRFYDRRSNDRPVQEFEISREIERRPTTMLQWNANKFLIGEASGDV HLYDTRRGFCSRAKLRGGVGSVRCMCKHPAGHQILGVTGLDRKARLYHVPTGKLLMSVYV KQKANCVLLDKQLPMRDRVAVFSGVVNTKQPEKANTLGDALWDDMDPVLDDLDEKAMVAD TVAENRRKVQRKE



Voici mon code texte :

 <?php
 
//Parseur pour Leishmania
 
//Chargement du fichier texte
$fichier_LeishmaniaNom = 'LmajorInterpro_TriTrypDB-1.1.txt';
 
//On teste l'ouverture du fichier
if (!$fp = fopen("$fichier_LeishmaniaNom","rb")) 
  { echo "Echec de l'ouverture de $fichier_LeishmaniaNom "; }
 
//On parcourt le fichier texte
while (!feof($fp))
{
  $line=fgets($fp);
  $nom=preg_split('/\t/', $line, -1);
  if(preg_match('/\D/',$nom[3]))
    { echo "IdProteine : ".$nom[0]."<br />\n"."BD de reference : ".$nom[1]."<br />\n"."NomProteine : ".$nom[3];} 
 
  else {echo "IdProteine : ".$nom[0]."<br />\n"."BD de reference : ".$nom[1]."<br />\n"."NomProteine : None";}  
 
  echo "<br>\n";
  echo "<br>\n";         
 
}

?>


ce qui donne comme resultat un truc du genre :

IdProteine : LmjF36.6990
BD de reference : PFAM
NomProteine : zf-C2H2

IdProteine : LmjF36.6990
BD de reference : PFAM
NomProteine : MOZ_SAS



Voila ce qui est commun aux deux fichiers, c'est l'identifiant de la proteine et je voudrais recuperer tous les attributs pour en faire un tuple unique. J'ai essaye avec array_merge mais cela ne marche pas.

Merci a tous ceux qui pourront m'aide
A voir également:

1 réponse

mickeynad Messages postés 18 Date d'inscription dimanche 6 décembre 2009 Statut Membre Dernière intervention 15 juillet 2010 8
11 avril 2010 à 10:29
Quelqu'un aurait-il une idee?
0