vector<vector<char> >* component_types)
57vector<CRef<CSeq_entry> >
entries;
58 AgpRead(is,
entries, component_id_rule, set_gap_data, component_types);
71vector<vector<char> >* component_types)
73vector<CRef<CBioseq> > bioseqs;
74 AgpRead(is, bioseqs, component_id_rule, set_gap_data, component_types);
87vector<vector<char> >* component_types)
89 if(component_types) {
90component_types->clear();
93vector<string> fields;
94 stringcurrent_object;
98 intpart_num, last_part_num = 0;
106 SIZE_TYPEfirst_hash_pos = line.find_first_of(
'#');
107 if(first_hash_pos !=
NPOS) {
108line.resize(first_hash_pos);
112 if(line.find_first_not_of(
" \t\n\r") ==
NPOS) {
117 if( ! line.empty() && *line.rbegin() ==
'\r') {
118line.resize( line.size() - 1 );
127 for(index = (
int) fields.size() - 1; index > 0; --index) {
128 if(!fields[index].
empty()) {
132fields.resize(index + 1);
137 if(fields.size() != 9) {
138 if(fields.size() >= 5 && fields[4] !=
"N"&& fields[4] !=
"U") {
140 string(
"error at line ") +
143 " columns; there should be 9",
145}
else if(fields.size() != 8) {
147 string(
"error at line ") +
150 " columns; there should be 8 or 9",
155 if(fields[0] != current_object || !bioseq) {
160bioseqs.push_back(bioseq);
163current_object = fields[0];
171current_object, current_object));
172bioseq->
SetId().push_back(
id);
178 if(component_types) {
179component_types->push_back(vector<char>());
185 if(part_num != last_part_num + 1) {
187 string(
"error at line ") +
189 ": part number out of order",
192last_part_num = part_num;
195 string(
"error at line ") +
197 ": begining not equal to previous end + 1",
207 if(fields[4] ==
"N"|| fields[4] ==
"U") {
210delta_seq->SetLiteral().SetLength(gap_len);
211 if(fields[4] ==
"U") {
212delta_seq->SetLiteral().SetFuzz().SetLim();
238 throwruntime_error(
"invalid gap type in column 7: " 242 const string& linkage_string = fields[7];
243 if(linkage_string ==
"yes") {
245}
else if(linkage_string ==
"no") {
248 throwruntime_error(
"invalid linkage in column 8: " 252delta_seq->SetLiteral().SetSeq_data()
253.SetGap().SetType(
type);
254delta_seq->SetLiteral().SetSeq_data()
255.SetGap().SetLinkage(linkage);
258}
else if(fields[4].
size() == 1 &&
259fields[4].find_first_of(
"ADFGPOW") == 0) {
260 CSeq_loc& loc = delta_seq->SetLoc();
277loc.
SetInt().SetId(*comp_id);
282 if(fields[8] ==
"+") {
284}
else if(fields[8] ==
"-") {
286}
else if(fields[8] ==
"0") {
288}
else if(fields[8] ==
"na") {
292 string(
"error at line ") +
294 "orientation "+ fields[8],
299 string(
"error at line ") +
301 "component type "+ fields[4],
304seq_inst->
SetExt().SetDelta().Set().push_back(delta_seq);
305 if(component_types) {
306component_types->back().push_back(fields[4][0]);
314bioseqs.push_back(bioseq);
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
CRef< CBioseq_set > AgpRead(CNcbiIstream &is, EAgpRead_IdRule component_id_rule, bool set_gap_data, vector< vector< char > > *component_types)
static unsigned int line_num
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.
#define NCBI_THROW2(exception_class, err_code, message, extra)
Throw exception with extra parameter.
void Reset(void)
Reset reference object.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
CNcbiIstream & NcbiGetlineEOL(CNcbiIstream &is, string &str, string::size_type *count=NULL)
Read from "is" to "str" the next line (taking into account platform specifics of End-of-Line)
IO_PREFIX::istream CNcbiIstream
Portable alias for istream.
NCBI_NS_STD::string::size_type SIZE_TYPE
static int StringToInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to int.
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
TStr & SetStr(void)
Select the variant.
TFrom GetFrom(void) const
Get the From member data.
E_Choice Which(void) const
Which variant is currently selected.
TLocal & SetLocal(void)
Select the variant.
TTo GetTo(void) const
Get the To member data.
const TInt & GetInt(void) const
Get the variant data.
@ e_not_set
No variant selected.
TSeq & SetSeq(void)
Select the variant.
TSeq_set & SetSeq_set(void)
Assign a value to Seq_set data member.
TId & SetId(void)
Assign a value to Id data member.
void SetExt(TExt &value)
Assign a value to Ext data member.
void SetInst(TInst &value)
Assign a value to Inst data member.
void SetRepr(TRepr value)
Assign a value to Repr data member.
void SetLength(TLength value)
Assign a value to Length data member.
void SetMol(TMol value)
Assign a value to Mol data member.
@ eRepr_delta
sequence made by changes (delta) to others
@ eType_clone
Deprecated. Used only for AGP 1.1.
@ eType_fragment
Deprecated. Used only for AGP 1.1.
constexpr bool empty(list< Ts... >) noexcept
const struct ncbi::grid::netcache::search::fields::SIZE size
static wxAcceleratorEntry entries[3]
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