#!/usr/bin/perl -w # cd /home/xiangyang/Desktop/P.stutzeri_genome/Blast_A1501 # perl /home/xiangyang/Desktop/P.stutzeri_genome/Blast_A1501/core_blast.pl /home/xiangyang/Desktop/P.stutzeri_genome/Blast_A1501/3793_genome.shared 3792 3793_FASTFILE use strict; use Spreadsheet::WriteExcel; use Spreadsheet::ParseExcel; use Bio::DB::Fasta; my $workbook = Spreadsheet::WriteExcel->new('core_cluster.xls'); my $worksheet = $workbook->add_worksheet("sheet1"); ################################################################################################################################# my $infile=$ARGV[0]; my $Genome_number=$ARGV[1]; open (INFILE, $infile); my @array; my $count=0; my $vol=0; while (){ chomp; my $line=$_; $line=~s/XD38_(.+);\[Pseudomonas_sp._63_8\];\[GCA_001507875.1_ASM150787v1\]//g; # $line=~s/ / /g; @array=split " ", $line; # $line=~s/BM059_(.+);[Pseudomonas_composti];[GCF_900115475.1_IMG-taxon_2663762774_annotated_assembly]//g; # @array=split ' ', $line; $count++; if (scalar @array eq $Genome_number){ $vol++; for (my $i=0; $i<$Genome_number; $i++){ $worksheet->write($i,$vol-1,"$array[$i]"); } # print "\n"; # print scalar @array."\n"; } } $workbook->close(); ################################################################################################################################## ################################################################################################################################## my $fastaFile = $ARGV[2]; my $parser = Spreadsheet::ParseExcel->new(); my $workbook1 = $parser->parse('/home/xiangyang/Desktop/P.stutzeri_genome/Blast_A1501/CORE.xls'); ################################Split seperate list file from excel################################################### if ( !defined $workbook1 ) { die $parser->error(), ".\n"; } for my $worksheet1 ( $workbook1->worksheets() ) { for (my $i=0; $i<$vol; $i++) { my $Value; my $path="/home/xiangyang/Desktop/P.stutzeri_genome/Blast_A1501/"; mkdir "$path/split/"; my $name=$worksheet1->get_cell(0, $i )->value(); my $output="$path/split/$name"; open(OUTPUT, ">$output"); for (my $row=0; $row<$Genome_number; $row++) { my $cell = $worksheet1->get_cell($row, $i ); $Value=$cell->value(); print OUTPUT "$Value\n"; } } } ################################Extract sequence according to list################################################### my $path="/home/xiangyang/Desktop/P.stutzeri_genome/Blast_A1501/split"; opendir DIR, $path or die $!; my @dir = readdir DIR; closedir DIR; foreach my $file(@dir){ my $input="$path/$file"; mkdir "$path/FASTA/"; $file=~ s/ /_/g; my $output_1="$path/FASTA/$file.FASTA"; open(OUTPUT_1, ">$output_1"); my $db = Bio::DB::Fasta->new( $fastaFile ); my @ids = $db->get_all_primary_ids; open (IN, $input); while (){ chomp($_); my $seq = $_; print "$seq\n"; if (!defined( $db->get_Seq_by_id($seq))) { print "Sequence ----------- $_ ----------- not found. \n"; next;} my $seqstr = $db->get_Seq_by_id($seq)->seq; print OUTPUT_1 ">$seq\n", "$seqstr\n"; } } ##############################################################################################################