51 #include <wx/msgdlg.h>
65 "SPLIGN (SPliced aLIGNment)",
66 "Compute cDNA-to-genomic spliced alignments",
67 "https://www.ncbi.nlm.nih.gov/tools/gbench/tutorial2/",
68 "Alignment Creation"),
135 const CSeq_loc* loc =
dynamic_cast<const CSeq_loc*
>(it2->object.GetPointer());
144 if (desc_iter) molInfo = &desc_iter->
GetMolinfo();
149 genomic.push_back(*it2);
152 genomic.push_back(*it2);
163 genomic.push_back(*it2);
168 if (!genomic.empty()) {
170 copy(genomic.begin(), genomic.end(), back_inserter(vec));
174 copy(na.begin(), na.end(), back_inserter(vec));
254 copy(vec.begin(), vec.end(), back_inserter(genomic));
258 copy(vec.begin(), vec.end(), back_inserter(cdna));
275 wxMessageBox(
wxT(
"No genomic objects sequences can be proccessed were selected."),
276 wxT(
"SPLIGN Tool Error"), wxOK | wxICON_ERROR);
281 wxMessageBox(
wxT(
"No cDNA/Transcript sequences that can be proccessed were selected."),
282 wxT(
"SPLIGN Tool Error"), wxOK | wxICON_ERROR);
288 vector<CProjectService::TProjectId> projects;
296 copy(vec.begin(), vec.end(), back_inserter(
objects));
300 copy(vec.begin(), vec.end(), back_inserter(
objects));
307 if (projects.empty())
321 : m_Params(params), m_Genomic(genomic), m_cDNA(cdna)
330 dynamic_cast<const CSeq_loc&
>(it->object.GetObject());
332 vector<string> not_found_labels;
337 const CSeq_loc& seqloc_cdna =
dynamic_cast<const CSeq_loc&
>(iter->object.GetObject());
338 CScope& scope = *iter->scope;
342 SSeqLoc(seqloc_genomic, scope),
383 if( (*ii)->IsSet() ){
387 if( hitref->GetQueryStrand() ==
false ){
388 hitref->FlipStrands();
390 hitrefs.push_back( hitref );
395 if( hitrefs.size() ){
396 splign.
Run( &hitrefs );
400 sf.
SetSeqIds( transcript_id, genomic_id );
408 if( hitrefs.size() ){
409 splign.
Run( &hitrefs );
413 sf.
SetSeqIds( transcript_id, genomic_id );
418 if( !seqaln_set_neg->
IsEmpty() ){
419 seqaln_set->
Set().merge( seqaln_set_neg->
Set() );
425 if( !seqaln_set->
Get().empty() ){
428 TAlign& seqannot_align = annot->
SetData().SetAlign();
430 seqannot_align.push_back(*align);
438 str +=
": SPLIGN alignment";
445 item->
SetItem().SetAnnot(*annot);
455 not_found_labels.push_back(
label);
Declares the CBl2Seq (BLAST 2 Sequences) class.
vector< CRef< objects::CSeq_align_set > > TSeqAlignVector
Vector of Seq-align-sets.
@ eMegablast
Nucl-Nucl (traditional megablast)
Runs the BLAST algorithm between 2 sequences.
CDataLoadingAppJob - a base class for Jobs loading data into projects.
void AddProjectItem(objects::CProjectItem &item)
CDataLoadingAppTask - a task that executes CDataLoadingAppJob.
void DebugDumpText(ostream &out, const string &bundle, unsigned int depth) const
CProjectService - a service providing API for operations with Workspaces and Projects.
void GetObjProjects(TConstScopedObjects &objects, vector< TProjectId > &ids)
CProjectSelectOptions - describes how new Project Items shall be added to a workspace.
void Set_CreateNewProject(const string &folder=kEmptyStr)
void Set_AddToExistingProject(TProjectId &project_id, const string &folder=kEmptyStr)
void SetNameDesc(const string &name)
void SetCreateDate(const CTime &dt)
static Boolean s_BlastInterruptCallback(SBlastProgress *prog)
TConstScopedObjects m_cDNA
virtual void x_CreateProjectItems()
override this function in derived classes and populate m_Items.
CSplignJob(const CSplignParams ¶ms, const TConstScopedObjects &genomic, const TConstScopedObjects &cdna)
CSplignJob.
static bool s_SplignInterruptCallback(CNWAligner::SProgressInfo *prog)
TConstScopedObjects m_Genomic
CSplign is the central library object for computing spliced cDNA-to-genomic alignments.
void SetPolyaDetection(bool on)
void Run(THitRefs *hitrefs)
void SetCompartmentPenalty(double penalty)
void SetMinSingletonIdentity(double idty)
CRef< objects::CScope > & SetScope(void)
void SetMaxIntron(size_t max_intron)
void SetMinExonIdentity(double idty)
void SetStrand(bool strand)
void PreserveScope(bool preserve=true)
Controls whether to clean the scope object's cache on a new sequence.
vector< THitRef > THitRefs
void SetMaxGenomicExtent(size_t mge)
CRef< TAligner > & SetAligner(void)
Access the spliced aligner core object.
void SetMinCompartmentIdentity(double idty)
static CRef< CSplicedAligner > s_CreateDefaultAligner(void)
void SetEndGapDetection(bool on)
IRegSettings An interface for objects that save / restore settings using CGuiRegistry.
static const char * str(char *buf, int n)
TInterruptFnPtr SetInterruptCallback(TInterruptFnPtr fnptr, void *user_data=NULL)
Set a function callback to be invoked by the CORE of BLAST to allow interrupting a BLAST search in pr...
virtual TSeqAlignVector Run()
Perform BLAST search Assuming N queries and M subjects, the structure of the returned vector is as fo...
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
CIRef< T > GetServiceByType()
retrieves a typed reference to a service, the name of C++ type is used as the name of the service.
bool Create(wxWindow *parent, wxWindowID id=ID_CSPLIGNPANEL, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(400, 300), long style=wxCLIP_CHILDREN|wxTAB_TRAVERSAL, bool visibale=true)
virtual void LoadSettings()
CSplignTool()
CSplignTool.
virtual string GetExtensionIdentifier() const
returns the unique human-readable identifier for the extension the id should use lowercase letters se...
virtual void CleanUI()
override this function in a derived class and clean extra members
virtual CDataLoadingAppJob * x_CreateLoadingJob()
factory method for creating the job that executes the tool algorithm override in derived classes
virtual void x_SelectCompatibleInputObjects()
virtual CAlgoToolManagerParamsPanel * x_GetParamsPanel()
returns a pointer to the parameters panel, override in derived classes
virtual bool x_ValidateParams()
validates user input in Parameters panel, report errors if any
virtual IAppTask * QuickLaunch()
double GetCompPenalty() const
long GetMaxGenomicExtent() const
CSplignParams & GetData()
TConstScopedObjects GetCDNASeqs() const
bool GetPolyADetect() const
TObjects m_GenomicObjects
double GetMinExonIdentity() const
virtual wxPanel * GetMaxPanel()
Return the panel that occupies max size on display, to calculate dialog window size.
virtual IRegSettings * x_GetParamsAsRegSetting()
return a pointer to Parameters object as IRegSettings interface
bool GetEndGapDetect() const
virtual void SetRegistryPath(const string &path)
CAlgoToolManagerParamsPanel.
long GetMaxIntron() const
SConstScopedObject GetGenomicSeq() const
virtual void InitUI()
override this function in a derived class and initialize extra members
double GetMinCompIdentity() const
virtual bool x_CreateParamsPanelIfNeeded()
returns / creates Parameters panel, override in derived classes see cpp file for example
void SetData(const CSplignParams &data)
void SetObjects(map< string, TConstScopedObjects > *genomic, map< string, TConstScopedObjects > *na)
int GetCDNAStrand() const
virtual string GetExtensionLabel() const
returns a displayable label for this extension ( please capitalize the key words - "My Extension" )
static void GetLabel(const CObject &obj, string *label, ELabelType type=eDefault)
string m_Descr
mutex to sync our internals
virtual bool IsCanceled() const override
vector< SConstScopedObject > TConstScopedObjects
const CSeq_id * GetId(void) const
Get the id of the location return NULL if has multiple ids or no id at all.
const CSeq_id & GetId(const CSeq_loc &loc, CScope *scope)
If all CSeq_ids embedded in CSeq_loc refer to the same CBioseq, returns the first CSeq_id found,...
void Reset(void)
Reset reference object.
TObjectType * Release(void)
Release a reference to the object and return a pointer to the object.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
CTime CurrentTime(CTime::ETimeZone tz=CTime::eLocal, CTime::ETimeZonePrecision tzp=CTime::eTZPrecisionDefault)
static const char label[]
void SetLabel(const TLabel &value)
Assign a value to Label data member.
void SetItem(TItem &value)
Assign a value to Item data member.
Tdata & Set(void)
Assign a value to data member.
list< CRef< CSeq_align > > Tdata
const Tdata & Get(void) const
Get the member data.
bool IsWhole(void) const
Check if variant Whole is selected.
bool IsInt(void) const
Check if variant Int is selected.
void SetData(TData &value)
Assign a value to Data data member.
list< CRef< CSeq_align > > TAlign
TBiomol GetBiomol(void) const
Get the Biomol member data.
const TMolinfo & GetMolinfo(void) const
Get the variant data.
@ e_Molinfo
info on the molecule and techniques
Uint1 Boolean
bool replacment for C
#define TRUE
bool replacment for C indicating true.
#define FALSE
bool replacment for C indicating false.
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)
#define SYMBOL_CSPLIGNPANEL_STYLE
Progress monitoring structure.
Structure to represent a single sequence to be fed to BLAST.