本文整理汇总了C++中HMM::Log2LinTransitionProbs方法的典型用法代码示例。如果您正苦于以下问题:C++ HMM::Log2LinTransitionProbs方法的具体用法?C++ HMM::Log2LinTransitionProbs怎么用?C++ HMM::Log2LinTransitionProbs使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HMM
的用法示例。
在下文中一共展示了HMM::Log2LinTransitionProbs方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: PrepareTemplate
/////////////////////////////////////////////////////////////////////////////////////
// Do precalculations for q and t to prepare comparison
/////////////////////////////////////////////////////////////////////////////////////
void PrepareTemplate(HMM& q, HMM& t, int format)
{
if (format==0) // HHM format
{
// Add transition pseudocounts to template
t.AddTransitionPseudocounts();
// Don't use CS-pseudocounts because of runtime!!!
// Generate an amino acid frequency matrix from f[i][a] with full pseudocount admixture (tau=1) -> g[i][a]
t.PreparePseudocounts();
// Add amino acid pseudocounts to query: p[i][a] = (1-tau)*f[i][a] + tau*g[i][a]
t.AddAminoAcidPseudocounts(par.pcm, par.pca, par.pcb, par.pcc);
t.CalculateAminoAcidBackground();
}
else // HHMER format
{
// Don't add transition pseudocounts to template
// t.AddTransitionPseudocounts(par.gapd, par.gape, par.gapf, par.gapg, par.gaph, par.gapi, 0.0);
// Generate an amino acid frequency matrix from f[i][a] with full pseudocount admixture (tau=1) -> g[i][a]
// t.PreparePseudocounts();
// DON'T ADD amino acid pseudocounts to temlate: pcm=0! t.p[i][a] = t.f[i][a]
t.AddAminoAcidPseudocounts(0, par.pca, par.pcb, par.pcc);
t.CalculateAminoAcidBackground();
}
if (par.forward>=1) t.Log2LinTransitionProbs(1.0);
// Factor Null model into HMM t
// ATTENTION! t.p[i][a] is divided by pnul[a] (for reasons of efficiency) => do not reuse t.p
t.IncludeNullModelInHMM(q,t); // Can go BEFORE the loop if not dependent on template
return;
}
示例2: ReadAndPrepare
//.........这里部分代码省略.........
if (qali==NULL) pali=new(Alignment); else pali=qali;
if (par.calibrate) {
printf("\nError in %s: only HHM files can be calibrated.\n",program_name);
printf("Build an HHM file from your alignment with 'hhmake -i %s' and rerun hhsearch with the hhm file\n\n",infile);
exit(1);
}
if (v>=2 && strcmp(infile,"stdin")) cout<<infile<<" is in A2M, A3M or FASTA format\n";
// Read alignment from infile into matrix X[k][l] as ASCII (and supply first line as extra argument)
pali->Read(inf,infile,line);
// Convert ASCII to int (0-20),throw out all insert states, record their number in I[k][i]
// and store marked sequences in name[k] and seq[k]
pali->Compress(infile);
// Sort out the nseqdis most dissimilar sequences for display in the output alignments
pali->FilterForDisplay(par.max_seqid,par.coverage,par.qid,par.qsc,par.nseqdis);
// Remove sequences with seq. identity larger than seqid percent (remove the shorter of two)
pali->N_filtered = pali->Filter(par.max_seqid,par.coverage,par.qid,par.qsc,par.Ndiff);
if (par.Neff>=0.999)
pali->FilterNeff();
// Calculate pos-specific weights, AA frequencies and transitions -> f[i][a], tr[i][a]
pali->FrequenciesAndTransitions(q);
if (v>=2 && q.Neff_HMM>11.0)
fprintf(stderr,"WARNING: alignment %s looks too diverse (Neff=%.1f>11). Better check it with an alignment viewer... \n",q.name,q.Neff_HMM);
// Add transition pseudocounts to query -> p[i][a]
q.AddTransitionPseudocounts();
if (!*par.clusterfile) { //compute context-specific pseudocounts?
// Generate an amino acid frequency matrix from f[i][a] with full pseudocount admixture (tau=1) -> g[i][a]
q.PreparePseudocounts();
// Add amino acid pseudocounts to query: p[i][a] = (1-tau)*f[i][a] + tau*g[i][a]
q.AddAminoAcidPseudocounts(par.pcm, par.pca, par.pcb, par.pcc);
} else {
// Add context specific pseudocount to query
q.AddContextSpecificPseudocounts(par.pcm);
}
q.CalculateAminoAcidBackground();
if (qali==NULL) delete(pali);
} else if (!strncmp(line,"HMMER",5)) {
///////////////////////////////////////////////////////////////////////////////////////
// Don't allow HMMER format as input due to the severe loss of sensitivity!!!! (only allowed in HHmake)
if (strncmp(program_name,"hhmake",6)) {
cerr<<endl<<"Error in "<<program_name<<": HMMER format not allowed as input due to the severe loss of sensitivity!\n";
exit(1);
}
// Is infile a HMMER3 file?
if (!strncmp(line,"HMMER3",6))
{
if (v>=2) cout<<"Query file is in HMMER3 format\n";
// Read 'query HMMER file
rewind(inf);
q.ReadHMMer3(inf,path);
// Don't add transition pseudocounts to query!!
// DON'T ADD amino acid pseudocounts to query: pcm=0! q.p[i][a] = f[i][a]
q.AddAminoAcidPseudocounts(0, par.pca, par.pcb, par.pcc);
q.CalculateAminoAcidBackground();
}
// ... or is infile an old HMMER file?
else if (!strncmp(line,"HMMER",5))
{
if (v>=2) cout<<"Query file is in HMMER format\n";
// Read 'query HMMER file
rewind(inf);
q.ReadHMMer(inf,path);
// DON'T ADD amino acid pseudocounts to query: pcm=0! q.p[i][a] = f[i][a]
q.AddAminoAcidPseudocounts(0, par.pca, par.pcb, par.pcc);
q.CalculateAminoAcidBackground();
}
} else {
cerr<<endl<<"Error in "<<program_name<<": unrecognized input file format in \'"<<infile<<"\'\n";
cerr<<"line = "<<line<<"\n";
exit(1);
}
fclose(inf);
if (par.addss==1)
CalculateSS(q);
if (par.columnscore == 5 && !q.divided_by_local_bg_freqs) q.DivideBySqrtOfLocalBackgroundFreqs(par.half_window_size_local_aa_bg_freqs);
if (par.forward>=1) q.Log2LinTransitionProbs(1.0);
return;
}