m_Pssm1(0), m_Freq1(0),
47m_Seq2(0), m_Freq2(0),
49m_StartWg(GetDefaultWg()),
50m_StartWs(GetDefaultWs()),
51m_EndWg(GetDefaultWg()),
52m_EndWs(GetDefaultWs())
58 const char* seq2,
size_tlen2)
60m_Pssm1(pssm1), m_Freq1(0),
61m_Seq2(seq2), m_Freq2(0),
63m_StartWg(GetDefaultWg()),
64m_StartWs(GetDefaultWs()),
65m_EndWg(GetDefaultWg()),
66m_EndWs(GetDefaultWs())
73 const double** freq2,
size_tlen2,
77m_Pssm1(0), m_Freq1(freq1),
78m_Seq2(0), m_Freq2(freq2),
80m_StartWg(GetDefaultWg()),
81m_StartWs(GetDefaultWs()),
82m_EndWg(GetDefaultWg()),
83m_EndWs(GetDefaultWs())
90 const char* seq2,
size_tlen2,
102 const char* seq2,
size_tlen2,
105 if(!pssm1 || !len1 || !seq2 || !len2) {
111 for(
size_t i= 0;
i< len2;
i++) {
130 const double** freq2,
size_tlen2,
133 if(!freq1 || !len1 || !freq2 || !len2) {
222 const size_tN1 =
data->m_len1 + 1;
223 const size_tN2 =
data->m_len2 + 1;
225vector<TScore> stl_rowV (N2), stl_rowF(N2);
227 TScore* rowV = &stl_rowV[0];
228 TScore* rowF = &stl_rowF[0];
233 const char* seq2 =
m_Seq2+
data->m_offset2 - 1;
255 if(
data->m_offset1 == 0) {
256 if(
data->m_esf_L1) {
266 if(
data->m_esf_R1) {
275 if(
data->m_offset2 == 0) {
276 if(
data->m_esf_L2) {
286 if(
data->m_esf_R2) {
301backtrace_matrix.
SetAt(0, 0);
306 for(k = 1; k < N2; k++) {
307rowV[k] = pV[k] + wsleft1;
311backtrace_matrix.
Purge(k);
325 unsigned chartracer;
341 for(j = 1; j < N2; ++j, ++k) {
343 G= pV[j] + pssm_row[
i][(
unsignedchar)seq2[j]];
388backtrace_matrix.
SetAt(k, tracer);
400backtrace_matrix.
Purge(k);
411 const size_tN1 =
data->m_len1 + 1;
412 const size_tN2 =
data->m_len2 + 1;
414vector<double> stl_rowV (N2), stl_rowF(N2);
416 double* rowV = &stl_rowV[0];
417 double* rowF = &stl_rowF[0];
419 double* pV = rowV - 1;
421 const double** freq1_row =
m_Freq1+
data->m_offset1 - 1;
422 const double** freq2_row =
m_Freq2+
data->m_offset2 - 1;
444 if(
data->m_offset1 == 0) {
445 if(
data->m_esf_L1) {
455 if(
data->m_esf_R1) {
464 if(
data->m_offset2 == 0) {
465 if(
data->m_esf_L2) {
475 if(
data->m_esf_R2) {
494rowV[0] = wgleft1 * (1.0 - freq2_row[1][0]);
495 for(k = 1; k < N2; k++) {
496rowV[k] = pV[k] + wsleft1;
500backtrace_matrix.
Purge(k);
512 doubleV = rowV[N2 - 1];
515 unsigned chartracer;
518V0 = wgleft2 * (1.0 - freq1_row[1][0]);
534 for(j = 1; j < N2; ++j, ++k) {
540 const double*profile1 = freq1_row[
i];
541 const double*profile2 = freq2_row[j];
542 const doublescaled_wg1 = wg1 * (1.0 - profile2[0]);
543 const doublescaled_ws1 = ws1;
544 const doublescaled_wg2 = wg2 * (1.0 - profile1[0]);
545 const doublescaled_ws2 = ws2;
547 doubleaccum = 0.0, sum = 0.0;
548 intnum_zeros1 = 0, num_zeros2 = 0;
563 if(profile1[m] < profile2[m]) {
566diff_freq2[m] = profile2[m] - profile1[m];
571diff_freq1[m] = profile1[m] - profile2[m];
578 if(profile1[0] <= profile2[0]) {
580sum += diff_freq1[m];
583sum += diff_freq2[m];
588 if(profile1[0] <= profile2[0]) {
590diff_freq1[m] *= sum;
593diff_freq2[m] *= sum;
600 if(num_zeros1 > num_zeros2) {
602 if(diff_freq1[m] > 0) {
606sum += diff_freq2[
n] * matrix_row[
n];
608accum += diff_freq1[m] * sum;
613 if(diff_freq2[m] > 0) {
617sum += diff_freq1[
n] * matrix_row[
n];
619accum += diff_freq2[m] * sum;
626profile1[0] *
m_Ws* (1-profile2[0]) +
627profile2[0] *
m_Ws* (1-profile1[0]);
641n0 = rowV[j] + scaled_wg2;
643rowF[j] += scaled_ws2;
647rowF[j] = n0 + scaled_ws2;
668backtrace_matrix.
SetAt(k, tracer);
680backtrace_matrix.
Purge(k);
685 return(
TScore)(V + 0.5);
694 size_tstart1,
size_tstart2)
const 709 const size_tdim = transcript.size();
712 for(
size_t i= 0;
i< dim; ++
i) {
720}
else if(offset2 < 0) {
724}
else if(offset1 == (
int)
m_SeqLen1- 1) {
728}
else if(offset2 == (
int)
m_SeqLen2- 1) {
741++offset1; ++offset2;
743score +=
m_Pssm1[offset1][(
unsignedchar)
m_Seq2[offset2]];
749 if(state1 != 1) score += wg;
750state1 = 1; state2 = 0;
757 if(state2 != 1) score += wg;
758state1 = 0; state2 = 1;
772 for(
size_t i= 0;
i< dim; ++
i) {
781}
else if(offset1 == (
int)
m_SeqLen1- 1) {
793}
else if(offset2 == (
int)
m_SeqLen2- 1) {
807++offset1; ++offset2;
808 doubleaccum = 0.0, sum = 0.0;
814accum +=
m_Freq1[offset1][m] * (double)sm[m][m];
816diff_freq2[m] =
m_Freq2[offset2][m] -
820accum +=
m_Freq2[offset2][m] * (double)sm[m][m];
821diff_freq1[m] =
m_Freq1[offset1][m] -
829sum += diff_freq1[m];
832sum += diff_freq2[m];
838diff_freq1[m] /= sum;
841diff_freq2[m] /= sum;
846accum += diff_freq1[m] *
860 if(state1 != 1) dscore += wg1 * (1.0 -
m_Freq2[offset2][0]);
861state1 = 1; state2 = 0;
868 if(state2 != 1) dscore += wg2 * (1.0 -
m_Freq1[offset1][0]);
869state1 = 0; state2 = 1;
880score = (
TScore)(dscore + 0.5);
void SetAt(size_t i, Uint1 v)
virtual bool x_CheckMemoryLimit(void)
double m_DScoreMatrix[kPSSM_ColumnSize][kPSSM_ColumnSize]
static const int kPSSM_ColumnSize
virtual TScore x_Align(SAlignInOut *data)
virtual TScore ScoreFromTranscript(const TTranscript &transcript, size_t start1=kMax_UInt, size_t start2=kMax_UInt) const
virtual ETranscriptSymbol x_GetDiagTS(size_t i1, size_t i2) const
virtual void SetSequences(const char *seq1, size_t len1, const char *seq2, size_t len2, bool verify=true)
SNCBIFullScoreMatrix m_ScoreMatrix
virtual CNWAligner::TScore Run(void)
virtual TScore ScoreFromTranscript(const TTranscript &transcript, size_t start1=0, size_t start2=0) const
void SetScoreMatrix(const SNCBIPackedScoreMatrix *scoremat)
FProgressCallback m_prg_callback
virtual TScore x_Run(void)
TScore x_AlignProfile(SAlignInOut *data)
vector< ETranscriptSymbol > TTranscript
virtual TScore x_Align(SAlignInOut *data)
void SetScoreMatrix(const SNCBIPackedScoreMatrix *scoremat)
void SetSequences(const char *seq1, size_t len1, const char *seq2, size_t len2, bool verify=true)
virtual ETranscriptSymbol x_GetDiagTS(size_t i1, size_t i2) const
void x_DoBackTrace(const CBacktraceMatrix4 &backtrace, SAlignInOut *data)
TScore x_AlignPSSM(SAlignInOut *data)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
const unsigned char kMaskFc
const unsigned char kMaskEc
const unsigned char kMaskE
const unsigned char kMaskD
#define NCBI_FSM_DIM
Recommended approach: unpack and index directly.
int TNCBIScore
data types
const char g_msg_HitSpaceLimit[]
const char g_msg_InvalidTranscriptSymbol[]
const char g_msg_NullParameter[]
const char g_msg_InvalidSequenceChars[]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4