Thread X-Spalte entnehmen (7 answers)
Opened by Skyblader at 2014-06-08 14:14

GwenDragon
 2014-06-08 19:19
#175948 #175948
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
Ich hoffe, ich versteh das richtig. Du willst je Base, nacheinander die Anzahl in Abfolge.

Das ginge so zusätzlich.
Code (perl): (dl )
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
43
#!/usr/bin/perl

use strict; 
use warnings;
use feature "say";

my $nukletoid_kette = '';
my %basen;

while ( my $zeile = <DATA> ) {  # Daten aus DATA-Bereuich einlesen
  chomp $zeile;               # Zeilenendezeichen entfernen
  next if !length $zeile;     # Leerzeile überspringen

  my ( $base, $anzahl ) = $zeile =~ m{([ATGCatgc]):(\d+)}; # Base (Buchstaben ATGC) und Anzahl (mehrere Ziffern) aus Zeichenkette extrahieren
  $nukletoid_kette .=  $base x $anzahl;                 # Basenabfolge als Zeichenkette (Basenzeichen mal Anzahl)
  
  $basen{ $base } = [ ] if not exists $basen{ $base };       # falls Eintrag für Base in Hash noch nicht existent, leeres Array erzeugen
  push @{ $basen{ $base } }, $anzahl;                         # Wert in Array schieben
}

say "Kette: ", $nukletoid_kette;

say;

say "Basen und Häufigkeitabfolge: ";
for ( sort keys %basen ) {
   say "$_: ", join ( " ", @{ $basen{ $_ } } );
}

__DATA__
A:1
T:21
G:10 
C:4
A:2
G:1
T:5
A:2
C:7
T:2
A:1
T:1
G:4


Editiert von GwenDragon: Code verschönert, Frage hinzu
Last edited: 2014-06-08 19:27:26 +0200 (CEST)

View full thread X-Spalte entnehmen