=
false;
119vector<Uint4>* blast_ambig = 0)
135vector<TSeqPos>* badIdx,
143vector<TSeqPos>* out_indices,
230 const string&
code);
233 const string&
code);
286 for(
size_t i=0;
i<size1;
i++)
386vector<Uint4>* blast_ambig = 0)
504vector<Uint4>* blast_ambig)
524vector<Uint4>* blast_ambig)
595vector<TSeqPos>* badIdx,
601vector<TSeqPos>* badIdx,
607vector<TSeqPos>* badIdx,
613vector<TSeqPos>* badIdx,
674vector<TSeqPos>* out_indices,
686vector<TSeqPos>* out_indices,
892 const string**
str,
893 constvector<char>** vec)
927(in_seq, out_seq, to_code, uBeginIdx, uLength, bAmbig,
seed,
938vector<Uint4>* blast_ambig)
94217734276, total_length, out_seq_length, blast_ambig);
960(in_seq, uBeginIdx, uLength);
966vector<TSeqPos>* badIdx,
971(in_seq, badIdx, uBeginIdx, uLength);
978vector<TSeqPos>* out_indices,
984(in_seq, out_seq, out_indices, to_code, uBeginIdx, uLength);
995(in_seq, out_seq, uBeginIdx, uLength);
1006(in_seq, uBeginIdx, uLength);
1021in_seq1, uBeginIdx1, uLength1, in_seq2, uBeginIdx2, uLength2);
1031(in_seq, uBeginIdx, uLength);
1042(in_seq, out_seq, uBeginIdx, uLength);
1052(in_seq, uBeginIdx, uLength);
1063(in_seq, out_seq, uBeginIdx, uLength);
1073(in_seq, uBeginIdx, uLength);
1084(in_seq, out_seq, uBeginIdx, uLength);
1145 const string&
code)
1152 const string&
code)
1307unique_ptr<CObjectIStream>
1314*asn_codes_in >> *ptr_seq_code_set;
1317 returnptr_seq_code_set;
1329list<CRef<CSeq_code_table> >::const_iterator i_ct;
1330 for(i_ct = code_list.begin(); i_ct != code_list.end(); ++i_ct)
1331 if((*i_ct)->GetCode() == code_type)
1335 if(i_ct == code_list.end())
1336 throwruntime_error(
"Requested code table not found");
1339 constlist<CRef<CSeq_code_table::C_E> >& table_data = (*i_ct)->GetTable();
1341 intstart_at = (*i_ct)->GetStart_at();
1345 for(
int i=0;
i<256;
i++)
1346codeTable->m_Table[
i] =
'\xff';
1349 intnIdx = start_at;
1351 for(i_td = table_data.begin(); i_td != table_data.end(); ++i_td) {
1352codeTable->m_Table[nIdx] = *((*i_td)->GetSymbol().c_str());
1353 if(codeTable->m_Table[nIdx] ==
'\x00')
1354codeTable->m_Table[nIdx++] =
'\xff';
1373list<CRef<CSeq_code_table> >::const_iterator i_ct;
1374 for(i_ct = code_list.begin(); i_ct != code_list.end(); ++i_ct)
1379 if(i_ct == code_list.end())
1380 throwruntime_error(
"Code table for Iupacna not found");
1383 if(!(*i_ct)->IsSetComps())
1384 throwruntime_error(
"Complement data is not set for iupacna table");
1387 constlist<int>& comp_data = (*i_ct)->GetComps();
1388 intstart_at = (*i_ct)->GetStart_at();
1394 for(
unsigned int i= 0;
i<256;
i++)
1395compTable->m_Table[
i] = (
char) 255;
1398list<int>::const_iterator i_comp;
1399 unsigned intnIdx = start_at;
1400 for(i_comp = comp_data.begin(); i_comp != comp_data.end(); ++i_comp)
1401compTable->m_Table[nIdx++] = (*i_comp);
1418list<CRef<CSeq_code_table> >::const_iterator i_ct;
1419 for(i_ct = code_list.begin(); i_ct != code_list.end(); ++i_ct)
1423 if(i_ct == code_list.end())
1424 throwruntime_error(
"Code table for Iupacna not found");
1427 if(!(*i_ct)->IsSetComps())
1428 throwruntime_error(
"Complement data is not set for ncbi2na table");
1431 constlist<int>& comp_data = (*i_ct)->GetComps();
1432 intstart_at = (*i_ct)->GetStart_at();
1439 intnIdx = start_at;
1440list<int>::const_iterator i_comp;
1441 for(i_comp = comp_data.begin(); i_comp != comp_data.end(); ++i_comp)
1442compArray[nIdx++] = (*i_comp);
1445 for(
unsigned int i= 0;
i< 4;
i++)
1446 for(
unsigned intj = 0; j < 4; j++)
1447 for(
unsigned intk = 0; k < 4; k++)
1448 for(
unsigned int l= 0;
l< 4;
l++)
1450nIdx =
i<<6 | j<<4 | k<<2 |
l;
1451 charc1 = compArray[
i] << 6;
1452 charc2 = compArray[j] << 4;
1453 charc3 = compArray[k] << 2;
1454 charc4 = compArray[
l];
1455compTable->m_Table[nIdx] = c1 | c2 | c3 | c4;
1473list<CRef<CSeq_code_table> >::const_iterator i_ct;
1474 for(i_ct = code_list.begin(); i_ct != code_list.end(); ++i_ct)
1478 if(i_ct == code_list.end())
1479 throwruntime_error(
"Code table for Iupacna not found");
1482 if(!(*i_ct)->IsSetComps())
1483 throwruntime_error(
"Complement data is not set for iupacna table");
1486 constlist<int>& comp_data = (*i_ct)->GetComps();
1487 intstart_at = (*i_ct)->GetStart_at();
1495 intnIdx = start_at;
1496list<int>::const_iterator i_comp;
1497 for(i_comp = comp_data.begin(); i_comp != comp_data.end(); ++i_comp)
1498compArray[nIdx++] = (*i_comp);
1501 for(
unsigned int i= 0;
i<16;
i++)
1502 for(
unsigned intj = 0; j < 16; j++)
1505 charc1 = compArray[
i] << 4;
1506 charc2 = compArray[j];
1507compTable->m_Table[nIdx] = c1 | c2;
1524 for(
unsigned int i= 0;
i< 4;
i++)
1525 for(
unsigned intj = 0; j < 4; j++)
1526 for(
unsigned intk = 0; k < 4; k++)
1527 for(
unsigned int l= 0;
l< 4;
l++)
1528revTable->m_Table[64*
i+ 16*j + 4*k +
l] =
152964*
l+ 16*k + 4*j +
i;
1544 for(
unsigned int i= 0;
i< 16;
i++)
1545 for(
unsigned intj = 0; j < 16; j++)
1546revTable->m_Table[16*
i+ j] = 16*j +
i;
1565list<CRef<CSeq_map_table> >::const_iterator i_mt;
1566 for(i_mt = map_list.begin(); i_mt != map_list.end(); ++i_mt)
1567 if((*i_mt)->GetFrom() == from_type && (*i_mt)->GetTo() == to_type)
1570 if(i_mt == map_list.end())
1571 throwruntime_error(
"Requested map table not found");
1574 constlist<int>& table_data = (*i_mt)->GetTable();
1578 intstart_at = (*i_mt)->GetStart_at();
1582 intnIdx = start_at;
1583list<int>::const_iterator i_td;
1584 for(i_td = table_data.begin(); i_td != table_data.end(); ++i_td)
1586mapTable->m_Table[nIdx++] = *i_td;
1630 unsigned char i, j, k,
l;
1632 for(
i= 0;
i< 4;
i++)
1633 for(j = 0; j < 4; j++)
1634 for(k = 0; k < 4; k++)
1635 for(
l= 0;
l< 4;
l++) {
1636 unsigned charaByte = (
i<<6) | (j<<4) | (k<<2) |
l;
1643 reinterpret_cast<char*
>(&fastTable->m_Table[aByte]);
1644*(pt++) = (chi << 4) | chj;
1645*pt = (
chk<< 4) | chl;
1657 for(
i= 0;
i< 16;
i++)
1658 for(j = 0; j < 16; j++) {
1659 unsigned charaByte = (
i<<4) | j;
1665 char*pt =
reinterpret_cast<char*
>(&fastTable->m_Table[aByte]);
1680 for(
intch = 0; ch < 256; ch++) {
1681 if((ch >= start_at) && (ch < (start_at +
size)))
1685 for(
unsigned intpos = 0; pos < 4; pos++)
1686fastTable->m_Table[pos][ch] =
uch<< (6-2*pos);
1689 for(
unsigned intpos = 0; pos < 4; pos++)
1690fastTable->m_Table[pos][ch] =
'\x00';
1703 for(
intch = 0; ch < 256; ch++) {
1704 if((ch >= start_at) && (ch < (start_at +
size)))
1707 for(
unsigned intpos = 0; pos < 2; pos++)
1708fastTable->m_Table[pos][ch] =
uch<< (4-4*pos);
1712fastTable->m_Table[0][ch] = 0xF0;
1713fastTable->m_Table[1][ch] = 0x0F;
1727 for(
intn1 = 0; n1 < 16; n1++)
1728 for(
intn2 = 0; n2 < 16; n2++) {
1729 intnIdx = 16*n1 + n2;
1730 unsigned charu1, u2;
1731 if((n1 >= start_at) && (n1 < start_at +
size))
1735 if((n2 >= start_at) && (n2 < start_at +
size))
1739fastTable->m_Table[0][nIdx] = (u1<<6) | (u2<<4);
1740fastTable->m_Table[1][nIdx] = (u1<<2) | u2;
1757 for(
unsigned intii = 0; ii <
kNumCodes; ii++) {
1762 if(!found[
code-1]) {
1763found[
code-1] =
true;
1765(*it)->GetStart_at() : 0;
1771(make_pair((*is)->GetSymbol(),
i++));
1773 if( (*it)->IsSetComps() ) {
1774 ITERATE(list<int>, ic, (*it)->GetComps()) {
1789 unsigned int i, j, uCnt;
1790 unsigned charcVal, cRslt;
1795 static const unsigned char mask[16] = {
17960x11, 0x12, 0x14, 0x18,
17970x21, 0x22, 0x24, 0x28,
17980x41, 0x42, 0x44, 0x48,
17990x81, 0x82, 0x84, 0x88
1802 static const unsigned charmaskUpper[4] = { 0x10, 0x20, 0x40, 0x80 };
1803 static const unsigned charmaskLower[4] = { 0x01, 0x02, 0x04, 0x08 };
1807 for(
i= 0;
i< 256;
i++) {
1812 if(((cVal &
'\x0f') != 0) && ((cVal &
'\xf0') != 0))
1813 for(j = 0; j < 16; j++) {
1814cRslt = cVal &
mask[j];
1815 if(cRslt ==
mask[j])
1816aMask->m_Table[
i].cMask[uCnt++] =
mask[j];
1820 else if((cVal &
'\x0f') != 0)
1821 for(j = 0; j < 4; j++)
1823cRslt = cVal & maskLower[j];
1824 if(cRslt == maskLower[j])
1825aMask->m_Table[
i].cMask[uCnt++] = maskLower[j];
1830 else if((cVal &
'\xf0') != 0)
1831 for(j = 0; j < 4; j++)
1833cRslt = cVal & maskUpper[j];
1834 if(cRslt == maskUpper[j])
1835aMask->m_Table[
i].cMask[uCnt++] = maskUpper[j];
1840aMask->m_Table[
i].cMask[uCnt++] =
'\x00';
1843aMask->m_Table[
i].nMasks = uCnt;
1847 for(j = uCnt; j < 16 && uCnt > 0; j++)
1848aMask->m_Table[
i].cMask[j] = aMask->m_Table[
i].cMask[j % uCnt];
1861 unsigned charlow, high,
ambig;
1871 for(low = 0; low < 16; low++) {
1873 if((low == 1) || (low ==2) || (low == 4) || (low == 8))
1879 for(high = 0; high < 16; high++) {
1882 if((high != 1) && (high != 2) && (high != 4) && (high != 8))
1886ambig_detect->m_Table[16*high + low] =
ambig;
1893 returnambig_detect;
1907 for(
unsigned int i= 0;
i<256;
i++)
1908ambig_detect->m_Table[
i] = 0;
1912ambig_detect->m_Table[66] = 1;
1913ambig_detect->m_Table[68] = 1;
1914ambig_detect->m_Table[72] = 1;
1915ambig_detect->m_Table[75] = 1;
1916ambig_detect->m_Table[77] = 1;
1917ambig_detect->m_Table[78] = 1;
1918ambig_detect->m_Table[82] = 1;
1919ambig_detect->m_Table[83] = 1;
1920ambig_detect->m_Table[86] = 1;
1921ambig_detect->m_Table[87] = 1;
1922ambig_detect->m_Table[89] = 1;
1924 returnambig_detect;
1977vector<Uint4>* blast_ambig)
1983 throwstd::runtime_error(
"to_code or from_code not set");
1986 throwstd::runtime_error(
"to_code is not Ncbi2na");
1989 switch(from_code) {
1992 seed, total_length, out_seq_length,
1996 seed, total_length, out_seq_length,
1999 throwruntime_error(
"Requested conversion not implemented");
2019vector<Uint4>* blast_ambig)
2025 if( uLength == 0 ) {
2030 throwstd::runtime_error(
"to_code or from_code not set");
2034 throwruntime_error(
"Requested conversion not implemented");
2040 return x_ConvertAmbig(in_seq, out_seq, to_code, uBeginIdx, uLength,
2041 seed, total_length, out_seq_length, blast_ambig);
2044 const string* in_str = 0;
2045 constvector<char>* in_vec = 0;
2050 if( in_str != 0 ) {
2057}
else if( in_vec != 0 ) {
2065 return static_cast<TSeqPos>(retval);
2081 throwruntime_error(
"Unable tp pack requested coding");
2086 switch( from_code ) {
2106 const string* in_str = 0;
2107 constvector<char>* in_vec = 0;
2111vector<char> out_vec;
2115 if( in_str != 0 ) {
2118out_vec, coding, uLength);
2119}
else if( in_vec != 0 ) {
2122out_vec, coding, uLength);
2149 switch(in_seq.
Which()) {
2163 throwruntime_error(
"Sequence could not be validated");
2173vector<TSeqPos>* badIdx,
2178 switch(in_seq.
Which()) {
2196 throwruntime_error(
"Sequence could not be validated");
2208vector<TSeqPos>* out_indices,
2216 switch(in_seq.
Which()) {
2221uBeginIdx, uLength);
2229uBeginIdx, uLength);
2250 switch(in_seq.
Which()) {
2265(
"GetCopy() is not implemented for the requested sequence type");
2282 switch(in_seq->
Which()) {
2296 throwruntime_error(
"Cannot perform Keep on in_seq type.");
2315 throwruntime_error(
"Append in_seq types do not match.");
2323 switch(in_seq1.
Which()) {
2325 return AppendIupacna(out_seq, in_seq1, uBeginIdx1, uLength1,
2326in_seq2, uBeginIdx2, uLength2);
2328 return AppendNcbi2na(out_seq, in_seq1, uBeginIdx1, uLength1,
2329in_seq2, uBeginIdx2, uLength2);
2331 return AppendNcbi4na(out_seq, in_seq1, uBeginIdx1, uLength1,
2332in_seq2, uBeginIdx2, uLength2);
2334 return AppendNcbieaa(out_seq, in_seq1, uBeginIdx1, uLength1,
2335in_seq2, uBeginIdx2, uLength2);
2338in_seq2, uBeginIdx2, uLength2);
2340 return AppendIupacaa(out_seq, in_seq1, uBeginIdx1, uLength1,
2341in_seq2, uBeginIdx2, uLength2);
2343 throwruntime_error(
"Append for in_seq type not supported.");
2362in_seq->
Assign(complement);
2378 if( uLength == 0 ) {
2384 const string* in_str = 0;
2385 constvector<char>* in_vec = 0;
2394}
else if(in_vec != 0) {
2395vector<char> out_vec;
2400 return static_cast<TSeqPos>(retval);
2432 if( uLength == 0 ) {
2439 const string* in_str = 0;
2440 constvector<char>* in_vec = 0;
2449}
else if(in_vec !=
NULL) {
2450vector<char> out_vec;
2455 return static_cast<TSeqPos>(retval);
2475 string* in_str = 0;
2476vector<char>* in_vec = 0;
2482}
else if(in_vec !=
NULL) {
2485 return static_cast<TSeqPos>(retval);
2499 if( uLength == 0 ) {
2506 const string* in_str = 0;
2507 constvector<char>* in_vec = 0;
2516}
else if(in_vec !=
NULL) {
2517vector<char> out_vec;
2523 return static_cast<TSeqPos>(retval);
2770{ 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1 };
2791: m_vAmbBuf(amb_buff)
2835res[0] = (in_byte >> 4) & 0x0f;
2836res[1] = in_byte & 0x0f;
2838 for(
int i= 0;
i< 2; ++
i, ++seq_pos) {
2879vector<Uint4>* blast_ambig)
2884 TSeqPosin_seq_length =
static_cast<TSeqPos>(in_seq_data.size());
2887 if(out_seq_length !=
nullptr&& *out_seq_length == 0)
2890vector<char>& out_seq_data = out_seq->
SetNcbi2na().
Set();
2893 if(uBeginIdx >= in_seq_data.size())
2898 if((uLenSav == 0) || ((uLenSav + uBeginIdx)) > in_seq_data.size())
2899uLenSav = in_seq_length - uBeginIdx;
2904 Adjust(&uBeginIdx, &uLength, in_seq_length, 1, 4);
2910 if(out_seq_length) {
2911out_seq_pos = *out_seq_length;
2912*out_seq_length += uLenSav;
2914 TSeqPosrbit = 2*(out_seq_pos % 4);
2919vector<char>::size_type nBytes = (out_seq_pos + uLenSav + 3) / 4;
2920out_seq_data.resize(nBytes);
2924unique_ptr<CAmbiguityContext> amb_context;
2930vector<char>::iterator i_out;
2931vector<char>::iterator i_out_begin = out_seq_data.begin() + out_seq_pos/4;
2932vector<char>::iterator i_out_end = i_out_begin + uLength/4;
2935string::const_iterator i_in = in_seq_data.begin() + uBeginIdx;
2938 const intkOneByteMask = 0xff;
2943 unsigned charc1, c2;
2957 for(i_out = i_out_begin; i_out != i_out_end; )
2962[0][
static_cast<unsigned char>(*i_in)] |
2964[1][
static_cast<unsigned char>(*(i_in+1))];
2969[0][
static_cast<unsigned char>(*(i_in+2))]|
2971[1][
static_cast<unsigned char>(*(i_in+3))];
2974amb_context->AddAmbiguity(c1, out_seq_pos);
2975amb_context->AddAmbiguity(c2, out_seq_pos);
2980c1 &=
m_Masks->m_Table[c1].cMask[rv];
2982c2 &=
m_Masks->m_Table[c2].cMask[rv];
2991(*i_out) |= ((new_byte & kOneByteMask) >> rbit);
2996(*i_out) = ((new_byte & kOneByteMask) << lbit);
3003 switch(uOverhang) {
3007[0][
static_cast<unsigned char>(*i_in)];
3009amb_context->AddAmbiguity(c1, out_seq_pos);
3011c1 &=
m_Masks->m_Table[c1].cMask[rv];
3017[0][
static_cast<unsigned char>(*i_in)] |
3019[1][
static_cast<unsigned char>(*(i_in+1))];
3021amb_context->AddAmbiguity(c1, out_seq_pos);
3023c1 &=
m_Masks->m_Table[c1].cMask[rv];
3029[0][
static_cast<unsigned char>(*i_in)] |
3031[1][
static_cast<unsigned char>(*(i_in+1))];
3034[0][
static_cast<unsigned char>(*(i_in+2))];
3036amb_context->AddAmbiguity(c1, out_seq_pos);
3037amb_context->AddAmbiguity(c2, out_seq_pos);
3040c1 &=
m_Masks->m_Table[c1].cMask[rv];
3042c2 &=
m_Masks->m_Table[c2].cMask[rv];
3058 if(uOverhang > 0) {
3059(*i_out) |= ((new_byte & kOneByteMask) >> rbit);
3060 if(2*uOverhang > lbit) {
3062(*i_out) = ((new_byte & kOneByteMask) << lbit);
3067amb_context->Finish();
3072 for(i_out = i_out_begin; i_out != i_out_end; )
3076[0][
static_cast<unsigned char>(*(i_in))] |
3078[1][
static_cast<unsigned char>(*(i_in+1))] |
3080[2][
static_cast<unsigned char>(*(i_in+2))] |
3082[3][
static_cast<unsigned char>(*(i_in+3))];
3083(*i_out) |= ((new_byte & kOneByteMask) >> rbit);
3088(*i_out) = ((new_byte & kOneByteMask) << lbit);
3093 if(uOverhang > 0) {
3098[
i][
static_cast<unsigned char>(*(i_in+
i))];
3100(*i_out) |= ((new_byte & kOneByteMask) >> rbit);
3101 if(2*uOverhang > lbit) {
3103(*i_out) = ((new_byte & kOneByteMask) << lbit);
3182 TSeqPos* out_seq_length, vector<Uint4>* blast_ambig)
3186 constvector<char>& in_seq_data = in_seq.
GetNcbi4na().
Get();
3187 TSeqPosin_seq_length =
static_cast<TSeqPos>(in_seq_data.size());
3190 if(out_seq_length !=
nullptr&& *out_seq_length == 0)
3193vector<char>& out_seq_data = out_seq->
SetNcbi2na().
Set();
3196 TSeqPosuBeginSav = uBeginIdx;
3201 if(uBeginSav >= 2*in_seq_data.size())
3205 if((uLenSav == 0) || ((uBeginSav + uLenSav) > 2*in_seq_data.size()))
3206uLenSav = 2*in_seq_length - uBeginSav;
3210 Adjust(&uBeginIdx, &uLength, in_seq_length, 2, 4);
3216 if(out_seq_length) {
3217out_seq_pos = *out_seq_length;
3218*out_seq_length += uLenSav;
3220 TSeqPosrbit = 2*(out_seq_pos % 4);
3225vector<char>::size_type nBytes = (out_seq_pos + uLenSav + 3) / 4;
3226out_seq_data.resize(nBytes);
3230unique_ptr<CAmbiguityContext> amb_context;
3236vector<char>::iterator i_out;
3237vector<char>::iterator i_out_begin = out_seq_data.begin() + out_seq_pos/4;
3238vector<char>::iterator i_out_end = i_out_begin + uLength/4;
3242*i_out_begin &= (0xff << lbit);
3245vector<char>::const_iterator i_in = in_seq_data.begin() + uBeginIdx/2;
3248 const intkOneByteMask = 0xff;
3256 for(i_out = i_out_begin; i_out != i_out_end; ) {
3258 unsigned charc1 =
static_cast<unsigned char>(*i_in);
3259 unsigned charc2 =
static_cast<unsigned char>(*(i_in+1));
3262amb_context->AddAmbiguity(c1, out_seq_pos);
3263amb_context->AddAmbiguity(c2, out_seq_pos);
3266c1 &=
m_Masks->m_Table[c1].cMask[rv];
3268c2 &=
m_Masks->m_Table[c2].cMask[rv];
3273(*i_out) |= ((new_byte & kOneByteMask) >> rbit);
3278(*i_out) = ((new_byte & kOneByteMask) << lbit);
3285 if(uOverhang > 0) {
3287 unsigned charc1 =
static_cast<unsigned char>(*i_in);
3293amb_context->AddAmbiguity(c1, out_seq_pos);
3295c1 &=
m_Masks->m_Table[c1].cMask[rv];
3301 if(uOverhang == 3) {
3304 unsigned charc1 =
static_cast<unsigned char>(*(++i_in)) & 0xf0;
3306amb_context->AddAmbiguity(c1, out_seq_pos);
3308c1 &=
m_Masks->m_Table[c1].cMask[rv];
3314 if(uOverhang > 0) {
3315(*i_out) |= ((new_byte & kOneByteMask) >> rbit);
3316 if(2*uOverhang > lbit) {
3318(*i_out) = ((new_byte & kOneByteMask) << lbit);
3323amb_context->Finish();
3327 for(i_out = i_out_begin; i_out != i_out_end; ) {
3330[0][
static_cast<unsigned char>(*i_in)] |
3332[1][
static_cast<unsigned char>(*(i_in+1))];
3333(*i_out) |= ((new_byte & kOneByteMask) >> rbit);
3338(*i_out) = ((new_byte & kOneByteMask) << lbit);
3343 if(uOverhang > 0) {
3346[0][
static_cast<unsigned char>(*i_in)];
3350[1][
static_cast<unsigned char>(*(++i_in))];
3352(*i_out) |= ((new_byte & kOneByteMask) >> rbit);
3353 if(2*uOverhang > lbit) {
3355(*i_out) = ((new_byte & kOneByteMask) << lbit);
3360 TSeqPoskeepidx = uBeginSav - uBeginIdx;
3633 if(uBeginIdx >= in_seq_data.size())
3637 Adjust(&uBeginIdx, &uLength,
static_cast<TSeqPos>(in_seq_data.size()),
3641string::const_iterator itor;
3642string::const_iterator b_itor = in_seq_data.begin() + uBeginIdx;
3643string::const_iterator e_itor = b_itor + uLength;
3646 unsigned charch =
'\x00';
3647 for(itor = b_itor; itor != e_itor; ++itor)
3648ch |=
m_Iupacna->m_Table[
static_cast<unsigned char>(*itor)];
3665 if(uBeginIdx >= in_seq_data.size())
3669 Adjust(&uBeginIdx, &uLength,
static_cast<TSeqPos>(in_seq_data.size()),
3673string::const_iterator itor;
3674string::const_iterator b_itor = in_seq_data.begin() + uBeginIdx;
3675string::const_iterator e_itor = b_itor + uLength;
3678 unsigned charch =
'\x00';
3679 for(itor = b_itor; itor != e_itor; ++itor)
3680ch |=
m_Ncbieaa->m_Table[
static_cast<unsigned char>(*itor)];
3698 if(uBeginIdx >= in_seq_data.size())
3702 Adjust(&uBeginIdx, &uLength,
static_cast<TSeqPos>(in_seq_data.size()),
3706vector<char>::const_iterator itor;
3707vector<char>::const_iterator b_itor = in_seq_data.begin() + uBeginIdx;
3708vector<char>::const_iterator e_itor = b_itor + uLength;
3711 unsigned charch =
'\x00';
3712 for(itor = b_itor; itor != e_itor; ++itor)
3713ch |=
m_Ncbistdaa->m_Table[
static_cast<unsigned char>(*itor)];
3731 if(uBeginIdx >= in_seq_data.size())
3735 Adjust(&uBeginIdx, &uLength,
static_cast<TSeqPos>(in_seq_data.size()),
3739string::const_iterator itor;
3740string::const_iterator b_itor = in_seq_data.begin() + uBeginIdx;
3741string::const_iterator e_itor = b_itor + uLength;
3744 unsigned charch =
'\x00';
3745 for(itor=b_itor; itor!=e_itor; ++itor)
3746ch |=
m_Iupacaa->m_Table[
static_cast<unsigned char>(*itor)];
3755vector<TSeqPos>* badIdx,
3767 if(uBeginIdx >= in_seq_data.size())
3771 Adjust(&uBeginIdx, &uLength,
static_cast<TSeqPos>(in_seq_data.size()),
3775string::const_iterator itor;
3776string::const_iterator b_itor = in_seq_data.begin() + uBeginIdx;
3777string::const_iterator e_itor = b_itor + uLength;
3781 for(itor = b_itor; itor != e_itor; ++itor)
3782 if(
m_Iupacna->m_Table[
static_cast<unsigned char>(*itor)] ==
char(255))
3783badIdx->push_back(nIdx++);
3794vector<TSeqPos>* badIdx,
3806 if(uBeginIdx >= in_seq_data.size())
3810 Adjust(&uBeginIdx, &uLength,
static_cast<TSeqPos>(in_seq_data.size()),
3814string::const_iterator itor;
3815string::const_iterator b_itor = in_seq_data.begin() + uBeginIdx;
3816string::const_iterator e_itor = b_itor + uLength;
3820 for(itor = b_itor; itor != e_itor; ++itor)
3821 if(
m_Ncbieaa->m_Table[
static_cast<unsigned char>(*itor)] ==
char(255))
3822badIdx->push_back(nIdx++);
3833vector<TSeqPos>* badIdx,
3845 if(uBeginIdx >= in_seq_data.size())
3849 Adjust(&uBeginIdx, &uLength,
static_cast<TSeqPos>(in_seq_data.size()),
3853vector<char>::const_iterator itor;
3854vector<char>::const_iterator b_itor = in_seq_data.begin() + uBeginIdx;
3855vector<char>::const_iterator e_itor = b_itor + uLength;
3859 for(itor=b_itor; itor!=e_itor; ++itor)
3860 if(
m_Ncbistdaa->m_Table[
static_cast<unsigned char>(*itor)]==
char(255))
3861badIdx->push_back(nIdx++);
3872vector<TSeqPos>* badIdx,
3884 if(uBeginIdx >= in_seq_data.size())
3888 Adjust(&uBeginIdx, &uLength,
static_cast<TSeqPos>(in_seq_data.size()),
3892string::const_iterator itor;
3893string::const_iterator b_itor = in_seq_data.begin() + uBeginIdx;
3894string::const_iterator e_itor = b_itor + uLength;
3898 for(itor=b_itor; itor!=e_itor; ++itor)
3899 if(
m_Iupacaa->m_Table[
static_cast<unsigned char>(*itor)] ==
char(255))
3900badIdx->push_back(nIdx++);
3919vector<char>& out_seq_data = out_seq->
SetNcbi2na().
Set();
3922 constvector<char>& in_seq_data = in_seq.
GetNcbi2na().
Get();
3925 if(uBeginIdx >= 4 * in_seq_data.size())
3929 if( (uLength ==0) || ((uBeginIdx + uLength) > (4*in_seq_data.size() )) )
3930uLength = 4 *
static_cast<TSeqPos>(in_seq_data.size()) - uBeginIdx;
3933 if((uLength % 4) == 0)
3934out_seq_data.resize(uLength/4);
3936out_seq_data.resize(uLength/4 + 1);
3939vector<char>::iterator i_out = out_seq_data.begin() - 1;
3942 unsigned intlShift, rShift;
3943lShift = 2*(uBeginIdx % 4);
3944rShift = 8 - lShift;
3947vector<char>::const_iterator i_in;
3948vector<char>::const_iterator i_in_begin =
3949in_seq_data.begin() + uBeginIdx/4;
3953 if((uLength % 4) != 0)
3957 boolbDoLastByte =
false;
3958 if((uBeginIdx/4 + uNumBytes) >= in_seq_data.size())
3960uNumBytes = in_seq_data.size() - uBeginIdx/4 - 1;
3961bDoLastByte =
true;
3963vector<char>::const_iterator i_in_end = i_in_begin + uNumBytes;
3967 for(i_in = i_in_begin; i_in != i_in_end; ++i_in)
3969((*i_in) << lShift) | (((*(i_in+1)) & 255) >> rShift);
3971 for(i_in = i_in_begin; i_in != i_in_end; ++i_in)
3972(*(++i_out)) = (*i_in);
3976(*(++i_out)) = (*i_in) << lShift;
3992vector<char>& out_seq_data = out_seq->
SetNcbi4na().
Set();
3995 constvector<char>& in_seq_data = in_seq.
GetNcbi4na().
Get();
3998 if(uBeginIdx >= 2 * in_seq_data.size())
4002 if( (uLength ==0) || ((uBeginIdx + uLength) > (2*in_seq_data.size() )) )
4003uLength = 2 *
static_cast<TSeqPos>(in_seq_data.size()) - uBeginIdx;
4006 if((uLength % 2) == 0)
4007out_seq_data.resize(uLength/2);
4009out_seq_data.resize(uLength/2 + 1);
4013vector<char>::iterator i_out = out_seq_data.begin() - 1;
4016 unsigned intlShift, rShift;
4017lShift = 4*(uBeginIdx % 2);
4018rShift = 8 - lShift;
4021vector<char>::const_iterator i_in;
4022vector<char>::const_iterator i_in_begin =
4023in_seq_data.begin() + uBeginIdx/2;
4027 if((uLength % 2) != 0)
4031 boolbDoLastByte =
false;
4032 if((uBeginIdx/2 + uNumBytes) >= in_seq_data.size())
4034uNumBytes = in_seq_data.size() - uBeginIdx/2 - 1;
4035bDoLastByte =
true;
4037vector<char>::const_iterator i_in_end = i_in_begin + uNumBytes;
4041 for(i_in = i_in_begin; i_in != i_in_end; ++i_in)
4043((*i_in) << lShift) | (((*(i_in+1)) & 255) >> rShift);
4045 for(i_in = i_in_begin; i_in != i_in_end; ++i_in)
4046(*(++i_out)) = (*i_in);
4050(*(++i_out)) = (*i_in) << lShift;
4072 if(uBeginIdx >= in_seq_data.size())
4076 if( (uLength ==0) || ((uBeginIdx + uLength) > (in_seq_data.size() )) )
4077uLength =
static_cast<TSeqPos>(in_seq_data.size()) - uBeginIdx;
4080out_seq_data.resize(uLength);
4083string::iterator i_out = out_seq_data.begin() - 1;
4086string::const_iterator i_in;
4087string::const_iterator i_in_begin = in_seq_data.begin() + uBeginIdx;
4088string::const_iterator i_in_end = i_in_begin + uLength;
4091 for(i_in = i_in_begin; i_in != i_in_end; ++i_in)
4092(*(++i_out)) = (*i_in);
4114 if(uBeginIdx >= in_seq_data.size())
4118 if( (uLength ==0) || ((uBeginIdx + uLength) > (in_seq_data.size() )) )
4119uLength =
static_cast<TSeqPos>(in_seq_data.size()) - uBeginIdx;
4122out_seq_data.resize(uLength);
4125string::iterator i_out = out_seq_data.begin() - 1;
4128string::const_iterator i_in;
4129string::const_iterator i_in_begin = in_seq_data.begin() + uBeginIdx;
4130string::const_iterator i_in_end = i_in_begin + uLength;
4133 for(i_in = i_in_begin; i_in != i_in_end; ++i_in)
4134(*(++i_out)) = (*i_in);
4156 if(uBeginIdx >= in_seq_data.size())
4160 if( (uLength ==0) || ((uBeginIdx + uLength) > (in_seq_data.size() )) )
4161uLength =
static_cast<TSeqPos>(in_seq_data.size()) - uBeginIdx;
4164out_seq_data.resize(uLength);
4167vector<char>::iterator i_out = out_seq_data.begin() - 1;
4170vector<char>::const_iterator i_in;
4171vector<char>::const_iterator i_in_begin = in_seq_data.begin() + uBeginIdx;
4172vector<char>::const_iterator i_in_end = i_in_begin + uLength;
4175 for(i_in = i_in_begin; i_in != i_in_end; ++i_in)
4176(*(++i_out)) = (*i_in);
4198 if(uBeginIdx >= in_seq_data.size())
4202 if( (uLength ==0) || ((uBeginIdx + uLength) > (in_seq_data.size() )) )
4203uLength =
static_cast<TSeqPos>(in_seq_data.size()) - uBeginIdx;
4206out_seq_data.resize(uLength);
4209string::iterator i_out = out_seq_data.begin() - 1;
4212string::const_iterator i_in;
4213string::const_iterator i_in_begin = in_seq_data.begin() + uBeginIdx;
4214string::const_iterator i_in_end = i_in_begin + uLength;
4217 for(i_in = i_in_begin; i_in != i_in_end; ++i_in)
4218(*(++i_out)) = (*i_in);
4239*uLength = uInSeqsPerByte * uInSeqBytes;
4242 if(*uBeginIdx >= uInSeqsPerByte * uInSeqBytes)
4243*uBeginIdx = uInSeqsPerByte * uInSeqBytes - uInSeqsPerByte;
4246*uLength += *uBeginIdx % uInSeqsPerByte;
4247*uBeginIdx = uInSeqsPerByte * (*uBeginIdx/uInSeqsPerByte);
4250 if(*uLength > uInSeqsPerByte * uInSeqBytes - *uBeginIdx)
4251*uLength = uInSeqsPerByte * uInSeqBytes - *uBeginIdx;
4255 TSeqPosuOverhang = *uLength % uOutSeqsPerByte;
4256*uLength = uOutSeqsPerByte * (*uLength / uOutSeqsPerByte);
4270vector<TSeqPos>* out_indices,
4276 constvector<char>& in_seq_data = in_seq.
GetNcbi4na().
Get();
4280vector<char>& out_seq_data = out_seq->
SetNcbi4na().
Set();
4283 if(uBeginIdx >= 2*in_seq_data.size())
4286 if((uLength == 0) || (((uBeginIdx + uLength) > 2*in_seq_data.size())))
4287uLength = 2 *
static_cast<TSeqPos>(in_seq_data.size()) - uBeginIdx;
4290 TSeqPosuBeginSav = uBeginIdx;
4292uLength += uBeginIdx % 2;
4293uBeginIdx = 2*(uBeginIdx/2);
4300out_seq_data.resize(uLength/2 + (uLength % 2));
4301out_indices->resize(uLength);
4307vector<char>::const_iterator i_in;
4308vector<char>::const_iterator i_in_begin =
4309in_seq_data.begin() + uBeginIdx/2;
4310vector<char>::const_iterator i_in_end =
4311i_in_begin + uLength/2 + (uLength % 2);
4314vector<char>::iterator i_out_seq = out_seq_data.begin();
4315vector<TSeqPos>::iterator i_out_idx = out_indices->begin();
4321 for(i_in = i_in_begin; i_in != i_in_end; ++i_in) {
4323[
static_cast<unsigned char>(*i_in)]) {
4330(*i_out_seq) |= (*i_in) &
'\x0f';
4336(*i_out_seq) = (*i_in) << 4;
4339(*i_out_idx) = uIdx + 1;
4351(*i_out_seq) |= ((*i_in) >> 4) &
'\x0f';
4357(*i_out_seq) = (*i_in) &
'\xf0';
4360(*i_out_idx) = uIdx;
4375(*i_out_seq) |= ((*i_in) >> 4) &
'\x0f';
4376(*(++i_out_seq)) = (*i_in) << 4;
4385(*i_out_seq) = (*i_in);
4390(*i_out_idx) = uIdx;
4391(*(++i_out_idx)) = uIdx + 1;
4404out_indices->resize(uNumAmbigs);
4405out_seq_data.resize(uNumAmbigs/2 + uNumAmbigs % 2);
4410 if((*out_indices)[0] < uBeginSav)
4413out_indices->erase(out_indices->begin(), out_indices->begin() + 1);
4416 if((*out_indices)[out_indices->size()-1] >= uBeginSav + uLenSav)
4418out_indices->pop_back();
4419uKeepLen =
static_cast<TSeqPos>(out_indices->size());
4422 if((uKeepBeg != 0) || (uKeepLen != 0))
4423uNumAmbigs =
KeepNcbi4na(out_seq, uKeepBeg, uKeepLen);
4437vector<TSeqPos>* out_indices,
4450 if(uBeginIdx >= in_seq_data.size())
4453 if((uLength == 0) || ((uBeginIdx + uLength) > in_seq_data.size()))
4454uLength =
static_cast<TSeqPos>(in_seq_data.size()) - uBeginIdx;
4459out_seq_data.resize(uLength);
4460out_indices->resize(uLength);
4466string::const_iterator i_in;
4467string::const_iterator i_in_begin = in_seq_data.begin() + uBeginIdx;
4468string::const_iterator i_in_end = i_in_begin + uLength;
4471string::iterator i_out_seq = out_seq_data.begin();
4472vector<TSeqPos>::iterator i_out_idx = out_indices->begin();
4478 for(i_in = i_in_begin; i_in != i_in_end; ++i_in)
4481[
static_cast<unsigned char>(*i_in)] == 1)
4483(*i_out_seq) = (*i_in);
4485(*i_out_idx) = uIdx;
4493out_seq_data.resize(uNumAmbigs);
4494out_indices->resize(uNumAmbigs);
4510 TSeqPosin_seq_length =
static_cast<TSeqPos>(in_seq_data.size());
4513 if(uBeginIdx >= in_seq_data.size()*4)
4515in_seq_data.clear();
4521uLength = 4 * in_seq_length - uBeginIdx;
4526 if(uLength > (4*in_seq_data.size() - uBeginIdx))
4527uLength = 4 * in_seq_length - uBeginIdx;
4530 if((uBeginIdx == 0) && (uLength >= 4*in_seq_data.size()))
4537 TSeqPosuStartInByte = 2 * (uBeginIdx % 4);
4540 unsigned charrightMask = 0xff << uStartInByte;
4541 unsigned charleftMask = ~rightMask;
4545 TSeqPosuEnd = (uBeginIdx + uLength - 1)/4;
4548vector<char>::iterator i_write;
4551vector<char>::iterator i_read = in_seq_data.begin() + uStart;
4552vector<char>::iterator i_read_end = in_seq_data.begin() + uEnd;
4556 for(i_write = in_seq_data.begin(); i_read != i_read_end; ++i_write) {
4557(*i_write) = (((*i_read) << uStartInByte) | leftMask) &
4558(((*(i_read+1)) >> (8-uStartInByte)) | rightMask);
4563(*i_write) = (*i_read) << uStartInByte;
4567 if((uLength % 4) != 0)
4569in_seq_data.resize(uSize);
4585 TSeqPosin_seq_length =
static_cast<TSeqPos>(in_seq_data.size());
4588 if(uBeginIdx >= in_seq_data.size()*2)
4590in_seq_data.clear();
4596uLength = 2 * in_seq_length - uBeginIdx;
4601 if(uLength > (2*in_seq_data.size() - uBeginIdx))
4602uLength = 2 * in_seq_length - uBeginIdx;
4605 if((uBeginIdx == 0) && (uLength >= 2*in_seq_data.size()))
4612 unsigned intuStartInByte = 4 * (uBeginIdx % 2);
4615 unsigned charrightMask = 0xff << uStartInByte;
4616 unsigned charleftMask = ~rightMask;
4620 TSeqPosuEnd = (uBeginIdx + uLength - 1)/2;
4623vector<char>::iterator i_write;
4626vector<char>::iterator i_read = in_seq_data.begin() + uStart;
4627vector<char>::iterator i_read_end = in_seq_data.begin() + uEnd;
4631 for(i_write = in_seq_data.begin(); i_read != i_read_end; ++i_write) {
4632(*i_write) = (((*i_read) << uStartInByte) | leftMask) &
4633(((*(i_read+1)) >> (8-uStartInByte)) | rightMask);
4638(*i_write) = (*i_read) << uStartInByte;
4642 if((uLength % 2) != 0)
4644in_seq_data.resize(uSize);
4660 TSeqPosin_seq_length =
static_cast<TSeqPos>(in_seq_data.size());
4664 if(uBeginIdx >= in_seq_data.size())
4666in_seq_data.erase();
4672uLength = in_seq_length - uBeginIdx;
4675 if((uBeginIdx + uLength) > in_seq_data.size())
4676uLength = in_seq_length - uBeginIdx;
4680 if((uBeginIdx == 0) && (uLength >= in_seq_data.size()))
4684string::iterator i_read;
4685string::iterator i_write;
4688i_read = in_seq_data.begin() + uBeginIdx;
4689string::iterator i_read_end = i_read + uLength;
4693 for(i_write = in_seq_data.begin(); i_read != i_read_end; ++i_write)
4695(*i_write) = (*i_read);
4700in_seq_data.resize(uLength);
4715 TSeqPosin_seq_length =
static_cast<TSeqPos>(in_seq_data.size());
4719 if(uBeginIdx >= in_seq_data.size())
4721in_seq_data.erase();
4727uLength = in_seq_length - uBeginIdx;
4730 if((uBeginIdx + uLength) > in_seq_data.size())
4731uLength = in_seq_length - uBeginIdx;
4735 if((uBeginIdx == 0) && (uLength >= in_seq_data.size()))
4739string::iterator i_read;
4740string::iterator i_write;
4743i_read = in_seq_data.begin() + uBeginIdx;
4744string::iterator i_read_end = i_read + uLength;
4748 for(i_write = in_seq_data.begin(); i_read != i_read_end; ++i_write) {
4749(*i_write) = (*i_read);
4754in_seq_data.resize(uLength);
4769 TSeqPosin_seq_length =
static_cast<TSeqPos>(in_seq_data.size());
4772 if(uBeginIdx >= in_seq_data.size())
4774in_seq_data.clear();
4780uLength = in_seq_length - uBeginIdx;
4783 if((uBeginIdx + uLength) > in_seq_data.size())
4784uLength = in_seq_length - uBeginIdx;
4788 if((uBeginIdx == 0) && (uLength >= in_seq_data.size()))
4792vector<char>::iterator i_read;
4793vector<char>::iterator i_write;
4796i_read = in_seq_data.begin() + uBeginIdx;
4797vector<char>::iterator i_read_end = i_read + uLength;
4801 for(i_write = in_seq_data.begin(); i_read != i_read_end; ++i_write) {
4802(*i_write) = (*i_read);
4807in_seq_data.resize(uLength);
4822 TSeqPosin_seq_length =
static_cast<TSeqPos>(in_seq_data.size());
4826 if(uBeginIdx >= in_seq_data.size()) {
4827in_seq_data.erase();
4833uLength = in_seq_length - uBeginIdx;
4836 if((uBeginIdx + uLength) > in_seq_data.size())
4837uLength = in_seq_length - uBeginIdx;
4841 if((uBeginIdx == 0) && (uLength >= in_seq_data.size()))
4845string::iterator i_read;
4846string::iterator i_write;
4849i_read = in_seq_data.begin() + uBeginIdx;
4850string::iterator i_read_end = i_read + uLength;
4854 for(i_write = in_seq_data.begin(); i_read != i_read_end; ++i_write) {
4855(*i_write) = (*i_read);
4860in_seq_data.resize(uLength);
4883string::iterator i_data;
4886string::iterator i_data_end = in_seq_data.end();
4889 for(i_data = in_seq_data.begin(); i_data != i_data_end; ++i_data)
4910vector<char>::iterator i_data;
4913vector<char>::iterator i_data_end = in_seq_data.end();
4916 for(i_data = in_seq_data.begin(); i_data != i_data_end; ++i_data)
4937vector<char>::iterator i_data;
4940vector<char>::iterator i_data_end = in_seq_data.end();
4943 for(i_data = in_seq_data.begin(); i_data != i_data_end; ++i_data)
5010reverse(in_seq_data.begin(), in_seq_data.end());
5024 TSeqPosin_seq_length =
static_cast<TSeqPos>(in_seq_data.size());
5027 if(uBeginIdx >= 4*in_seq_data.size())
5029in_seq_data.erase(in_seq_data.begin(), in_seq_data.end());
5035uLength = 4 * in_seq_length - uBeginIdx;
5038 if((uBeginIdx + uLength) > (4 * in_seq_data.size()))
5039uLength = 4 * in_seq_length - uBeginIdx;
5043 TSeqPosuEnd = uStart + (uLength - 1 +(uBeginIdx % 4))/4 + 1;
5046vector<char>::iterator i_in;
5047vector<char>::iterator i_in_begin = in_seq_data.begin() + uStart;
5048vector<char>::iterator i_in_end = in_seq_data.begin() + uEnd;
5051 for(i_in = i_in_begin; i_in != i_in_end; ++i_in)
5052(*i_in) =
m_Ncbi2naRev->m_Table[
static_cast<unsigned char>(*i_in)];
5055reverse(i_in_begin, i_in_end);
5058 TSeqPosuJagged = 3 - ((uBeginIdx + uLength - 1) % 4) + 4*uStart;
5071 TSeqPosin_seq_length =
static_cast<TSeqPos>(in_seq_data.size());
5074 if(uBeginIdx >= 2*in_seq_data.size())
5076in_seq_data.erase(in_seq_data.begin(), in_seq_data.end());
5082uLength = 2 * in_seq_length - uBeginIdx;
5085 if((uBeginIdx + uLength) > (2 * in_seq_data.size()))
5086uLength = 2 * in_seq_length - uBeginIdx;
5090 TSeqPosuEnd = uStart + (uLength - 1 +(uBeginIdx % 2))/2 + 1;
5093vector<char>::iterator i_in;
5094vector<char>::iterator i_in_begin = in_seq_data.begin() + uStart;
5095vector<char>::iterator i_in_end = in_seq_data.begin() + uEnd;
5098 for(i_in = i_in_begin; i_in != i_in_end; ++i_in)
5099(*i_in) =
m_Ncbi4naRev->m_Table[
static_cast<unsigned char>(*i_in)];
5102reverse(i_in_begin, i_in_end);
5105 TSeqPosuJagged = 1 - ((uBeginIdx + uLength - 1) % 2) + 2*uStart;
5120 TSeqPosuIdx1 = 0, uIdx2 = uLength;
5134 TSeqPosuIdx1 = 0, uIdx2 = uLength;
5148 TSeqPosuIdx1 = 0, uIdx2 = uLength;
5250 const string& in_seq1_data = in_seq1.
GetIupacna().
Get();
5251 const string& in_seq2_data = in_seq2.
GetIupacna().
Get();
5258 if((uBeginIdx1 >= in_seq1_data.size()) &&
5259(uBeginIdx2 >= in_seq2_data.size()))
5262 if(((uBeginIdx1 + uLength1) > in_seq1_data.size()) || uLength1 == 0)
5263uLength1 =
static_cast<TSeqPos>(in_seq1_data.size()) - uBeginIdx1;
5265 if(((uBeginIdx2 + uLength2) > in_seq2_data.size()) || uLength2 == 0)
5266uLength2 =
static_cast<TSeqPos>(in_seq2_data.size()) - uBeginIdx2;
5269out_seq_data.append(in_seq1_data.substr(uBeginIdx1,uLength1));
5270out_seq_data.append(in_seq2_data.substr(uBeginIdx2,uLength2));
5272 returnuLength1 + uLength2;
5287 constvector<char>& in_seq1_data = in_seq1.
GetNcbi2na().
Get();
5288 constvector<char>& in_seq2_data = in_seq2.
GetNcbi2na().
Get();
5292vector<char>& out_seq_data = out_seq->
SetNcbi2na().
Set();
5295 if((uBeginIdx1 >= 4*in_seq1_data.size()) &&
5296(uBeginIdx2 >= 4*in_seq2_data.size()))
5300 if(uBeginIdx1 >= 4*in_seq1_data.size())
5304 if(uBeginIdx2 >= 4*in_seq2_data.size())
5308 if(((uBeginIdx1 + uLength1) > 4*in_seq1_data.size()) || uLength1 == 0)
5309uLength1 = 4 *
static_cast<TSeqPos>(in_seq1_data.size()) - uBeginIdx1;
5311 if(((uBeginIdx2 + uLength2) > 4*in_seq2_data.size()) || uLength2 == 0)
5312uLength2 = 4 *
static_cast<TSeqPos>(in_seq2_data.size()) - uBeginIdx2;
5316 TSeqPosuTotalLength = uLength1 + uLength2;
5317 if((uTotalLength % 4) == 0)
5318out_seq_data.resize(uTotalLength/4);
5320out_seq_data.resize(uTotalLength/4 + 1);
5323 unsigned intlShift1 = 2*(uBeginIdx1 % 4);
5324 unsigned intrShift1 = 8 - lShift1;
5327 unsigned intlShift2, rShift2, uCase;
5328 unsigned intuVacantIdx = 2*(uLength1 % 4);
5329 unsigned intuStartIdx = 2*(uBeginIdx2 % 4);
5330 if((uVacantIdx < uStartIdx) && (uVacantIdx > 0))
5333lShift2 = uStartIdx - uVacantIdx;
5334rShift2 = 8 - lShift2;
5336 else if((uVacantIdx < uStartIdx) && (uVacantIdx == 0))
5339lShift2 = uStartIdx;
5340rShift2 = 8 - lShift2;
5342 else if((uVacantIdx == uStartIdx) && (uVacantIdx > 0))
5348 else if((uVacantIdx == uStartIdx) && (uVacantIdx == 0))
5357rShift2 = uVacantIdx - uStartIdx;
5358lShift2 = 8 - rShift2;
5363 TSeqPosuStart1 = uBeginIdx1/4;
5365 if(((uBeginIdx1 + uLength1) % 4) == 0)
5366uEnd1 = (uBeginIdx1 + uLength1)/4;
5368uEnd1 = (uBeginIdx1 + uLength1)/4 + 1;
5370 TSeqPosuStart2 = uBeginIdx2/4;
5372 if(((uBeginIdx2 + uLength2) % 4) == 0)
5373uEnd2 = (uBeginIdx2 + uLength2)/4;
5375uEnd2 = (uBeginIdx2 + uLength2)/4 + 1;
5378vector<char>::const_iterator i_in1_begin = in_seq1_data.begin() + uStart1;
5379vector<char>::const_iterator i_in1_end = in_seq1_data.begin() + uEnd1 - 1;
5380vector<char>::const_iterator i_in2_begin = in_seq2_data.begin() + uStart2;
5381vector<char>::const_iterator i_in2_end = in_seq2_data.begin() + uEnd2;
5384vector<char>::iterator i_out = out_seq_data.begin() - 1;
5385vector<char>::const_iterator i_in1;
5386vector<char>::const_iterator i_in2;
5389 for(i_in1 = i_in1_begin; i_in1 != i_in1_end; ++i_in1)
5390(*(++i_out)) = ((*i_in1) << lShift1) | ((*(i_in1+1) & 255) >> rShift1);
5394 if((uLength1 % 4) == 0)
5395uEndOutByte = uLength1/4 - 1;
5397uEndOutByte = uLength1/4;
5398 if(i_out != (out_seq_data.begin() + uEndOutByte))
5399(*(++i_out)) = (*i_in1) << lShift1;
5402 unsigned charuMask1 = 255 << (8 - 2*(uLength1 % 4));
5403 unsigned charuMask2 = 255 >> (2*(uBeginIdx2 % 4));
5408 if((i_in2_begin + 1) == i_in2_end)
5411(*i_out) |= ((*i_in2_begin) & uMask2) << lShift2;
5412 returnuTotalLength;
5418(((*i_in2_begin) & uMask2) << lShift2) |
5419(((*(i_in2_begin+1)) & 255) >> rShift2);
5423 if((i_in2_begin + 1) == i_in2_end)
5425(*(++i_out)) = (*i_in2_begin) << lShift2;
5426 returnuTotalLength;
5431((*i_in2_begin) << lShift2) |
5432(((*(i_in2_begin+1)) & 255) >> rShift2);
5437(*i_out) |= (*i_in2_begin) & uMask2;
5438 if((i_in2_begin + 1) == i_in2_end)
5439 returnuTotalLength;
5442(*(++i_out)) = (*i_in2_begin);
5443 if((i_in2_begin + 1) == i_in2_end)
5444 returnuTotalLength;
5447 if((i_in2_begin + 1) == i_in2_end)
5450(*i_out) |= ((*i_in2_begin) & uMask2) >> rShift2;
5451 if(++i_out != out_seq_data.end())
5452(*i_out) = (*i_in2_begin) << lShift2;
5453 returnuTotalLength;
5459(((*i_in2_begin) & uMask2) >> rShift2) |
5460((*(i_in2_begin+1) & ~uMask2) << lShift2);
5467 for(i_in2 = i_in2_begin+uSeq2Inc; (i_in2 != i_in2_end) &&
5468((i_in2+1) != i_in2_end); ++i_in2) {
5469(*(++i_out)) = ((*i_in2) << lShift2) | ((*(i_in2+1) & 255) >> rShift2);
5473 if((++i_out != out_seq_data.end()) && (i_in2 != i_in2_end))
5474(*i_out) = (*i_in2) << lShift2;
5476 returnuLength1 + uLength2;
5491 constvector<char>& in_seq1_data = in_seq1.
GetNcbi4na().
Get();
5492 constvector<char>& in_seq2_data = in_seq2.
GetNcbi4na().
Get();
5496vector<char>& out_seq_data = out_seq->
SetNcbi4na().
Set();
5499 if((uBeginIdx1 >= 4*in_seq1_data.size()) &&
5500(uBeginIdx2 >= 4*in_seq2_data.size()))
5504 if(uBeginIdx1 >= 4*in_seq1_data.size())
5508 if(uBeginIdx2 >= 4*in_seq2_data.size())
5512 if(((uBeginIdx1 + uLength1) > 2*in_seq1_data.size()) || uLength1 == 0)
5513uLength1 = 2 *
static_cast<TSeqPos>(in_seq1_data.size()) - uBeginIdx1;
5515 if(((uBeginIdx2 + uLength2) > 2*in_seq2_data.size()) || uLength2 == 0)
5516uLength2 = 2 *
static_cast<TSeqPos>(in_seq2_data.size()) - uBeginIdx2;
5519 TSeqPosuTotalLength = uLength1 + uLength2;
5520 if((uTotalLength % 2) == 0)
5521out_seq_data.resize(uTotalLength/2);
5523out_seq_data.resize(uTotalLength/2 + 1);
5526 unsigned intlShift1 = 4*(uBeginIdx1 % 2);
5527 unsigned intrShift1 = 8 - lShift1;
5530 unsigned intlShift2, rShift2, uCase;
5531 unsigned intuVacantIdx = 4*(uLength1 % 2);
5532 unsigned intuStartIdx = 4*(uBeginIdx2 % 2);
5533 if((uVacantIdx < uStartIdx))
5536lShift2 = uStartIdx;
5537rShift2 = 8 - lShift2;
5539 else if((uVacantIdx == uStartIdx) && (uVacantIdx > 0))
5545 else if((uVacantIdx == uStartIdx) && (uVacantIdx == 0))
5554rShift2 = uVacantIdx - uStartIdx;
5555lShift2 = 8 - rShift2;
5560 TSeqPosuStart1 = uBeginIdx1/2;
5562 if(((uBeginIdx1 + uLength1) % 2) == 0)
5563uEnd1 = (uBeginIdx1 + uLength1)/2;
5565uEnd1 = (uBeginIdx1 + uLength1)/2 + 1;
5567 TSeqPosuStart2 = uBeginIdx2/2;
5569 if(((uBeginIdx2 + uLength2) % 2) == 0)
5570uEnd2 = (uBeginIdx2 + uLength2)/2;
5572uEnd2 = (uBeginIdx2 + uLength2)/2 + 1;
5575vector<char>::const_iterator i_in1_begin = in_seq1_data.begin() + uStart1;
5576vector<char>::const_iterator i_in1_end = in_seq1_data.begin() + uEnd1 - 1;
5577vector<char>::const_iterator i_in2_begin = in_seq2_data.begin() + uStart2;
5578vector<char>::const_iterator i_in2_end = in_seq2_data.begin() + uEnd2;
5581vector<char>::iterator i_out = out_seq_data.begin() - 1;
5582vector<char>::const_iterator i_in1;
5583vector<char>::const_iterator i_in2;
5586 for(i_in1 = i_in1_begin; i_in1 != i_in1_end; ++i_in1)
5587(*(++i_out)) = ((*i_in1) << lShift1) | ((*(i_in1+1) & 255) >> rShift1);
5591 if((uLength1 % 2) == 0)
5592uEndOutByte = uLength1/2 - 1;
5594uEndOutByte = uLength1/2;
5595 if(i_out != (out_seq_data.begin() + uEndOutByte))
5596(*(++i_out)) = (*i_in1) << lShift1;
5599 unsigned charuMask1 = 255 << (8 - 4*(uLength1 % 2));
5600 unsigned charuMask2 = 255 >> (4*(uBeginIdx2 % 2));
5605 if((i_in2_begin+1) == i_in2_end)
5607(*(++i_out)) = (*i_in2_begin) << lShift2;
5608 returnuTotalLength;
5613((*i_in2_begin) << lShift2) |
5614(((*(i_in2_begin+1)) & 255) >> rShift2);
5619(*i_out) |= (*i_in2_begin) & uMask2;
5620 if((i_in2_begin+1) == i_in2_end)
5621 returnuTotalLength;
5624(*(++i_out)) = (*i_in2_begin);
5625 if((i_in2_begin+1) == i_in2_end)
5626 returnuTotalLength;
5629 if((i_in2_begin+1) == i_in2_end)
5632(*i_out) |= ((*i_in2_begin) & uMask2) >> rShift2;
5633 if(++i_out != out_seq_data.end())
5634(*i_out) = (*i_in2_begin) << lShift2;
5635 returnuTotalLength;
5641(((*i_in2_begin) & uMask2) >> rShift2) |
5642((*(i_in2_begin+1) & ~uMask2) << lShift2);
5649 for(i_in2 = i_in2_begin+uSeq2Inc; (i_in2 != i_in2_end) &&
5650((i_in2+1) != i_in2_end); ++i_in2) {
5652((*i_in2) << lShift2) | ((*(i_in2+1) & 255) >> rShift2);
5656 if((++i_out != out_seq_data.end()) && (i_in2 != i_in2_end))
5657(*i_out) = (*i_in2) << lShift2;
5659 returnuTotalLength;
5674 const string& in_seq1_data = in_seq1.
GetNcbieaa().
Get();
5675 const string& in_seq2_data = in_seq2.
GetNcbieaa().
Get();
5682 if((uBeginIdx1 >= in_seq1_data.size()) &&
5683(uBeginIdx2 >= in_seq2_data.size()))
5688 if(((uBeginIdx1 + uLength1) > in_seq1_data.size()) || uLength1 == 0)
5689uLength1 =
static_cast<TSeqPos>(in_seq1_data.size()) - uBeginIdx1;
5691 if(((uBeginIdx2 + uLength2) > in_seq2_data.size()) || uLength2 == 0)
5692uLength2 =
static_cast<TSeqPos>(in_seq2_data.size()) - uBeginIdx2;
5695out_seq_data.append(in_seq1_data.substr(uBeginIdx1,uLength1));
5696out_seq_data.append(in_seq2_data.substr(uBeginIdx2,uLength2));
5698 returnuLength1 + uLength2;
5721 if((uBeginIdx1 >= in_seq1_data.size()) &&
5722(uBeginIdx2 >= in_seq2_data.size()))
5725 if(((uBeginIdx1 + uLength1) > in_seq1_data.size()) || uLength1 == 0)
5726uLength1 =
static_cast<TSeqPos>(in_seq1_data.size()) - uBeginIdx1;
5728 if(((uBeginIdx2 + uLength2) > in_seq2_data.size()) || uLength2 == 0)
5729uLength2 =
static_cast<TSeqPos>(in_seq2_data.size()) - uBeginIdx2;
5732vector<char>::const_iterator i_in1_begin =
5733in_seq1_data.begin() + uBeginIdx1;
5734vector<char>::const_iterator i_in1_end = i_in1_begin + uLength1;
5735vector<char>::const_iterator i_in2_begin =
5736in_seq2_data.begin() + uBeginIdx2;
5737vector<char>::const_iterator i_in2_end = i_in2_begin + uLength2;
5740out_seq_data.insert(out_seq_data.end(), i_in1_begin, i_in1_end);
5741out_seq_data.insert(out_seq_data.end(), i_in2_begin, i_in2_end);
5743 returnuLength1 + uLength2;
5758 const string& in_seq1_data = in_seq1.
GetIupacaa().
Get();
5759 const string& in_seq2_data = in_seq2.
GetIupacaa().
Get();
5766 if((uBeginIdx1 >= in_seq1_data.size()) &&
5767(uBeginIdx2 >= in_seq2_data.size()))
5772 if(((uBeginIdx1 + uLength1) > in_seq1_data.size()) || uLength1 == 0)
5773uLength1 =
static_cast<TSeqPos>(in_seq1_data.size()) - uBeginIdx1;
5775 if(((uBeginIdx2 + uLength2) > in_seq2_data.size()) || uLength2 == 0)
5776uLength2 =
static_cast<TSeqPos>(in_seq2_data.size()) - uBeginIdx2;
5779out_seq_data.append(in_seq1_data.substr(uBeginIdx1,uLength1));
5780out_seq_data.append(in_seq2_data.substr(uBeginIdx2,uLength2));
5782 returnuLength1 + uLength2;
5808 if((*i_ct)->GetCode() == code_type) {
5831 if((*i_ct)->GetCode() == code_type) {
5832 if( (*i_ct)->IsSetStart_at() ) {
5833p.first =
static_cast<TIndex>((*i_ct)->GetStart_at());
5837p.second = p.first +
static_cast<TIndex>((*i_ct)->GetNum() - 1);
5875 const string&
code)
5883 const string&
code)
5993 if(from_idx - (*Map).m_StartAt >= (
TIndex)(*Map).m_Size) {
5995from_idx -
static_cast<TIndex>((*Map).m_StartAt),
6000 return(*Map).m_Table[from_idx];
6008 const string**
str,
6009 constvector<char>** vec)
6015 switch(
data.Which() ) {
6017*
str= &(
data.GetIupacna().Get());
6021*vec = &(
data.GetNcbi2na().Get());
6025*vec = &(
data.GetNcbi4na().Get());
6029*vec = &(
data.GetNcbi8na().Get());
6033*
str= &(
data.GetIupacaa().Get());
6037*vec = &(
data.GetNcbi8aa().Get());
6041*
str= &(
data.GetNcbieaa().Get());
6045*vec = &(
data.GetNcbistdaa().Get());
6067 switch(
data.Which() ) {
6069*
str= &(
data.SetIupacna().Set());
6073*vec = &(
data.SetNcbi2na().Set());
6077*vec = &(
data.SetNcbi4na().Set());
6081*vec = &(
data.SetNcbi8na().Set());
6085*
str= &(
data.SetIupacaa().Set());
6089*vec = &(
data.SetNcbi8aa().Set());
6093*
str= &(
data.SetNcbieaa().Set());
6097*vec = &(
data.SetNcbistdaa().Set());
6116 "-- This is the set of NCBI sequence code tables\n",
6117 "-- J.Ostell 10/18/91\n",
6120 "Seq-code-set ::= {\n",
6121 " codes { -- codes\n",
6123 " code iupacna ,\n",
6124 " num 25 , -- continuous 65-89\n",
6125 " one-letter TRUE , -- all one letter codes\n",
6126 " start-at 65 , -- starts with A, ASCII 65\n",
6128 " { symbol \"A\", name \"Adenine\" },\n",
6129 " { symbol \"B\" , name \"G or T or C\" },\n",
6130 " { symbol \"C\", name \"Cytosine\" },\n",
6131 " { symbol \"D\", name \"G or A or T\" },\n",
6132 " { symbol \"\", name \"\" },\n",
6133 " { symbol \"\", name \"\" },\n",
6134 " { symbol \"G\", name \"Guanine\" },\n",
6135 " { symbol \"H\", name \"A or C or T\" } ,\n",
6136 " { symbol \"\", name \"\" },\n",
6137 " { symbol \"\", name \"\" },\n",
6138 " { symbol \"K\", name \"G or T\" },\n",
6139 " { symbol \"\", name \"\"},\n",
6140 " { symbol \"M\", name \"A or C\" },\n",
6141 " { symbol \"N\", name \"A or G or C or T\" } ,\n",
6142 " { symbol \"\", name \"\" },\n",
6143 " { symbol \"\", name \"\" },\n",
6144 " { symbol \"\", name \"\"},\n",
6145 " { symbol \"R\", name \"G or A\"},\n",
6146 " { symbol \"S\", name \"G or C\"},\n",
6147 " { symbol \"T\", name \"Thymine\"},\n",
6148 " { symbol \"\", name \"\"},\n",
6149 " { symbol \"V\", name \"G or C or A\"},\n",
6150 " { symbol \"W\", name \"A or T\" },\n",
6151 " { symbol \"\", name \"\"},\n",
6152 " { symbol \"Y\", name \"T or C\"}\n",
6153 " } , -- end of table\n",
6154 " comps { -- complements\n",
6183 " code iupacaa ,\n",
6184 " num 26 , -- continuous 65-90\n",
6185 " one-letter TRUE , -- all one letter codes\n",
6186 " start-at 65 , -- starts with A, ASCII 65\n",
6188 " { symbol \"A\", name \"Alanine\" },\n",
6189 " { symbol \"B\" , name \"Asp or Asn\" },\n",
6190 " { symbol \"C\", name \"Cysteine\" },\n",
6191 " { symbol \"D\", name \"Aspartic Acid\" },\n",
6192 " { symbol \"E\", name \"Glutamic Acid\" },\n",
6193 " { symbol \"F\", name \"Phenylalanine\" },\n",
6194 " { symbol \"G\", name \"Glycine\" },\n",
6195 " { symbol \"H\", name \"Histidine\" } ,\n",
6196 " { symbol \"I\", name \"Isoleucine\" },\n",
6197 " { symbol \"J\", name \"Leu or Ile\" },\n",
6198 " { symbol \"K\", name \"Lysine\" },\n",
6199 " { symbol \"L\", name \"Leucine\" },\n",
6200 " { symbol \"M\", name \"Methionine\" },\n",
6201 " { symbol \"N\", name \"Asparagine\" } ,\n",
6202 " { symbol \"O\", name \"Pyrrolysine\" },\n",
6203 " { symbol \"P\", name \"Proline\" },\n",
6204 " { symbol \"Q\", name \"Glutamine\"},\n",
6205 " { symbol \"R\", name \"Arginine\"},\n",
6206 " { symbol \"S\", name \"Serine\"},\n",
6207 " { symbol \"T\", name \"Threonine\"},\n",
6208 " { symbol \"U\", name \"Selenocysteine\"}, -- was empty\n",
6209 " { symbol \"V\", name \"Valine\"},\n",
6210 " { symbol \"W\", name \"Tryptophan\" },\n",
6211 " { symbol \"X\", name \"Undetermined or atypical\"},\n",
6212 " { symbol \"Y\", name \"Tyrosine\"},\n",
6213 " { symbol \"Z\", name \"Glu or Gln\" }\n",
6214 " } -- end of table \n",
6216 " { -- IUPACeaa\n",
6217 " code ncbieaa ,\n",
6218 " num 49 , -- continuous 42-90\n",
6219 " one-letter TRUE , -- all one letter codes\n",
6220 " start-at 42 , -- starts with *, ASCII 42\n",
6222 " { symbol \"*\", name \"Termination\" } ,\n",
6223 " { symbol \"\", name \"\" } ,\n",
6224 " { symbol \"\", name \"\" } ,\n",
6225 " { symbol \"-\", name \"Gap\" } ,\n",
6226 " { symbol \"\", name \"\" } ,\n",
6227 " { symbol \"\", name \"\" } ,\n",
6228 " { symbol \"\", name \"\" } ,\n",
6229 " { symbol \"\", name \"\" } ,\n",
6230 " { symbol \"\", name \"\" } ,\n",
6231 " { symbol \"\", name \"\" } ,\n",
6232 " { symbol \"\", name \"\" } ,\n",
6233 " { symbol \"\", name \"\" } ,\n",
6234 " { symbol \"\", name \"\" } ,\n",
6235 " { symbol \"\", name \"\" } ,\n",
6236 " { symbol \"\", name \"\" } ,\n",
6237 " { symbol \"\", name \"\" } ,\n",
6238 " { symbol \"\", name \"\" } ,\n",
6239 " { symbol \"\", name \"\" } ,\n",
6240 " { symbol \"\", name \"\" } ,\n",
6241 " { symbol \"\", name \"\" } ,\n",
6242 " { symbol \"\", name \"\" } ,\n",
6243 " { symbol \"\", name \"\" } ,\n",
6244 " { symbol \"\", name \"\" } ,\n",
6245 " { symbol \"A\", name \"Alanine\" },\n",
6246 " { symbol \"B\" , name \"Asp or Asn\" },\n",
6247 " { symbol \"C\", name \"Cysteine\" },\n",
6248 " { symbol \"D\", name \"Aspartic Acid\" },\n",
6249 " { symbol \"E\", name \"Glutamic Acid\" },\n",
6250 " { symbol \"F\", name \"Phenylalanine\" },\n",
6251 " { symbol \"G\", name \"Glycine\" },\n",
6252 " { symbol \"H\", name \"Histidine\" } ,\n",
6253 " { symbol \"I\", name \"Isoleucine\" },\n",
6254 " { symbol \"J\", name \"Leu or Ile\" },\n",
6255 " { symbol \"K\", name \"Lysine\" },\n",
6256 " { symbol \"L\", name \"Leucine\" },\n",
6257 " { symbol \"M\", name \"Methionine\" },\n",
6258 " { symbol \"N\", name \"Asparagine\" } ,\n",
6259 " { symbol \"O\", name \"Pyrrolysine\" },\n",
6260 " { symbol \"P\", name \"Proline\" },\n",
6261 " { symbol \"Q\", name \"Glutamine\"},\n",
6262 " { symbol \"R\", name \"Arginine\"},\n",
6263 " { symbol \"S\", name \"Serine\"},\n",
6264 " { symbol \"T\", name \"Threonine\"},\n",
6265 " { symbol \"U\", name \"Selenocysteine\"},\n",
6266 " { symbol \"V\", name \"Valine\"},\n",
6267 " { symbol \"W\", name \"Tryptophan\" },\n",
6268 " { symbol \"X\", name \"Undetermined or atypical\"},\n",
6269 " { symbol \"Y\", name \"Tyrosine\"},\n",
6270 " { symbol \"Z\", name \"Glu or Gln\" }\n",
6271 " } -- end of table \n",
6273 " { -- IUPACaa3\n",
6274 " code iupacaa3 ,\n",
6275 " num 28 , -- continuous 0-27\n",
6276 " one-letter FALSE , -- all 3 letter codes\n",
6278 " { symbol \"---\", name \"Gap\" } ,\n",
6279 " { symbol \"Ala\", name \"Alanine\" },\n",
6280 " { symbol \"Asx\" , name \"Asp or Asn\" },\n",
6281 " { symbol \"Cys\", name \"Cysteine\" },\n",
6282 " { symbol \"Asp\", name \"Aspartic Acid\" },\n",
6283 " { symbol \"Glu\", name \"Glutamic Acid\" },\n",
6284 " { symbol \"Phe\", name \"Phenylalanine\" },\n",
6285 " { symbol \"Gly\", name \"Glycine\" },\n",
6286 " { symbol \"His\", name \"Histidine\" } ,\n",
6287 " { symbol \"Ile\", name \"Isoleucine\" },\n",
6288 " { symbol \"Lys\", name \"Lysine\" },\n",
6289 " { symbol \"Leu\", name \"Leucine\" },\n",
6290 " { symbol \"Met\", name \"Methionine\" },\n",
6291 " { symbol \"Asn\", name \"Asparagine\" } ,\n",
6292 " { symbol \"Pro\", name \"Proline\" },\n",
6293 " { symbol \"Gln\", name \"Glutamine\"},\n",
6294 " { symbol \"Arg\", name \"Arginine\"},\n",
6295 " { symbol \"Ser\", name \"Serine\"},\n",
6296 " { symbol \"Thr\", name \"Threonine\"},\n",
6297 " { symbol \"Val\", name \"Valine\"},\n",
6298 " { symbol \"Trp\", name \"Tryptophan\" },\n",
6299 " { symbol \"Xxx\", name \"Undetermined or atypical\"},\n",
6300 " { symbol \"Tyr\", name \"Tyrosine\"},\n",
6301 " { symbol \"Glx\", name \"Glu or Gln\" },\n",
6302 " { symbol \"Sec\", name \"Selenocysteine\"},\n",
6303 " { symbol \"Ter\", name \"Termination\" },\n",
6304 " { symbol \"Pyl\", name \"Pyrrolysine\"},\n",
6305 " { symbol \"Xle\", name \"Leu or Ile\"}\n",
6306 " } -- end of table \n",
6308 " { -- NCBIstdaa\n",
6309 " code ncbistdaa ,\n",
6310 " num 28 , -- continuous 0-27\n",
6311 " one-letter TRUE , -- all one letter codes\n",
6313 " { symbol \"-\", name \"Gap\" } , -- 0\n",
6314 " { symbol \"A\", name \"Alanine\" }, -- 1\n",
6315 " { symbol \"B\" , name \"Asp or Asn\" }, -- 2\n",
6316 " { symbol \"C\", name \"Cysteine\" }, -- 3\n",
6317 " { symbol \"D\", name \"Aspartic Acid\" }, -- 4\n",
6318 " { symbol \"E\", name \"Glutamic Acid\" }, -- 5\n",
6319 " { symbol \"F\", name \"Phenylalanine\" }, -- 6\n",
6320 " { symbol \"G\", name \"Glycine\" }, -- 7\n",
6321 " { symbol \"H\", name \"Histidine\" } , -- 8\n",
6322 " { symbol \"I\", name \"Isoleucine\" }, -- 9\n",
6323 " { symbol \"K\", name \"Lysine\" }, -- 10\n",
6324 " { symbol \"L\", name \"Leucine\" }, -- 11\n",
6325 " { symbol \"M\", name \"Methionine\" }, -- 12\n",
6326 " { symbol \"N\", name \"Asparagine\" } , -- 13\n",
6327 " { symbol \"P\", name \"Proline\" }, -- 14\n",
6328 " { symbol \"Q\", name \"Glutamine\"}, -- 15\n",
6329 " { symbol \"R\", name \"Arginine\"}, -- 16\n",
6330 " { symbol \"S\", name \"Serine\"}, -- 17\n",
6331 " { symbol \"T\", name \"Threoine\"}, -- 18\n",
6332 " { symbol \"V\", name \"Valine\"}, -- 19\n",
6333 " { symbol \"W\", name \"Tryptophan\" }, -- 20\n",
6334 " { symbol \"X\", name \"Undetermined or atypical\"}, -- 21\n",
6335 " { symbol \"Y\", name \"Tyrosine\"}, -- 22\n",
6336 " { symbol \"Z\", name \"Glu or Gln\" }, -- 23\n",
6337 " { symbol \"U\", name \"Selenocysteine\"}, -- 24 \n",
6338 " { symbol \"*\", name \"Termination\" }, -- 25\n",
6339 " { symbol \"O\", name \"Pyrrolysine\" }, -- 26\n",
6340 " { symbol \"J\", name \"Leu or Ile\" } -- 27\n",
6341 " } -- end of table \n",
6344 " code ncbi2na ,\n",
6345 " num 4 , -- continuous 0-3\n",
6346 " one-letter TRUE , -- all one letter codes\n",
6348 " { symbol \"A\", name \"Adenine\" },\n",
6349 " { symbol \"C\", name \"Cytosine\" },\n",
6350 " { symbol \"G\", name \"Guanine\" },\n",
6351 " { symbol \"T\", name \"Thymine/Uracil\"}\n",
6352 " } , -- end of table \n",
6353 " comps { -- complements\n",
6361 " code ncbi4na ,\n",
6362 " num 16 , -- continuous 0-15\n",
6363 " one-letter TRUE , -- all one letter codes\n",
6365 " { symbol \"-\", name \"Gap\" } ,\n",
6366 " { symbol \"A\", name \"Adenine\" },\n",
6367 " { symbol \"C\", name \"Cytosine\" },\n",
6368 " { symbol \"M\", name \"A or C\" },\n",
6369 " { symbol \"G\", name \"Guanine\" },\n",
6370 " { symbol \"R\", name \"G or A\"},\n",
6371 " { symbol \"S\", name \"G or C\"},\n",
6372 " { symbol \"V\", name \"G or C or A\"},\n",
6373 " { symbol \"T\", name \"Thymine/Uracil\"},\n",
6374 " { symbol \"W\", name \"A or T\" },\n",
6375 " { symbol \"Y\", name \"T or C\"} ,\n",
6376 " { symbol \"H\", name \"A or C or T\" } ,\n",
6377 " { symbol \"K\", name \"G or T\" },\n",
6378 " { symbol \"D\", name \"G or A or T\" },\n",
6379 " { symbol \"B\" , name \"G or T or C\" },\n",
6380 " { symbol \"N\", name \"A or G or C or T\" }\n",
6381 " } , -- end of table \n",
6382 " comps { -- complements\n",
6401 " } , -- end of codes\n",
6404 " from iupacna ,\n",
6407 " start-at 65 ,\n",
6433 " 3 } -- Y -> T\n",
6436 " from iupacna ,\n",
6439 " start-at 64 ,\n",
6441 " 0, -- @ used by FastaToSeqEntry to convert hyphen to gap\n",
6469 " from ncbi2na ,\n",
6479 " from ncbi2na ,\n",
6489 " from ncbi4na ,\n",
6493 " 78, -- gap -> N\n",
6511 " from ncbi4na ,\n",
6515 " 3, -- gap -> T\n",
6530 " 0 } -- N -> A\n",
6533 " from iupacaa ,\n",
6536 " start-at 65 ,\n",
6538 " 65 , -- they map directly\n",
6547 " 74, -- J - was 255\n",
6552 " 79, -- O - was 255\n",
6558 " 85, -- U - was 255\n",
6566 " from ncbieaa ,\n",
6569 " start-at 42 ,\n",
6571 " 88 , -- termination -> X\n",
6574 " 88, -- Gap -> X\n",
6594 " 65 , -- from here they map directly\n",
6603 " 74, -- J - was 255\n",
6608 " 79, -- O - was 255\n",
6614 " 85, -- U was -> X 88\n",
6622 " from iupacaa ,\n",
6623 " to ncbistdaa ,\n",
6625 " start-at 65 ,\n",
6627 " 1 , -- they map directly\n",
6636 " 27, -- J - was 255\n",
6641 " 26, -- O - was 255\n",
6647 " 24, -- U - was 255\n",
6655 " from ncbieaa ,\n",
6656 " to ncbistdaa ,\n",
6658 " start-at 42 ,\n",
6660 " 25, -- termination\n",
6683 " 1 , -- they map directly\n",
6692 " 27, -- J - was 255\n",
6697 " 26, -- O - was 255\n",
6711 " from ncbistdaa ,\n",
6715 " 45 , -- \"-\"\n",
6716 " 65 , -- they map directly with holes for O and J\n",
6741 " 79, -- O - new\n",
6742 " 74} -- J - new\n",
6745 " from ncbistdaa ,\n",
6749 " 255 , -- \"-\"\n",
6750 " 65 , -- they map directly with holes for O and J\n",
6773 " 85, -- U - was 88\n",
6775 " 79, -- O - new\n",
6776 " 74} -- J - new\n",
6779 "-- end of seq-code-set -- }",
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.
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.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
ncbi::TMaskedQueryRegions mask
void AddAmbiguity(char in_byte, TSeqPos &seq_pos)
char m_LastAmbChar
Last previous ambiguity character.
CAmbiguityContext(vector< Uint4 > &amb_buff, int seq_length)
vector< Uint4 > & m_vAmbBuf
Ambiguity buffer to fill.
static SIZE_TYPE Pack(const string &src, TCoding src_coding, vector< char > &dst, TCoding &dst_coding, TSeqPos length=ncbi::numeric_limits< TSeqPos >::max())
static SIZE_TYPE Convert(const CTempString &src, TCoding src_coding, TSeqPos pos, TSeqPos length, string &dst, TCoding dst_coding)
static SIZE_TYPE Reverse(const string &src, TCoding src_coding, TSeqPos pos, TSeqPos length, string &dst)
static SIZE_TYPE ReverseComplement(const string &src, TCoding src_coding, TSeqPos pos, TSeqPos length, string &dst)
static SIZE_TYPE Complement(const string &src, TCoding src_coding, TSeqPos pos, TSeqPos length, string &dst)
CWrapper_2D(size_t size1, int start1, size_t size2, int start2)
CWrapper_table(size_t size, size_t start)
const string & GetIupacaa3(TIndex ncbistdaa)
CRef< CMap_table > m_Ncbi2naNcbi4na
CRef< CFast_table2 > InitFastNcbi4naIupacna()
TSeqPos GetNcbistdaaCopy(const CSeq_data &in_seq, CSeq_data *out_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos AppendNcbi4na(CSeq_data *out_seq, const CSeq_data &in_seq1, TSeqPos uBeginIdx1, TSeqPos uLength1, const CSeq_data &in_seq2, TSeqPos uBeginIdx2, TSeqPos uLength2) const
TSeqPos GetIupacnaCopy(const CSeq_data &in_seq, CSeq_data *out_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos Reverse(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CRef< CCode_comp > m_Ncbi4naComplement
CRef< CCode_table > m_Ncbieaa
TSeqPos AppendIupacaa(CSeq_data *out_seq, const CSeq_data &in_seq1, TSeqPos uBeginIdx1, TSeqPos uLength1, const CSeq_data &in_seq2, TSeqPos uBeginIdx2, TSeqPos uLength2) const
CRef< CMap_table > m_IupacaaNcbistdaa
CRef< CMap_table > InitMaps(ESeq_code_type from_type, ESeq_code_type to_type)
TSeqPos KeepNcbi4na(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CRef< CCode_comp > InitIupacnaComplement()
CRef< CFast_4_1 > InitFastIupacnaNcbi2na()
CRef< CCode_comp > InitNcbi2naComplement()
TSeqPos GetNcbi2naCopy(const CSeq_data &in_seq, CSeq_data *out_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos GetCopy(const CSeq_data &in_seq, CSeq_data *out_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos KeepIupacna(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos ComplementIupacna(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CRef< CCode_table > m_Ncbistdaa
CRef< CMap_table > m_NcbistdaaIupacaa
CRef< CFast_2_1 > InitFastNcbi4naNcbi2na()
CRef< CAmbig_detect > InitAmbigNcbi4naNcbi2na()
TSeqPos ReverseNcbi4na(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CWrapper_table< char > CCode_table
TSeqPos KeepNcbi2na(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
bool FastValidateNcbieaa(const CSeq_data &in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos AppendNcbieaa(CSeq_data *out_seq, const CSeq_data &in_seq1, TSeqPos uBeginIdx1, TSeqPos uLength1, const CSeq_data &in_seq2, TSeqPos uBeginIdx2, TSeqPos uLength2) const
CSeqportUtil::TPair TPair
TSeqPos ReverseComplement(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CRef< CMap_table > m_IupacnaNcbi2na
vector< map< string, TIndex > > m_StringIndex
CRef< CMap_table > m_Ncbi2naIupacna
bool IsCodeAvailable(CSeq_data::E_Choice code_type)
CRef< CCode_comp > m_Ncbi2naComplement
CRef< CCode_table > m_Iupacna
TSeqPos GetNcbieaaCopy(const CSeq_data &in_seq, CSeq_data *out_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos ReverseComplementNcbi4na(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CRef< CMap_table > m_NcbieaaNcbistdaa
vector< TIndex > m_StartAt
vector< vector< TIndex > > m_IndexComplement
CWrapper_2D< unsigned char > CFast_4_1
CRef< CMap_table > m_IupacaaNcbieaa
TSeqPos GetAmbigs(const CSeq_data &in_seq, CSeq_data *out_seq, vector< TSeqPos > *out_indices, CSeq_data::E_Choice to_code, TSeqPos uBeginIdx, TSeqPos uLength) const
const string & GetCodeOrName(CSeq_data::E_Choice code_type, TIndex idx, bool get_code)
TPair GetCodeIndexFromTo(CSeq_data::E_Choice code_type)
CRef< CSeq_code_set > m_SeqCodeSet
vector< vector< string > > m_IndexString[2]
CWrapper_2D< unsigned char > CFast_2_1
CRef< CCode_comp > InitNcbi4naComplement()
CWrapper_table< int > CMap_table
CRef< CCode_rev > InitNcbi2naRev()
CRef< CSeq_code_set > Init()
TSeqPos KeepIupacaa(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CWrapper_table< char > CCode_rev
CRef< CAmbig_detect > m_DetectAmbigNcbi4naNcbi2na
CRef< SMasksArray > m_Masks
TSeqPos ComplementNcbi4na(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
size_t Pack(CSeq_data *in_seq, TSeqPos uLength) const
bool FastValidateIupacaa(const CSeq_data &in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
void ValidateIupacna(const CSeq_data &in_seq, vector< TSeqPos > *badIdx, TSeqPos uBeginIdx, TSeqPos uLength) const
CRef< CMap_table > m_Ncbi4naNcbi2na
CRef< CCode_rev > InitNcbi4naRev()
TIndex GetIndexComplement(CSeq_data::E_Choice code_type, TIndex idx)
TSeqPos ReverseNcbi2na(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CRef< CCode_comp > m_Iupacna_complement
CSeqportUtil::TIndex TIndex
CSeqportUtil_implementation()
TSeqPos ReverseIupacna(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CWrapper_table< unsigned short > CFast_table2
TIndex GetMapToIndex(CSeq_data::E_Choice from_type, CSeq_data::E_Choice to_type, TIndex from_idx)
CRef< CFast_2_1 > m_FastNcbi4naNcbi2na
CRef< CCode_table > InitCodes(ESeq_code_type code_type)
CRef< CFast_4_1 > m_FastIupacnaNcbi2na
CRef< CFast_2_1 > m_FastIupacnaNcbi4na
CRef< CMap_table > m_Ncbi4naIupacna
TSeqPos Keep(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CRef< CAmbig_detect > InitAmbigIupacnaNcbi2na()
TSeqPos GetAmbigs_iupacna_ncbi2na(const CSeq_data &in_seq, CSeq_data *out_seq, vector< TSeqPos > *out_indices, TSeqPos uBeginIdx, TSeqPos uLength) const
void Validate(const CSeq_data &in_seq, vector< TSeqPos > *badIdx, TSeqPos uBeginIdx, TSeqPos uLength) const
void ValidateNcbieaa(const CSeq_data &in_seq, vector< TSeqPos > *badIdx, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos GetAmbigs_ncbi4na_ncbi2na(const CSeq_data &in_seq, CSeq_data *out_seq, vector< TSeqPos > *out_indices, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos ReverseComplementIupacna(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos Adjust(TSeqPos *uBeginIdx, TSeqPos *uLength, TSeqPos uInSeqBytes, TSeqPos uInSeqsPerByte, TSeqPos uOutSeqsPerByte) const
TIndex GetIndex(CSeq_data::E_Choice code_type, const string &code)
CRef< CMap_table > m_NcbistdaaNcbieaa
TSeqPos Complement(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CWrapper_table< string > CCode_table_str
static const char * sm_StrAsnData[]
CRef< CCode_table > m_Iupacaa
CRef< CCode_rev > m_Ncbi2naRev
TSeqPos AppendNcbi2na(CSeq_data *out_seq, const CSeq_data &in_seq1, TSeqPos uBeginIdx1, TSeqPos uLength1, const CSeq_data &in_seq2, TSeqPos uBeginIdx2, TSeqPos uLength2) const
TSeqPos AppendNcbistdaa(CSeq_data *out_seq, const CSeq_data &in_seq1, TSeqPos uBeginIdx1, TSeqPos uLength1, const CSeq_data &in_seq2, TSeqPos uBeginIdx2, TSeqPos uLength2) const
bool FastValidateNcbistdaa(const CSeq_data &in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos Append(CSeq_data *out_seq, const CSeq_data &in_seq1, TSeqPos uBeginIdx1, TSeqPos uLength1, const CSeq_data &in_seq2, TSeqPos uBeginIdx2, TSeqPos uLength2) const
CWrapper_table< unsigned int > CFast_table4
TSeqPos Convert(const CSeq_data &in_seq, CSeq_data *out_seq, CSeq_data::E_Choice to_code, TSeqPos uBeginIdx, TSeqPos uLength, bool bAmbig, CRandom::TValue seed, TSeqPos total_length=0, TSeqPos *out_seq_length=0, vector< Uint4 > *blast_ambig=0) const
TSeqPos KeepNcbieaa(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CWrapper_table< unsigned char > CAmbig_detect
bool FastValidateIupacna(const CSeq_data &in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos ComplementNcbi2na(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos AppendIupacna(CSeq_data *out_seq, const CSeq_data &in_seq1, TSeqPos uBeginIdx1, TSeqPos uLength1, const CSeq_data &in_seq2, TSeqPos uBeginIdx2, TSeqPos uLength2) const
void ValidateIupacaa(const CSeq_data &in_seq, vector< TSeqPos > *badIdx, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos x_ConvertAmbig(const CSeq_data &in_seq, CSeq_data *out_seq, CSeq_data::E_Choice to_code, TSeqPos uBeginIdx, TSeqPos uLength, CRandom::TValue seed, TSeqPos total_length=0, TSeqPos *out_seq_length=0, vector< Uint4 > *blast_ambig=0) const
CRef< CMap_table > m_IupacnaNcbi4na
CRef< CFast_2_1 > InitFastIupacnaNcbi4na()
CWrapper_table< char > CCode_comp
void x_GetSeqFromSeqData(const CSeq_data &data, const string **str, const vector< char > **vec) const
bool FastValidate(const CSeq_data &in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos GetNcbi4naCopy(const CSeq_data &in_seq, CSeq_data *out_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
TSeqPos MapIupacnaToNcbi2na(const CSeq_data &in_seq, CSeq_data *out_seq, TSeqPos uBeginIdx, TSeqPos uLength, bool bAmbig, CRandom::TValue seed, TSeqPos total_length, TSeqPos *out_seq_length, vector< Uint4 > *blast_ambig) const
CRef< CMap_table > m_NcbieaaIupacaa
TSeqPos ReverseComplementNcbi2na(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CRef< CAmbig_detect > m_DetectAmbigIupacnaNcbi2na
~CSeqportUtil_implementation()
TSeqPos GetIupacaaCopy(const CSeq_data &in_seq, CSeq_data *out_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
void ValidateNcbistdaa(const CSeq_data &in_seq, vector< TSeqPos > *badIdx, TSeqPos uBeginIdx, TSeqPos uLength) const
CRef< SMasksArray > InitMasks()
TSeqPos MapNcbi4naToNcbi2na(const CSeq_data &in_seq, CSeq_data *out_seq, TSeqPos uBeginIdx, TSeqPos uLength, bool bAmbig, CRandom::TValue seed, TSeqPos total_length, TSeqPos *out_seq_length, vector< Uint4 > *blast_ambig) const
CRef< CFast_table2 > InitFastNcbi2naNcbi4na()
TSeqPos KeepNcbistdaa(CSeq_data *in_seq, TSeqPos uBeginIdx, TSeqPos uLength) const
CRef< CCode_rev > m_Ncbi4naRev
static CSeqportUtil_implementation & x_GetImplementation(void)
static TPair GetCodeIndexFromTo(CSeq_data::E_Choice code_type)
static TSeqPos Reverse(CSeq_data *in_seq, TSeqPos uBeginIdx=0, TSeqPos uLength=0)
static const string & GetName(CSeq_data::E_Choice code_type, TIndex idx)
static bool IsCodeAvailable(CSeq_data::E_Choice code_type)
static bool FastValidate(const CSeq_data &in_seq, TSeqPos uBeginIdx=0, TSeqPos uLength=0)
static TSeqPos Convert(const CSeq_data &in_seq, CSeq_data *out_seq, CSeq_data::E_Choice to_code, TSeqPos uBeginIdx=0, TSeqPos uLength=0, bool bAmbig=false, Uint4 seed=17734276)
static TIndex GetIndex(CSeq_data::E_Choice code_type, const string &code)
static TIndex GetIndexComplement(CSeq_data::E_Choice code_type, TIndex idx)
static TSeqPos ConvertWithBlastAmbig(const CSeq_data &in_seq, CSeq_data *out_seq, TSeqPos uBeginIdx, TSeqPos uLength, TSeqPos total_length, TSeqPos *out_seq_length, vector< Uint4 > *blast_ambig)
static TSeqPos GetAmbigs(const CSeq_data &in_seq, CSeq_data *out_seq, vector< TSeqPos > *out_indices, CSeq_data::E_Choice to_code=CSeq_data::e_Ncbi2na, TSeqPos uBeginIdx=0, TSeqPos uLength=0)
static TIndex GetMapToIndex(CSeq_data::E_Choice from_type, CSeq_data::E_Choice to_type, TIndex from_idx)
static TSeqPos GetCopy(const CSeq_data &in_seq, CSeq_data *out_seq, TSeqPos uBeginIdx=0, TSeqPos uLength=0)
static TSeqPos Complement(CSeq_data *in_seq, TSeqPos uBeginIdx=0, TSeqPos uLength=0)
static TSeqPos Keep(CSeq_data *in_seq, TSeqPos uBeginIdx=0, TSeqPos uLength=0)
static TSeqPos ReverseComplement(CSeq_data *in_seq, TSeqPos uBeginIdx=0, TSeqPos uLength=0)
static const string & GetCode(CSeq_data::E_Choice code_type, TIndex idx)
pair< TIndex, TIndex > TPair
static void Validate(const CSeq_data &in_seq, vector< TSeqPos > *badIdx, TSeqPos uBeginIdx=0, TSeqPos uLength=0)
static const string & GetIupacaa3(TIndex ncbistdaa)
static TSeqPos Pack(CSeq_data *in_seq, TSeqPos uLength=ncbi::numeric_limits< TSeqPos >::max())
static TSeqPos Append(CSeq_data *out_seq, const CSeq_data &in_seq1, TSeqPos uBeginIdx1, TSeqPos uLength1, const CSeq_data &in_seq2, TSeqPos uBeginIdx2, TSeqPos uLength2)
container_type::const_iterator const_iterator
static void chk(int check, const char *fmt,...)
static const char * str(char *buf, int n)
CRange< Position > Map(const CRange< Position > &target, const CRange< Position > &range)
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.
const TPrim & Get(void) const
@ eSerial_AsnText
ASN.1 text.
static CObjectIStream * Open(ESerialDataFormat format, CNcbiIstream &inStream, bool deleteInStream)
Create serial object reader and attach it to an input stream.
uint32_t Uint4
4-byte (32-bit) unsigned integer
Uint4 TValue
Type of the generated integer value and/or the seed value.
TValue GetRand(void)
Get the next random number in the interval [0..GetMax()] (inclusive)
void SetSeed(TValue seed)
Seed the random number generator with "seed".
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
NCBI_NS_STD::string::size_type SIZE_TYPE
list< CRef< C_E_Table > > TTable
list< CRef< CSeq_code_table > > TCodes
const TMaps & GetMaps(void) const
Get the Maps member data.
ESeq_code_type
sequence representations
const TCodes & GetCodes(void) const
Get the Codes member data.
@ eSeq_code_type_ncbi2na
2 bit nucleic acid code
@ eSeq_code_type_ncbistdaa
consecutive codes for std aas, 0-25
@ eSeq_code_type_ncbi4na
4 bit nucleic acid code
@ eSeq_code_type_ncbieaa
extended ASCII 1 letter aa codes
@ eSeq_code_type_ncbipaa
amino acid probabilities
@ eSeq_code_type_ncbi8aa
8 bit extended amino acid codes
@ eSeq_code_type_ncbi8na
8 bit extended nucleic acid code
@ eSeq_code_type_ncbipna
nucleic acid probabilities
@ eSeq_code_type_iupacaa3
3 letter code only for display
@ eSeq_code_type_iupacaa
IUPAC 1 letter amino acid code.
@ eSeq_code_type_iupacna
IUPAC 1 letter nuc acid code.
const TIupacaa & GetIupacaa(void) const
Get the variant data.
const TIupacna & GetIupacna(void) const
Get the variant data.
const TNcbipaa & GetNcbipaa(void) const
Get the variant data.
const TNcbi8aa & GetNcbi8aa(void) const
Get the variant data.
TNcbieaa & SetNcbieaa(void)
Select the variant.
E_Choice
Choice variants.
TIupacna & SetIupacna(void)
Select the variant.
const TNcbieaa & GetNcbieaa(void) const
Get the variant data.
const TNcbistdaa & GetNcbistdaa(void) const
Get the variant data.
TNcbistdaa & SetNcbistdaa(void)
Select the variant.
const TNcbi4na & GetNcbi4na(void) const
Get the variant data.
TNcbi2na & SetNcbi2na(void)
Select the variant.
const TNcbi2na & GetNcbi2na(void) const
Get the variant data.
TNcbi4na & SetNcbi4na(void)
Select the variant.
TIupacaa & SetIupacaa(void)
Select the variant.
virtual void Reset(void)
Reset the whole object.
E_Choice Which(void) const
Which variant is currently selected.
@ e_not_set
No variant selected.
@ e_Ncbipna
nucleic acid probabilities
@ e_Ncbieaa
extended ASCII 1 letter aa codes
@ e_Ncbistdaa
consecutive codes for std aas
@ e_Ncbi2na
2 bit nucleic acid code
@ e_Iupacna
IUPAC 1 letter nuc acid code.
@ e_Ncbipaa
amino acid probabilities
@ e_Ncbi8na
8 bit extended nucleic acid code
@ e_Ncbi4na
4 bit nucleic acid code
@ e_Iupacaa
IUPAC 1 letter amino acid code.
@ e_Ncbi8aa
8 bit extended amino acid codes
const struct ncbi::grid::netcache::search::fields::SIZE size
Static variables safety - create on demand, destroy on application termination.
static const unsigned int kNumCodes
static ESeq_code_type EChoiceToESeq(CSeq_data::E_Choice from_type)
static const char kAmbig4na[16]
static CSafeStatic< CSeqportUtil_implementation > sx_Implementation
static const bool kSymbol
static CSeqUtil::TCoding s_SeqDataToSeqUtil[]
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static bool ambig(char c)
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