40 #include <wx/msgdlg.h>
52 error =
"No coding regions found!";
56 bool any_change =
false;
65 if (
f->IsSetExcept_text() &&
NStr::Find(
f->GetExcept_text(),
"RNA editing") != string::npos)
72 bool cds_change =
false;
94 if (orig_frame != new_frame) {
104 bool transl_change =
false;
107 cmd->AddCommand(*subcmd);
108 if (cds_change || transl_change) {
111 cmd->AddCommand(*chgFeat);
127 }
else if (!
error.empty()) {
128 wxMessageBox(wxString(
error),
wxT(
"Error"), wxOK | wxICON_ERROR,
NULL);
130 wxMessageBox(
wxT(
"No effect!"),
wxT(
"Error"), wxOK | wxICON_ERROR,
NULL);
147 cds.
SetProduct().SetWhole().Assign(*new_prot_id);
164 new_inst->Assign(prot_bsh.
GetInst());
168 if (new_inst->IsSetSeq_data())
170 new_inst->ResetSeq_data();
180 new_inst->ResetExt();
181 new_inst->SetRepr(objects::CSeq_inst::eRepr_raw);
182 new_inst->SetSeq_data().SetNcbieaa().Set(
prot);
191 cmd->AddCommand(*chgInst);
197 cmd->AddCommand(*synch_molinfo);
206 new_feat->
Assign(prot_feat_ci->GetOriginalFeature());
212 new_feat->
SetLocation().SetInt().SetTo(new_inst->GetLength() - 1);
217 cmd->AddCommand(*chgFeat);
220 bool any_actions =
false;
bool AdjustProteinFeaturePartialsToMatchCDS(CSeq_feat &new_prot, const CSeq_feat &cds)
AdjustProteinFeaturePartialsToMatchCDS A function to change an existing MolInfo to match a coding reg...
bool TruncateCDSAtStop(CSeq_feat &cds, CScope &scope)
TruncateCDSAtStop A function to truncate a CDS location after the first stop codon in the protein tra...
CRef< objects::CSeq_id > GetNewProtId(objects::CBioseq_Handle bsh, int &offset, string &id_label, bool general_only)
bool IsGeneralIdProtPresent(objects::CSeq_entry_Handle tse)
vector< CConstRef< CObject > > GetObjects(objects::CBioseq_Handle bsh)
@ eRetranslateCDSObeyStop
@ eRetranslateCDSChooseFrame
@ eRetranslateCDSIgnoreStopExceptEnd
static CRef< CCmdComposite > GetCommand(objects::CSeq_entry_Handle seh, string title, ERetranslateMethod method, string &error)
void apply(objects::CSeq_entry_Handle seh, ICommandProccessor *cmdProcessor, string title, ERetranslateMethod method)
static CRef< CCmdComposite > RetranslateCDSCommand(CScope &scope, const CSeq_feat &old_cds, CSeq_feat &cds, bool &cds_change, int &offset, bool create_general_only)
namespace ncbi::objects::
Undo/Redo interface for editing operations.
virtual void Execute(IEditCommand *command, wxWindow *window=0)=0
void RemapOtherProtFeats(const objects::CSeq_feat &old_cds, objects::CSeq_feat &cds, objects::CBioseq_Handle bh, CRef< CCmdComposite > composite, bool &any_actions)
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
bool IsPseudo(const CSeq_feat &feat, CScope &scope)
Determines whether given feature is pseudo, using gene associated with feature if necessary Checks to...
static CCdregion::EFrame FindBestFrame(const CSeq_feat &cds, CScope &scope)
Find "best" frame for a coding region.
static void Translate(const string &seq, string &prot, const CGenetic_code *code, bool include_stop=true, bool remove_trailing_X=false, bool *alt_start=NULL, bool is_5prime_complete=true, bool is_3prime_complete=true)
Translate a string using a specified genetic code.
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)
bool IsProtein(void) const
CScope & GetScope(void) const
Get scope this handle belongs to.
const TInst & GetInst(void) const
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static bool EndsWith(const CTempString str, const CTempString end, ECase use_case=eCase)
Check if a string ends with a specified suffix value.
static SIZE_TYPE Find(const CTempString str, const CTempString pattern, ECase use_case=eCase, EDirection direction=eForwardSearch, SIZE_TYPE occurrence=0)
Find the pattern in the string.
bool IsSetData(void) const
the specific data Check if a value has been assigned to Data data member.
void SetLocation(TLocation &value)
Assign a value to Location data member.
bool IsCdregion(void) const
Check if variant Cdregion is selected.
void SetProduct(TProduct &value)
Assign a value to Product data member.
const TLocation & GetLocation(void) const
Get the Location member data.
TFrame GetFrame(void) const
Get the Frame member data.
const TData & GetData(void) const
Get the Data member data.
void SetData(TData &value)
Assign a value to Data data member.
bool CanGetLocation(void) const
Check if it is safe to call GetLocation method.
const TCdregion & GetCdregion(void) const
Get the variant data.
const TProduct & GetProduct(void) const
Get the Product member data.
bool IsSetProduct(void) const
product of process Check if a value has been assigned to Product data member.
bool IsSetFrame(void) const
Check if a value has been assigned to Frame data member.
@ eFrame_not_set
not set, code uses one
bool CanGetTo(void) const
Check if it is safe to call GetTo method.
bool IsInt(void) const
Check if variant Int is selected.
const TInt & GetInt(void) const
Get the variant data.
constexpr bool empty(list< Ts... >) noexcept
double f(double x_, const double &y_)
USING_SCOPE(ncbi::objects)
CRef< CCmdComposite > GetRetranslateCDSCommand(objects::CScope &scope, const objects::CSeq_feat &cds, bool create_general_only)
CRef< CCmdComposite > GetSynchronizeProductMolInfoCommand(objects::CScope &scope, const objects::CSeq_feat &cds)