File: emblmini.pl

package info (click to toggle)
emboss 6.6.0%2Bdfsg-7
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 571,544 kB
  • sloc: ansic: 460,579; java: 29,439; perl: 13,573; sh: 12,754; makefile: 3,283; csh: 706; asm: 351; xml: 239; pascal: 237; modula3: 8
file content (38 lines) | stat: -rwxr-xr-x 1,013 bytes parent folder | download | duplicates (9)
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
#!/usr/bin/perl -w

opendir (DIR, ".");
while ($file = readdir(DIR)) {
    if($file !~ /^(.*)[.]dat$/) {next}
    open (IN, "$file") || die "Unable to read $file";
    open (OUT, ">$1.mini");
    print STDERR "$file\n";
    while (<IN>) {
	if(/^ID/) {print OUT}
	if(/^AC/) {print OUT}
	if(/^DE/) {print OUT}
	if(/^KW/) {print OUT}
	if(/^OC/) {print OUT}
	if(/^OS/) {print OUT}
	if(/^OG/) {print OUT}
	if(/^SQ/) {$doseq=1;$seqstr1 = "";}
	if(/^  / && $doseq) {
	    if($seqstr1 eq "") {$seqstr1 = $_}
	    $seqstr2 = $_;
	}
	if(/^\/\//) {
	    $doseq=0;
	    $seq = "$seqstr1$seqstr2";
	    %bases=();
	    $bases{"a"} = $bases{"c"} = $bases{"g"} = $bases{"t"} = 0;
	    $tot = 0;
	    while ($seq =~ /([a-z])/go) {
		$bases{$1}++;
		$tot++;
	    }
	    $other = $tot-$bases{"a"}-$bases{"c"}-$bases{"g"}-$bases{"t"};
	    printf OUT "SQ   Sequence %d BP; %d A; %d C; %d G; %d T; %d other;\n", $tot, $bases{"a"}, $bases{"c"}, $bases{"g"}, $bases{"t"}, $other;
	    print OUT $seq;
	    print OUT "//\n";
	}
    }
}