10338 |
=cut |
=cut |
10339 |
|
|
10340 |
sub dsims { |
sub dsims { |
10341 |
my($self,$id,$seq,$maxN,$min_nbsc,$figfams_data) = @_; |
my($self,$id,$seq,$maxN,$min_nbsc,$figfams_data,$blast_parms) = @_; |
10342 |
my($sim,$partition,%hits); |
my($sim,$partition,%hits); |
10343 |
|
|
10344 |
|
if (! $figfams_data) { $figfams_data = "$FIG_Config::data/FigfamsData" } |
10345 |
my %reps_hash; |
my %reps_hash; |
10346 |
my $reps_hash_tie = tie %reps_hash, 'DB_File', "$figfams_data/partition_reps.db", O_RDWR, 0666, $DB_HASH; |
my $reps_hash_tie = tie %reps_hash, 'DB_File', "$figfams_data/partition_reps.db", O_RDWR, 0666, $DB_HASH; |
10347 |
$reps_hash_tie || die "tie failed"; |
$reps_hash_tie || die "tie failed"; |
10350 |
if (! $reps_db) { $reps_db = "$FIG_Config::data/FigfamsData/partitions_rep.fasta" } |
if (! $reps_db) { $reps_db = "$FIG_Config::data/FigfamsData/partitions_rep.fasta" } |
10351 |
(-s $reps_db) || return (); |
(-s $reps_db) || return (); |
10352 |
|
|
10353 |
my @index = &blastit($id,$seq,$reps_db,1.0e-3); |
my @index = &blastit('query',$seq,$reps_db,1.0e-3); |
10354 |
my %partitions; |
my %partitions; |
10355 |
foreach my $rep (map { $_->id2 } @index) |
foreach my $rep (map { $_->id2 } @index) |
10356 |
{ |
{ |
10362 |
foreach $partition (keys(%partitions)) |
foreach $partition (keys(%partitions)) |
10363 |
{ |
{ |
10364 |
my $part_db = &partition_db($figfams_data,$partition); |
my $part_db = &partition_db($figfams_data,$partition); |
10365 |
my @hits = &blastit($id,$seq,$part_db,1.0e-5); |
my @hits = &blastit('query',$seq,$part_db,1.0e-5,$blast_parms); |
10366 |
foreach my $sim (@hits) |
foreach my $sim (@hits) |
10367 |
{ |
{ |
10368 |
next if ($min_nbsc && ($sim->nbsc < $min_nbsc)); |
next if ($min_nbsc && ($sim->nbsc < $min_nbsc)); |
10369 |
|
|
10370 |
|
$sim->[0] = $id; |
10371 |
my $id2 = $sim->id2; |
my $id2 = $sim->id2; |
10372 |
my $nbsc = $sim->nbsc; |
my $nbsc = $sim->nbsc; |
10373 |
if ((! $hits{$id2}) || ($hits{$id2}->nbsc < $sim->nbsc)) |
if ((! $hits{$id2}) || ($hits{$id2}->nbsc < $sim->nbsc)) |
10388 |
|
|
10389 |
sub blastit { |
sub blastit { |
10390 |
shift if UNIVERSAL::isa($_[0],__PACKAGE__); |
shift if UNIVERSAL::isa($_[0],__PACKAGE__); |
10391 |
my($id,$seq,$db,$maxP) = @_; |
my($id,$seq,$db,$maxP,$parms) = @_; |
10392 |
|
|
10393 |
if (! -s $db) { return () } |
if (! -s $db) { return () } |
10394 |
if (! $maxP) { $maxP = 1.0e-5 } |
if (! $maxP) { $maxP = 1.0e-5 } |
10395 |
my $tmp = &Blast::blastp([[$id,$seq]],$db,"-e $maxP"); |
my $tmp = &Blast::blastp([[$id,$seq]],$db,"$parms -e $maxP"); |
10396 |
my $tmp1 = $tmp->{$id}; |
my $tmp1 = $tmp->{$id}; |
10397 |
if ($tmp1) |
if ($tmp1) |
10398 |
{ |
{ |