#!/usr/bin/perl # Converts concise file into fasta format # also puts in the consensus. use strict; use warnings; my ( @seqs, %seq, @pred, %pred ); my @var = ( "Lupas_21", "Lupas_14", "Lupas_28", "JNETPSSM", "MULTCOIL", "MULTCOIL_TRIMER", "MULTCOIL_DIMER", "JNETFREQ", "JNETALIGN", "JNETHMM", "JNETSOL5", "JNETSOL25", "JNETSOL0", "jnetpred", "jpred", "JNETCONF" ); if ( $ARGV[0] ) { open( IN, "<$ARGV[0]" ) or die($!); } else { open( IN, "<-" ) or die($!); } while () { if (/^\n/) { next; } my ( $id, $seq ) = split( ":", $_ ); if ( !$id || !$seq ) { next; } # Check we have proper values $seq =~ s/,//g; chomp($seq); if ( $id =~ /;/ ) { # Then it's an alignment @_ = split( ";", $id ); push @seqs, $_[1]; $seq{ $_[1] } = $seq; } foreach (@var) { if ( $_ eq $id ) { push @pred, $_; $pred{$_} = $seq; } } } close(IN); foreach (@seqs) { $seq{$_} =~ s/(.{72})/$1\n/g; print ">$_\n$seq{$_}\n"; } foreach (@pred) { $pred{$_} =~ s/[TCYWXZSI\?_]/-/g; $pred{$_} =~ s/B/E/g; $pred{$_} =~ s/G/H/g; if (/SOL/) { $pred{$_} =~ s/E/B/g; } $pred{$_} =~ s/(.{72})/$1\n/g; print ">$_\n$pred{$_}\n"; }