#!/usr/bin/perl -w

use strict;
use warnings;

#$ARGV[0] vol dir que la variable sera el primer que jo entri pel teclat al terminal, despres del nom del programa

my $fasta_file  = $ARGV[0]; #el primer argument despres de cridar el programa sera el multifasta
my $species = $ARGV[1]; #el segon argument despres sera l'especie, i es creara una carpeta Proteins_species
my $out;

system ("mkdir Proteins_$species");

open(FASTA, $fasta_file) || die("can't open $fasta_file"); #aixo et mostra si hi ha algun problema i no pot obrir el fitxer multifasta

my $maindir = "Proteins_$species";

my $i = 0;
while(<FASTA>) {
	$i = $i + 1;
	my @v = split(//,$_);
	if ($v[0] eq '>' && $i == 1) { #es creara el primer fitxer .fa amb la primera proteina
    
	    	my @file_name = split(/_/, $_); #es posara com a nom de fitxer el nom de la proteina fins _ 
	    	@file_name = split(/>/,$file_name[0]); #treure > de davant el nom
	    	my $def_name = $file_name[1];
		#print "$def_name\n";
		mkdir "$maindir/$def_name"; #crear carpeta amb el nom de la proteina
		open($out, '>', "$maindir/$def_name/$def_name.fa");
	}
	
	if ($v[0] eq '>' && $i != 1) { #es crearan fitxers per cada proteina
		close($out);
		my @file_name = split(/_/, $_); 
	    	@file_name = split(/>/,$file_name[0]); 
	    	my $def_name = $file_name[1];
		#print "$def_name\n";
		mkdir "$maindir/$def_name";
		open($out, '>', "$maindir/$def_name/$def_name.fa");
    	}
	print {$out} $_;
}

close($out);




