1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#!/usr/bin/env perl
use strict;
use warnings;
my $usage = <<__EOUSAGE__;
###############################################
#
# Usage: $0 Trinity.fasta new_feature_id_mapping.txt
#
# The 'new_feature_id_mapping.txt' file has the format:
#
# current_identifier <tab> new_identifier
# ....
#
#
# Only those entries with new names listed will be updated, the rest stay unchanged.
#
#
#################################################
__EOUSAGE__
;
my $trinity_fasta_file = $ARGV[0] or die $usage;
my $new_feature_mappings = $ARGV[1] or die $usage;
main: {
my %new_ids;
{
open (my $fh, $new_feature_mappings) or die $!;
while (<$fh>) {
chomp;
my ($old_name, $new_name) = split(/\t/);
$new_ids{$old_name} = $new_name;
}
close $fh;
}
open (my $fh, $trinity_fasta_file) or die $!;
while (my $line = <$fh>) {
if ($line =~ /^>(\S+)/) {
my $acc = $1;
if (my $new_id = $new_ids{$acc}) {
$line =~ s/^>/^>$new_id /;
#print $line;
}
}
print $line;
}
exit(0);
}
|