#!/usr/bin/perl -w

use strict;
use warnings;
use File::Copy;

my $numprot;
my $prots_senseu = './prots_senseu';
my $zf_prot = './zf_prot'; 
my $filename = 'selzebrafish.fa'; #declarar document a obrir
my @v;
my @a;
my $fs;
my $linia;
my $a;


mkdir $zf_prot unless -d $zf_prot; #crear fitxer zf_numprot a no ser que ja existeixi
mkdir $prots_senseu unless -d $prots_senseu; #crea un directori per desar els fitxers zfprots havent canviat la u per una x

open(my $fh, '<:encoding(UTF-8)', $filename) #obrir fitxer
or die "Could not open file '$filename' $!"; #morir si no es pot obrir el fitxer

while (my $row = <$fh>) { #mentres que la linia existeixi al fitxer
    chomp $row; #sempre
    @v = split(//,$row); #convertir linia a vector
    if ($v[0] eq '>') { #quan la primera posicio es >
	$numprot =$v[9].$v[10].$v[11]; #assigna els nums corresponents a les posicions 9 10 i 11 a una variable num prot
	open(DATA, ">$zf_prot/zf$numprot.prot"); #obrir un fitxer que s'anomeni zf'numero de la proteina (que es el valor que s'ha assignat a la variable amb la comanda anterior)prot.prot. Aquest fitxer es crea dins del directori zf_prot
	print DATA "$row\n"; #escriure la linia dins del fitxer
}
    elsif ($v[0] eq ''){ #si la primera posicio es espais blancs, tancar el fitxer
	close (DATA);
    }
     else{ #sino, escriure la seguent linia
	 print DATA "$row\n"; 
    }

}
# i fins aqui es creen els fitxers de totes les proteines per separat


##aqui creem el semiprograma per canviar les u per x##

opendir(DIR, $zf_prot) or die "el directori sense les u no s'ha creat";
my @files = readdir(DIR); #creem un vector que conte els fitxers que llegeix dins del directori
foreach my $fitxer (@files){ #per cadascun dels fitxers dins del conjunt del directori entrem en les seguents comandes (ES UN LOOP)
    open($fs, '<:encoding(UTF-8)',"/home/uXXXXX/zf_prot/$fitxer") or die "No es pot obrir el fitxer $fitxer\n"; #obrir o morir si no es pot obrir el fitxer 
    while (my $linia = <$fs>) { #mentres que la linia existeixi al fitxer
	chomp $linia; #sempre
	@a = split(//, $linia);
	foreach (@a) {
	    tr/U/X/;
	}
	open (OUTFILE, '>>', "/home/uXXXXX/prots_senseu/$fitxer");
	print OUTFILE "@a\n";
	close (OUTFILE);	
    }
}
    
