= cit->m_Chrom;
61 for(cit++; cit !=
m_Values.end(); ++cit) {
62 if(cit->m_Chrom !=
first) {
78m_TrackType(eTrackType_invalid)
112 if(readerData.empty()) {
130 boolhaveData =
false;
159 for(
autocurData = readerData.begin(); curData != readerData.end(); curData++) {
160 autoline = curData->mData;
190 autocurIt = readerData.cbegin();
191 while(curIt != readerData.end()) {
192 autofirstLine(curIt->mData);
197fixedStepInfo, ++curIt, readerData, rawdata);
203varStepInfo, ++curIt, readerData, rawdata);
214TReaderData::const_iterator& curIt,
224 unsigned intpos(fixedStepInfo.
mStart);
225 while(curIt != readerData.end()) {
226 autoline(curIt->mData);
231pos += fixedStepInfo.
mStep;
241TReaderData::const_iterator& curIt,
251 while(curIt != readerData.end()) {
252 autoline(curIt->mData);
274(m_iFlags & fAsByte) ? (ret += rows) : (ret += 8*rows);
288 for(
size_t i= 1;
i<
size; ++
i) {
304 for(
size_t i= 1;
i<
size; ++
i) {
315 const intrange = 255;
326 for(
size_t i= 1;
i<
size; ++
i) {
327 if(
m_Values[
i].m_Pos == nv.back().GetEnd() &&
328 m_Values[
i].m_Value == nv.back().m_Value ) {
329nv.back().m_Span +=
m_Values[
i].m_Span;
335 if( nv.size() !=
size) {
371interval.
SetId(chrom_id);
384 table->SetFeat_type(0);
391 table->SetColumns().push_back(col_id);
392col_id->
SetHeader().SetField_name(
"Seq-table location");
398 table->SetColumns().push_back(col_id);
407seq_id.reserve(
size);
410seq_id.push_back(pId);
417 table->SetColumns().push_back(col_pos);
432 table->SetColumns().push_back(col_span);
433col_span->
SetHeader().SetField_name(
"span");
438span_ptr = &col_span->
SetData().SetInt();
439span_ptr->reserve(
size);
445 table->SetColumns().push_back(col_step);
446col_step->
SetHeader().SetField_name(
"value_gap");
452 table->SetColumns().push_back(col_min);
453col_min->
SetHeader().SetField_name(
"value_min");
457 table->SetColumns().push_back(col_step);
458col_step->
SetHeader().SetField_name(
"value_step");
462 table->SetColumns().push_back(col_val);
463col_val->
SetHeader().SetField_name(
"values");
466values.reserve(
size);
468pos.push_back(it->m_Pos);
470span_ptr->push_back(it->m_Span);
472values.push_back(stat.
AsByte(it->m_Value));
477 table->SetColumns().push_back(col_val);
478col_val->
SetHeader().SetField_name(
"values");
480values.reserve(
size);
483pos.push_back(it->m_Pos);
485span_ptr->push_back(it->m_Span);
487values.push_back(it->m_Value);
502graph->
SetLoc(*graph_loc);
510 if(!trackName.empty()) {
535 TSeqPospos = it->m_Pos - start;
539 size_t i= pos / stat.
m_Span;
540 intv = stat.
AsByte(it->m_Value);
541 for( ; span > 0; span -= stat.
m_Span, ++
i) {
554 const char* ptr = line.c_str();
556 for(
size_t len= line.size(); skip <
len; ++skip ) {
558 if( c !=
' '&& c !=
'\t') {
562line = line.substr(skip);
563 return!line.empty();
571 const char* ptr = line.c_str();
573 for(
size_t len= line.size(); skip <
len; ++skip ) {
575 if( c ==
' '|| c ==
'\t') {
582 "Identifier expected");
585 stringword(ptr, skip);
586line = line.substr(skip);
595 const char* ptr = line.c_str();
597 for(
size_t len= line.size(); skip <
len; ++skip ) {
600 stringname(ptr, skip);
601line = line.substr(skip+1);
604 if( c ==
' '|| c ==
'\t') {
619 const char* ptr = line.c_str();
620 size_t len= line.size();
621 if(
len&& *ptr ==
'"') {
623 for( ; pos <
len; ++pos ) {
626 string value(ptr, pos);
627line = line.substr(pos+1);
647 "Integer value expected");
649 charc = line.c_str()[0];
650 if( c < '0' || c >
'9') {
655 const char* ptr = line.c_str();
656 for(
size_tskip = 0; ; ++skip ) {
658 if( c >=
'0'&& c <=
'9') {
659ret = ret*10 + (c-
'0');
661 else if( (c ==
' '|| c ==
'\t'|| c ==
'\0') && skip ) {
662line = line.substr(skip);
679 const char* ptr = line.c_str();
681 boolnegate =
false, digits =
false;
693 if( c >=
'0'&& c <=
'9') {
695ret = ret*10 + (c-
'0');
697 else if( c ==
'.') {
701 else if( c ==
'\0') {
716 doubledigit_mul = 1;
719 if( c >=
'0'&& c <=
'9') {
722ret += (c-
'0')*digit_mul;
724 else if( (c ==
' '|| c ==
'\t'|| c ==
'\0') && digits ) {
726v = (negate ? -ret : ret);
744 const char* ptr = line.c_str();
746v = strtod(ptr, &endptr);
747 if( endptr == ptr ) {
750 "Floating point value expected");
756 "Extra text on line");
802 const string& chrom)
847 "Invalid track type");
854TReaderData::const_iterator& curIt,
858 autofirstLine(curIt->mData);
874TReaderData::const_iterator& curIt,
878 autofirstLine(curIt->mData);
893 const string& directive,
901 "Track \"type=wiggle_0\" is required");
909 autoline(directive.substr(
string(
"fixedStep").size() + 1));
911fixedStepInfo.
Reset();
915 if(name ==
"chrom") {
919 if(name ==
"start") {
921 if(0 == fixedStepInfo.
mStart) {
924 "Bad start value: must be positive. Assuming \"start=1\"");
926fixedStepInfo.
mStart= 1;
930 if(name ==
"step") {
934 if(name ==
"span") {
940 "Bad parameter name. Ignored");
943 if(fixedStepInfo.
mChrom.empty()) {
946 "Missing chrom parameter");
949 if(fixedStepInfo.
mStart== 0) {
952 "Missing start parameter");
955 if(fixedStepInfo.
mStep== 0) {
958 "Missing step parameter");
966TReaderData::const_iterator& curIt,
975 while(curIt != readerData.end()) {
976 autoline(curIt->mData);
986 const string& directive,
994 "Track \"type=wiggle_0\" is required");
1002varStepInfo.
Reset();
1003 autoline(directive.substr(
string(
"variableStep").size() + 1));
1007 if( name ==
"chrom") {
1010 else if( name ==
"span") {
1016 "Bad parameter name. Ignored");
1020 if( varStepInfo.
mChrom.empty() ) {
1023 "Missing chrom parameter");
1031TReaderData::const_iterator& curIt,
1039 while(curIt != readerData.end()) {
1040 stringline(curIt->mData);
1052TReaderData::const_iterator& curIt,
1056 while(curIt != readerData.end()) {
1057 autoline(curIt->mData);
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.
void AddRecord(CRawWiggleRecord record)
Common file reader utility functions.
static CRef< CSeq_id > AsSeqId(const string &rawId, long flags=0, bool localInts=true)
Convert a raw ID string to a Seq-id, based in given customization flags.
Defines and provides stubs for a general interface to a variety of file readers.
unique_ptr< CReaderMessageHandler > m_pMessageHandler
void xGuardedGetData(ILineReader &, TReaderData &, ILineErrorListener *)
virtual bool xUngetLine(ILineReader &)
virtual CRef< CSeq_annot > xCreateSeqAnnot()
unsigned int m_uLineNumber
unique_ptr< CTrackData > m_pTrackDefaults
virtual bool xProgressInit(ILineReader &istr)
vector< TReaderLine > TReaderData
virtual bool xGetLine(ILineReader &, string &)
virtual void xGuardedProcessData(const TReaderData &, CSeq_annot &, ILineErrorListener *)
virtual bool xParseTrackLine(const CTempString &)
virtual bool xIsBrowserLine(const CTempString &)
virtual void xAssignTrackData(CSeq_annot &)
std::atomic< unsigned int > m_uDataCount
virtual bool xIsTrackLine(const CTempString &)
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
void xGetData(ILineReader &, TReaderData &) override
bool xProcessVariableStepData(TReaderData::const_iterator &, const TReaderData &)
bool xProcessFixedStepData(TReaderData::const_iterator &, const TReaderData &)
virtual bool ReadTrackData(ILineReader &, CRawWiggleTrack &, ILineErrorListener *=nullptr)
string xGetParamValue(string &)
bool xReadVariableStepDataRaw(const SVarStepInfo &, TReaderData::const_iterator &, const TReaderData &, CRawWiggleTrack &)
CRef< CSeq_table > xMakeTable()
bool xParseTrackLine(const CTempString &) override
string xGetParamName(string &)
string xGetWord(string &)
vector< SValueInfo > TValues
bool xTryGetDoubleSimple(string &, double &v)
void xProcessData(const TReaderData &, CSeq_annot &) override
void xSetChrom(const string &chrom)
void xSetTotalLoc(CSeq_loc &loc, CSeq_id &chrom_id)
double xEstimateSize(size_t rows, bool fixed_span) const
void xGetPos(string &, TSeqPos &v)
void xGetVariableStepInfo(const string &, SVarStepInfo &)
void xPostProcessAnnot(CSeq_annot &) override
void xPreprocessValues(SWiggleStat &)
void xReadVariableStepData(const SVarStepInfo &, TReaderData::const_iterator &, const TReaderData &)
CRef< CSeq_annot > m_Annot
CRef< CSeq_annot > ReadSeqAnnot(ILineReader &, ILineErrorListener *=nullptr) override
Read an object from a given line reader, render it as a single Seq-annot, if possible.
void xGetFixedStepInfo(const string &, SFixedStepInfo &)
bool xReadFixedStepDataRaw(const SFixedStepInfo &, TReaderData::const_iterator &, const TReaderData &, CRawWiggleTrack &)
void xReadFixedStepData(const SFixedStepInfo &, TReaderData::const_iterator &, const TReaderData &)
void xAddValue(const SValueInfo &value)
bool xValuesAreFromSingleSequence() const
bool xProcessBedData(TReaderData::const_iterator &, const TReaderData &)
bool xParseBrowserLine(const CTempString &, CSeq_annot &) override
void xGetDouble(string &line, double &v)
CRef< CSeq_id > xMakeChromId()
CRef< CSeq_graph > xMakeGraph()
CWiggleReader(int=fDefaults, const string &="", const string &="", CReaderListener *=nullptr)
Abstract base class for lightweight line-by-line reading.
container_type::const_iterator const_iterator
Include a standard set of the NCBI C++ Toolkit most basic headers.
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
@ eDiag_Error
Error message.
@ eDiag_Warning
Warning message.
void Reset(void)
Reset reference object.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static void TruncateSpacesInPlace(string &str, ETrunc where=eTrunc_Both)
Truncate whitespace in a string (in-place)
static bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
static unsigned int StringToUInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to unsigned int.
void SetHeader(THeader &value)
Assign a value to Header data member.
void SetData(TData &value)
Assign a value to Data data member.
vector< CRef< CSeq_id > > TId
void SetDefault(TDefault &value)
Assign a value to Default data member.
@ eField_id_location_id
location Seq-id
@ eField_id_location_from
interval from
void SetTo(TTo value)
Assign a value to To data member.
void SetId(TId &value)
Assign a value to Id data member.
void SetFrom(TFrom value)
Assign a value to From data member.
void SetA(TA value)
Assign a value to A data member.
void SetMin(TMin value)
Assign a value to Min data member.
void SetTitle(const TTitle &value)
Assign a value to Title data member.
void SetNumval(TNumval value)
Assign a value to Numval data member.
void SetComp(TComp value)
Assign a value to Comp data member.
TValues & SetValues(void)
Assign a value to Values data member.
void SetGraph(TGraph &value)
Assign a value to Graph data member.
void SetB(TB value)
Assign a value to B data member.
void SetMax(TMax value)
Assign a value to Max data member.
void SetLoc(TLoc &value)
Assign a value to Loc data member.
void SetAxis(TAxis value)
Assign a value to Axis data member.
void SetData(TData &value)
Assign a value to Data data member.
const TData & GetData(void) const
Get the Data member data.
E_Choice Which(void) const
Which variant is currently selected.
@ e_not_set
No variant selected.
<!DOCTYPE HTML >< html > n< header > n< title > PubSeq Gateway Help Page</title > n< style > n table
Lightweight interface for getting lines of data with minimal memory copying.
constexpr auto sort(_Init &&init)
const struct ncbi::grid::netcache::search::fields::SIZE size
const GenericPointer< typename T::ValueType > T2 value
static SLJIT_INLINE sljit_ins lr(sljit_gpr dst, sljit_gpr src)
int AsByte(double v) const
void SetFirstSpan(TSeqPos span)
void SetFirstValue(double v)
void AddSpan(TSeqPos span)
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