48 #include <objtools/readers/source_mod_parser.hpp>
57 : m_SEH(seh), m_Add(seqentry)
66 if (nuc_parent && nuc_parent.
IsSetClass() && nuc_parent.
GetClass() == objects::CBioseq_set::eClass_nuc_prot) {
79 if (
set &&
set->IsSetSeq_set()) {
82 CBioseq_set::TDescr::Tdata::const_iterator it =
nuc->GetDescr().Get().begin();
85 while (it !=
nuc->GetDescr().Get().end()) {
86 if (!(*it)->IsMolinfo()
94 if (
nuc->IsSetDescr()) {
95 it =
nuc->GetDescr().Get().begin();
116 if (entry->
IsSet()) {
118 CBioseq_set::TSeq_set::const_iterator it =
set.GetSeq_set().
begin();
124 if (it !=
set.GetSeq_set().
end()) {
127 if (
set.GetSeq_set().
size() == 1) {
137 return "Add SeqEntry";
142 bool changed =
false;
144 if ( partial5 && partial3 ) {
146 }
else if ( partial5 ) {
148 }
else if ( partial3 ) {
165 if ((*it)->IsMolinfo()) {
171 pdesc =
new objects::CSeqdesc();
172 protein->SetDescr().Set().push_back(pdesc);
174 pdesc->SetMolinfo().SetBiomol(objects::CMolInfo::eBiomol_peptide);
183 NON_CONST_ITERATE(objects::CSeq_entry::TAnnot, annot_it, protein->SetSeq().SetAnnot()) {
184 if ((*annot_it)->IsFtable()) {
190 ftable =
new objects::CSeq_annot();
191 protein->SetSeq().SetAnnot().push_back(
ftable);
196 if ((*feat_it)->IsSetData() && (*feat_it)->GetData().IsProt() && !(*feat_it)->GetData().GetProt().IsSetProcessed()) {
197 prot_feat = *feat_it;
202 prot_feat =
new objects::CSeq_feat();
203 prot_feat->SetData().SetProt();
204 ftable->SetData().SetFtable().push_back(prot_feat);
207 prot_id->Assign(*(protein->GetSeq().GetId().front()));
208 prot_feat->SetLocation().SetInt().SetId(*prot_id);
209 prot_feat->SetLocation().SetInt().SetFrom(0);
210 prot_feat->SetLocation().SetInt().SetTo(protein->GetSeq().GetLength() - 1);
213 if (partial5 || partial3) {
214 prot_feat->SetPartial(
true);
216 prot_feat->ResetPartial();
224 objects::CSourceModParser
smp(
225 objects::CSourceModParser::eHandleBadMod_Ignore );
228 = protein->GetSeq().GetClosestDescriptor(objects::CSeqdesc::e_Title);
230 string& title(
const_cast<string&
>(title_desc->GetTitle()));
232 smp.ApplyAllMods(protein->SetSeq());
242 objects::CSeqTranslator::ChangeDeltaProteinToRawProtein(protein);
244 if (cds->IsSetProduct()) {
245 prot_id->Assign(*(cds->GetProduct().GetId()));
248 int local_offset = 1;
253 cds->SetProduct().SetWhole().Assign(*prot_id);
258 protein->SetId().push_back(prot_id);
260 entry->SetSeq().Assign(*protein);
@ eExtreme_Biological
5' and 3'
CRef< objects::CSeq_id > GetNewProtId(objects::CBioseq_Handle bsh, int &offset, string &id_label, bool general_only)
virtual string GetLabel()
virtual void Unexecute()
Undo (opposite to Execute())
CCmdAddSeqEntry(CSeq_entry *seqentry, CSeq_entry_Handle seh)
virtual void Execute()
Do the editing action.
@ eObjectType_AutodefOptions
const_iterator begin() const
const_iterator end() const
bool SetMolinfoCompleteness(CMolInfo &mi, bool partial5, bool partial3)
void SetMolinfoForProtein(CRef< objects::CSeq_entry > protein, bool partial5, bool partial3)
CRef< objects::CSeq_feat > AddEmptyProteinFeatureToProtein(CRef< objects::CSeq_entry > protein, bool partial5, bool partial3)
CRef< objects::CSeq_entry > CreateTranslatedProteinSequence(CRef< objects::CSeq_feat > cds, objects::CBioseq_Handle nuc_h, bool create_general_only, int *offset)
CRef< objects::CSeq_feat > AddProteinFeatureToProtein(CRef< objects::CSeq_entry > protein, bool partial5, bool partial3)
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
CSeq_entry_EditHandle GetSeq_entryEditHandle(const CSeq_entry &entry)
TSeq ConvertSetToSeq(void) const
Do the same as CollapseSet() when sub-entry is of type bioseq.
TClass GetClass(void) const
CRef< CSeqdesc > RemoveSeqdesc(const CSeqdesc &v) const
CBioseq_set_EditHandle GetParentBioseq_set(void) const
Get parent bioseq-set edit handle.
void Remove(void) const
Remove this Seq-entry from parent, or scope if it's top level Seq-entry.
TSet ConvertSeqToSet(TClass set_class=CBioseq_set::eClass_not_set) const
Convert the entry from Bioseq to Bioseq-set.
CConstRef< CBioseq_set > GetCompleteBioseq_set(void) const
Return the complete bioseq-set object.
CSeq_entry_EditHandle GetEditHandle(void) const
Get 'edit' version of handle.
CSeq_entry_Handle GetParentEntry(void) const
Return a handle for the parent seq-entry of the bioseq.
bool IsSetClass(void) const
CConstRef< CSeq_entry > GetCompleteSeq_entry(void) const
Complete and get const reference to the seq-entry.
CScope & GetScope(void) const
Get scope this handle belongs to.
CSeq_entry_EditHandle AttachEntry(CSeq_entry &entry, int index=-1) const
Attach an existing seq-entry.
bool AddSeqdesc(CSeqdesc &v) const
int GetSeq_entry_Index(const CSeq_entry_Handle &handle) const
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
const TSeq & GetSeq(void) const
Get the variant data.
const TSet & GetSet(void) const
Get the variant data.
bool IsSeq(void) const
Check if variant Seq is selected.
bool IsSet(void) const
Check if variant Set is selected.
@ eClass_nuc_prot
nuc acid and coded proteins
void SetCompleteness(TCompleteness value)
Assign a value to Completeness data member.
bool IsSetCompleteness(void) const
Check if a value has been assigned to Completeness data member.
TCompleteness GetCompleteness(void) const
Get the Completeness member data.
@ eCompleteness_complete
complete biological entity
@ eCompleteness_no_left
missing 5' or NH3 end
@ eCompleteness_no_right
missing 3' or COOH end
@ eCompleteness_no_ends
missing both ends
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)