61 #define PTHROW(stream) NCBI_THROW(CException, eUnknown, stream)
81 c.SetSequences().SetSet().SetSeq_set().push_back(seq);
89 for (
unsigned int i=((bma->
NRows() > 1) ? 1 : 0); i<bma->NRows(); ++
i) {
92 c.SetSequences().SetSet().SetSeq_set().push_back(seq);
94 c.SetSeqannot().front()->SetData().SetAlign().push_back(seqAlign);
98 cd_utils::PssmMaker pm(&c,
true,
true);
99 cd_utils::PssmMakerOptions options;
100 options.requestFrequencyRatios =
true;
102 pm.setOptions(options);
106 if (!
pssm->GetPssm().IsSetQuery() || !
pssm->GetPssm().GetQuery().IsSeq())
107 PTHROW(
"PssmWithParameters from cd_utils::PssmMaker() doesn't contain the master/query sequence");
109 id->SetLocal().SetStr(
"consensus");
110 pssm->SetPssm().SetQuery().SetSeq().SetId().push_front(
id);
205 }
catch (exception& e) {
206 ERRORMSG(
"PSSMWrapper::PSSMWrapper() failed with exception: " << e.what());
208 ERRORMSG(
"PSSMWrapper::PSSMWrapper() failed with unknown exception");
214 if (!
pssm->GetPssm().IsSetFinalData())
215 PTHROW(
"UnpackMatrix() - pssm must have finalData");
216 unsigned int nScores =
pssm->GetPssm().GetNumRows() *
pssm->GetPssm().GetNumColumns();
217 if (
pssm->GetPssm().GetNumRows() != 28 ||
pssm->GetPssm().GetFinalData().GetScores().size() != nScores)
218 PTHROW(
"UnpackMatrix() - bad matrix size");
225 for (
i=0; (
int)i<pssm->GetPssm().GetNumColumns(); ++
i)
229 unsigned int r = 0, c = 0;
230 CPssmFinalData::TScores::const_iterator s =
pssm->GetPssm().GetFinalData().GetScores().begin();
231 for (
i=0;
i<nScores; ++
i, ++s) {
236 if (
pssm->GetPssm().GetByRow()) {
238 if ((
int)c ==
pssm->GetPssm().GetNumColumns()) {
244 if ((
int)
r ==
pssm->GetPssm().GetNumRows()) {
252 if ((
int)pm.getConsensus().size() !=
pssm->GetPssm().GetNumColumns())
253 PTHROW(
"Consensus sequence does not match PSSM size");
255 cd_utils::BlockModelPair
bmp(pm.getGuideAlignment());
257 for (
i=0;
i<pm.getConsensus().
size(); ++
i)
270 if (!
copy.GetPssm().IsSetQuery() || !
copy.GetPssm().GetQuery().IsSeq()) {
271 ERRORMSG(
"PssmWithParameters from cd_utils::PssmMaker() doesn't contain the master/query sequence");
276 CBioseq::TId::iterator
i, ie =
copy.SetPssm().SetQuery().SetSeq().SetId().end();
277 for (
i=
copy.SetPssm().SetQuery().SetSeq().SetId().begin();
i!=ie; ++
i) {
278 if ((*i)->IsLocal() && (*i)->GetLocal().IsStr())
279 (*i)->SetLocal().SetStr(title);
280 if (!(*i)->IsGeneral() || (*i)->GetGeneral().GetDb() !=
"Cdd")
283 copy.SetPssm().SetQuery().SetSeq().SetId() = keep;
285 CSeq_descr::Tdata::iterator d, de =
copy.SetPssm().SetQuery().SetSeq().SetDescr().Set().end();
286 for (d=
copy.SetPssm().SetQuery().SetSeq().SetDescr().Set().begin(); d!=de; ++d) {
287 if ((*d)->IsTitle()) {
288 (*d)->SetTitle(title);
295 copy.SetPssm().SetQuery().SetSeq().SetDescr().Set().push_front(descr);
299 copy.SetPssm().ResetFinalData();
300 if (!
copy.GetPssm().IsSetIntermediateData() || !
copy.GetPssm().GetIntermediateData().IsSetFreqRatios())
301 ERRORMSG(
"PSSM is missing frequency ratios");
310 return((
int)(Num + 0.5));
312 return((
int)(Num - 0.5));
318 ERRORMSG(
"PSSMWrapper::GetPSSMScore() - invalid parameters");
324 if (consensusIndex >= 0) {
const Sequence * GetMaster(void) const
std::vector< const UngappedAlignedBlock * > UngappedAlignedBlockList
const Sequence * GetSequenceOfRow(unsigned int row) const
void GetUngappedAlignedBlocks(UngappedAlignedBlockList *blocks) const
unsigned int NRows(void) const
std::vector< Column > scaledMatrix
std::vector< int > master2consensus
ncbi::CRef< ncbi::objects::CPssmWithParameters > pssm
PSSMWrapper(const BlockMultipleAlignment *bma)
void UnpackMatrix(ncbi::cd_utils::PssmMaker &pm)
std::vector< int > consensus2master
int GetPSSMScore(unsigned char ncbistdaa, unsigned int realMasterIndex) const
const BlockMultipleAlignment * multiple
void OutputPSSM(ncbi::CNcbiOstream &os, const std::string &title) const
unsigned int Length(void) const
CConstRef< objects::CBioseq > bioseqASN
static int Round(double Num)
Include a standard set of the NCBI C++ Toolkit most basic headers.
std::ofstream out("events_result.xml")
main entry point for tests
thread_local unique_ptr< FtaMsgPost > bmp
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
void Reset(void)
Reset reference object.
TObjectType & GetObject(void) const
Get object.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_SCOPE(ns)
Define a new scope.
IO_PREFIX::ofstream CNcbiOfstream
Portable alias for ofstream.
IO_PREFIX::ostream CNcbiOstream
Portable alias for ostream.
TSeq & SetSeq(void)
Select the variant.
TTitle & SetTitle(void)
Select the variant.
list< CRef< CSeq_id > > TId
unsigned int
A callback function used to compare two keys in a database.
const struct ncbi::grid::netcache::search::fields::SIZE size
void resize(vector< SMethodDef > &container)
NCBI C++ stream class wrappers for triggering between "new" and "old" C++ stream libraries.
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)
static DP_BlockInfo * blocks
static int GetBLOSUM62Score(char a, char b)
ncbi::objects::CSeq_align * CreatePairwiseSeqAlignFromMultipleRow(const BlockMultipleAlignment *multiple, const BlockMultipleAlignment::UngappedAlignedBlockList &blocks, unsigned int slaveRow)
char LookupCharacterFromNCBIStdaaNumber(unsigned char n)