vector<string> format_tokens;
64 ITERATE(vector<string>, iter, format_tokens) {
65 _ASSERT(m_FieldMap.count(*iter) > 0);
66x_AddFieldToShow(m_FieldMap[*iter]);
77vector<string> format_tokens;
80 if(format_tokens.empty())
83 ITERATE(vector<string>, iter, format_tokens) {
86 else if((*iter)[0] ==
'-') {
87 stringfield = (*iter).substr(1);
134 if(resolved.empty())
135 ERR_POST(
Warning<<
"Taxonomy name lookup from taxid requires installation of taxdb database with ftp://ftp.ncbi.nlm.nih.gov/blast/db/taxdb.tar.gz");
141 boolparse_local_ids)
393list<CRef<CBlast_def_line> >::const_iterator iter = defline.begin();
394 for(; iter != defline.end(); ++iter)
396 if(iter != defline.begin())
399 if((*iter)->IsSetTitle())
401 if((*iter)->GetTitle().empty())
426 if(defline.front()->IsSetTitle())
428 if(defline.front()->GetTitle().empty())
431 m_Ostream<< defline.front()->GetTitle();
484vector<string> title_tokens;
487 if(title_tokens.empty()){
490id_token = title_tokens[0];
495 if(obj_id.
IsStr())
496id_token = obj_id.
GetStr();
501obj_id->
SetStr(id_token);
504retval->
Assign(*sid_in);
526vector<CConstRef<objects::CSeq_id> > subject_id_list;
529subject_id_list.push_back(next_id);
545vector< CConstRef<CSeq_id> > original_seqids;
548original_seqids.clear();
550original_seqids.push_back(*
id);
552list<CRef<objects::CSeq_id> > next_seqid_list;
560list<CRef<objects::CSeq_id> > subject_id_list;
563subject_id_list.push_back(next_id);
576 if(name ==
"unclassified")
592 if((*itr)->IsSetTaxid()) {
656 for(;desc_s; ++desc_s) {
664 for(; desc; ++desc) {
725 if(align.
GetNamedScore(
"uniq_seq_percent_coverage", pct))
742 tmp= 100.0 *
len/(double) query_len;
753 const intkQueryRow = 0;
754 const intkSubjectRow = 1;
768 intscore = 0, sum_n = 0;
769 doublebit_score = .0, evalue = .0;
770list<TGi> use_this_gi;
772num_ident, use_this_gi);
776 boolbioseqs_found =
true;
793list<CRef<CSeq_id> > query_ids;
796query_ids.push_back(
id);
798bioseqs_found =
false;
833 if(setSubjectIds || setSubjectTaxInfo || setSubjectTaxInfoAll || setSubjectTitle ||
844 if(setSubjectIds || setSubjectTaxInfo || setSubjectTitle || setSubjectTaxInfoAll) {
850 if(setSubjectTaxInfoAll) {
853 if(setSubjectTaxInfo) {
856 if(setSubjectTitle) {
864list<CRef<CSeq_id> > subject_ids;
867subject_ids.push_back(
id);
869bioseqs_found =
false;
922 if(query_is_na && subject_is_na) {
926finalAln = densegAln;
951reversed_ds->
Assign(ds);
960 intalign_length = 0, num_gaps = 0, num_gap_opens = 0;
971 intnum_positives = 0;
995 stringbtop_string =
"";
1003 for(
unsigned int i= 0;
1011 if(num_matches > 0) {
1017 if(matrix && !matrix->
GetData().empty() &&
1024 if(num_matches > 0) {
1031 intq_start = 0, q_end = 0, s_start = 0, s_end = 0;
1037q_start = alnVec->
GetSeqStop(kQueryRow) + 1;
1055s_start = alnVec->
GetSeqStop(kSubjectRow) + 1;
1058s_end = alnVec->
GetSeqStop(kSubjectRow) + 1;
1071 intquery_frame = 1, subject_frame = 1;
1088 if((s_start - s_end) > 0 ) {
1093 SetCounts(num_ident, align_length, num_gaps, num_gap_opens, num_positives,
1094query_frame, subject_frame);
1149 m_Ostream<<
"subject acc.ver";
break;
1173 m_Ostream<<
"alignment length";
break;
1189 m_Ostream<<
"query/sbjct frames";
break;
1197 m_Ostream<<
"subject tax ids";
break;
1199 m_Ostream<<
"subject sci names";
break;
1201 m_Ostream<<
"subject com names";
break;
1203 m_Ostream<<
"subject blast names";
break;
1205 m_Ostream<<
"subject super kingdoms";
break;
1209 m_Ostream<<
"subject sci name";
break;
1211 m_Ostream<<
"subject com names";
break;
1213 m_Ostream<<
"subject blast name";
break;
1215 m_Ostream<<
"subject super kingdom";
break;
1223 m_Ostream<<
"% query coverage per subject";
break;
1225 m_Ostream<<
"% query coverage per uniq subject";
break;
1227 m_Ostream<<
"% query coverage per hsp";
break;
1269 const string& rid
,
1270 unsigned intiteration
,
1278 intnum_hits = align_set->
Get().size();
1279 if(num_hits != 0) {
1282 m_Ostream<<
"# "<< num_hits <<
" hits found"<<
"\n";
1291 unsigned intiteration,
1298 m_Ostream<<
"# Iteration: "<< iteration <<
"\n";
1300 const size_tkLineLength(0);
1301 const boolkHtmlFormat(
false);
1302 const boolkTabularFormat(
true);
1308kTabularFormat, rid);
1317kHtmlFormat, kTabularFormat);
1324 m_Ostream<<
"# BLAST processed "<< num_queries <<
" queries\n";
1330 stringtotal_bit_string, raw_score_string;
1333 m_BitScore, total_bit_string, raw_score_string);
1335 if((evalue >= 1.0e-180) && (evalue < 0.0009)){
1357 intpositives,
intquery_frame,
intsubject_frame)
1383list<string> field_names;
1387field_names.push_back((*iter).first);
1403list<ETabularField>::iterator iter;
1523 const string& program_version,
1526 const string& domain_sys,
1527 const string& rid
,
1528 unsigned intiteration
,
1533 m_Ostream<<
"# Domain classification requested: "<< domain_sys << endl;
1537 m_Ostream<<
"# Hit table (the first field indicates the chain type of the hit)"<< endl;
1538 intnum_hits = align_set->
Get().size();
1539 if(num_hits != 0) {
1542 m_Ostream<<
"# "<< num_hits <<
" hits found"<<
"\n";
1549 string& junction_seq,
const string& query_seq) {
1552 if(right_start <= left_stop) {
1553np_len = left_stop - right_start + 1;
1554np_start = right_start;
1556junction_seq =
"("+ query_seq.substr(np_start, np_len) +
")";
1560np_len = right_start - left_stop - 1;
1561junction_len = np_len;
1563np_start = left_stop + 1;
1564junction_seq = query_seq.substr(np_start, np_len);
1590 if((
int)qrange.
GetToOpen() < query_len) {
1603 if((
int)srange.
GetToOpen() < subject_len) {
1608 for(
size_t i=0;
i< starts.size();
i+=2) {
1610 if(starts[
i] >= 0 && starts[
i+ 1] >= 0) {
1613 else if(starts[
i] < 0) {
1614 if(lens[
i/2] < 10) {
1626 if((
int)qrange.
GetToOpen() < query_len) {
1639 if((
int)srange.
GetToOpen() < subject_len) {
1653 static string s_InsertGap(
const string& nuc_without_gap,
const string& nuc,
const string& prot,
chargap_char) {
1655 stringnew_prot (new_prot_size,
' ');
1658 inttotal_inserted_gap = 0;
1660 for(
int i= 0;
i< (
int)
nuc.size();
i++) {
1661 if(
nuc[
i] == gap_char) {
1666 intindex_new_prot = (
i+1)/3 - 1;
1667 intindex_original_prot = index_new_prot - total_inserted_gap;
1669 if(num_gaps == 3) {
1670 if(index_new_prot < (
int)new_prot.size()) {
1671total_inserted_gap ++;
1673 if(num_bases == 0) {
1674new_prot[index_new_prot] = gap_char;
1681}
else if(num_bases == 3) {
1683index_new_prot -= gap_hold;
1684 if(index_new_prot < (
int)new_prot.size() && index_original_prot < (
int)
prot.size()) {
1685new_prot[index_new_prot] =
prot[index_original_prot];
1688 for(
intj = 0; j < gap_hold; j++) {
1689 intposition = index_new_prot + 1 + j;
1690 if(position < (
int) new_prot.size()) {
1691new_prot[position] = gap_char;
1700 if((
int)nuc_without_gap.size()%3 > 0) {
1701 if(
prot.size() > nuc_without_gap.size()/3) {
1703new_prot[new_prot.size() - 1] =
prot[
prot.size() - 1];
1704}
else if(new_prot[new_prot.size() - 1] ==
' ') {
1705new_prot.pop_back();
1712 const string& aligned_query_string,
const string& aligned_germline_string,
1713 string& query_translation_string,
1714 string& germline_translation_string){
1716 if(annot->m_FrameInfo[0] >=0) {
1719 intquery_trans_offset = ((alnvec.
GetSeqStart(0) + 3) - annot->m_FrameInfo[0])%3;
1720 intquery_trans_start = query_trans_offset > 0?(3 - query_trans_offset):0;
1725gap_str.push_back(gap_char);
1727 for(
int i= query_trans_start;
i< (
int)aligned_vdj_query.size();
i=
i+ 3) {
1730 if(query_aln_pos < (
int)aligned_germline_string.size() &&
1731query_aln_pos< (
int)aligned_query_string.size() &&
1732aligned_germline_string[query_aln_pos] != gap_char &&
1733aligned_query_string[query_aln_pos] != gap_char){
1735 stringquery_translation_template = aligned_query_string.substr(query_aln_pos);
1740query_translation_string,
1743query_translation_string =
s_InsertGap(final_query_translation_template, query_translation_template, query_translation_string, gap_char);
1745 stringgermline_translation_template = aligned_germline_string.substr(query_aln_pos);
1751germline_translation_string,
1753germline_translation_string =
s_InsertGap(final_germline_translation_template, germline_translation_template, germline_translation_string, gap_char);
1787 doubleidentity = 0;
1805identity = ((double)num_ident)/length;
1808v_query_alignment =
query;
1809v_germline_alignment =
subject;
1811airr_data[
"v_sequence_alignment_aa"], airr_data[
"v_germline_alignment_aa"]);
1816 doubleidentity = 0;
1834identity = ((double)num_ident)/length;
1837d_query_alignment =
query;
1838d_germline_alignment =
subject;
1840airr_data[
"d_sequence_alignment_aa"], airr_data[
"d_germline_alignment_aa"]);
1846 doubleidentity = 0;
1864identity = ((double)num_ident)/length;
1867j_query_alignment =
query;
1868j_germline_alignment =
subject;
1870airr_data[
"j_sequence_alignment_aa"], airr_data[
"j_germline_alignment_aa"]);
1875airr_data[
"v_identity"] = v_identity_str;
1876airr_data[
"d_identity"] = d_identity_str;
1877airr_data[
"j_identity"] = j_identity_str;
1880airr_data[
"v_sequence_alignment"] = v_query_alignment;
1881airr_data[
"d_sequence_alignment"] = d_query_alignment;
1882airr_data[
"j_sequence_alignment"] = j_query_alignment;
1883airr_data[
"v_germline_alignment"] = v_germline_alignment;
1884airr_data[
"d_germline_alignment"] = d_germline_alignment;
1885airr_data[
"j_germline_alignment"] = j_germline_alignment;
1900airr_data[
"sequence_alignment"] = whole_query_alignment;
1912airr_data[
"germline_alignment"] +=
"N";
1919airr_data[
"germline_alignment"] += seq.substr(start_pos);
1928airr_data[
"germline_alignment"] +=
"N";
1935airr_data[
"germline_alignment"] += seq.substr(start_pos);
1946airr_data[
"germline_alignment"] +=
"N";
1953airr_data[
"germline_alignment"] += seq .substr(start_pos);
1963 doubleidentity = 0;
1981identity = ((double)num_ident)/length;
1984c_query_alignment =
query;
1985c_germline_alignment =
subject;
1987airr_data[
"c_sequence_alignment_aa"], airr_data[
"c_germline_alignment_aa"]);
1989airr_data[
"c_identity"] = c_identity_str;
1990airr_data[
"c_sequence_alignment"] = c_query_alignment;
1991airr_data[
"c_germline_alignment"] = c_germline_alignment;
1995 if(align_d && align_j) {
1999}
else if(align_j) {
2007 if(align_d && align_j) {
2010}
else if(align_j) {
2020airr_data[
"sequence_alignment_aa"], airr_data[
"germline_alignment_aa"]);
2029 map <string, string>locus_name = {{
"VH",
"IGH"}, {
"VK",
"IGK"}, {
"VL",
"IGL"}, {
"VB",
"TRB"},
2030{
"VD",
"TRD"}, {
"VA",
"TRA"}, {
"VG",
"TRG"}};
2032 boolfound_v =
false;
2033 boolfound_d =
false;
2034 boolfound_j =
false;
2035 boolfound_c =
false;
2041 if(align_result && !align_result.
Empty() && align_result->
IsSet() && align_result->
CanGet()) {
2044 if(annot->m_ChainType[index] ==
"V"&& !found_v) {
2048 if(annot->m_ChainType[index] ==
"D"&& !found_d) {
2051temp_align->
Assign(**iter);
2059 if(annot->m_ChainType[index] ==
"J"&& !found_j) {
2063 if(annot->m_ChainType[index] ==
"C"&& !found_c) {
2074 ITERATE(list<string>, iter, ig_opts->m_AirrField) {
2078 if(align_result && !align_result.
Empty() && align_result->
IsSet() && align_result->
CanGet() && !(align_result->
Get().empty())) {
2081 constlist<CRef<CSeq_id> > query_seqid =
GetQueryId();
2086 if(annot->m_FrameInfo[0] >= 0) {
2087 stringseq_data(
m_Query, annot->m_FrameInfo[0],
m_Query.length() - annot->m_FrameInfo[0]);
2096 if(locus_name.
find(annot->m_ChainTypeToShow) != locus_name.
end()) {
2097 m_AirrData[
"locus"] = locus_name[annot->m_ChainTypeToShow];
2162 doublev_evalue = 0;
2163 doubled_evalue = 0;
2164 doublej_evalue = 0;
2165 doublec_evalue = 0;
2249 if(annot->m_DframeStart > 0 && annot->m_FrameInfo[2] > 0) {
2255 if(annot->m_FrameInfo[2] >= query_d_start) {
2256 intd_frame_used = ((annot->m_FrameInfo[2] - query_d_start)%3 + query_d_frame_start)%3;
2286query_length > query_J_stop + 1))) {
2321 if(
m_IgDomains[
i]->name.find(
"FR1") != string::npos) {
2326 if(
m_IgDomains[
i]->name.find(
"CDR1") != string::npos) {
2330 if(
m_IgDomains[
i]->name.find(
"FR2") != string::npos) {
2335 if(
m_IgDomains[
i]->name.find(
"CDR2") != string::npos) {
2339 if(
m_IgDomains[
i]->name.find(
"FR3") != string::npos && annot->m_DomainInfo[9] >=0) {
2364 constlist<CRef<CSeq_id> > query_seqid =
GetQueryId();
2381 const string& program_version,
2384 const string& domain_sys,
2386 unsigned intiteration,
2390 boolprint_airr_format_header,
2395 if(print_airr_format_header) {
2397 ITERATE(list<string>, iter, ig_opts->m_AirrField) {
2408 ITERATE(list<string>, iter, ig_opts->m_AirrField) {
2422 const string& chain_type,
2423 const string& master_chain_type_to_show,
2436retval =
SetFields(align, scope, chain_type, master_chain_type_to_show, matrix);
2445 const string& chain_type,
2446 const string& master_chain_type_to_show,
2474 intcoding_frame_offset = (
m_Fwr4Start- annot->m_FrameInfo[0])%3;
2476 stringfwr4_seq_for_translatioin =
m_Fwr4Seq.substr(coding_frame_offset>0?(3-coding_frame_offset):0);
2488 intcoding_frame_offset = (
m_Cdr3Start- annot->m_FrameInfo[0])%3;
2490 stringcdr3_seq_for_translatioin =
m_Cdr3Seq.substr(coding_frame_offset>0?(3-coding_frame_offset):0);
2499(
int)(query_length - airrcdr3start)));
2501 stringairr_cdr3_seq_for_translatioin =
m_AirrCdr3Seq.substr(coding_frame_offset>0?(3-coding_frame_offset):0);
2513 static void SetCdrFwrSeq(
const string& nuc_seq,
string& translated_seq,
boolis_first_domain,
intregion_start,
intframe_start,
2514 string& next_trans_addition,
bool& next_trans_substract,
stringextra_from_next_region) {
2517 if(is_first_domain) {
2519 intcoding_frame_offset = ((region_start%3 + 3) - frame_start%3)%3;;
2520 intstart_pos = coding_frame_offset>0?(3-coding_frame_offset):0;
2522 if(start_pos < (
int)nuc_seq.size()){
2523seq_for_translatioin = nuc_seq.substr(start_pos);
2526seq_for_translatioin = next_trans_addition + nuc_seq;
2529 if(next_trans_substract) {
2530seq_for_translatioin.erase(0, 1);
2531next_trans_substract =
false;
2533 intnext_trans_offset = seq_for_translatioin.length()%3;
2534 if(next_trans_offset == 2) {
2535seq_for_translatioin = seq_for_translatioin + extra_from_next_region;;
2536next_trans_substract =
true;
2537}
else if(next_trans_offset == 1) {
2538next_trans_addition = seq_for_translatioin.substr(seq_for_translatioin.length() - next_trans_offset);
2539seq_for_translatioin = seq_for_translatioin.substr(0, seq_for_translatioin.length() - next_trans_offset);
2557 if(align_result && !align_result.
Empty() && align_result->
IsSet() && align_result->
CanGet()) {
2575 if(annot->m_ChainType[index] ==
"V"|| annot->m_ChainType[index] ==
"D"|| annot->m_ChainType[index] ==
"J") {
2583 boolis_protein = ig_opts->m_IsProtein;
2588 SetVGene(annot->m_TopGeneIds[0], annot->m_GeneInfo[0], annot->m_GeneInfo[1]);
2589 SetDGene(annot->m_TopGeneIds[1], annot->m_GeneInfo[2], annot->m_GeneInfo[3]);
2590 SetJGene(annot->m_TopGeneIds[2], annot->m_GeneInfo[4], annot->m_GeneInfo[5]);
2591 SetCGene(annot->m_TopGeneIds[3], annot->m_GeneInfo[6], annot->m_GeneInfo[7]);
2596 if(annot->m_FrameInfo[1] >= 0 && annot->m_FrameInfo[2] >= 0) {
2597 intoff = annot->m_FrameInfo[1];
2598 int len= annot->m_FrameInfo[2] - off;
2601 if(annot->m_FrameInfo[0] >= 0) {
2602 m_VFrameShift= (annot->m_FrameInfo[1] - annot->m_FrameInfo[0])%3 == 0 ?
"No":
"Yes";
2605 if(
len% 3 == 0) {
2609 if(seq_trans.find(
'*') != string::npos) {
2625 if(annot->m_FrameInfo[0] >= 0) {
2626 intv_start = annot->m_FrameInfo[0];
2627 intv_j_length =
max(
max(annot->m_GeneInfo[5], annot->m_GeneInfo[3]), annot->m_GeneInfo[1]) - annot->m_FrameInfo[0];
2629 stringseq_data(
m_Query, v_start, v_j_length);
2634 if(seq_trans.find(
'*') == string::npos) {
2660 AddIgDomain((ig_opts->m_DomainSystem ==
"kabat")?
"FR1":
"FR1-IMGT",
2661annot->m_DomainInfo[0], annot->m_DomainInfo[1]+1,
2662annot->m_DomainInfo_S[0], annot->m_DomainInfo_S[1]+1);
2663 AddIgDomain((ig_opts->m_DomainSystem ==
"kabat")?
"CDR1":
"CDR1-IMGT",
2664annot->m_DomainInfo[2], annot->m_DomainInfo[3]+1,
2665annot->m_DomainInfo_S[2], annot->m_DomainInfo_S[3]+1);
2666 AddIgDomain((ig_opts->m_DomainSystem ==
"kabat")?
"FR2":
"FR2-IMGT",
2667annot->m_DomainInfo[4], annot->m_DomainInfo[5]+1,
2668annot->m_DomainInfo_S[4], annot->m_DomainInfo_S[5]+1);
2669 AddIgDomain((ig_opts->m_DomainSystem ==
"kabat")?
"CDR2":
"CDR2-IMGT",
2670annot->m_DomainInfo[6], annot->m_DomainInfo[7]+1,
2671annot->m_DomainInfo_S[6], annot->m_DomainInfo_S[7]+1);
2672 AddIgDomain((ig_opts->m_DomainSystem ==
"kabat")?
"FR3":
"FR3-IMGT",
2673annot->m_DomainInfo[8], annot->m_DomainInfo[9]+1,
2674annot->m_DomainInfo_S[8], annot->m_DomainInfo_S[9]+1);
2675 AddIgDomain((ig_opts->m_DomainSystem ==
"kabat")?
"CDR3 (V gene only)":
"CDR3-IMGT (germline)",
2676annot->m_DomainInfo[10], annot->m_DomainInfo[11]+1);
2690 boolis_first_domain =
true;
2691 boolnext_trans_substract =
false;
2694 if(
m_IgDomains[
i]->name.find(
"FR1") != string::npos) {
2697next_trans_addition, next_trans_substract,
2700is_first_domain =
false;
2703 if(
m_IgDomains[
i]->name.find(
"CDR1") != string::npos) {
2706next_trans_addition, next_trans_substract,
2708is_first_domain =
false;
2711 if(
m_IgDomains[
i]->name.find(
"FR2") != string::npos) {
2714next_trans_addition, next_trans_substract,
2716is_first_domain =
false;
2718 if(
m_IgDomains[
i]->name.find(
"CDR2") != string::npos) {
2722next_trans_addition, next_trans_substract,
2725is_first_domain =
false;
2727 if(
m_IgDomains[
i]->name.find(
"FR3") != string::npos) {
2728 if(annot->m_DomainInfo[9] >=0) {
2752 m_Ostream<< header <<
"Note that your query represents the minus strand " 2753<<
"of a V gene and has been converted to the plus strand. " 2754<<
"The sequence positions refer to the converted sequence. "<< endl << endl;
2756 m_Ostream<< header <<
"V-(D)-J rearrangement summary for query sequence ";
2761 if(ig_opts->m_Db[4]) {
2764 m_Ostream<<
"Chain type, stop codon, ";
2765 m_Ostream<<
"V-J frame, Productive, Strand, V Frame shift). ";
2766 m_Ostream<<
"Multiple equivalent top matches, if present, are separated by a comma."<< endl;
2771 if(ig_opts->m_Db[4]) {
2792 if(!length)
return;
2794 m_Ostream<< header <<
"Alignment summary between query and top germline V gene hit ";
2795 m_Ostream<<
"(from, to, length, matches, mismatches, gaps, percent identity)"<< endl;
2798 intnum_mismatch = 0;
2824 m_Ostream<<
"<br>Note that your query represents the minus strand " 2825<<
"of a V gene and has been converted to the plus strand. " 2826<<
"The sequence positions refer to the converted sequence.\n\n";
2828 m_Ostream<<
"<br>V-(D)-J rearrangement summary for query sequence (multiple equivalent top matches, if present, are separated by a comma):\n";
2830 m_Ostream<<
"<tr><td>Top V gene match</td>";
2833 m_Ostream<<
"<td>Top D gene match</td>";
2835 m_Ostream<<
"<td>Top J gene match</td>";
2836 if(ig_opts->m_Db[4]) {
2837 m_Ostream<<
"<td>Top C gene match</td>";
2840<<
"<td>stop codon</td>" 2841<<
"<td>V-J frame</td>" 2842<<
"<td>Productive</td>" 2843<<
"<td>Strand</td>" 2844<<
"<td>V frame shift</td></tr>\n";
2852 if(ig_opts->m_Db[4]) {
2868<<
"</td></tr></table>\n";
2878 if(!length)
return;
2880 m_Ostream<<
"<br>Alignment summary between query and top germline V gene hit:\n";
2882 m_Ostream<<
"<tr><td> </td><td> from </td><td> to </td><td> length </td>" 2883<<
"<td> matches </td><td> mismatches </td><td> gaps </td>" 2884<<
"<td> identity(%) </td></tr>\n";
2887 intnum_mismatch = 0;
2897 m_Ostream<<
"<tr><td> Total </td><td> </td><td> </td><td> "<< length
2898<<
" </td><td> "<< num_match
2899<<
" </td><td> "<< num_mismatch
2900<<
" </td><td> "<< num_gap
2901<<
" </td><td> "<< std::setprecision(3) << num_match*100.0/length
2946 const boolisOverlap = (start > end);
2948 if(start <0 || end <0 || start==end) {
2964 for(
intpos = start; pos < end; ++pos) {
2974 intb0, b1, b2, b3, b4, b5;
3013 m_Ostream<<
"<br>V-(D)-J junction details based on top germline gene matches:\n";
3015 m_Ostream<<
"<tr><td>V region end</td>";
3019<<
"<td>D region</td>" 3020<<
"<td>D-J junction*</td>";
3024 m_Ostream<<
"<td>J region start</td></tr>\n<tr>";
3026 m_Ostream<< header <<
"V-(D)-J junction details based on top germline gene matches (V end, ";
3030 m_Ostream<<
"J start). Note that possible overlapping nucleotides at VDJ junction (i.e, nucleotides that could be assigned to either rearranging gene) are indicated in parentheses (i.e., (TACT)) but" 3031<<
" are not included under the V, D, or J gene itself"<< endl;
3047 m_Ostream<<
"*: Overlapping nucleotides may exist" 3048<<
" at V-D-J junction (i.e, nucleotides that could be assigned \nto either rearranging gene). " 3049<<
" Such nucleotides are indicated inside a parenthesis (i.e., (TACAT))\n" 3050<<
" but are not included under the V, D or J gene itself.\n";
3057 m_Ostream<<
"Sub-region sequence details:\n";
3059 m_Ostream<<
"<tr><td> </td><td>Nucleotide sequence</td>";
3064 m_Ostream<< header <<
"Sub-region sequence details (nucleotide sequence, translation, start, end)"<< endl;
3096 intq_pos = 0, s_pos = 0;
3139 if(domain.
length> 0) {
3148<< std::setprecision(3)
3164<<
"<td> "<< domain.
start+1 <<
" </td>" 3165<<
"<td> "<< domain.
end<<
" </td>";
3166 if(domain.
length> 0) {
3168<<
"<td> "<< domain.
num_match<<
" </td>" 3170<<
"<td> "<< domain.
num_gap<<
" </td>" 3171<<
"<td> "<< std::setprecision(3)
3174 m_Ostream<<
"<td> </td><td> </td><td> </td><td> </td></tr>\n";
User-defined methods of the data storage class.
Declares class to display one-line descriptions at the top of the BLAST report.
Formatting of pairwise sequence alignments in tabular form.
static void AcknowledgeBlastQuery(const objects::CBioseq &cbs, size_t line_len, CNcbiOstream &out, bool believe_query, bool html, bool tabular=false, const string &rid=kEmptyStr)
Print out blast query info.
static void GetAlnScores(const objects::CSeq_align &aln, int &score, double &bits, double &evalue, int &sum_n, int &num_ident, list< TGi > &use_this_gi)
Extract score info from blast alingment.
static void GetScoreString(double evalue, double bit_score, double total_bit_score, int raw_score, string &evalue_str, string &bit_score_str, string &total_bit_score_str, string &raw_score_str)
format evalue and bit_score
static CRef< objects::CSeq_align > CreateDensegFromDendiag(const objects::CSeq_align &aln)
Create denseseg representation for densediag seqalign.
static void GetAlignLengths(objects::CAlnVec &salv, int &align_length, int &num_gaps, int &num_gap_opens)
Count alignment length, number of gap openings and total number of gaps in a single alignment.
static int GetFrame(int start, objects::ENa_strand strand, const objects::CBioseq_Handle &handle)
return the frame for a given strand Note that start is zero bases.
static string GetTitle(const objects::CBioseq_Handle &bh)
static void AcknowledgeBlastSubject(const objects::CBioseq &cbs, size_t line_len, CNcbiOstream &out, bool believe_query, bool html, bool tabular=false)
Print out blast subject info.
TSignedSeqPos GetAlnPosFromSeqPos(TNumrow row, TSeqPos seq_pos, ESearchDirection dir=eNone, bool try_reverse_dir=true) const
TSignedSeqPos GetSeqAlnStart(TNumrow row) const
TSeqPos GetSeqStop(TNumrow row) const
TSignedSeqPos GetSeqAlnStop(TNumrow row) const
TSeqPos GetSeqStart(TNumrow row) const
void Add(const CDense_seg &ds, TAddFlags flags=0)
void Merge(TMergeFlags flags=0)
const CDense_seg & GetDenseg(void) const
TResidue GetGapChar(TNumrow row) const
string & GetSeqString(string &buffer, TNumrow row, TSeqPos seq_from, TSeqPos seq_to) const
void SetGapChar(TResidue gap_char)
string & GetWholeAlnSeqString(TNumrow row, string &buffer, TSeqPosList *insert_aln_starts=0, TSeqPosList *insert_starts=0, TSeqPosList *insert_lens=0, unsigned int scrn_width=0, TSeqPosList *scrn_lefts=0, TSeqPosList *scrn_rights=0) const
void SetAaCoding(TCoding coding)
CSeqVector::TResidue TResidue
void SetGenCode(int gen_code, TNumrow row=-1)
Class containing information needed for tabular formatting of BLAST results.
ESeqIdType
In what form should the sequence identifiers be shown?
@ eAccession
Show only best accession.
@ eFullId
Show full seq-id, with multiple ids concatenated.
@ eAccVersion
Show only best accession.version.
list< CRef< objects::CSeq_id > > m_QueryId
List of query ids for this HSP.
string m_BitScore
Bit score of this HSP, in appropriate format.
void x_PrintSubjectTaxIds()
Print subject tax info.
void x_PrintSubjectAccessionVersion(void)
Print subject accession.version.
void x_PrintSubjectBlastName()
void SetParseSubjectDefline(bool val)
Should subject deflien be parsed for id or not?
void x_PrintSubjectSeq(void)
Print aligned part of subject sequence.
void x_PrintQueryLength()
Print the query sequence length.
void x_PrintSubjectCommonName()
void x_PrintSubjectAllAccessions(void)
Print all accessions associated with this subject, separated by ';'.
void x_PrintSubjectSciName()
void x_PrintNumIdentical(void)
Print number of identical matches.
map< string, ETabularField > m_FieldMap
Map of field enum values to field names.
void x_SetTaxInfo(const objects::CBioseq_Handle &handle, const CRef< objects::CBlast_def_line_set > &bdlRef)
void x_PrintSubjectEnd(void)
Print subject end.
pair< string, int > m_QueryCovUniqSubject
void x_PrintSeqalignCoverage()
void x_PrintSubjectTitle()
void x_PrintGapOpenings(void)
Print number of gap openings.
void SetBTOP(string btop_string)
Sets the Blast-traceback-operations string.
void PrintNumProcessed(int num_queries)
Prints number of queries processed.
set< string > m_SubjectSuperKingdoms
void x_PrintSubjectAllSeqIds(void)
Print all Seq-ids associated with this subject, separated by ';'.
int m_AlignLength
Alignment length of this HSP.
set< string > m_SubjectBlastNames
bool m_ParseSubjectDefline
Parse subejct defline?
void x_AddFieldToShow(ETabularField field)
Add a field to the list of fields to show, if it is not yet present in the list of fields.
void x_PrintSubjectTaxId()
void x_PrintSubjectSuperKingdom()
string m_SubjectBlastName
EFieldDelimiter
What delimiter to use between fields in each row of the tabular output.
int m_SubjectStart
Starting offset in subject.
void PrintFieldSpecs(void)
Print field specifiers of all requested fields.
void x_PrintPercentIdentical(void)
Print percent of identical matches.
CBlastTabularInfo(CNcbiOstream &ostr, const string &format=kDfltArgTabularOutputFmt, EFieldDelimiter delim=eTab, bool parse_local_ids=false)
Constructor.
void x_PrintScore(void)
Print raw score.
void x_PrintQueryStart(void)
Print query start.
void x_PrintBitScore(void)
Print bit score.
TSeqPos m_SubjectLength
Length of subject sequence.
void x_PrintGaps(void)
Print total number of gaps.
void x_PrintNumPositives(void)
Print number of positive matches.
int m_SubjectEnd
Ending offset in subject.
string m_SubjectSuperKingdom
string m_SubjectSeq
Aligned part of the subject sequence.
void x_SetTaxInfoAll(const objects::CBioseq_Handle &handle, const CRef< objects::CBlast_def_line_set > &bdlRef)
void SetEndpoints(int q_start, int q_end, int s_start, int s_end)
Set the HSP endpoints.
void SetSubjectId(list< CRef< objects::CSeq_id > > &id)
Set subject id from a objects::CSeq_id.
void x_PrintQuerySeqId(void) const
Print query Seq-id.
void x_SetQueryCovUniqSubject(const objects::CSeq_align &align)
CNcbiOstream & m_Ostream
Stream to write output to.
CRef< CBlast_def_line_set > m_SubjectDefline
void PrintFieldNames(bool is_csv=false)
Print the names of all supported fields.
void SetParseLocalIds(bool val)
Should local IDs be parsed or not?
void x_PrintSubjectStart(void)
Print subject start.
int m_QueryEnd
Ending offset in query.
int m_SubjectFrame
subject frame
int m_NumGapOpens
Number of gap openings in this HSP.
vector< string > m_SubjectCommonNames
pair< string, int > m_QueryCovSubject
void x_PrintSubjectLength()
Print the subject sequence length.
list< ETabularField > m_FieldsToShow
Which fields to show?
void x_PrintSubjectCommonNames()
virtual void Print(void)
Print one line of tabular output.
void x_PrintSubjectCoverage()
int SetFields(const objects::CSeq_align &sal, objects::CScope &scope, CNcbiMatrix< int > *matrix=0)
Set all member fields, given a Seq-align.
bool m_ParseLocalIds
Should the query deflines be parsed for local IDs?
void x_PrintUniqSubjectCoverage()
void x_PrintEvalue(void)
Print e-value.
void x_PrintMismatches(void)
Print number of mismatches.
void x_PrintSubjectStrand()
void SetNoFetch(bool nofetch)
Avoid fetching sequence (if possible) If the sequence is needed (e.g., will be formatted,...
void x_PrintSubjectAccession(void)
Print subject accession.
list< string > GetAllFieldNames(void)
Return all field names supported in the format string.
void x_PrintPercentPositives()
Print percent positives.
void x_PrintSubjectSeqId(void)
Print subject Seq-id.
vector< list< CRef< objects::CSeq_id > > > m_SubjectIds
All subject sequence ids for this HSP.
string m_FieldDelimiter
Delimiter character for fields to print.
bool GetNoFetch()
Avoid fetch of sequence if true returned.
const list< CRef< CSeq_id > > & GetQueryId() const
Get query seqid list.
set< TTaxId > m_SubjectTaxIds
Blast-traceback-operations.
void x_PrintSubjectSciNames()
bool x_IsFieldRequested(ETabularField field)
int m_NumPositives
Number of positives in this HSP.
void x_PrintField(ETabularField field)
Print the value of a given field.
void x_PrintSubjectSuperKingdoms()
bool x_IsCsv() const
Convenience method to determine if this object is dealing with CSV output formats.
void x_AddDefaultFieldsToShow(void)
Add a default set of fields to show.
void x_PrintSubjectAllGis(void)
Print all gis associated with this subject, separated by ';'.
int m_QueryStart
Starting offset in query.
~CBlastTabularInfo()
Destructor.
void SetQueryId(list< CRef< objects::CSeq_id > > &id)
Set query id from a objects::CSeq_id.
void x_PrintQuerySeq(void)
Print aligned part of query sequence.
void x_PrintSubjectFrame()
void x_PrintFrames()
Print frames.
void x_ResetFields(void)
Reset values of all fields.
void x_PrintQueryAndDbNames(const string &program, const objects::CBioseq &bioseq, const string &dbname, const string &rid, unsigned int iteration, CConstRef< objects::CBioseq > subj_bioseq)
Print query and database names.
void x_PrintAlignmentLength(void)
Print alignment length.
int m_Score
Raw score of this HSP.
void x_SetFieldsToShow(const string &format)
Set fields to show, given an output format string.
void PrintHeader(const string &program, const objects::CBioseq &bioseq, const string &dbname, const string &rid=kEmptyStr, unsigned int iteration=numeric_limits< unsigned int >::max(), const objects::CSeq_align_set *align_set=0, CConstRef< objects::CBioseq > subj_bioseq=CConstRef< objects::CBioseq >(), bool is_csv=false)
Print the tabular output header.
vector< string > m_SubjectSciNames
void x_PrintQueryGi(void)
Print query gi.
void x_DeleteFieldToShow(ETabularField field)
Delete a field from the list of fields to show.
void x_SetFieldDelimiter(EFieldDelimiter delim, string customDelim="")
Set the tabular fields delimiter.
void x_PrintQueryAccession(void)
Print query accession.
int m_QueryFrame
query frame
void x_PrintSubjectAllTitles()
void x_PrintSubjectBlastNames()
list< CRef< objects::CSeq_id > > m_SubjectId
string m_SubjectCommonName
void x_PrintQueryAccessionVersion(void)
Print query accession.version.
void x_SetQueryCovSeqalign(const CSeq_align &align, int query_len)
void SetScores(int score, double bit_score, double evalue)
Set the HSP scores.
void x_PrintQueryEnd(void)
Print query end.
void x_PrintSubjectGi(void)
Print subject gi.
int m_NumGaps
Total number of gaps in this HSP.
int m_NumIdent
Number of identities in this HSP.
void SetCounts(int num_ident, int length, int gaps, int gap_opens, int positives=0, int query_frame=1, int subject_frame=1)
Set various counts/lengths.
void x_SetSubjectIds(const objects::CBioseq_Handle &bh, const CRef< objects::CBlast_def_line_set > &bdlRef)
void x_SetQueryCovSubject(const objects::CSeq_align &align)
string m_QuerySeq
Aligned part of the query sequence.
string m_Evalue
E-value of this HSP, in appropriate format.
TSeqPos m_QueryLength
Length of query sequence.
ENa_strand GetSeqStrand(TDim row) const
void Reverse(void)
Reverse the segments' orientation.
void Assign(const CSerialObject &obj, ESerialRecursionMode how=eRecursive)
overloaded Assign()
void x_ComputeIgDomain(SIgDomain &domain)
void PrintMasterAlign(const CConstRef< blast::CIgBlastOptions > &ig_opts, const string &header="# ") const
Print domain information.
void SetMinusStrand(bool minus=true)
Set strand information.
vector< SIgDomain * > m_IgDomains
string m_OtherInfo[num_otherinfo]
map< string, string > m_AirrData
CRef< CSeq_align > m_TopAlign_V
void x_PrintIgDomain(const SIgDomain &domain) const
void SetSeqType(bool isNucl)
Set sequence type.
void SetJGene(const string &id, int s, int e)
Set gene info.
int SetFields(const objects::CSeq_align &align, objects::CScope &scope, const string &chain_type, const string &master_chain_type_to_show, CNcbiMatrix< int > *matrix=0)
Set fields for all other alignments.
void SetDGene(const string &id, int s, int e)
Set gene info.
void x_PrintIgGenes(bool isHtml=false, const string &header="# ") const
void PrintHeader(const CConstRef< blast::CIgBlastOptions > &ig_opts, const string &program, const objects::CBioseq &bioseq, const string &dbname, const string &domain_sys, const string &rid=kEmptyStr, unsigned int iteration=numeric_limits< unsigned int >::max(), const objects::CSeq_align_set *align_set=0, CConstRef< objects::CBioseq > subj_bioseq=CConstRef< objects::CBioseq >())
virtual void Print(void)
Override the print method.
void AddIgDomain(const string &name, int start, int end, int s_start=-1, int s_end=-1)
Set domain info.
void SetFrame(const string &frame="N/A")
Set out-of-frame information.
void SetCGene(const string &id, int s, int e)
Set gene info.
CRef< CSeq_align > m_TopAlign_J
void SetIgAnnotation(const CRef< blast::CIgAnnotation > &annot, const CConstRef< blast::CIgBlastOptions > &ig_opts, CConstRef< CSeq_align_set > &align_result, CScope &scope)
One method to set all annotation information.
void SetIgCDR3FWR4Annotation(const CRef< blast::CIgAnnotation > &annot)
method to set cdr3 and fwr4 annotation information
CRef< CSeq_align > m_TopAlign_D
int SetMasterFields(const objects::CSeq_align &align, objects::CScope &scope, const string &chain_type, const string &master_chain_type_to_show, CNcbiMatrix< int > *matrix=0)
Set fields for master alignment.
CRef< CSeq_align > m_TopAlign_C
void SetVGene(const string &id, int s, int e)
Set gene info.
void PrintHtmlSummary(const CConstRef< blast::CIgBlastOptions > &ig_opts) const
Print Html style summary.
static const int num_otherinfo
void x_PrintIgDomainHtml(const SIgDomain &domain) const
void SetAirrFormatData(CScope &scope, const CRef< blast::CIgAnnotation > &annot, const CBioseq_Handle &query_handle, CConstRef< CSeq_align_set > align_result, const CConstRef< blast::CIgBlastOptions > &ig_opts)
void x_PrintPartialQuery(int start, int end, bool isHtml=false) const
string m_AirrCdr3SeqTrans
void PrintAirrRearrangement(CScope &scope, const CRef< blast::CIgAnnotation > &annot, const string &program_version, const CBioseq &query_bioseq, const string &dbname, const string &domain_sys, const string &rid, unsigned int iteration, const CSeq_align_set *align_set, CConstRef< CBioseq > subj_bioseq, CNcbiMatrix< int > *matrix, bool print_airr_format_header, const CConstRef< blast::CIgBlastOptions > &ig_opts)
string m_MasterChainTypeToShow
TData & GetData()
retrieve the data associated with this matrix
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
static void GetTaxInfo(TTaxId taxid, SSeqDBTaxInfo &info)
Get taxonomy information.
static CRef< CBlast_def_line_set > ExtractBlastDefline(const CBioseq &bioseq)
Extract a Blast-def-line-set object from a Bioseq retrieved by CSeqDB.
CRef< CSeq_align > CreateTranslatedDensegFromNADenseg(void) const
Create a Dense-seg with widths from Dense-seg of nucleotides Used by AlnMgr to handle translated nucl...
CRef< CSeq_align > CreateDensegFromStdseg(SSeqIdChooser *SeqIdChooser=0) const
---------------------------------------------------------------------------- PRE : the Seq-align has ...
void Reverse(void)
Reverse the segments' orientation NOTE: currently *only* works for dense-seg.
CRange< TSeqPos > GetSeqRange(TDim row) const
GetSeqRange NB: On a Spliced-seg, in case the product-type is protein, these only return the amin par...
TSeqPos GetSeqStop(TDim row) const
const CSeq_id & GetSeq_id(TDim row) const
Get seq-id (the first one if segments have different ids).
bool GetNamedScore(const string &id, int &score) const
Get score.
TSeqPos GetSeqStart(TDim row) const
ENa_strand GetSeqStrand(TDim row) const
Get strand (the first one if segments have different strands).
static void GetSeqIdList(const objects::CBioseq_Handle &bh, list< CRef< objects::CSeq_id > > &ids)
Converts a Bioseq handle's sequence id type into a list of objects::CSeq_id references,...
static string GetSeqIdListString(const list< CRef< objects::CSeq_id > > &id, bool show_gi)
Creates a '|' delimited string, corresponding to a list of Seq-ids.
@ eRight
Towards higher aln coord (always to the right)
const_iterator begin() const
const_iterator end() const
iterator_bool insert(const value_type &val)
const_iterator find(const key_type &key) const
iterator_bool insert(const value_type &val)
const_iterator begin() const
const_iterator end() const
ETabularField
Enumeration for all fields that are supported in the tabular output.
@ eAlignmentLength
Alignment length.
@ eSubjectEnd
End of alignment in subject.
@ eSubjectAllAccessions
All subject accessions, separated by ';'.
@ eQueryCovSubject
Query Coverage per Subject.
@ ePositives
Number of positive-scoring matches.
@ eSubjectAllGis
All subject gis.
@ eSubjectSciName
Subject Scientific Name.
@ eSubjFrame
Subject frame.
@ eSubjectSeq
Aligned part of subject sequence.
@ eQueryStart
Start of alignment in query.
@ eSubjectTaxIds
Subject Tax IDs.
@ eQueryEnd
End of alignment in query.
@ eSubjectCommonNames
Subject Common Names.
@ eQueryAccession
Query accession.
@ eSubjectLength
Subject sequence length.
@ eSubjectSeqId
Subject Seq-id(s)
@ eQueryAccessionVersion
Query accession.version.
@ eGapOpenings
Number of gap openings.
@ eQuerySeqId
Query Seq-id(s)
@ eSubjectAccession
Subject accession.
@ ePercentPositives
Percentage of positive-scoring matches.
@ eSubjectBlastName
Subject Blast Name.
@ eNumIdentical
Number of identical matches.
@ eSubjectAllSeqIds
If multiple redundant sequences, all sets of subject Seq-ids, separated by ';'.
@ eMismatches
Number of mismatches.
@ eSubjectStrand
Subject Strand.
@ eSubjectBlastNames
Subject Blast Names.
@ eQueryCovUniqSubject
Query Coverage per Subject.
@ ePercentIdentical
Percentage of identical matches.
@ eSubjectSciNames
Subject Scientific Names.
@ eSubjectTitle
Only the first subject defline.
@ eSubjectSuperKingdoms
Subject Super Kingdoms.
@ eQuerySeq
Aligned part of query sequence.
@ eSubjectTaxId
Subject Tax ID.
@ eSubjectStart
Start of alignment in subject.
@ eSubjAccessionVersion
Subject accession.version.
@ eSubjectSuperKingdom
Subject Super Kingdom.
@ eSubjectAllTitles
All subject deflines.
@ eGaps
Total number of gaps.
@ eBTOP
BLAST traceback operations.
@ eQueryFrame
Query frame.
@ eQueryLength
Query sequence length.
@ eQueryCovSeqalign
Query Coverage per Seqalign.
@ eSubjectCommonName
Subject Common Name.
const char * kDfltArgTabularOutputFmtTag
Tag/keyword which is equivalent to using kDfltArgTabularOutputFmt.
const char * kDfltArgTabularOutputFmt
Default value for tabular and comma-separated value output formats.
const size_t kNumTabularOutputFormatSpecifiers
Number of elements in the sc_FormatSpecifiers array.
const SFormatSpec sc_FormatSpecifiers[]
Array containing the supported output formats for tabular output.
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
static SQLCHAR output[256]
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
SStrictId_Tax::TId TTaxId
Taxon id type.
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
void Warning(CExceptionArgs_Base &args)
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
const string AsFastaString(void) const
TGi FindGi(const container &ids)
Return gi from id list if exists, return 0 otherwise.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Optimized implementation of CSerialObject::Assign, which is not so efficient.
void GetLabel(string *label, ELabelType type=eDefault, TLabelFlags flags=fLabel_Default) const
Append a label for this Seq-id to the supplied string.
static int WorstRank(const CRef< CSeq_id > &id)
static int Score(const CRef< CSeq_id > &id)
Wrappers for use with FindBestChoice from <corelib/ncbiutil.hpp>
@ fLabel_Version
Show the version.
@ eContent
Untagged human-readable accession or the like.
TSeqPos GetLength(const CSeq_id &id, CScope *scope)
Get sequence length if scope not null, else return max possible TSeqPos.
TTaxId GetTaxId(const CBioseq_Handle &handle)
return the tax-id associated with a given sequence.
static void Translate(const string &seq, string &prot, const CGenetic_code *code, bool include_stop=true, bool remove_trailing_X=false, bool *alt_start=NULL, bool is_5prime_complete=true, bool is_3prime_complete=true)
Translate a string using a specified genetic code.
@ fIs5PrimePartial
= 0x4 Translate first codon even if not start codon (because sequence is 5' partial)
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
CSeq_inst::TMol GetSequenceType(const CSeq_id &id, TGetFlags flags=0)
Get molecular type of sequence (protein/dna/rna) Return CSeq_inst::eMol_not_set if sequence is not fo...
vector< CSeq_id_Handle > TId
TSeqPos GetBioseqLength(void) const
CConstRef< CSeq_id > GetSeqId(void) const
Get id which can be used to access this bioseq handle Throws an exception if none is available.
const TId & GetId(void) const
CSeqVector GetSeqVector(EVectorCoding coding, ENa_strand strand=eNa_strand_plus) const
Get sequence: Iupacna or Iupacaa if use_iupac_coding is true.
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
void GetSeqData(TSeqPos start, TSeqPos stop, string &buffer) const
Fill the buffer string with the sequence data for the interval [start, stop).
bool Empty(void) const THROWS_NONE
Check if CConstRef is empty â not pointing to any object which means having a null value.
void Reset(void)
Reset reference object.
bool NotEmpty(void) const THROWS_NONE
Check if CRef is not empty â pointing to an object and has a non-null value.
bool NotEmpty(void) const THROWS_NONE
Check if CConstRef is not empty â pointing to an object and has a non-null value.
position_type GetLength(void) const
bool NotEmpty(void) const
position_type GetToOpen(void) const
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
IO_PREFIX::ostream CNcbiOstream
Portable alias for ostream.
NCBI_NS_STD::string::size_type SIZE_TYPE
static string Int8ToString(Int8 value, TNumToStringFlags flags=0, int base=10)
Convert Int8 to string.
static string DoubleToString(double value, int precision=-1, TNumToStringFlags flags=0)
Convert double to string.
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 string Quote(const CTempString str, char quote_char='"', char escape_char = '\\')
Quote string (generic version).
static string & Replace(const string &src, const string &search, const string &replace, string &dst, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a 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.
static string TruncateSpaces(const string &str, ETrunc where=eTrunc_Both)
Truncate whitespace in a string.
@ fDoubleScientific
DoubleToString*(): Use scientific format for double conversions.
C::value_type FindBestChoice(const C &container, F score_func)
Find the best choice (lowest score) for values in a container.
const TOrg & GetOrg(void) const
Get the Org member data.
bool IsSet(void) const
Check if a value has been assigned to data member.
list< CRef< CSeq_id > > TSeqid
bool CanGet(void) const
Check if it is safe to call Get method.
const Tdata & Get(void) const
Get the member data.
list< CRef< CBlast_def_line > > Tdata
TFrom GetFrom(void) const
Get the From member data.
bool IsStr(void) const
Check if variant Str is selected.
const TStr & GetStr(void) const
Get the variant data.
TStr & SetStr(void)
Select the variant.
TId GetId(void) const
Get the variant data.
const TDenseg & GetDenseg(void) const
Get the variant data.
bool CanGet(void) const
Check if it is safe to call Get method.
E_Choice Which(void) const
Which variant is currently selected.
bool IsSetStrands(void) const
Check if a value has been assigned to Strands data member.
const TStarts & GetStarts(void) const
Get the Starts member data.
const TLens & GetLens(void) const
Get the Lens member data.
vector< TSignedSeqPos > TStarts
bool IsDendiag(void) const
Check if variant Dendiag is selected.
bool IsStd(void) const
Check if variant Std is selected.
bool IsSet(void) const
Check if a value has been assigned to data member.
list< CRef< CSeq_align > > Tdata
const TStrands & GetStrands(void) const
Get the Strands member data.
const Tdata & Get(void) const
Get the member data.
const TSegs & GetSegs(void) const
Get the Segs member data.
TLocal & SetLocal(void)
Select the variant.
const TLocal & GetLocal(void) const
Get the variant data.
bool IsLocal(void) const
Check if variant Local is selected.
const TSource & GetSource(void) const
Get the variant data.
const TOrg & GetOrg(void) const
Get the variant data.
@ e_Ncbieaa
extended ASCII 1 letter aa codes
@ e_Org
if all from one organism
@ e_Source
source of materials, includes Org-ref
char * dbname(DBPROCESS *dbproc)
Get name of current database.
unsigned int
A callback function used to compare two keys in a database.
The blob sat and sat key Both must be positive integers</td > n< td > Non empty string The interpretation of the blob id depends on a processor Cassandra n processor expects the following format
string SeqDB_ResolveDbPath(const string &filename)
Resolve a file path using SeqDB's path algorithms.
struct containing annotated domain information
const char * name
Format specification name.
string common_name
Common name, such as "noisy night monkey".
string blast_name
A simple category name, such as "birds".
string s_kingdom
A string of length 1 indicating the "Super Kingdom".
string scientific_name
Scientific name, such as "Aotus vociferans".
static void s_GetCigarString(const CSeq_align &align, string &cigar, int query_len, CScope &scope)
static void SetCdrFwrSeq(const string &nuc_seq, string &translated_seq, bool is_first_domain, int region_start, int frame_start, string &next_trans_addition, bool &next_trans_substract, string extra_from_next_region)
bool s_IsValidName(const string &name)
static string s_GetSeqIdListString(const list< CRef< CSeq_id > > &id, CBlastTabularInfo::ESeqIdType id_type)
CRef< CSeq_id > s_ReplaceLocalId(const CBioseq_Handle &bh, CConstRef< CSeq_id > sid_in, bool parse_local)
static void s_GetGermlineTranslation(const CRef< blast::CIgAnnotation > &annot, CAlnVec &alnvec, const string &aligned_query_string, const string &aligned_germline_string, string &query_translation_string, string &germline_translation_string)
static string s_InsertGap(const string &nuc_without_gap, const string &nuc, const string &prot, char gap_char)
static void s_FillJunctionalInfo(int left_stop, int right_start, int &junction_len, string &junction_seq, const string &query_seq)
static void s_SetAirrAlignmentInfo(const CRef< CSeq_align > &align_v, const CRef< CSeq_align > &align_d, const CRef< CSeq_align > &align_j, const CRef< CSeq_align > &align_c, const CRef< blast::CIgAnnotation > &annot, CScope &scope, map< string, string > &airr_data)
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