Schleifen Ausgabe von mehrdimensionalem Hash
Schnaps
- perl
Hallo zusammen
Mir fehlen gerade die Ideen wie ich meine Ausgabe hier realisieren kann das sie so aussieht wie unten in der Tabelle.
(Wem es etwas sagt, die Ausgabe soll im ClustalW Format sein)
ich gebe mein mehrdimensionales Hash mit folgendem Code aus
while (($key) = each(%neu_alignment)) { ### Fuer jede Protein Sequenz
if ($key ne "quali"){
printf "%-10s\t", $key;
for(my $i = 0; $i < 59; $i++ ) {
print $neu_alignment{$key}{$i};
}
print "\n";
}
}
Damit wird auch immer der erste Block so wie unten erzeugt, aber wie mache ich das das die Ausgabe dann unten wie in dem Beispiel weiter geht wenn in dem Hash mehr als 60 Buchstaben sind, was fast immer der Fall ist.
Danke schon mal für eure Hilfe
gruß
schnaps
mema ---------MQGAFTDNTNNTGSEKETNVVIVRYGELALKSPGVRNWYEKILMKNIAAML
thfu MSASLDSTTVDARADGAVGTAAQELGELCVLLKLGEIVLKG-SNRHLFERRLQNNIRAAA
myav -----------------------MHMQCCVLLKYGEMVLKG-GNRRWFEQWLLTNLDDAL
thte -------------------------MKDVLLIKYGELALKG-ENRSFFENTLVKNIKYAL
clth -------------------------MKKVILVRYGEILLKG-LNRPIFEDKLMSNIKRAI
step ------------------------MQYDHLLVRYGELTLKG-TNRKMFVNQLKDNVKRAL
lajo ------------------------MQYTEVMVRYGELSTKG-KNRKDFIGRLAGNVTRAL
bace -----------------------MMTYEYILVRYGEMTTKG-KNRSKFVSTLKDNVKFKL
cobu -------------------------MKKVILIKYGEIALKG-KNRHLFESSIIENIRLAI
trpa ----------------------MVNGSTQYLAHVGELSLKK-GNRRQFEVQLERNLTLML
thma -----------------------MKELRVYIVRYSEIGLKG-KNRKDFEEALRRNIERVT
arfu ------------------------MMEKVAVVHYGEIGIKG-KNREFFERKLIEAIKRAT
trva --MSAETTEKVAETAPEVKAEAPAEEMTYFIYHPHELWLKG-KNRPMFERQLIENMRHQL
meth ----------------------MILDYDVILARYGEVAIKGPSVRRRFEGKLLHNIKSAF
esco --------------------------MKFIIKLFPEITIKSQSVRLRFIKILTGNIRNVL
saen --------------------------MKFIIKLFPEITIKSQSVRLRFIKILTGNIRNVL
shon --------------------------MKFIVKLYPEIMMKSKPVRMRFTKMLETNIRNVL
pspu --------------------------MKLIVKVFPEITIKSRPVRKRFIRQLGKNIRNVL
aepe --------MEGAWVKPRVHGGWLCLEYNVVLVRYSEIAVKGGYTRSRMERLLLRALEESL
pyfu --------------------------MNSIIVRYGEMGTKSRQTRKWFERILVNNISEAL
mema --------------------------------------------------
thfu --------------------------------------------------
myav --------------------------------------------------
thte --------------------------------------------------
clth --------------------------------------------------
step --------------------------------------------------
lajo --------------------------------------------------
bace --------------------------------------------------
cobu --------------------------------------------------
trpa --------------------------------------------------
thma --------------------------------------------------
arfu --------------------------------------------------
trva --------------------------------------------------
meth --------------------------------------------------
esco LPFYKLSTKFGDLDQSKTWLLWCERGVMSRLQALYLREQGFNNVKVYRP-
saen LPFYKLSTKFGDLDQSKTWLLWCERGVMSRLQALYLREQGFANVKVYRP-
shon IPFFKLATQFADLDKQKTYLLYCERGVMSKLQALYLIEQGYHNVKVYRP-
pspu MPFYAINSKFKHLDPTRQYLLYCDKGVMSRLHAHHLLSEGHANVRVYRPT
aepe --------------------------------------------------
pyfu --------------------------------------------------
Damit wird auch immer der erste Block so wie unten erzeugt, aber wie mache ich das das die Ausgabe dann unten wie in dem Beispiel weiter geht wenn in dem Hash mehr als 60 Buchstaben sind, was fast immer der Fall ist.
Zähle doch die Elemente die in deinen HASH mit dem KEY drin stehen. Dafür gibts doch eine Funktino, die mir grad nicht einfällt. Dann definierst du deine For Schleife um...
for (var $i=0; $i<$count; $i++) { ... }
fertig :O)
Gruß
Stefan
ich gebe mein mehrdimensionales Hash mit folgendem Code aus
Da du ja nie Antwortest, wundert mich, das du immer noch ein HASH hast. Bei deiner letzten Frage sah es eher so aus, als ob du ein Array willst.
while (($key) = each(%neu_alignment)) { ### Fuer jede Protein Sequenz
if ($key ne "quali"){
printf "%-10s\t", $key;for(my $i = 0; $i < 59; $i++ ) {
print $neu_alignment{$key}{$i};
Das ist doch wieder genau das gleiche, du willst hier kein Hash sondern ein Array. warum verwendest du dann keins?
und dann kanst du einfach mit einer foreach Schleife alle Elemente durchgehen:
print $_ foreach( @{$neu_alignment{$key}} ) ;
Struppi.