fusionner deux tableaux par une variable commune pour faire un tuple unique
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 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| <?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 :
Citation:
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 :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <?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 :
Citation:
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'aider.