wxMessageBox(
wxT(
"No features are selected"),
wxT(
"Error"), wxOK | wxICON_ERROR,
NULL);
64 const CObject* ptr = it->object.GetPointer();
70mrna.
Reset(seqfeat);
85 boolmodified =
false;
87 if(!cds_hasid || !mrna_hasid) {
99new_feat->
Assign(*orig_feat);
101new_feat->
SetId().SetLocal().SetId(top_id);
103 if(orig_feat == mrna ) {
105}
else if(orig_feat == cds) {
109 cmd->AddCommand(*chg_feat);
119 cmd->AddCommand(*chg_mrna);
121 cmd->AddCommand(*chg_cds);
124}
else if(cds_hasid && mrna_hasid) {
135 boolmodified =
false;
142 cmd->AddCommand(*chg_mrna);
151 cmd->AddCommand(*chg_cds);
173 cmd->AddCommand(*chg_mrna);
183 cmd->AddCommand(*chg_cds);
196 if(xref->IsSetId() && xref->GetId().IsLocal()) {
197xref->SetId().SetLocal().Assign(to_feat.
GetId().
GetLocal());
207 boolassigned =
false;
216new_feat->
Assign(*feat_it->GetOriginalSeq_feat());
218new_feat->
SetId().SetLocal().SetId(top_id);
221 cmd->AddCommand(*chg_feat);
240(cds_it->GetLocation(),
249 if(linked_mRNAs.
find(mrna) != linked_mRNAs.
end()) {
255linked_mRNAs.
insert(mrna);
259 if(!linked_mRNAs.
empty()) {
263 if(assigned || !linked_mRNAs.
empty()) {
264cmdProcessor->
Execute(link_cmd);
282 if(mrna_it->IsSetProduct()) {
284mrna_products.emplace(idh, mrna_it->GetOriginalSeq_feat());
289 if(cds_it->IsSetProduct()) {
291cds_products.emplace(idh, cds_it->GetOriginalSeq_feat());
295 if(mrna_products.
empty() || cds_products.
empty()) {
300 for(
auto& mrna_it : mrna_products) {
301 if(linked_feats.
find(mrna_it.second) != linked_feats.
end()) {
306 if(!cdna)
continue;
311vector<CSeq_id_Handle> prot_ids = prot_it->
GetId();
312 for(
auto&& id_it : prot_ids) {
313 autofound_cds_it = cds_products.
find(id_it);
314 if(found_cds_it != cds_products.
end()) {
315 if(linked_feats.
find(found_cds_it->second) != linked_feats.
end()) {
319linked_feats.
insert(mrna_it.second);
320linked_feats.
insert(found_cds_it->second);
328 if(!linked_feats.
empty()) {
332 if(assigned || !linked_feats.
empty()) {
333cmdProcessor->
Execute(link_cmd);
373 if(linked_mRNAs.
find(mrna) != linked_mRNAs.
end()) {
378linked_mRNAs.
insert(mrna);
384 if(!linked_mRNAs.
empty()) {
388 if(assigned || !linked_mRNAs.
empty()) {
389cmdProcessor->
Execute(link_cmd);
396 if((*xref_it)->IsSetId() && (*xref_it)->GetId().IsLocal()) {
430 for(; pair_it; ++pair_it) {
456 if(best_fit.
IsNull()) {
457best_fit = feat_pair;
460best_diff = (best_fit_length > feat_length) ? (best_fit_length - feat_length) : (feat_length - best_fit_length);
465 TSeqPoscurrent_diff = (candidate_length > feat_length) ? (candidate_length - feat_length) : (feat_length - candidate_length);
466 if(current_diff < best_diff) {
467best_fit = feat_pair;
468best_diff = current_diff;
477linked_feats.
insert(feat);
478linked_feats.
insert(best_fit);
482 if(!linked_feats.
empty()) {
486 if(assigned || !linked_feats.
empty()) {
487cmdProcessor->
Execute(link_cmd);
500 boollinked =
false;
508 if((*xref_it)->IsSetId() && (*xref_it)->GetId().IsLocal() && (*xref_it)->GetId().GetLocal().IsId()) {
523 boolhas_xref =
false;
526 if((*it)->IsSetId() && (*it)->GetId().IsLocal() && (*it)->GetId().GetLocal().IsId()) {
527 const CFeat_id& pair_feat_id = (*it)->GetId();
544cmdProcessor->
Execute(link_cmd);
552 msg.assign(
"No features are selected");
553}
else if(cds && !mrna) {
554 msg.assign(
"No mRNA is selected");
555}
else if(!cds && mrna) {
556 msg.assign(
"No CDS is selected");
570xref->SetId().Assign(to_feat.
GetId());
571from_feat.
SetXref().push_back(xref);
583&& (*it)->GetId().IsLocal()
584&& feat_id.
Equals((*it)->GetId()))
593vector<CConstRef<CObject> > objs;
596wxOK | wxICON_INFORMATION);
600 size_tcount_feat = 0;
602 const CObject* sel_obj = it->object.GetPointer();
609 if(count_feat > 1) {
611wxOK | wxICON_INFORMATION);
619wxOK | wxICON_INFORMATION);
625 if(!is_cds && !is_mrna) {
627wxOK | wxICON_INFORMATION);
636 if((*it)->IsSetId() && (*it)->GetId().IsLocal() && (*it)->GetId().GetLocal().IsId()) {
648wxOK | wxICON_INFORMATION);
653objs.push_back(
objects[0].
object);
User-defined methods of the data storage class.
User-defined methods of the data storage class.
void AddCommand(IEditCommand &command)
static const string & s_GetProteinName(const objects::CSeq_feat_Handle &fh)
static TId s_FindHighestFeatureId(const objects::CSeq_entry_Handle &entry)
implements special composite command, which does not call to its internal commands when run the very ...
string GetRnaProductName(void) const
ESubtype GetSubtype(void) const
namespace ncbi::objects::
CSeq_feat_Handle GetFeatureWithId(CSeqFeatData::E_Choice type, TFeatureIdInt id) const
bool AssignFeatureIds(CRef< CMacroCmdComposite > cmd)
bool x_ReplaceExistingFeatIdXrefs(objects::CSeq_feat &from_feat, const objects::CSeq_feat &to_feat)
void LinkByOverlap(ICommandProccessor *cmdProcessor)
void CompleteHalfFormedXrefPairs(ICommandProccessor *cmdProcessor)
static void s_CreateXRefLink(objects::CSeq_feat &from_feat, const objects::CSeq_feat &to_feat)
static bool s_IsDirectXrefBetween(const objects::CSeq_feat &from_feat, const objects::CSeq_feat &to_feat)
bool ReplaceExistingXrefs(const objects::CSeq_feat &mrna, const objects::CSeq_feat &cds, CRef< CCmdComposite > cmd)
void LinkSelectedFeatures(TConstScopedObjects &objects, ICommandProccessor *cmdProcessor)
void LinkByLabelAndLocation(ICommandProccessor *cmdProcessor)
objects::CSeq_entry_Handle m_TopSeqEntry
bool SetReciprocalXrefs(const objects::CSeq_feat &mrna, const objects::CSeq_feat &cds, CRef< CCmdComposite > cmd)
void LinkByLabel(ICommandProccessor *cmdProcessor)
void LinkByProduct(ICommandProccessor *cmdProcessor)
vector< CConstRef< CObject > > GetReferencedmRNA_CDS(TConstScopedObjects &objects)
returns the pair of cross-referenced mRNA and CDS features, when one of them is selected
bool x_OkForLinking(CConstRef< objects::CSeq_feat > mrna, CConstRef< objects::CSeq_feat > cds)
Undo/Redo interface for editing operations.
virtual void Execute(IEditCommand *command, wxWindow *window=0)=0
const_iterator end() const
const_iterator find(const key_type &key) const
iterator_bool insert(const value_type &val)
const_iterator find(const key_type &key) const
const_iterator end() const
unsigned int TSeqPos
Type for sequence locations and lengths.
#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.
vector< SConstScopedObject > TConstScopedObjects
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
virtual bool Equals(const CSerialObject &object, ESerialRecursionMode how=eRecursive) const
Check if both objects contain the same values.
TRange GetTotalRange(void) const
CMappedFeat GetBestOverlappingFeat(const CMappedFeat &feat, CSeqFeatData::ESubtype need_subtype, sequence::EOverlapType overlap_type, CFeatTree *feat_tree=0, const SAnnotSelector *base_sel=0)
sequence::ECompare Compare(const CSeq_loc &loc1, const CSeq_loc &loc2, CScope *scope)
Returns the sequence::ECompare containment relationship between CSeq_locs.
@ fCompareOverlapping
Check if seq-locs are overlapping.
@ eOverlap_CheckIntRev
1st is a subset of 2nd with matching boundaries
@ eContains
First CSeq_loc contains second.
@ eSame
CSeq_locs contain each other.
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
CSeq_feat_Handle GetSeq_featHandle(const CSeq_feat &feat, EMissing action=eMissing_Default)
const CFeat_id & GetId(void) const
const CSeq_feat::TXref & GetXref(void) const
const CTSE_Handle & GetTSE_Handle(void) const
Get CTSE_Handle of containing TSE.
TClass GetClass(void) const
CBioseq_set_Handle GetParentBioseq_set(void) const
Return a handle for the parent Bioseq-set, or null handle.
virtual CConstRef< CSeq_feat > GetSeq_feat(void) const
bool IsSetXref(void) const
bool IsSetClass(void) const
CConstRef< CSeq_feat > GetOriginalSeq_feat(void) const
const TId & GetId(void) const
SAnnotSelector & IncludeFeatSubtype(TFeatSubtype subtype)
Include feature subtype in the search.
TObjectType * GetPointer(void) const THROWS_NONE
Get pointer,.
bool IsNull(void) const THROWS_NONE
Check if pointer is null â same effect as Empty().
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
void Reset(void)
Reset reference object.
bool NotEmpty(void) const THROWS_NONE
Check if CRef is not empty â pointing to an object and has a non-null value.
position_type GetLength(void) const
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static bool IsBlank(const CTempString str, SIZE_TYPE pos=0)
Check if a string is blank (has no text).
static bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
static const char label[]
TXref & SetXref(void)
Assign a value to Xref data member.
bool IsSetData(void) const
the specific data Check if a value has been assigned to Data data member.
bool IsCdregion(void) const
Check if variant Cdregion is selected.
const TId & GetId(void) const
Get the Id member data.
const TLocal & GetLocal(void) const
Get the variant data.
bool IsSetXref(void) const
cite other relevant features Check if a value has been assigned to Xref data member.
const TLocation & GetLocation(void) const
Get the Location member data.
bool IsLocal(void) const
Check if variant Local is selected.
const TData & GetData(void) const
Get the Data member data.
void SetId(TId &value)
Assign a value to Id data member.
bool IsSetId(void) const
Check if a value has been assigned to Id data member.
const TXref & GetXref(void) const
Get the Xref member data.
vector< CRef< CSeqFeatXref > > TXref
const TRna & GetRna(void) const
Get the variant data.
bool IsSetProduct(void) const
product of process Check if a value has been assigned to Product data member.
@ eClass_nuc_prot
nuc acid and coded proteins
static string s_GetFeatureLabel(const CSeq_feat_Handle &fh)
static bool s_DoesFeatureHasXRef(const CSeq_feat &feat)
Utility macros and typedefs for exploring NCBI objects from seqfeat.asn.
#define EDIT_EACH_XREF_ON_SEQFEAT(Itr, Var)
#define FOR_EACH_SEQFEATXREF_ON_SEQFEAT(Itr, Var)
FOR_EACH_SEQFEATXREF_ON_SEQFEAT EDIT_EACH_SEQFEATXREF_ON_SEQFEAT.
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
wxString ToWxString(const string &s)
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