#!/usr/bin/perl -w #use strict; #declaració de variables my $seqprob; #se li associa el nom del fitxer amb seqüència problema my $out; #se li associa el nom del fitxer de sortida my $char; #caàcters per línia my $seq; #guarda la seqüència sencera (sense salts de línia) que hi ha al fitxer associat a $seqprob my @seqv; #conté la seqüència de $seq en forma de vector my @fasta; #conté la seqüència en format fasta my $i=0; #comptador de posicions del vector @fasta my $ref; #se li associen les referències que identifiquen la seqüència my $j=1; #comptador per partir la seqüència fasta cada 80 nucleòtids #presentació print "\n\t#########################################################\n"; print "\t# #\n"; print "\t# #\n"; print "\t# #\n"; print "\t# TRANSFASTA 2003 #\n"; print "\t# #\n"; print "\t# versió 1.0 #\n"; print "\t# #\n"; print "\t# #\n"; print "\t# Ramírez-Soriano A - Molina-Tomàs MC #\n"; print "\t# #\n"; print "\t# #\n"; print "\t# #\n"; print "\t#########################################################\n\n"; #introduir el nom del fitxer de la seqüència problema print "introduzca el nombre del archivo que contiene la sequencia a transformar:\n"; $seqprob = ; chomp ($seqprob); #introduir el nom del fitxer de sortida print "introduzca el nombre del archivo de salida:\n"; $out = ; chomp ($out); #referència del format fasta print "introduzca la referencia y/u otras informaciones que desee que aparezcan en la descripcion de la sequencia:\n"; $ref = ; chomp ($ref); #caràcters per línia print "quantos caracteres desea que aparezcan por línea?\n"; $char = ; chomp ($char); #obrir el fitxer i copiar la seqüència a la variable $seq línia per línia open(FITXER,"<$seqprob") || die "no es pot obrir fitxer d'entrada\n"; #obrir el fitxer amb la seqüència problema $seq = ""; #s'associa la variable a paraula buida while() #copiar la seqüència a la variable $seq línia per línia { chomp($_); #treure el salt de línia al final de la paraula buida $seq = $seq . $_; #concatenar una línia al contingut de la variable seqüència } close(FITXER); #tancar el fitxer $seq = "\U$seq"; #passar totes les bases a majuscules @seqv = split (//,$seq); #converteix la seqüència $seq en un vector #converteix la seqüència problema, ja guardada al vector @seqv, a format fasta, és a dir eliminant els números de posició i els espais foreach $seqv (@seqv) #per cada posició del vector @seqv { if ($seqv =~ /[a-z]/) #si el caràcter en aquesta posició és una lletra de la a a la z { $fasta [$i] = $seqv; #guarda la posició al vector @fasta en posició $i $i++; #avança una posició en el vector } } #grava la seqüència en format fasta al fitxer de sortida open(OUT, ">$out") || die "no es pot obrir el fitxer de sortida\n"; #obrir el fitxer de sortida print OUT ">gi|$ref\n"; foreach $fasta (@fasta) #per cada posició del vector @fasta { print OUT "$fasta"; #imprimeix la posició a l'arxius de sortida if ($j % $char == 0) { print OUT "\n"; } $j++; } print OUT "\n"; close (OUT);