38
38
* --------------------------------------------------------------------------
39
39
* $Log: cddposutil.c,v $
40
* Revision 1.18 2004/03/31 17:58:51 papadopo
41
* Mike Gertz' changes for length adjustment calculations
43
* Revision 1.17 2004/01/22 15:43:57 bauer
44
* call BlastCalculateEffectiveLengths in CddSetUpSearchInternalByLoc
46
* Revision 1.16 2003/05/29 13:17:56 thiessen
47
* fix memory leak in CddposFreeMemory()
40
49
* Revision 1.15 2001/12/31 13:47:06 bauer
41
50
* made block_width a local variable in CddSetUpSearchInternalByLoc to deal with changes in blast data structures
1708
if (search->pbp->gapped_calculation &&
1709
StringCmp(search->prog_name, "blastn") != 0)
1710
min_query_length = 1/(search->sbp->kbp_gap_std[search->first_context]->K);
1712
min_query_length = 1/(search->sbp->kbp[search->first_context]->K);
1714
last_length_adjustment = 0;
1715
for (index=0; index<5; index++)
1717
length_adjustment = ((search->sbp->kbp[search->first_context]->logK)+log((Nlm_FloatHi)(length-last_length_adjustment)*(Nlm_FloatHi)(MAX(1, (search->dblen)-(search->dbseq_num*last_length_adjustment)))))/(search->sbp->kbp[search->first_context]->H);
1718
if (length_adjustment >= length-min_query_length)
1720
length_adjustment = length-min_query_length;
1724
if (ABS(last_length_adjustment-length_adjustment) <= 1)
1726
last_length_adjustment = length_adjustment;
1728
search->length_adjustment = MAX(length_adjustment, 0);
1730
search->dblen_eff = MAX(1, search->dblen - search->dbseq_num*search->length_adjustment);
1731
effective_query_length = MAX(length - search->length_adjustment, min_query_length);
1733
for (index=search->first_context; index<=search->last_context; index++)
1735
search->context[index].query->effective_length = effective_query_length;
1738
if (search->searchsp_eff == 0)
1739
search->searchsp_eff = ((Nlm_FloatHi) search->dblen_eff)*((Nlm_FloatHi) effective_query_length);
1716
if( 0 != BlastComputeLengthAdjustment(1/min_query_length,
1718
kbp[search->first_context]->logK,
1720
kbp[search->first_context]->H,
1723
search->dblen, search->dbseq_num,
1724
&length_adjustment) ) {
1725
ErrPostEx(SEV_WARNING, 0, 0,
1726
"BlastComputeLengthAdjustment failed!");
1728
search->length_adjustment = length_adjustment;
1730
search->dblen - search->dbseq_num*search->length_adjustment;
1732
effective_query_length = length - length_adjustment;
1733
for (index=search->first_context; index<=search->last_context; index++)
1735
search->context[index].query->effective_length =
1736
effective_query_length;
1739
if (search->searchsp_eff == 0)
1740
search->searchsp_eff =
1741
((Nlm_FloatHi) search->dblen_eff)*
1742
((Nlm_FloatHi) effective_query_length);
1741
1744
/* The default is that cutoff_s was not set and is zero. */
1742
1745
if (options->cutoff_s == 0)