*
color[]={
"#000000",
"#808080",
"#FF0000"};
105 static const char*
k_DefaultCheckboxTempl=
"<input type=\"checkbox\" name=\"getSeqGi\" value=\"<@id_lbl@>\" onClick=\"synchronizeCheck(this.value, 'getSeqAlignment<@queryNumber@>', 'getSeqGi', this.checked)\">";
106 static const char*
k_DefaultCheckboxExTempl=
"<input type=\"checkbox\" name=\"getSeqGi\" value=\"<@id_lbl@>\" checked=\"checked\" onClick=\"synchAl(this);\">";
115 static const char* k_GetSeqSubmitForm[] = {
"<FORM method=\"post\" \ 116 action=\"//www.ncbi.nlm.nih.gov:80/entrez/query.fcgi?SUBMIT=y\" \ 117 name=\"%s%d\"><input type=button value=\"Get selected sequences\" \ 118 onClick=\"finalSubmit(%d, 'getSeqAlignment%d', 'getSeqGi', '%s%d', %d)\"><input \ 119 type=\"hidden\" name=\"db\" value=\"\"><input type=\"hidden\" name=\"term\" \ 120 value=\"\"><input type=\"hidden\" name=\"doptcmdl\" value=\"docsum\"><input \ 121 type=\"hidden\" name=\"cmd\" value=\"search\"></form>",
123 "<FORM method=\"POST\" \ 124 action=\"//www.ncbi.nlm.nih.gov/Traces/trace.cgi\" \ 125 name=\"%s%d\"><input type=button value=\"Get selected sequences\" \ 126 onClick=\"finalSubmit(%d, 'getSeqAlignment%d', 'getSeqGi', '%s%d', %d)\"><input \ 127 type=\"hidden\" name=\"val\" value=\"\"><input \ 128 type=\"hidden\" name=\"cmd\" value=\"retrieve\"></form>" 131 static const char* k_GetSeqSelectForm =
"<FORM><input \ 132 type=\"button\" value=\"Select all\" onClick=\"handleCheckAll('select', \ 133 'getSeqAlignment%d', 'getSeqGi')\"></form></td><td><FORM><input \ 134 type=\"button\" value=\"Deselect all\" onClick=\"handleCheckAll('deselect', \ 135 'getSeqAlignment%d', 'getSeqGi')\"></form>";
137 static const char* k_GetTreeViewForm =
"<FORM method=\"post\" \ 138 action=\"//www.ncbi.nlm.nih.gov/blast/treeview/blast_tree_view.cgi?request=page&rid=%s&queryID=%s&distmode=on\" \ 139 name=\"tree%s%d\" target=\"trv%s\"> \ 140 <input type=button value=\"Distance tree of results\" onClick=\"extractCheckedSeq('getSeqAlignment%d', 'getSeqGi', 'tree%s%d')\"> \ 141 <input type=\"hidden\" name=\"sequenceSet\" value=\"\"><input type=\"hidden\" name=\"screenWidth\" value=\"\"></form>";
152list <FeatureInfo*>* external_feature,
153 const char* matrix_name
)
154: m_SeqalignSetRef(&seqalign),
155m_Seqloc(mask_seqloc),
156m_QueryFeature(external_feature),
159m_UseLongSeqIds(
false)
163m_SeqLocColor = eBlack;
166m_CanRetrieveSeq =
false;
168m_NumAlignToShow = 1000000;
175m_MidLineStyle = eBar;
176m_ConfigFile =
NULL;
178m_DynamicFeature =
NULL;
179m_MasterGeneticCode = 1;
180m_SlaveGeneticCode = 1;
181m_AlignTemplates =
NULL;
184m_DomainInfo =
NULL;
185m_SeqPropertyLabel.reset(
newvector<string>);
186m_TranslatedFrameForLocalSeq = eFirst;
187m_ResultPositionIndex = -1;
188m_currAlignSeqListIndex = 1;
189m_QueryAnchoredSetIndex = -1;
198 if(
mtx.GetData().empty()) {
205 if( !
mtx.GetData().empty() )
207m_Matrix =
new int*[
mtx.GetRows()];
208 for(
size_t i= 0;
i<
mtx.GetRows(); ++
i) {
209m_Matrix[
i] =
new int[
mtx.GetCols()];
212 for(
size_t i= 0;
i<
mtx.GetRows(); ++
i) {
213 for(
size_tj = 0; j <
mtx.GetCols(); j++) {
214m_Matrix[
i][j] =
mtx(
i, j);
246 intaln_stop = (
int)
m_AV->GetAlnStop();
247 intmaster_strand =
m_AV->StrandSign(0);
248 intslave_strand =
m_AV->StrandSign(1);
254 stringalignParams = alignInfo;
265alignParams =
CAlignFormatUtil::MapTemplate(alignParams,
"aln_strand",(master_strand==1 ?
"Plus":
"Minus")+ (
string)
"/"+ (slave_strand==1?
"Plus":
"Minus"));
272 if(master_frame != 0 && slave_frame != 0) {
274+ (
string)
"/"+((slave_frame > 0) ?
"+":
"") +
NStr::IntToString(slave_frame));
276}
else if(master_frame != 0){
279}
else if(slave_frame != 0){
306 intgap,
intmaster_strand,
307 intslave_strand,
intmaster_frame,
308 intslave_frame,
boolaln_is_prot)
310 out<<
" Identities = "<<
match<<
"/"<<(aln_stop+1)<<
" ("<<identity<<
"%"<<
")";
315 out<<
", Gaps = "<<gap<<
"/"<<(aln_stop+1)
318 out<<
" Strand="<<(master_strand==1 ?
"Plus":
"Minus")
319<<
"/"<<(slave_strand==1?
"Plus":
"Minus")<<
"\n";
321 if(master_frame != 0 && slave_frame != 0) {
322 out<<
" Frame = "<< ((master_frame > 0) ?
"+":
"")
323<< master_frame <<
"/"<<((slave_frame > 0) ?
"+":
"")
324<< slave_frame<<
"\n";
325}
else if(master_frame != 0){
326 out<<
" Frame = "<< ((master_frame > 0) ?
"+":
"")
327<< master_frame <<
"\n";
328}
else if(slave_frame != 0){
329 out<<
" Frame = "<< ((slave_frame > 0) ?
"+":
"")
330<< slave_frame <<
"\n";
342 const intline_len = 60;
343 booldo_wrap =
false;
344 intlength = (
int)
str.size();
345 if(length > line_len) {
346 for(
int i= 0;
i< length;
i++){
347 if(
i> 0 &&
i% line_len == 0){
351 if(do_wrap &&
isspace((
unsigned char)
str[
i])){
376 boolisStyled =
false;
377 if(startStyledOutput || (!styledSeqStr.empty() && !stopStyledOutput)){
378styledSeqStr += seq[currIndex];
381 if(!styledSeqStr.empty() && (stopStyledOutput || currIndex == (
int)seq.size() - 1) ) {
397 for(
int i= 0;
i< (
int)seq.size();
i++){
399 if(!isStyled)
out<< seq[
i];
416frame = (start % 3) + 1;
438*(ss.
GetIds().front()), scope);
456 string& raw_cdr_product,
TSeqPosframe_adj)
459 stringconcat_exon(total_coding_len,
' ');
469coding_start_base = total_coding_len - 1 - (frame -1) - frame_adj;
470num_base = total_coding_len - 1;
474coding_start_base = 0;
475coding_start_base += frame - 1 + frame_adj;
484 for(
TSeqPos i= 0;
i< iter->GetLength();
i++){
485 if((
TSeqPos)num_base >= coding_start_base){
487 if(num_coding_base % 3 == 2){
489 if(num_coding_base / 3 < raw_cdr_product.size()){
493concat_exon[num_base]
494= raw_cdr_product[num_coding_base / 3];
502 for(
TSeqPos i= 0;
i< iter->GetLength() &&
503num_base >= 0;
i++){
504 if((
TSeqPos)num_base <= coding_start_base){
506 if(num_coding_base % 3 == 2){
508 if(num_coding_base / 3 <
509raw_cdr_product.size() &&
510coding_start_base >= num_coding_base){
514concat_exon[num_base]
515= raw_cdr_product[num_coding_base / 3];
537list<CSeq_loc_CI::TRange>& slave_feat_range,
547trans_frame += frame_adj;
550 boolis_first_in_range =
true;
559list<CSeq_loc_CI::TRange> acutal_slave_feat_range = slave_feat_range;
561 ITERATE(list<CSeq_loc_CI::TRange>, iter_temp,
562acutal_slave_feat_range){
564IntersectionWith(*iter_temp);
565 if(!actual_feat_seq_range.
Empty()){
566 TSeqPosslave_aln_from = 0, slave_aln_to = 0;
568 intcurr_exon_leading_len = 0;
570 if(is_first_in_range) {
572curr_exon_leading_len
573= actual_feat_seq_range.
GetFrom() - iter_temp->GetFrom();
576curr_exon_leading_len
577= iter_temp->GetTo() - actual_feat_seq_range.
GetTo();
579is_first_in_range =
false;
580frame_offset = (3 - (prev_exon_len + curr_exon_leading_len)%3
581+ (trans_frame - 1)) % 3;
602actual_feat_seq_range.
GetFrom() +
632master_feat_range.push_back(master_range);
635prev_exon_len += iter_temp->GetLength();
657 TSeqPosframe_adj,
boolmix_loc)
672GetBioseqLength(), raw_cdr_product);
676 TSeqPosfrom = iter->GetFrom();
690 if(genetic_code > 0) {
694ce->SetId(genetic_code);
695gc.
Set().push_back(ce);
699raw_cdr_product, &gc);
702 returnraw_cdr_product;
714 size_tlength_per_line,
715 TSeqPosfeat_aln_start_totalexon,
718list<TSeqPos>& start)
720 size_tactual_line_len = 0;
721 size_taln_len = line.size();
722 TSeqPosprevious_num_letter = 0;
725 for(
size_t i= 0;
i<= feat_aln_start_totalexon;
i++){
730 intpos = concat_exon.size() -1 -
i;
731 if(pos >= 0 &&
isalpha((
unsigned char) concat_exon[pos])){
732previous_num_letter ++;
736 if(
isalpha((
unsigned char) concat_exon[
i])){
737previous_num_letter ++;
746 for(
size_t i= 0;
i< aln_len;
i+= actual_line_len){
748 if(aln_len -
i< length_per_line) {
749actual_line_len = aln_len -
i;
751actual_line_len = length_per_line;
755 boolhas_intron =
false;
758 for(
size_tj =
i; j < actual_line_len +
i; j ++){
760 if(
isalpha((
unsigned char) line[j])){
770start.push_back(previous_num_letter - prev_num);
772start.push_back(previous_num_letter + prev_num);
776start.push_back(previous_num_letter + prev_num);
778start.push_back(previous_num_letter - prev_num);
781}
else if(has_intron) {
796list<ENa_strand>& feat_seq_strand,
819seq_feat->
SetData(*feat_data);
826feat_seq_strand.front())));
829 ftable.push_back(seq_feat);
830feat_seq_strand.pop_front();
832anot_list.push_back(anot);
851 boolcolor_feat_mismatch,
857 if((
int)feat_line.size() > start){
858 stringactual_feat = feat_line.substr(start,
len);
861actual_reference_feat = reference_feat_line.substr(start,
len);
863 if(color_feat_mismatch
866 stringstyledSequenceStr;
867 for(
int i= 0;
i< (
int)actual_feat.size() &&
868 i< (
int)actual_reference_feat.size();
i++){
869 boolstyledOutput = actual_feat[
i] != actual_reference_feat[
i] &&
871 boolstopStyledOutput = (actual_feat[
i] == actual_reference_feat[
i]) && actual_feat[
i] !=
' ';
873 if(!isStyled)
out<< actual_feat[
i];
885 string& master_feat_str,
893 intid_length = alnRoInfo->
maxIdLen;
906substr(aln_start, line_length)) &&
913 out<<(*iter)->feature->feature_id;
914 if((*iter)->feature_start.empty()){
918-(*iter)->feature->feature_id.size());
920 intfeat_start = (*iter)->feature_start.front();
924-(*iter)->feature->feature_id.size());
934-(*iter)->feature->feature_id.size());
937(*iter)->feature_start.pop_front();
939 boolcolor_cds_mismatch =
false;
943color_cds_mismatch =
true;
949color_cds_mismatch =
true;
952(*iter)->feature_string,
953color_cds_mismatch, aln_start,
956master_feat_str = (*iter)->feature_string;
971seqUrlInfo->
defline= sequence::CDeflineGenerator().GenerateDefline(bsp_handle);
982 stringidString =
m_AV->GetSeqId(1).GetSeqIdString();
1034 if(bdl_list.size() > 0) {
1050 const CSeq_id&
id= sequence_masks->front()->GetSeqId();
1057 intfirst_encoding_base,
intalign_length,
1058 const string& translation,
const string& sequence,
1061 stringfeat(align_length,
' ');
1065 for(
int i= first_encoding_base;
i< (
int) feat.size() &&
1066j < (
int)translation.size();
i++) {
1067 if(sequence[
i] != gap_char) {
1071 if(num_base%3 == 2) {
1072feat[
i] = translation[j];
1081vector<string>& sequence)
const{
1082 if(
m_AV->IsPositiveStrand(0) &&
m_AV->IsPositiveStrand(1)) {
1085 intnon_gap_aln_pos = 0;
1087 intnum_consecutive = 0;
1088 for(
int i=0;
i< (
int) sequence[0].
size();
i++) {
1089 if(sequence[0][
i] != gap_char &&
1090sequence[1][
i] != gap_char) {
1093 if(num_consecutive >=3) {
1094non_gap_aln_pos =
i- 2;
1098num_consecutive = 0;
1104 intmaster_frame_extra =
m_AV->GetSeqPosFromAlnPos(0, non_gap_aln_pos)%3;
1105 intmaster_frame_start;
1107master_frame_start =
m_AV->GetSeqPosFromAlnPos(0, non_gap_aln_pos) +
1112 m_AV->GetSeqStop(0)));
1115 stringmaster_translation;
1118master_translation);
1119 intmaster_first_encoding_base =
m_AV->GetAlnPosFromSeqPos(0, master_frame_start);
1121master_first_encoding_base,
1122 m_AV->GetAlnStop() + 1,
1124sequence[0], gap_char);
1129 m_AV->GetAlnStop(),
' ',
1130 " ", master_feat, -1);
1132retval[0].push_back(master_featInfo);
1135 intsubject_frame_start =
m_AV->GetSeqPosFromSeqPos(1, 0, master_frame_start);
1142 stringsubject_translation;
1145subject_translation);
1146 intsubject_first_encoding_base =
m_AV->GetAlnPosFromSeqPos(1, subject_frame_start);
1148subject_first_encoding_base,
1149 m_AV->GetAlnStop() + 1,
1150subject_translation,
1151sequence[1], gap_char);
1156 m_AV->GetAlnStop(),
' ',
1157 " ", subject_feat, -1);
1159retval[1].push_back(subject_featInfo);
1167 const string& sequence ,
chargap_char,
1168 int&
match,
int& align_length){
1172 intend = (
int)sequence.size() - 1;
1173 for(
int i= 0;
i< (
int)sequence.size();
i++){
1174 if(sequence[
i] != gap_char){
1180 for(
int i= (
int)sequence.size() - 1;
i> 0;
i--){
1181 if(sequence[
i] != gap_char){
1188 for(
int i= start;
i<= end &&
i< (
int)sequence.size() &&
i< (
int)sequence_standard.size();
i++){
1189 if(sequence[
i] == gap_char && sequence_standard[
i] == gap_char) {
1192 if(sequence_standard[
i]==sequence[
i]){
1202 size_tmaxIdLen=0, maxStartLen=0;
1205 const introwNum=
m_AV->GetNumRows();
1207 m_AV->SetAnchor(0);
1209 m_AV->SetGapChar(
'-');
1212 m_AV->SetEndChar(
'-');
1215 m_AV->SetEndChar(
' ');
1217vector<string> sequence(rowNum);
1218vector<CAlnMap::TSeqPosList> seqStarts(rowNum);
1219vector<CAlnMap::TSeqPosList> seqStops(rowNum);
1220vector<CAlnMap::TSeqPosList> insertStart(rowNum);
1221vector<CAlnMap::TSeqPosList> insertAlnStart(rowNum);
1222vector<CAlnMap::TSeqPosList> insertLength(rowNum);
1223vector<string> seqidArray(rowNum);
1225vector<CAlnMap::TSignedRange> rowRng(rowNum);
1226vector<int> frame(rowNum);
1227vector<TTaxId> taxid(rowNum);
1228 intmax_feature_num = 0;
1229vector<int>
match(rowNum-1);
1230vector<double> percent_ident(rowNum-1);
1231vector<int> align_length(rowNum-1);
1232vector<string> align_stats(rowNum-1);
1233vector<string> seq_property_label(rowNum-1);
1234 intmax_align_stats = 0;
1235 intmax_seq_property_label = 0;
1238vector<TSAlnFeatureInfoList> bioseqFeature;
1243 _ASSERT((
int)bioseqFeature.size() == rowNum);
1245vector<TSAlnSeqlocInfoList> masked_regions(rowNum);
1248 for(
int row= 1;
row< rowNum;
row++) {
1254list<list<CRange<TSeqPos> > > feat_seq_range;
1255list<ENa_strand> feat_seq_strand;
1257 for(
int row=0;
row<rowNum;
row++) {
1262type_temp ==
"gsfasta"|| type_temp ==
"gsfasta_prev"){
1272rowRng[
row] =
m_AV->GetSeqAlnRange(
row);
1273frame[
row] = (
m_AV->GetWidth(
row) == 3 ?
1277 m_AV->IsPositiveStrand(
row) ?
1281 m_AV->GetWholeAlnSeqString(
row, sequence[
row], &insertAlnStart[
row],
1282&insertStart[
row], &insertLength[
row],
1290 if(align_length[
row-1] > 0 ){
1291percent_ident[
row-1] = ((double)
match[
row-1])/align_length[
row-1]*100;
1296percent_ident[
row- 1] = 0;
1297align_stats[
row-1] =
"0";
1300max_align_stats =
max(max_align_stats,
1301(
int)align_stats[
row-1].
size());
1310seq_property_label[
row-1] = (*m_SeqPropertyLabel)[
row];
1315max_seq_property_label =
max(max_seq_property_label,
1316(
int)seq_property_label[
row-1].
size());
1320&&
m_AV->GetWidth(
row) != 3
1330GetBioseqCore()->
GetId());
1333feat_seq_range, feat_seq_strand,
1334 row== 1 && !(master_gi >
ZERO_GI) ?
true:
false);
1336 if(!(feat_seq_range.empty()) &&
row== 1) {
1341 m_AV->GetBioseqHandle(0));
1342 intcustom_genetic_code = -1;
1344 if((*iter_feat)->genetic_code > 0) {
1345custom_genetic_code = (*iter_feat)->genetic_code;
1351list<list<CRange<TSeqPos> > > temp_holder;
1352 x_GetFeatureInfo(bioseqFeature[0], custom_genetic_code, *master_scope_with_feat,
1354temp_holder, feat_seq_strand,
false);
1360feat_seq_range, feat_seq_strand,
false);
1365maxIdLen=max<size_t>(seqidArray[
row].
size(), maxIdLen);
1366 size_tmaxCood=max<size_t>(
m_AV->GetSeqStart(
row),
m_AV->GetSeqStop(
row));
1369 for(
int i= 0;
i< rowNum;
i++){
1370 intnum_feature = 0;
1372maxIdLen=max<size_t>((*iter)->feature->feature_id.size(), maxIdLen);
1374 if(num_feature > max_feature_num){
1375max_feature_num = num_feature;
1388alnRoInfo->
rowRng= rowRng;
1389alnRoInfo->
frame= frame;
1390alnRoInfo->
taxid= taxid;
1398alnRoInfo->
rowNum= rowNum;
1411 size_taln_stop=
m_AV->GetAlnStop();
1412 introwNum = alnRoInfo->
rowNum;
1413vector<int> prev_stop(rowNum);
1419 m_AV->GetWidth(0) != 3 &&
m_AV->GetWidth(1) != 3) ?
true:
false;
1424 m_AV->GetWidth(0) != 3 &&
m_AV->GetWidth(1) != 3) ?
true:
false;
1427 stringformattedString;
1430formattedString += rowdata;
1432 returnformattedString;
1437 size_taln_stop=
m_AV->GetAlnStop();
1438 introwNum = alnRoInfo->
rowNum;
1439vector<int> prev_stop(rowNum);
1444 m_AV->GetWidth(0) != 3 &&
m_AV->GetWidth(1) != 3) ?
true:
false;
1449 m_AV->GetWidth(0) != 3 &&
m_AV->GetWidth(1) != 3) ?
true:
false;
1450 introwSetsCount = 1;
1478 size_tactualLineLen=0;
1480 size_taln_stop=
m_AV->GetAlnStop();
1482 introwNum = alnRoInfo->
rowNum;
1488actualLineLen=aln_stop-aln_start+1;
1497 for(
int row=0;
row<rowNum;
row++) {
1498 boolhasSequence =
true;
1504 intend = alnRoInfo->
seqStops[
row].front() + 1;
1505 boolhas_mismatch =
false;
1508 for(
intindex = aln_start; index < aln_start + (
int)actualLineLen &&
1509index < (
int)alnRoInfo->
sequence[
row].size(); index ++){
1513}
else if(!has_mismatch) {
1514has_mismatch =
true;
1542prev_stop[
row] = end;
1553 returnformattedString;
1558 size_tactualLineLen=0;
1560 size_taln_stop=
m_AV->GetAlnStop();
1562 introwNum = alnRoInfo->
rowNum;
1567actualLineLen=aln_stop-aln_start+1;
1576 for(
int row=0;
row<rowNum;
row++) {
1577 boolhasSequence =
true;
1583 intend = alnRoInfo->
seqStops[
row].front() + 1;
1584prev_stop[
row] = end;
1599 intend = alnRoInfo->
seqStops[
row].front() + 1;
1606 if((j > 0 && end == prev_stop)
1607|| (j == 0 && start == 1 && end == 1)) {
1616(
int)actualLineLen, alnRoInfo->
frame[
row],
row,
1622 if(!(j > 0 && end == prev_stop)
1623&& !(j == 0 && start == 1 && end == 1)) {
1631list<string> inserts;
1632 stringinsertPosString;
1640 boolinsertAlready =
false;
1641 for(list<string>::iterator iter = inserts.begin();
1642iter != inserts.end(); iter ++){
1643 if(!insertAlready){
1659 out<< insertPosString<<
"\n";
1674 out<<*iter<<
"\n";
1675insertAlready =
true;
1701gi =
m_AV->GetSeqId(
row).GetGi();
1705GetBioseqCore()->
GetId());
1707 stringanchorTmpl,checkBoxTmpl,id_lbl;
1730id_lbl =
"lcl|"+ id_lbl;
1734 if(showCheckbox || showAnchor) {
1768 if(!urlLink.empty()) {
1788 size_taln_stop=
m_AV->GetAlnStop();
1790aln_vec_info->
match= 0;
1792aln_vec_info->
gap= 0;
1796aln_vec_info->
match,
1828finalAln = densegAln;
1844finalAln = densegAln;
1848 "Seq-align should be Denseg, Stdseg or Dendiag!");
1852 if((ds->IsSetStrands()
1854&& !(ds->IsSetWidths() && ds->GetWidths()[0] == 3)){
1856finalDenseg->
Assign(*ds);
1891 stringfeat_file =
m_Reg->
Get(
"FEATURE_INFO",
"FEATURE_FILE");
1892 stringfeat_file_index =
m_Reg->
Get(
"FEATURE_INFO",
1893 "FEATURE_FILE_INDEX");
1916 if(actual_aln_list.
Get().empty()){
1942 for(CSeq_align_set::Tdata::const_iterator
1943iter = actual_aln_list.
Get().begin();
1944iter != actual_aln_list.
Get().end()
1950 if(!(avRef.
Empty())){
1967alnvecInfo->use_this_seqid,
1968alnvecInfo->comp_adj_method);
1969alnvecInfo->alnvec = avRef;
1972 boolshowDefLine = previousId.
Empty() || !subid->
Match(*previousId);
1978 out<<
"Sequence with id " 1980<<
" no longer exists in database...alignment skipped\n";
1993vector<CRef<CSeq_align_set> > alnVector(
k_NumFrame);
1997 for(CSeq_align_set::Tdata::const_iterator
1998alnIter = actual_aln_list.
Get().begin();
1999alnIter != actual_aln_list.
Get().end()
2003 m_Scope.GetBioseqHandle((*alnIter)->GetSeq_id(1));
2017alnVector[0]->Set().push_back(convertedDs);
2020alnVector[1]->Set().push_back(convertedDs);
2023alnVector[2]->Set().push_back(convertedDs);
2026alnVector[3]->Set().push_back(convertedDs);
2029alnVector[4]->Set().push_back(convertedDs);
2032alnVector[5]->Set().push_back(convertedDs);
2039alnVector[0]->Set().push_back(convertedDs);
2043alnVector[0]->Set().push_back(*alnIter);
2049 "Input Seq-align should be Denseg, Stdseg or Dendiag!");
2053 for(
int i= 0;
i< (
int)alnVector.size();
i++){
2054 boolhasAln =
false;
2056alnRef =
ConstBegin(*alnVector[
i]); alnRef; ++alnRef){
2063 if(ds->IsSetWidths() &&
2064ds->GetWidths()[0] == 3 &&
2065ds->IsSetStrands() &&
2087 intnumDistinctFrames = 0;
2088 for(
int i= 0;
i< (
int)alnVector.size();
i++){
2089 if(!alnVector[
i]->
Get().empty()){
2090numDistinctFrames ++;
2103 if(numDistinctFrames > 1){
2105<<
" of query sequence:\n\n";
2114 out<<
"</form>\n";
2120 const string& sequence ,
2122 string& middle_line)
2126 intmin_length=min<int>((
int)sequence_standard.size(), (
int)sequence.size());
2128middle_line = sequence;
2130 for(
int i=0;
i<min_length;
i++){
2131 if(sequence_standard[
i]==sequence[
i]){
2134middle_line[
i] =
'|';
2136middle_line[
i] = sequence[
i];
2142&&
m_Matrix[(
int)sequence_standard[
i]][(
int)sequence[
i]] > 0){
2146middle_line[
i] =
'+';
2151middle_line[
i] =
' ';
2170cerr <<
"[BLAST FORMATTER EXCEPTION] Problem with linkoutdb: "<< e.
GetMsg() << endl;
2182list<string> &use_this_seqid,
2186SAlnDispParams *alnDispParams =
NULL;
2187 const intkMaxDeflineNum = 10;
2192 constlist<CRef<CSeq_id> > ids = bdl->GetSeqid();
2197 boolisGiList =
false;
2199 if(
match&& isGiList) gi_in_use_this_gi = gi;
2201 if(use_this_seqid.empty() ||
match) {
2202firstGi = (firstGi ==
ZERO_GI) ? gi_in_use_this_gi : firstGi;
2203alnDispParams =
newSAlnDispParams();
2204alnDispParams->gi = gi;
2214 if(bdl->IsSetTaxid() && bdl->CanGetTaxid()){
2215taxid = bdl->GetTaxid();
2218alnDispParams->seqUrlInfo =
x_InitSeqUrl(gi_in_use_this_gi,alnDispParams->label,taxid,ids);
2224 if(alnDispParams->hasTextSeqID) {
2228alnDispParams->gi) : 0;
2240 ITERATE(list<string>, iter_linkout, linkout_url){
2241alnDispParams->linkoutStr += *iter_linkout;
2249 if(bdl->IsSetTitle()){
2250alnDispParams->title = bdl->GetTitle();
2252 if(alnDispParams->title.empty()) {
2256 returnalnDispParams;
2263SAlnDispParams *alnDispParams =
newSAlnDispParams();
2269alnDispParams->seqUrlInfo =
x_InitSeqUrl(alnDispParams->gi,alnDispParams->label,
ZERO_TAX_ID,alnDispParams->ids);
2274 returnalnDispParams;
2284 static stringkLengthString(
"Length=");
2285 #ifdef CTOOLKIT_COMPATIBLE 2286 static boolvalue_set =
false;
2288 if(getenv(
"CTOOLKIT_COMPATIBLE")) {
2289kLengthString.assign(
" Length = ");
2303 boolisFirst =
true;
2325aln_vec_info->id_label = (alnDispParams->gi !=
ZERO_GI) ?
2328 out<<alnDispParams->id_url;
2332!alnDispParams->seqID->IsGi()){
2333 out<<
"gi|"<<alnDispParams->gi<<
"|";
2335 if(!((alnDispParams->seqID->AsFastaString().find(
"gnl|BL_ORD_ID") != string::npos) ||
2336alnDispParams->seqID->AsFastaString().find(
"lcl|Subject_") != string::npos)){
2337 if(
strncmp(alnDispParams->seqID->AsFastaString().c_str(),
"lcl|", 4) == 0)
2338 out<< alnDispParams->label;
2341alnDispParams->gi >
ZERO_GI)) {
2342alnDispParams->seqID->WriteAsFasta(
out);
2354 if(alnDispParams->gi !=
ZERO_GI){
2355 out<<
"<a name="<<alnDispParams->gi<<
"></a>";
2357 out<<
"<a name="<<alnDispParams->seqID->GetSeqIdString()<<
"></a>";
2363alnDispParams->title);
2369 boolbMultipleDeflines =
false;
2371 intmaxNumBdl = (aln_vec_info->use_this_seqid.empty()) ? bdl.size() : aln_vec_info->use_this_seqid.size();
2373iter = bdl.begin(); iter != bdl.end(); iter++){
2377aln_vec_info->use_this_seqid,
2382 if(alnDispParams) {
2390 stringmdlTag = aln_vec_info->id_label;
2392 out<<
"<a href=\"#\" title=\"Other sequence titles\" onmouseover=\"showInfo(this)\" class=\"resArrowLinkW mdl hiding\" id=\""<<
2393mdlTag <<
"\">"<< maxNumBdl -
k_MinDeflinesToShow<<
" more sequence titles"<<
"</a>\n";
2395 out<<
" <div id=\""<<
"info_"<< mdlTag <<
"\" class=\"helpbox mdlbox hidden\">";
2396bMultipleDeflines =
true;
2401firstGi = alnDispParams->gi;
2413 out<< alnDispParams->id_url;
2417!alnDispParams->seqID->IsGi()){
2418 out<<
"gi|"<<alnDispParams->gi<<
"|";
2420 if(!(alnDispParams->seqID->AsFastaString().find(
"gnl|BL_ORD_ID") != string::npos) ||
2421alnDispParams->seqID->AsFastaString().find(
"lcl|Subject_") != string::npos){
2422 if(
strncmp(alnDispParams->seqID->AsFastaString().c_str(),
"lcl|", 4) == 0) {
2423 out<< alnDispParams->label;
2428alnDispParams->gi >
ZERO_GI)) {
2430alnDispParams->seqID->WriteAsFasta(
out);
2434*alnDispParams->seqID);
2442 if(alnDispParams->gi !=
ZERO_GI){
2443 out<<
"<a name="<<alnDispParams->gi<<
"></a>";
2446 out<<
"<a name="<<alnDispParams->seqID->GetSeqIdString(
true)<<
"></a>";
2447aln_vec_info->id_label = alnDispParams->label;
2452 out<< alnDispParams->linkoutStr;
2453 if(!alnDispParams->dumpGnlUrl.empty()) {
2455 out<<alnDispParams->dumpGnlUrl;
2460 if(
out.tellp() > 1L) {
2463 if(!alnDispParams->title.empty()) {
2466HTMLEncode(alnDispParams->title) :
2467alnDispParams->title);
2480 returnformattedString;
2486 boolcolor_mismatch,
2490 _ASSERT((
int)sequence.size() > start);
2491list<CRange<int> > actualSeqloc;
2492 stringactualSeq = sequence.substr(start,
len);
2498 intfrom=(*iter)->aln_range.GetFrom();
2499 intto=(*iter)->aln_range.GetTo();
2500 intlocFrame = (*iter)->seqloc->GetFrame();
2501 if(
id.Match((*iter)->seqloc->GetInterval().GetId())
2502&& locFrame == frame){
2503 boolisFirstChar =
true;
2506 for(
int i=max<int>(from, start);
2507i<=min<int>(to, start+
len-1);
i++){
2510isFirstChar =
false;
2511eachSeqloc.
Set(
i, eachSeqloc.
GetTo());
2514 if(
isalpha((
unsigned char) actualSeq[
i-start])){
2515actualSeq[
i-start]=
'X';
2518actualSeq[
i-start]=
'n';
2520actualSeq[
i-start]=
tolower((
unsigned char) actualSeq[
i-start]);
2524&&
i== min<int>(to, start+
len)){
2528 if(!(eachSeqloc.
GetFrom()==0&&eachSeqloc.
GetTo()==0)){
2529actualSeqloc.push_back(eachSeqloc);
2535 if(actualSeqloc.empty()){
2545 boolendTag =
false;
2546 boolfrontTag =
false;
2549 for(
int i= 0;
i< (
int)actualSeq.size();
i++){
2550 boolstartStyledOutput =
false,stopStyledOutput =
false;
2551 for(list<
CRange<int>>::iterator iter=actualSeqloc.begin();
2552iter!=actualSeqloc.end(); iter++){
2553 intfrom = (*iter).GetFrom() - start;
2554 intto = (*iter).GetTo() - start;
2559 if(to ==
i&& to > 0){
2563startStyledOutput = frontTag;
2564stopStyledOutput = endTag && frontTag;
2566 if(!isStyled)
out<<actualSeq[
i];
2567 if(endTag && frontTag){
2588=
m_AV->GetAlnChunks(
row,
m_AV->GetSeqAlnRange(antirow));
2589 for(
int i=0;
i<chunk_vec->size();
i++) {
2591 if(chunk->IsGap()) {
2592gap += (chunk->GetAlnRange().GetTo()
2593- chunk->GetAlnRange().GetFrom() + 1);
2602=
m_AV->GetAlnChunks(
row,
m_AV->GetSeqAlnRange(0));
2603 for(
int i=0;
i<chunk_vec->size();
i++) {
2605 if(chunk->IsGap()) {
2606gap += (chunk->GetAlnRange().GetTo()
2607- chunk->GetAlnRange().GetFrom() + 1);
2616 intcustom_genetic_code,
2619 int row,
string& sequence,
2621list<ENa_strand>& feat_seq_strand,
2622 boolfill_feat_range )
const 2627 TGigi_temp =
FindGi(
m_AV->GetBioseqHandle(
row).GetBioseqCore()->GetId());
2635GetRangeSeq_loc(
min(seq_start, seq_stop),
2636 max(seq_start, seq_stop));
2640 for(
CFeat_CIfeat(scope, *loc_ref, sel); feat; ++feat) {
2641 const CSeq_loc& loc = feat->GetLocation();
2642 boolhas_id =
false;
2643list<CSeq_loc_CI::TRange> isolated_range;
2645 boolfirst_loc =
true, mixed_strand =
false, mix_loc =
false;
2647 TSeqPosother_seqloc_length = 0;
2652 const CSeq_id& id_it = loc_it.GetSeq_id();
2654isolated_range.push_back(loc_it.GetRange());
2656feat_seq_range = loc_it.GetRange();
2658feat_seq_range += loc_it.GetRange();
2661 if(loc_it.IsSetStrand()){
2662feat_strand = loc_it.GetStrand();
2671 if(!first_loc && prev_strand != feat_strand){
2672mixed_strand =
true;
2675prev_strand = feat_strand;
2680other_seqloc_length += loc_it.GetRange().GetLength();
2686 if(!has_id || mixed_strand){
2692 charfeat_char =
' ';
2696 TSeqPosactual_feat_seq_start = 0, actual_feat_seq_stop = 0;
2704 if(
m_AV->IsPositiveStrand(
row)){
2705actual_feat_seq_start =
2707actual_feat_seq_stop =
2708 min(feat_seq_range.
GetTo(), seq_stop);
2711actual_feat_seq_start =
2712 min(feat_seq_range.
GetTo(), seq_start);
2713actual_feat_seq_stop =
2716 intgenetic_code = -1;
2719 m_AV->GetAlnPosFromSeqPos(
row, actual_feat_seq_start);
2721 m_AV->GetAlnPosFromSeqPos(
row, actual_feat_seq_stop);
2728 stringraw_cdr_product =
2730isolated_range, handle, feat_strand,
2731featId, other_seqloc_length%3 == 0 ?
27320 : 3 - other_seqloc_length%3,
2734 if(feat->IsSetData() && feat->GetData().IsCdregion() && feat->GetData().GetCdregion().IsSetCode()) {
2735genetic_code = feat->GetData().GetCdregion().GetCode().GetId();
2747 stringline(aln_stop+1,
' ');
2749 for(
TSeqPos i= feat_aln_from;
i<= feat_aln_to;
i++){
2755 ITERATE(list<CSeq_loc_CI::TRange>, iter, isolated_range){
2756total_coding_len += iter->GetLength();
2763 chargap_char =
m_AV->GetGapChar(
row);
2764 stringconcat_exon =
2769other_seqloc_length%3 == 0 ?
27700 : 3 - other_seqloc_length%3);
2775 if(fill_feat_range) {
2776list<CRange<TSeqPos> > master_feat_range;
2779feat, isolated_range,
2781other_seqloc_length%3 == 0 ?
27833 - other_seqloc_length%3);
2784 if(!(master_feat_range.empty())) {
2785feat_range_list.push_back(master_feat_range);
2786feat_seq_strand.push_back(master_strand);
2791 TSeqPosfeat_aln_start_totalexon = 0;
2792 TSeqPosprev_feat_aln_start_totalexon = 0;
2793 TSeqPosprev_feat_seq_stop = 0;
2795 boolis_first =
true;
2796 boolis_first_exon_start =
true;
2806isolated_range.reverse();
2809 ITERATE(list<CSeq_loc_CI::TRange>, iter, isolated_range){
2814intron_size += iter->GetFrom()
2815- prev_feat_seq_stop - 1;
2819IntersectionWith(*iter);
2820 if(!actual_feat_seq_range.
Empty()){
2825 if(
m_AV->IsPositiveStrand(
row)){
2831=
m_AV->GetAlnPosFromSeqPos
2832(
row, actual_feat_seq_range.
GetTo());
2837(
row, actual_feat_seq_range.
GetTo());
2839=
m_AV->GetAlnPosFromSeqPos
2845 i<= feat_aln_stop;
i++){
2846 if(sequence[
i] != gap_char){
2853=
m_AV->GetSeqPosFromAlnPos(
row,
i) -
2854intron_size - feat_seq_range.
GetFrom();
2855 if(product_adj_seq_pos <
2856concat_exon.size()){
2860concat_exon[product_adj_seq_pos];
2864 if(
m_AV->IsPositiveStrand(
row)){
2866 if(is_first_exon_start &&
2867 isalpha((
unsigned char) line[
i])){
2869feat_aln_start_totalexon =
2871- product_adj_seq_pos + 1;
2872is_first_exon_start =
false;
2875feat_aln_start_totalexon =
2876product_adj_seq_pos;
2877is_first_exon_start =
false;
2883 if(is_first_exon_start &&
2884 isalpha((
unsigned char) line[
i])){
2885feat_aln_start_totalexon =
2887- product_adj_seq_pos + 1;
2888is_first_exon_start =
false;
2889prev_feat_aln_start_totalexon =
2890feat_aln_start_totalexon;
2892 if(!is_first_exon_start){
2897feat_aln_start_totalexon =
2899- product_adj_seq_pos + 1),
2900prev_feat_aln_start_totalexon);
2901prev_feat_aln_start_totalexon =
2902feat_aln_start_totalexon;
2905feat_aln_start_totalexon =
2906 max(prev_feat_aln_start_totalexon,
2907product_adj_seq_pos);
2909prev_feat_aln_start_totalexon =
2910feat_aln_start_totalexon;
2921prev_feat_seq_stop = iter->GetTo();
2924alternativeFeatStr = line;
2926feat_aln_start_totalexon,
2927 m_AV->IsPositiveStrand(
row) ?
2929feat_strand, featInfo->feature_start);
2935feat_aln_from, feat_aln_to, aln_stop,
2936feat_char, featId, alternativeFeatStr, genetic_code);
2937feature.push_back(featInfo);
2947 intaln_to,
intaln_stop,
2948 charpattern_char,
stringpattern_id,
2949 string& alternative_feat_str,
2950 intgenetic_code)
const 2953feat->seqloc = &seqloc;
2954feat->feature_char = pattern_char;
2955feat->feature_id = pattern_id;
2958feat_info->feature_string = alternative_feat_str;
2961 stringline(aln_stop+1,
' ');
2962 for(
intj = aln_from; j <= aln_to; j++){
2963line[j] = feat->feature_char;
2965feat_info->feature_string = line;
2967feat_info->genetic_code = genetic_code;
2968feat_info->aln_range.Set(aln_from, aln_to);
2969feat_info->feature = feat;
2979 static int x_AddBar(
string& seq,
intinsert_alnpos,
intaln_start){
2980 intend = (
int)seq.size() -1 ;
2981 intbarPos = insert_alnpos - aln_start + 1;
2983 if(barPos - end > 1){
2984 stringspacer(barPos - end - 1,
' ');
2985addOn += spacer +
"|";
2986}
else if(barPos - end == 1){
2990 returnmax<int>((barPos - end), 0);
3002 static int s_AdjustInsert(
string& cur_insert,
string& new_insert,
3003 intinsert_alnpos,
intaln_start)
3006 intcurInsertSize = (
int)cur_insert.size();
3007 intinsertLeftSpace = insert_alnpos - aln_start - curInsertSize + 2;
3009 if(curInsertSize > 0){
3010 _ASSERT(insertLeftSpace >= 2);
3012 intnewInsertSize = (
int)new_insert.size();
3013 if(insertLeftSpace - newInsertSize >= 1){
3015 stringspacer(insertLeftSpace - newInsertSize,
' ');
3016cur_insert += spacer + new_insert;
3019 if(curInsertSize > 0){
3020cur_insert +=
" "+ new_insert;
3022cur_insert += new_insert;
3025insertEnd = aln_start + (
int)cur_insert.size() -1 ;
3033list<string>& inserts)
const{
3034 if(!insert_list.empty()){
3035 stringbar(aln_range.
GetLength(),
' ');
3039 boolisFirstInsert =
true;
3040 intcurInsertAlnStart = 0;
3041 intprvsInsertAlnEnd = 0;
3046curInsertAlnStart = (*iter)->aln_start;
3048 if(isFirstInsert || curInsertAlnStart - prvsInsertAlnEnd >= 1){
3049bar[curInsertAlnStart-aln_start+1] =
'|';
3050 intseqStart = (*iter)->seq_start;
3051 intseqEnd = seqStart + (*iter)->insert_len - 1;
3053newInsert =
m_AV->GetSeqString(newInsert,
row, seqStart,
3056curInsertAlnStart, aln_start);
3057isFirstInsert =
false;
3059bar[curInsertAlnStart-aln_start+1] =
'|';
3061prvsInsertAlnEnd +=
x_AddBar(seq, curInsertAlnStart, aln_start);
3064leftOverInsertList.push_back(*iter);
3069inserts.push_back(bar);
3070inserts.push_back(seq);
3072 x_DoFills(
row, aln_range, aln_start, leftOverInsertList, inserts);
3079 intaln_start, list<string>& inserts,
3080 string& insert_pos_string,
3084 stringline(aln_range.
GetLength(),
' ');
3087 intfrom = (*iter)->aln_start;
3088line[from - aln_start + 1] =
'\\';
3090insert_pos_string = line;
3094 x_DoFills(
row, aln_range, aln_start, insert_list, inserts);
3105 while(!insert_aln_start.empty()
3106&& (
int)insert_aln_start.front() < line_aln_stop){
3108insert->aln_start = insert_aln_start.front() - 1;
3110insert->seq_start = insert_seq_start.front();
3111insert->insert_len = insert_length.front();
3112insert_list.push_back(insert);
3113insert_aln_start.pop_front();
3114insert_seq_start.pop_front();
3115insert_length.pop_front();
3128 stringidString =
m_AV->GetSeqId(1).GetSeqIdString();
3131segs = iter->second.segs;
3169 if(seg.
GetStd().size() > 1){
3174 if((*iterStdseg)->IsSetScores()){
3175aln->
SetScore() = (*iterStdseg)->GetScores();
3177aln->
SetSegs().SetStd().push_back(*iterStdseg);
3178alnSetRef->
Set().push_back(aln);
3182alnSetRef->
Set().push_back(*iter);
3191 if((*iterDendiag)->IsSetScores()){
3192aln->
SetScore() = (*iterDendiag)->GetScores();
3194aln->
SetSegs().SetDendiag().push_back(*iterDendiag);
3195 if((*iter)->IsSetType() && (*iter)->CanGetType()){
3196aln->
SetType((*iter)->GetType());
3199alnSetRef->
Set().push_back(aln);
3203alnSetRef->
Set().push_back(*iter);
3207alnSetRef->
Set().push_back(*iter);
3225 if((*iterStdseg)->IsSetScores()){
3226aln->
SetScore() = (*iterStdseg)->GetScores();
3228aln->
SetSegs().SetStd().push_back(*iterStdseg);
3229alnSetRef->
Set().push_back(aln);
3235 if((*iterDendiag)->IsSetScores()){
3236aln->
SetScore() = (*iterDendiag)->GetScores();
3238aln->
SetSegs().SetDendiag().push_back(*iterDendiag);
3239alnSetRef->
Set().push_back(aln);
3243alnSetRef->
Set().push_back(*iter);
3257 boolfirst_align =
true;
3262 if((*iterStdseg)->IsSetScores()){
3263aln->
SetScore() = (*iterStdseg)->GetScores();
3266first_align =
false;
3267std::vector< CRef< CScore > >& scores_in = (*iter)->SetScore();
3269 if((*it_in)->IsSetId()) {
3271 boolfound =
false;
3272std::vector< CRef< CScore > >& scores_out = aln->
SetScore();
3274 if((*it_out)->IsSetId()) {
3275 if(score_id.
Match((*it_out)->GetId())) {
3281scores_out.push_back (*it_in);
3287aln->
SetSegs().SetStd().push_back(*iterStdseg);
3288alnSetRef->
Set().push_back(aln);
3293 if((*iterDendiag)->IsSetScores()){
3294aln->
SetScore() = (*iterDendiag)->GetScores();
3296first_align =
false;
3297std::vector< CRef< CScore > >& scores_in = (*iter)->SetScore();
3299 if((*it_in)->IsSetId()) {
3301 boolfound =
false;
3302std::vector< CRef< CScore > >& scores_out = aln->
SetScore();
3304 if((*it_out)->IsSetId()) {
3305 if(score_id.
Match((*it_out)->GetId())) {
3311scores_out.push_back (*it_in);
3317aln->
SetSegs().SetDendiag().push_back(*iterDendiag);
3318alnSetRef->
Set().push_back(aln);
3322alnSetRef->
Set().push_back(*iter);
3335(
new char[strGeneLinkUrl.size() + 1024]);
3336sprintf(
buf.get(), strGeneLinkUrl.c_str(),
3341strGeneLinkUrl.assign(
buf.get());
3342 returnstrGeneLinkUrl;
3356 out<<
"Sort alignments for this subject sequence by:\n";
3363 out<<
"<a href=\"Blast.cgi?CMD=Get&"<< query_buf
3366<<
"#"<< id_label <<
"\">";
3377 out<<
"<a href=\"Blast.cgi?CMD=Get&"<< query_buf
3380<<
"#"<< id_label <<
"\">";
3391 out<<
"<a href=\"Blast.cgi?CMD=Get&"<< query_buf
3394<<
"#"<< id_label <<
"\">";
3396 out<<
"Percent identity";
3403 out<<
"<a href=\"Blast.cgi?CMD=Get&"<< query_buf
3406<<
"#"<< id_label <<
"\">";
3408 out<<
"Query start position";
3415 out<<
"<a href=\"Blast.cgi?CMD=Get&"<< query_buf
3418<<
"#"<< id_label <<
"\">";
3420 out<<
"Subject start position";
3436 for(
int i= 0;
i< 5;
i++) {
3437 if(hsp_sort ==
i) {
3460 out<< url_link <<
"\n";
3470(type_temp.find(
"genome") != string::npos ||
3471type_temp ==
"mapview"||
3472type_temp ==
"mapview_prev"||
3473type_temp ==
"gsfasta"|| type_temp ==
"gsfasta_prev")){
3476 intmaster_start =
m_AV->GetSeqStart(0) + 1;
3477 intmaster_stop =
m_AV->GetSeqStop(0) + 1;
3478 intsubject_start =
m_AV->GetSeqStart(1) + 1;
3479 intsubject_stop =
m_AV->GetSeqStop(1) + 1;
3483sprintf(
buffer,
"<a name = %s_%d_%d_%d_%d_%d></a>",
3484subj_id_str.c_str(), aln_vec_info->score,
3485 min(master_start, master_stop),
3486 max(master_start, master_stop),
3487 min(subject_start, subject_stop),
3488 max(subject_start, subject_stop));
3496 stringevalue_buf, bit_score_buf, total_bit_buf, raw_score_buf;
3498aln_vec_info->bits, 0, 0, evalue_buf,
3499bit_score_buf, total_bit_buf, raw_score_buf);
3506 stringhidePrevNaviagtion,hideNextNaviagtion, hideFirstNavigation;
3508hidePrevNaviagtion =
"disabled=\"disabled\"";
3509hideFirstNavigation =
"hidden";
3512hideNextNaviagtion =
"disabled=\"disabled\"";
3540 if(aln_vec_info->sum_n > 0) {
3550 if(aln_vec_info->comp_adj_method == 1){
3554 else if(aln_vec_info->comp_adj_method == 2){
3572 stringevalue_buf, bit_score_buf, total_bit_buf, raw_score_buf;
3574aln_vec_info->
bits, 0, 0, evalue_buf,
3575bit_score_buf, total_bit_buf, raw_score_buf);
3581 out<<
" NW Score = "<< aln_vec_info->
score;
3589 out<<
" Score = "<<aln_vec_info->
score<<
"\n";
3592 out<<
" Score = "<<bit_score_buf<<
" ";
3593 out<<
"bits ("<<aln_vec_info->
score<<
"),"<<
" ";
3595 if(aln_vec_info->
sum_n> 0) {
3596 out<<
"("<< aln_vec_info->
sum_n<<
")";
3598 out<<
" = "<< evalue_buf;
3600 out<<
", Method: Composition-based stats.";
3602 out<<
", Method: Compositional matrix adjust.";
3616 boolshowSortControls =
false;
3633showSortControls =
true;
3661 if(!(alnDispParams->seqID->AsFastaString().find(
"gnl|BL_ORD_ID") != string::npos) ||
3662alnDispParams->seqID->AsFastaString().find(
"lcl|Subject_") != string::npos){
3664seqid = alnDispParams->seqID->AsFastaString();
3685 stringhspNum,isFirstDflAttr;
3692isFirstDflAttr =
"hidden";
3697 stringalnIdLbl = (alnDispParams->gi !=
ZERO_GI) ?
3700 stringlinkoutStr, dnldLinkStr;
3702linkoutStr = (!alnDispParams->linkoutStr.empty()) ? alnDispParams->linkoutStr :
"";
3703dnldLinkStr = alnDispParams->dumpGnlUrl;
3715 stringfirstDefline;
3717list<string>& use_this_seqid = aln_vec_info->use_this_seqid;
3721 boolisFirst =
true;
3732 stringalnDefLine =
x_MapDefLine(alnDispParams,isFirst,
false,
false,seqLength);
3741*alnDispParams->
seqID);
3746 deletealnDispParams;
3747firstDefline = alnDefLine;
3753iter = bdl.begin(); iter != bdl.end();){
3757 if(alnDispParams) {
3759 boolhideDefline = (numBdl > 1)?
true:
false;
3774alnDispParams->
seqID= dispId;
3784alnDispParams->
seqID->AsFastaString();
3789*alnDispParams->
seqID);
3794vector <string> parts;
3796 if(parts.size() > 0) {
3805 if( (isFirst && firstGi ==
ZERO_GI) || (alnDispParams->
gi== firstGi && firstGi !=
ZERO_GI) ) {
3812firstDefline = alnDefLine;
3815deflines += alnDefLine;
3825 deletealnDispParams;
3831deflines = firstDefline;
3841deflines = firstDefline + alnTitleslnk + alnTitles;
3853 stringdeflines, linkOutStr,customLinkStr;
3854list<string> linkoutStr;
3862customLinkStr += *iter_custList;
3867linkOutStr += *iter_List;
3894 stringisGenbankAttr = (
NStr::Find(customLinkStr,
"GenBank") ==
NPOS&&
NStr::Find(customLinkStr,
"GenPept") ==
NPOS)?
"hidden":
"";
3897 stringhideDndl = (
m_BlastType==
"sra")?
"hidden":
"";
3932 if(sortOneAln.empty()) {
3986 boolshowSortControls)
3998 if(aln_vec_info->
feat_list.size() > 0 || aln_vec_info->
feat5|| aln_vec_info->
feat3){
4011(
int)
m_AV->GetAlnStop(),
4014aln_vec_info->
match,
4015aln_vec_info->
gap,
4016 m_AV->StrandSign(0),
4017 m_AV->StrandSign(1),
4034 intaddToRange = (
int)((to - from) * 0.05);
4035 intfromAdjust =
max(0,(
int)from - addToRange);
4036 inttoAdjust = to + addToRange;
4037 stringcustomLinkStr;
4043hspLinks += singleLink;
4048 stringmultiHSP = (hspLinks.empty()) ?
"hidden":
"";
4088alignInfo += alignRows;
4096aln_vec_info->feat5 =
NULL;
4097aln_vec_info->feat3 =
NULL;
4098aln_vec_info->feat_list.clear();
4101&& (
int)
m_AV->GetBioseqHandle(1).GetBioseqLength()
4105aln_vec_info->actual_range = range;
4114aln_vec_info->feat_list =
m_DynamicFeature->GetFeatInfo(id_str, aln_vec_info->actual_range, aln_vec_info->feat5, aln_vec_info->feat3, 2);
4148 string(
m_IsDbNa?
"nucleotide":
"protein"),
4158 returnalignFeature;
4165 stringalignParams = alignInfo;
4171 stringallAlnFeatures =
"";
4172 if(aln_vec_info->feat_list.size() > 0) {
4173 ITERATE(vector<SFeatInfo*>, iter, aln_vec_info->feat_list){
4176aln_vec_info->subject_gi,
4177(*iter)->range.GetFrom(),
4178(*iter)->range.GetTo(),
4183allAlnFeatures += alignFeature;
4186 if(aln_vec_info->feat5 || aln_vec_info->feat3){
4190 if(aln_vec_info->feat5){
4192aln_vec_info->subject_gi,
4193aln_vec_info->feat5->range.GetFrom(),
4194aln_vec_info->feat5->range.GetTo(),
4195 NStr::IntToString(aln_vec_info->actual_range.GetFrom() - aln_vec_info->feat5->range.GetTo()) + (
string)
" bp at 5' side: "+ aln_vec_info->feat5->feat_str);
4196allAlnFeatures += alignFeature;
4198 if(aln_vec_info->feat3){
4201aln_vec_info->subject_gi,
4202aln_vec_info->feat3->range.GetFrom(),
4203aln_vec_info->feat3->range.GetTo(),
4204 NStr::IntToString(aln_vec_info->feat3->range.GetFrom() - aln_vec_info->actual_range.GetTo()) + (
string)
" bp at 3' side: "+ aln_vec_info->feat3->feat_str);
4205allAlnFeatures += alignFeature;
4208 if(!allAlnFeatures.empty()) {
4223 if(aln_vec_info->feat_list.size() > 0) {
4224 out<<
" Features in this part of subject sequence:"<<
"\n";
4225 ITERATE(vector<SFeatInfo*>, iter, aln_vec_info->feat_list){
4230 m_IsDbNa?
"nucleotide":
"protein",
4231(*iter)->range.GetFrom() +1 ,
4232(*iter)->range.GetTo() + 1,
4236 out<< (*iter)->feat_str;
4243 if(aln_vec_info->feat5 || aln_vec_info->feat3){
4244 out<<
" Features flanking this part of subject sequence:"<<
"\n";
4246 if(aln_vec_info->feat5){
4251 m_IsDbNa?
"nucleotide":
"protein",
4252aln_vec_info->feat5->range.GetFrom() + 1 ,
4253aln_vec_info->feat5->range.GetTo() + 1,
4258 out<< aln_vec_info->actual_range.GetFrom() - aln_vec_info->feat5->range.GetTo()
4259<<
" bp at 5' side: "<< aln_vec_info->feat5->feat_str;
4265 if(aln_vec_info->feat3){
4270 m_IsDbNa?
"nucleotide":
"protein",
4271aln_vec_info->feat3->range.GetFrom() + 1 ,
4272aln_vec_info->feat3->range.GetTo() + 1,
4277 out<< aln_vec_info->feat3->range.GetFrom() - aln_vec_info->actual_range.GetTo()
4278<<
" bp at 3' side: "<< aln_vec_info->feat3->feat_str;
4285 if(aln_vec_info->feat_list.size() > 0 || aln_vec_info->feat5 || aln_vec_info->feat3 ){
4300 boolhas_valid_loc =
false;
4301 for(
int i=0;
i<
m_AV->GetNumRows();
i++){
4305 m_AV->GetSeqRange(
i).IntersectingWith(loc_range)){
4306 intactualAlnStart = 0, actualAlnStop = 0;
4307 if(
m_AV->IsPositiveStrand(
i)){
4309 m_AV->GetAlnPosFromSeqPos(
i,
4313 m_AV->GetAlnPosFromSeqPos(
i,
4318 m_AV->GetAlnPosFromSeqPos(
i,
4322 m_AV->GetAlnPosFromSeqPos(
i,
4326alnloc->aln_range.Set(actualAlnStart, actualAlnStop);
4327has_valid_loc =
true;
4331 if(has_valid_loc) {
4332alnloc->seqloc = *iter;
4333loc_list.push_back(alnloc);
4341vector<TSAlnFeatureInfoList>& retval)
4345retval.resize(row_num);
4348 for(list<FeatureInfo*>::iterator iter=
m_QueryFeature->begin();
4350 for(
int i= 0;
i< row_num;
i++){
4351 if((*iter)->seqloc->GetInt().GetId().Match(
m_AV->GetSeqId(
i))){
4352 intactualSeqStart = 0, actualSeqStop = 0;
4353 if(
m_AV->IsPositiveStrand(
i)){
4354 if((*iter)->seqloc->GetInt().GetFrom()
4355<
m_AV->GetSeqStart(
i)){
4356actualSeqStart =
m_AV->GetSeqStart(
i);
4358actualSeqStart = (*iter)->seqloc->GetInt().GetFrom();
4361 if((*iter)->seqloc->GetInt().GetTo() >
4362 m_AV->GetSeqStop(
i)){
4363actualSeqStop =
m_AV->GetSeqStop(
i);
4365actualSeqStop = (*iter)->seqloc->GetInt().GetTo();
4368 if((*iter)->seqloc->GetInt().GetFrom()
4369<
m_AV->GetSeqStart(
i)){
4370actualSeqStart = (*iter)->seqloc->GetInt().GetFrom();
4372actualSeqStart =
m_AV->GetSeqStart(
i);
4375 if((*iter)->seqloc->GetInt().GetTo() >
4376 m_AV->GetSeqStop(
i)){
4377actualSeqStop = (*iter)->seqloc->GetInt().GetTo();
4379actualSeqStop =
m_AV->GetSeqStop(
i);
4382 intalnFrom =
m_AV->GetAlnPosFromSeqPos(
i, actualSeqStart);
4383 intalnTo =
m_AV->GetAlnPosFromSeqPos(
i, actualSeqStop);
4387 if(alnTo - alnFrom >= 0){
4389alnTo, aln_stop, (*iter)->feature_char,
4390(*iter)->feature_id, tempFeat, -1);
4391retval[
i].push_back(featInfo);
4399 static void s_MakeDomainString(
intaln_from,
intaln_to,
const string& domain_name,
4400 string& final_domain) {
4402 stringdomain_string(aln_to - aln_from + 1,
' ');
4404 if(domain_string.size() > 2){
4406 for(
int i= 0;
i< (
int)domain_string.size();
i++){
4407domain_string[
i] =
'-';
4409domain_string[0] =
'<';
4410domain_string[domain_string.size()-1] =
'>';
4412 intmidpoint = ((
int)domain_string.size())/2;
4413 intfirst_possible_pos = 1;
4414 intactual_first_pos =
max(first_possible_pos, midpoint - ((
int)domain_name.size())/2);
4416 for(
SIZE_TYPE i= actual_first_pos, j = 0;
i< domain_string.size() - 1 && j < domain_name.size();
i++, j ++){
4417domain_string[
i] = domain_name[j];
4421 for(
SIZE_TYPE i= 0;
i< domain_string.size();
i++){
4422final_domain[
i+ aln_from] = domain_string[
i];
4427vector<TSAlnFeatureInfoList>& retval)
const 4431 stringfinal_domain (
m_AV->GetAlnStop() + 1,
' ');
4432 intlast_aln_to =
m_AV->GetAlnStop();
4435 if((*iter)->seqloc->GetInt().GetId().Match(
m_AV->GetSeqId(0))){
4436 intactualSeqStart = 0, actualSeqStop = 0;
4437 if(
m_AV->IsPositiveStrand(0)){
4438actualSeqStart =
max((
int)
m_AV->GetSeqStart(0),
4439(
int)(*iter)->seqloc->GetInt().GetFrom());
4441actualSeqStop =
min((
int)
m_AV->GetSeqStop(0),
4442(
int)(*iter)->seqloc->GetInt().GetTo());
4444 intalnFrom =
m_AV->GetAlnPosFromSeqPos(0, actualSeqStart);
4446 if(actualSeqStart > 0 && (*iter)->is_subject_start_valid) {
4448 m_AV->GetAlnPosFromSeqPos(0, actualSeqStart - 1) > 1) {
4450 intsubj_aln_from =
m_AV->GetAlnPosFromSeqPos(1,
4451(
int)(*iter)->subject_seqloc->GetInt().GetFrom());
4452 if(subj_aln_from >= 0) {
4453alnFrom = subj_aln_from;
4458 intalnTo =
m_AV->GetAlnPosFromSeqPos(0, actualSeqStop);
4460 if(actualSeqStop < (
int)
m_AV->GetSeqStop(0) &&
4461(*iter)->is_subject_stop_valid) {
4462 if(
m_AV->GetAlnPosFromSeqPos(0, actualSeqStop + 1) - alnTo > 1) {
4464 intsubj_aln_to =
m_AV->GetAlnPosFromSeqPos(1,
4465(
int)(*iter)->subject_seqloc->GetInt().GetTo());
4466 if(subj_aln_to >= 0) {
4467alnTo = subj_aln_to;
4471 intactual_aln_from =
min(alnFrom,last_aln_to +1);
4472 if(actual_aln_from > alnTo) {
4478last_aln_to = alnTo;
4488aln_stop, aln_stop,
' ',
4489 " ", final_domain, -1);
4490retval[0].push_back(featInfo);
4496 static string kQuery(
"Query");
4497 static string kSubject(
"Sbjct");
4499 #ifdef CTOOLKIT_COMPATIBLE 4501 static boolvalue_set =
false;
4503 if(getenv(
"CTOOLKIT_COMPATIBLE")) {
4522gi =
m_AV->GetSeqId(
row).GetGi();
4547gi =
m_AV->GetSeqId(
row).GetGi();
4580(toolUrl.find(
"dumpgnl.cgi") != string::npos
4586 stringidString, prevIdString,prevIdStringWithVersion,idStringWithVersion;
4587 for(CSeq_align_set::Tdata::const_iterator
4588iter = actual_aln_list.
Get().begin();
4589iter != actual_aln_list.
Get().end()
4593subid = &((*iter)->GetSeq_id(1));
4597 if(!prevIdString.empty() && !prevIdStringWithVersion.empty() && prevIdString == idString && prevIdStringWithVersion != idStringWithVersion) {
4601prevIdStringWithVersion = idStringWithVersion;
4602prevIdString = idString;
4615 structSAlnLinksParams *alnLinksParam =
first?
newSAlnLinksParams : &
m_AlnLinksParams[idString];
4620alnLinksParam->segs +=
",";
4635 TSeqPoscurrFrom = alnLinksParam->subjRange->GetFrom();
4636 TSeqPoscurrTo = alnLinksParam->subjRange->GetTo();
4637alnLinksParam->subjRange->SetFrom(
min(from,currFrom));
4638alnLinksParam->subjRange->SetTo(
max(to,currTo));
4643alnLinksParam->hspNumber = (!
first) ? alnLinksParam->hspNumber + 1 : 1;
4665 stringidString, prevIdString;
4666 for(CSeq_align_set::Tdata::const_iterator
4667iter = currSeqAlignIter;
4668iter != actual_aln_list.
Get().end();iter++) {
4670subid = &((*iter)->GetSeq_id(1));
4672 if(prevIdString.empty() || prevIdString == idString) {
4678prevIdString = idString;
4686unordered_set <string> :: const_iterator idsIter;
4692 if(actual_aln_list.
Get().empty()){
4703 boolshowBlastDefline =
false;
4704 for(CSeq_align_set::Tdata::const_iterator
4705iter = actual_aln_list.
Get().begin();
4706iter != actual_aln_list.
Get().end();iter++) {
4708subid = &((*iter)->GetSeq_id(1));
4719idsIter = selectedIDs.find(currID);
4722 if(idsIter == selectedIDs.end() && idCount < (
int)selectedIDs.size())
continue;
4723 if(idsIter == selectedIDs.end() && idCount >= (
int)selectedIDs.size())
break;
4726 if(previousId.
Empty() ||
4727!subid->
Match(*previousId)){
4734showBlastDefline =
true;
4738showBlastDefline =
false;
4741 if(!previousId.
Empty() &&
4742!subid->
Match(*previousId)){
4743 m_Scope.RemoveFromHistory(
m_Scope.GetBioseqHandle(*previousId));
4749 if(!(avRef.
Empty())){
4766alnvecInfo->use_this_seqid,
4767alnvecInfo->comp_adj_method);
4769alnvecInfo->alnvec = avRef;
4774 out<<
"Sequence with id " 4776<<
" no longer exists in database...alignment skipped\n";
4784static CRef< CScope > m_Scope
User-defined methods of the data storage class.
User-defined methods of the data storage class.
@ eExtreme_Biological
5' and 3'
User-defined methods of the data storage class.
Sequence alignment display tool.
const int k_NumAsciiChar
Number of ASCII characters for populating matrix columns.
bool GetSeqData(ParserPtr pp, const DataBlk &entry, CBioseq &bioseq, Int4 nodetype, unsigned char *seqconv, Uint1 seq_data_type)
#define BLAST_DEFAULT_MATRIX
Default matrix name: BLOSUM62.
static string GetIDUrl(SSeqURLInfo *seqUrlInfo, const objects::CSeq_id &id, objects::CScope &scope)
Create URL for seqid.
static void GetAsciiProteinMatrix(const char *matrix_name, CNcbiMatrix< int > &retval)
Retrieve a scoring matrix for the provided matrix name.
static list< string > GetFullLinkoutUrl(const list< CRef< objects::CBlast_def_line > > &bdl, const string &rid, const string &cdd_rid, const string &entrez_term, bool is_na, bool structure_linkout_as_group, bool for_alignment, int cur_align, string &linkoutOrder, TTaxId taxid, string &database, int query_number, string &user_url, string &preComputedResID, ILinkoutDB *linkoutdb, const string &mv_build_name)
Get linkout membership for for the list of blast deflines.
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 BuildFormatQueryString(CCgiContext &ctx, string &cgi_query)
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 string GetBareId(const objects::CSeq_id &id)
Get sequence id with no database source (bare accession)
static CAlignFormatUtil::DbType GetDbType(const objects::CSeq_align_set &actual_aln_list, objects::CScope &scope)
Set the database as gi type.
static string BuildUserUrl(const objects::CBioseq::TId &ids, TTaxId taxid, string user_url, string database, bool db_is_na, string rid, int query_number, bool for_alignment)
return the custom url (such as mapview)
static string MapTemplate(string inpString, string tmplParamName, Int8 templParamVal)
Replace template tags by real data.
static string GetURLFromRegistry(const string url_name, int index=-1)
retrieve URL from .ncbirc file combining host/port and format strings values.
static bool MatchSeqInSeqList(TGi cur_gi, CRef< objects::CSeq_id > &seqID, list< string > &use_this_seq, bool *isGiList=NULL)
Matches text seqID or gi with the list of seqIds or gis.
static int GetSeqLinkoutInfo(objects::CBioseq::TId &cur_id, ILinkoutDB **linkoutdb, const string &mv_build_name, TGi gi=INVALID_GI)
static CRef< objects::CSeq_id > GetDisplayIds(const objects::CBioseq_Handle &handle, const objects::CSeq_id &aln_id, list< TGi > &use_this_gi, TGi &gi, TTaxId &taxid)
Scan the the list of blast deflines and find seqID to be use in display.
static list< string > GetLinkoutUrl(int linkout, const objects::CBioseq::TId &ids, const string &rid, const string &cdd_rid, const string &entrez_term, bool is_na, TGi first_gi, bool structure_linkout_as_group, bool for_alignment, int cur_align, string preComputedResID)
Get the list of urls for linkouts.
static CRef< objects::CSeq_align > CreateDensegFromDendiag(const objects::CSeq_align &aln)
Create denseseg representation for densediag seqalign.
static list< string > GetCustomLinksList(SSeqURLInfo *seqUrlInfo, const objects::CSeq_id &id, objects::CScope &scope, int customLinkTypes=eLinkTypeDefault)
Create the list of string links for seqid that go.
static string GetURLDefault(const string url_name, int index=-1)
settings are not complete.
static string GetFASTALinkURL(SSeqURLInfo *seqUrlInfo, const objects::CSeq_id &id, objects::CScope &scope)
Create URL showing aligned regions info.
static bool GetTextSeqID(const list< CRef< objects::CSeq_id > > &ids, string *textSeqID=NULL)
static int GetPercentMatch(int numerator, int denominator)
function for calculating percent match for an alignment.
static list< string > GetSeqLinksList(SSeqURLInfo *seqUrlInfo, bool hspRange=false)
static void ExtractSeqalignSetFromDiscSegs(objects::CSeq_align_set &target, const objects::CSeq_align_set &source)
If a Seq-align-set contains Seq-aligns with discontinuous type segments, extract the underlying Seq-a...
static string MapTagToConstString(const string tag_name, EMapConstString flag=eMapToURL)
static TTaxId GetTaxidForSeqid(const objects::CSeq_id &id, objects::CScope &scope)
return the tax id for a seqid
static void AddSpace(CNcbiOstream &out, size_t number)
Add the specified white space.
static string GetAlignedRegionsURL(SSeqURLInfo *seqUrlInfo, const objects::CSeq_id &id, objects::CScope &scope)
Create URL to FASTA info.
static TGi GetGiForSeqIdList(const list< CRef< objects::CSeq_id > > &ids)
return gi from id list
static string GetFullIDLink(SSeqURLInfo *seqUrlInfo, const objects::CBioseq::TId *ids)
static string GetLabel(CConstRef< objects::CSeq_id > id, bool with_version=false)
Return a label for an ID Tries to recreate behavior of GetLabel before a change that prepends "ti|" t...
static string MapTagToHTML(const string tag_name)
list< TSeqPos > TSeqPosList
TSignedSeqPos GetAlnPosFromSeqPos(TNumrow row, TSeqPos seq_pos, ESearchDirection dir=eNone, bool try_reverse_dir=true) const
const CSeq_id & GetSeqId(TNumrow row) const
bool IsPositiveStrand(TNumrow row) const
TSignedSeqPos GetSeqPosFromAlnPos(TNumrow for_row, TSeqPos aln_pos, ESearchDirection dir=eNone, bool try_reverse_dir=true) const
bool IsNegativeStrand(TNumrow row) const
TRange GetSeqRange(TNumrow row) const
TSeqPos GetSeqStop(TNumrow row) const
int StrandSign(TNumrow row) const
TSeqPos GetSeqStart(TNumrow row) const
const CBioseq_Handle & GetBioseqHandle(TNumrow row) const
void SetAaCoding(TCoding coding)
CSeqVector::TResidue TResidue
void SetGenCode(int gen_code, TNumrow row=-1)
Class for computing sequences' titles ("definitions").
void Reverse(void)
Reverse the segments' orientation.
bool IsSetWidths(void) const
void Assign(const CSerialObject &obj, ESerialRecursionMode how=eRecursive)
overloaded Assign()
const TWidths & GetWidths(void) const
void x_FillSeqid(string &id, int row) const
make the appropriate seqid
@ eShowSequencePropertyLabel
@ eTranslateNucToNucAlignment
@ eShowInfoOnMouseOverSeqid
@ eShowTranslationForLocalSeq
@ eShowAlignStatsForMultiAlignView
void x_DisplayAlnvec(CNcbiOstream &out)
Display the current alnvec.
void x_DisplayAlignInfo(CNcbiOstream &out, SAlnInfo *aln_vec_info)
Display score,bits,expect,method.
list< string > m_HSPLinksList
void x_GetDomainInfo(int row_num, int aln_stop, vector< TSAlnFeatureInfoList > &retval) const
static CRef< objects::CSeq_align_set > PrepareBlastUngappedSeqalignEx(const objects::CSeq_align_set &alnset)
static functions same as PrepareBlastUngappedSeqalign, but process seg scores uniformly even if there...
string x_FormatOneDynamicFeature(string viewerURL, TGi subjectGi, int fromRange, int toRange, string featText)
list< CRef< DomainInfo > > * m_DomainInfo
void x_DisplaySequenceIDForPairwise(SAlnRowInfo *alnRoInfo, int row, bool has_mismatch, CNcbiOstrstream &out)
objects::CGetFeature * m_DynamicFeature
list< FeatureInfo * > * m_QueryFeature
external feature such as phiblast
CNcbiIfstream * m_ConfigFile
string m_CurrAlnID_Lbl
gi(if exists) that is used for html formatting otherwise id without db part
int m_currAlignHsp
Current HSP number for single alignmnet.
string x_GetDumpgnlLink(const list< CRef< objects::CSeq_id > > &ids) const
get dumpgnl url to sequence record
SeqLocColorOption m_SeqLocColor
ILinkoutDB * m_LinkoutDB
Reference to LinkoutDB implementation. Not owned by this class.
virtual string x_DisplayRowData(SAlnRowInfo *alnRoInfo)
Display pairwise alignment.
void x_FillIdentityInfo(const string &sequence_standard, const string &sequence, int &match, int &positive, string &middle_line)
compute number of identical and positive residues and set middle line accordingly
string x_PrintDefLine(const objects::CBioseq_Handle &bsp_handle, SAlnInfo *aln_vec_info)
print defline
void x_DisplaySequenceLine(SAlnRowInfo *alnRoInfo, int row, int prev_stop, CNcbiOstrstream &out)
TSubjectMaskMap m_SubjectMasks
Map of subject masks.
void x_DisplayAlignSortInfo(CNcbiOstream &out, string id_label)
Display Sorting controls.
void x_ShowAlnvecInfoTemplate(CNcbiOstream &out, SAlnInfo *aln_vec_info, bool show_defline)
list< string > m_CustomLinksList
void x_ProcessRowDataSet(SAlnRowInfo *alnRoInfo, int aln_start, vector< int > &prev_stop)
string x_MapDefLine(SAlnDispParams *alnDispParams, bool isFisrt, bool linkout, bool hideDefline, int seqLength)
void x_DoFills(int row, objects::CAlnMap::TSignedRange &aln_range, int aln_start, TSInsertInformationList &insert_list, list< string > &inserts) const
recusively fill the insert for anchored view
void x_PreProcessSeqAlign(objects::CSeq_align_set &actual_aln_list)
Sets m_Segs,m_HspNumber.
string x_FormatDefLinesHeader(const objects::CBioseq_Handle &bsp_handle, SAlnInfo *aln_vec_info)
int x_GetLinkout(const objects::CSeq_id &id)
string m_CurrAlnID_DbLbl
gi(if exists) that is used for html formatting otherwise id with db part like ti:xxxxxxx or GNOMON:XX...
void x_InitAlignLinks(SAlnDispParams *alnDispParams, const list< CRef< objects::CBlast_def_line > > &bdl_list, int lnkDispPrarms)
void x_DisplayInsertsForQueryAnchored(SAlnRowInfo *alnRoInfo, int row, CNcbiOstrstream &out)
int m_ResultPositionIndex
result position index for multiple query case
map< string, struct SAlnLinksParams > m_AlnLinksParams
void DisplaySeqalign(CNcbiOstream &out)
call this to display seqalign
void x_SetFeatureInfo(CRef< SAlnFeatureInfo > feat_info, const objects::CSeq_loc &seqloc, int aln_from, int aln_to, int aln_stop, char pattern_char, string pattern_id, string &alternative_feat_str, int genetic_code) const
set feature info
CRef< objects::CObjectManager > m_FeatObj
SeqLocCharOption m_SeqLocChar
string x_GetGeneLinkUrl(int gene_id)
get the URL of the Gene info link.
void x_ShowAlnvecInfo(CNcbiOstream &out, SAlnInfo *aln_vec_info, bool show_defline)
bool m_UseLongSeqIds
print long sequence ids (with gi and accession with database source)
void x_DisplaySingleAlignParams(CNcbiOstream &out, SAlnInfo *aln_vec_info, bool showSortControls)
Display Sorting controls,score,bits,expect,method,features identities,positives,frames etc.
string x_FormatDynamicFeaturesInfo(string alignInfo, SAlnInfo *aln_vec_info)
string x_FormatAlnHSPLinks(string &alignInfo)
objects::CScope & m_Scope
string x_GetSegs(int row) const
segments starts and stops used for map viewer, etc
AutoPtr< const vector< string > > m_SeqPropertyLabel
void x_GetInserts(TSInsertInformationList &insert_list, objects::CAlnMap::TSeqPosList &insert_aln_start, objects::CAlnMap::TSeqPosList &insert_seq_start, objects::CAlnMap::TSeqPosList &insert_length, int line_aln_stop)
get insert information
CRef< objects::CAlnVec > x_GetAlnVecForSeqalign(const objects::CSeq_align &align)
string x_FormatSingleAlign(SAlnInfo *aln_vec_info)
void x_PrepareDynamicFeatureInfo(SAlnInfo *aln_vec_info)
Calculate data for feature display.
list< CRef< SAlnSeqlocInfo > > TSAlnSeqlocInfoList
List of SAlnSeqlocInfo structures.
string m_MapViewerBuildName
mapviewer build name associated with the sequences in the BLAST database out of which the results are...
CAlignFormatUtil::SLinkoutInfo m_LinkoutInfo
int m_cur_align
Gene info reader object, reads Gene info entries from files.
void x_AddTranslationForLocalSeq(vector< TSAlnFeatureInfoList > &retval, vector< string > &sequence) const
void x_DisplayMpvAnchor(CNcbiOstream &out, SAlnInfo *aln_vec_info)
Display anchor for links from mapview.
CDisplaySeqalign(const objects::CSeq_align_set &seqalign, objects::CScope &scope, list< CRef< CSeqLocInfo > > *mask_seqloc=NULL, list< FeatureInfo * > *external_feature=NULL, const char *matrix_name="BLOSUM62")
Constructors.
int m_QueryAnchoredSetIndex
string x_FormatAlignSortInfo()
string x_HTMLSeqIDLink(SAlnRowInfo *alnRoInfo, int row, TGi giToUse)
int x_GetNumGaps()
Count number of total gaps.
void x_DisplayMiddLine(SAlnRowInfo *alnRoInfo, int row, CNcbiOstrstream &out)
string x_PrintDynamicFeatures(void)
void x_DisplayAlnvecInfo(CNcbiOstream &out, SAlnInfo *aln_vec_info, bool show_defline)
display alnvec info
void x_InitAlignParams(objects::CSeq_align_set &actual_aln_list)
Inits align parameters for displaySetup scope for feature fetching and m_DynamicFeature inits m_FeatO...
SAlignTemplates * m_AlignTemplates
string m_AlignedRegionsUrl
void x_GetFeatureInfo(TSAlnFeatureInfoList &feature, int custom_genetic_code, objects::CScope &scope, objects::CSeqFeatData::E_Choice choice, int row, string &sequence, list< list< CRange< TSeqPos > > > &feat_seq_range, list< objects::ENa_strand > &feat_seq_strand, bool fill_feat_range) const
get feature info
string x_FormatAlnBlastInfo(SAlnInfo *aln_vec_info)
string m_PreComputedResID
CDD precomputed results ID.
void x_PrepareIdentityInfo(SAlnInfo *aln_vec_info)
list< CRef< SAlnFeatureInfo > > TSAlnFeatureInfoList
string m_CurrAlnAccession
accession that is displayed
static CRef< objects::CSeq_align_set > PrepareBlastUngappedSeqalign(const objects::CSeq_align_set &alnset)
static functions Need to call this if the seqalign is stdseg or dendiag for ungapped blast alignment ...
CConstRef< objects::CSeq_align_set > m_SeqalignSetRef
reference to seqalign set
string x_FormatIdentityInfo(string alignInfo, SAlnInfo *aln_vec_info)
list< CRef< SInsertInformation > > TSInsertInformationList
void DisplayPairwiseSeqalign(CNcbiOstream &out, unordered_set< string > selectedIDs)
int m_currAlignSeqListIndex
Current subject seq index in descriptions table.
void x_PreProcessSingleAlign(objects::CSeq_align_set::Tdata::const_iterator currSeqAlignIter, objects::CSeq_align_set &actual_aln_list, bool multipleSeqs)
void x_FillLocList(TSAlnSeqlocInfoList &loc_list, const list< CRef< CSeqLocInfo > > *masks) const
convert the passed seqloc list info using alnment coordinates
void x_OutputSeq(string &sequence, const objects::CSeq_id &id, int start, int len, int frame, int row, bool color_mismatch, const TSAlnSeqlocInfoList &loc_list, CNcbiOstream &out) const
display sequence for one row
void x_CalcUrlLinksParams(const objects::CSeq_align &align, string idString, string toolUrl)
string x_DisplayRowDataSet(SAlnRowInfo *alnRoInfo, int aln_start, vector< int > &prev_stop)
void x_FillInserts(int row, objects::CAlnMap::TSignedRange &aln_range, int aln_start, list< string > &inserts, string &insert_pos_string, TSInsertInformationList &insert_list) const
get inserts info
list< string > m_LinkoutList
MiddleLineStyle m_MidLineStyle
TranslatedFrameForLocalSeq m_TranslatedFrameForLocalSeq
void x_DisplaySequenceIDForQueryAnchored(SAlnRowInfo *alnRoInfo, int row, CNcbiOstrstream &out)
void x_PrintFeatures(SAlnRowInfo *alnRoInfo, int row, string &master_feat_str, CNcbiOstream &out)
print out features and fill master_feat_str if applicable
list< CRef< CSeqLocInfo > > * m_Seqloc
display character option for list of seqloc
void x_DisplayBl2SeqLink(CNcbiOstream &out)
Dipslay Bl2seq TBLASTX link.
virtual ~CDisplaySeqalign()
Destructor.
void x_GetQueryFeatureList(int row_num, int aln_stop, vector< TSAlnFeatureInfoList > &features) const
get external query feature info such as phi blast pattern
CRef< objects::CScope > m_featScope
string x_InitDefLinesHeader(const objects::CBioseq_Handle &bsp_handle, SAlnInfo *aln_vec_info)
SAlnDispParams * x_FillAlnDispParams(const CRef< objects::CBlast_def_line > &iter, const objects::CBioseq_Handle &bsp_handle, list< string > &use_this_seqid, TGi firstGi, int numLinkoutReads)
int m_NumBlastDefLines
Number of subject sequence deflines.
CAlignFormatUtil::SSeqURLInfo * x_InitSeqUrl(TGi giToUse, string accession, TTaxId taxid, const list< CRef< objects::CSeq_id > > &ids)
get url to sequence record
void SetSubjectMasks(const TSeqLocInfoVector &masks)
Sets the masks and the masking algorithm used for the subject sequences.
SAlnRowInfo * x_PrepareRowData(void)
Calculate data for pairwise alignment display.
static CRef< objects::CSeq_align_set > PrepareBlastUngappedSeqalignEx2(objects::CSeq_align_set &alnset)
same as PrepareBlastUngappedSeqalign2, but sets aggregate scores.
static string GetLoaderNameFromArgs(CReader *reader=0)
static TRegisterLoaderInfo RegisterInObjectManager(CObjectManager &om, CReader *reader=0, CObjectManager::EIsDefault is_default=CObjectManager::eDefault, CObjectManager::TPriority priority=CObjectManager::kPriority_NotSet)
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
bool Match(const CObject_id &oid2) const
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 ...
namespace ncbi::objects::
Seq-loc iterator class â iterates all intervals from a seq-loc in the correct order.
Template class for iteration on objects of class C (non-medifiable version)
@ eRight
Towards higher aln coord (always to the right)
@ eLeft
Towards lower aln coord (always to the left)
@ eBackwards
Towards lower seq coord (to the left if plus strand, right if minus)
virtual int GetLinkout(TGi gi, const string &mv_build_name)=0
Retrieve the Linkout for a given GI.
Collection of masked regions for a single query sequence.
container_type::const_iterator const_iterator
iterator_bool insert(const value_type &val)
container_type::value_type value_type
string GetSeqIdString(const CSeq_id &id)
std::ofstream out("events_result.xml")
main entry point for tests
const size_t kDfltLineLength
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
static const char * str(char *buf, int n)
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
SStrictId_Tax::TId TTaxId
Taxon id type.
const CCgiEntry & GetRequestValue(const string &name, bool *is_found=0) const
const string & GetValue() const
Get the value as a string, (necessarily) prefetching it all if applicable; the result remains availab...
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
const string & GetMsg(void) const
Get message string.
virtual const char * what(void) const noexcept
Standard report (includes full backlog).
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
@ eSerial_AsnText
ASN.1 text.
static string HTMLEncode(const string &str, THTMLEncodeFlags flags=fEncodeAll)
HTML encodes a string. E.g. <.
TGi FindGi(const container &ids)
Return gi from id list if exists, return 0 otherwise.
string GetSeqIdString(bool with_version=false) const
Return seqid string with optional version for text seqid type.
void GetLabel(string *label, ELabelType type=eDefault, TLabelFlags flags=fLabel_Default) const
Append a label for this Seq-id to the supplied string.
bool Match(const CSeq_id &sid2) const
Match() - TRUE if SeqIds are equivalent.
static int WorstRank(const CRef< CSeq_id > &id)
string GetLabel(const CSeq_id &id)
@ eContent
Untagged human-readable accession or the like.
@ eBoth
Type and content, delimited by a vertical bar.
TRange GetTotalRange(void) const
void Add(const CSeq_loc &other)
Simple adding of seq-locs.
void SetPartialStart(bool val, ESeqLocExtremes ext)
set / remove e_Lim fuzz on start or stop (lt/gt - indicating partial interval)
void SetPartialStop(bool val, ESeqLocExtremes ext)
CConstBeginInfo ConstBegin(const C &obj)
Get starting point of non-modifiable object hierarchy.
static CObjectOStream * Open(ESerialDataFormat format, CNcbiOstream &outStream, bool deleteOutStream)
Create serial object writer and attach it to an output stream.
TSeqPos GetStop(const CSeq_loc &loc, CScope *scope, ESeqLocExtremes ext=eExtreme_Positional)
If only one CBioseq is represented by CSeq_loc, returns the position at the stop of the location.
const CSeq_id & GetId(const CSeq_loc &loc, CScope *scope)
If all CSeq_ids embedded in CSeq_loc refer to the same CBioseq, returns the first CSeq_id found,...
ENa_strand GetStrand(const CSeq_loc &loc, CScope *scope=0)
Returns eNa_strand_unknown if multiple Bioseqs in loc Returns eNa_strand_other if multiple strands in...
TSeqPos GetStart(const CSeq_loc &loc, CScope *scope, ESeqLocExtremes ext=eExtreme_Positional)
If only one CBioseq is represented by CSeq_loc, returns the position at the start of the location.
bool IsSameBioseq(const CSeq_id &id1, const CSeq_id &id2, CScope *scope, CScope::EGetBioseqFlag get_flag=CScope::eGetBioseq_All)
Determines if two CSeq_ids represent the same CBioseq.
string GenerateDefline(const CBioseq_Handle &bsh, TUserFlags flags=0)
Main method.
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.
@ eGetId_Best
return the "best" gi (uses FindBestScore(), with CSeq_id::CalculateScore() as the score function
static CRef< CObjectManager > GetInstance(void)
Return the existing object manager or create one.
CSeq_entry_Handle AddTopLevelSeqEntry(CSeq_entry &top_entry, TPriority pri=kPriority_Default, EExist action=eExist_Default)
Add seq_entry, default priority is higher than for defaults or loaders Add object to the score with p...
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
void AddDefaults(TPriority pri=kPriority_Default)
Add default data loaders from object manager.
CConstRef< CBioseq > GetCompleteBioseq(void) const
Get the complete bioseq.
TBioseqCore GetBioseqCore(void) const
Get bioseq core structure.
const CSeqFeatData & GetData(void) const
TSeqPos GetBioseqLength(void) const
bool IsSetProduct(void) const
CScope & GetScope(void) const
Get scope this handle belongs to.
CRef< CSeq_loc > GetRangeSeq_loc(TSeqPos start, TSeqPos stop, ENa_strand strand=eNa_strand_unknown) const
Return CSeq_loc referencing the given range and strand on the bioseq If start == 0,...
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
SAnnotSelector & SetResolveAll(void)
SetResolveAll() is equivalent to SetResolveMethod(eResolve_All).
SAnnotSelector & SetAdaptiveDepth(bool value=true)
SetAdaptiveDepth() requests to restrict subsegment resolution depending on annotations found on lower...
const CSeq_loc & GetProduct(void) const
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 Empty(void) const THROWS_NONE
Check if CRef is empty â not pointing to any object, which means having a null value.
position_type GetLength(void) const
bool IntersectingWith(const TThisType &r) const
TThisType & Set(position_type from, position_type to)
virtual const string & Get(const string §ion, const string &name, TFlags flags=0) const
Get the parameter value.
#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.
IO_PREFIX::ifstream CNcbiIfstream
Portable alias for ifstream.
NCBI_NS_STD::string::size_type SIZE_TYPE
static string SizetToString(size_t value, TNumToStringFlags flags=0, int base=10)
Convert size_t 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 bool IsBlank(const CTempString str, SIZE_TYPE pos=0)
Check if a string is blank (has no text).
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static SIZE_TYPE Find(const CTempString str, const CTempString pattern, ECase use_case=eCase, EDirection direction=eForwardSearch, SIZE_TYPE occurrence=0)
Find the pattern in the 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.
static string & ToLower(string &str)
Convert string to lower case â string& version.
C::value_type FindBestChoice(const C &container, F score_func)
Find the best choice (lowest score) for values in a container.
static const char label[]
const Tdata & Get(void) const
Get the member data.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
TId & SetId(void)
Select the variant.
const TDenseg & GetDenseg(void) const
Get the variant data.
Tdata & Set(void)
Assign a value to data member.
TScore & SetScore(void)
Assign a value to Score data member.
E_Choice Which(void) const
Which variant is currently selected.
const TLoc & GetLoc(void) const
Get the Loc member data.
list< CRef< CStd_seg > > TStd
void SetSegs(TSegs &value)
Assign a value to Segs data member.
const TIds & GetIds(void) const
Get the Ids member data.
void SetType(TType value)
Assign a value to Type data member.
const TStd & GetStd(void) const
Get the variant data.
const TDendiag & GetDendiag(void) const
Get the variant data.
list< CRef< CSeq_align > > Tdata
list< CRef< CDense_diag > > TDendiag
const Tdata & Get(void) const
Get the member data.
const TSegs & GetSegs(void) const
Get the Segs member data.
void SetLocation(TLocation &value)
Assign a value to Location data member.
void SetComment(const TComment &value)
Assign a value to Comment data member.
Tdata & Set(void)
Assign a value to data member.
E_Choice
Choice variants.
TFrame GetFrame(void) const
Get the Frame member data.
void SetData(TData &value)
Assign a value to Data data member.
const TCdregion & GetCdregion(void) const
Get the variant data.
bool IsSetFrame(void) const
Check if a value has been assigned to Frame data member.
void Select(E_Choice index, EResetVariant reset=eDoResetVariant)
Select the requested variant if needed.
ENa_strand
strand of nucleic acid
const TId & GetId(void) const
Get the Id member data.
const TWhole & GetWhole(void) const
Get the variant data.
TFrom GetFrom(void) const
Get the From member data.
E_Choice Which(void) const
Which variant is currently selected.
TGi GetGi(void) const
Get the variant data.
bool IsLocal(void) const
Check if variant Local is selected.
TTo GetTo(void) const
Get the To member data.
bool IsWhole(void) const
Check if variant Whole is selected.
@ e_Gi
GenInfo Integrated Database.
@ e_not_set
No variant selected.
TSeq & SetSeq(void)
Select the variant.
void SetData(TData &value)
Assign a value to Data data member.
TAnnot & SetAnnot(void)
Assign a value to Annot data member.
const TId & GetId(void) const
Get the Id member data.
list< CRef< CSeq_id > > TId
list< CRef< CSeq_feat > > TFtable
list< CRef< CSeq_annot > > TAnnot
@ e_Ncbieaa
extended ASCII 1 letter aa codes
unsigned int
A callback function used to compare two keys in a database.
HTML library helper classes and functions.
if(yy_accept[yy_current_state])
CMD5 - class for computing Message Digest version 5 checksums.
const TYPE & Get(const CNamedParameterList *param)
const struct ncbi::grid::netcache::search::fields::SIZE size
int strncmp(const char *str1, const char *str2, size_t count)
Defines NCBI C++ exception handling.
Process information in the NCBI Registry, including working with configuration files.
NCBI C++ stream class wrappers for triggering between "new" and "old" C++ stream libraries.
Useful/utility classes and methods.
static int match(PCRE2_SPTR start_eptr, PCRE2_SPTR start_ecode, uint16_t top_bracket, PCRE2_SIZE frame_size, pcre2_match_data *match_data, match_block *mb)
static const string kSubject("subject")
Defines BLAST database access classes.
vector< TMaskedQueryRegions > TSeqLocInfoVector
Collection of masked regions for all queries in a BLAST search.
static const char * k_FrameConversion[k_NumFrame]
static void s_OutputFeature(string &reference_feat_line, string &feat_line, bool color_feat_mismatch, int start, int len, CNcbiOstream &out, bool is_html)
void s_CalculateIdentity(const string &sequence_standard, const string &sequence, char gap_char, int &match, int &align_length)
static const char * k_DefaultSpaceMaintainerTempl
static void s_DisplayIdentityInfo(CNcbiOstream &out, int aln_stop, int identity, int positive, int match, int gap, int master_strand, int slave_strand, int master_frame, int slave_frame, bool aln_is_prot)
show blast identity, positive etc.
static const int k_SeqStopMargin
static const char * k_DefaultAnchorWithPosTempl
static const char * k_DefaultFeaturesTempl
static const int k_NumFrame
static const int k_GetSubseqThreshhold
static const char * color[]
static string s_MapFeatureURL(string viewerURL, string textSeqID, string db, int fromRange, int toRange, string rid)
static CRef< CScope > s_MakeNewMasterSeq(list< list< CRange< TSeqPos > > > &feat_range, list< ENa_strand > &feat_seq_strand, const CBioseq_Handle &handle)
make a new copy of master seq with feature info and return the scope that contains this sequence
static const char k_IntronChar
static int x_AddBar(string &seq, int insert_alnpos, int aln_start)
add a "|" to the current insert for insert on next rows and return the insert end position.
static const char k_IdentityChar
static void s_MakeDomainString(int aln_from, int aln_to, const string &domain_name, string &final_domain)
static string s_GetCdsSequence(int genetic_code, CFeat_CI &feat, CScope &scope, list< CRange< TSeqPos > > &range, const CBioseq_Handle &handle, ENa_strand feat_strand, string &feat_id, TSeqPos frame_adj, bool mix_loc)
return cds coded sequence and fill the id if found
static int s_AdjustInsert(string &cur_insert, string &new_insert, int insert_alnpos, int aln_start)
Add new insert seq to the current insert seq and return the end position of the latest insert.
static const int k_MinDeflinesToShow
static const char * k_DefaultAnchorTempl
static void s_WrapOutputLine(CNcbiOstream &out, const string &str)
wrap line
static const char * k_DefaultCheckboxTempl
static const int k_GetDynamicFeatureSeqLength
static int s_GetFrame(int start, ENa_strand strand, const CSeq_id &id, CScope &sp)
return the frame for a given strand Note that start is zero bases.
static const int k_StartSequenceMargin
static int s_GetStdsegMasterFrame(const CStd_seg &ss, CScope &scope)
reture the frame for master seq in stdseg
static const char * k_DefaultPairwiseWithIdntTempl
static const int k_AlignStatsMargin
static const int k_MaxDeflinesToShow
static void s_ColorDifferentBases(string &seq, char identity_char, CNcbiOstream &out)
To add color to bases other than identityChar.
static void s_MapSlaveFeatureToMaster(list< CRange< TSeqPos > > &master_feat_range, ENa_strand &master_feat_strand, CFeat_CI &feat, list< CSeq_loc_CI::TRange > &slave_feat_range, ENa_strand slave_feat_strand, CAlnVec *av, int row, TSeqPos frame_adj)
map slave feature info to master seq
static const char * k_DefaultCheckboxExTempl
static bool s_ProcessStyledContent(string &seq, int currIndex, bool startStyledOutput, bool stopStyledOutput, string tmpl, string &styledSeqStr, CNcbiOstream &out)
To add style to bases for some conditions.
static const int k_FeatureIdLen
static string s_GetConcatenatedExon(CFeat_CI &feat, ENa_strand feat_strand, list< CRange< TSeqPos > > &range, TSeqPos total_coding_len, string &raw_cdr_product, TSeqPos frame_adj)
return concatenated exon sequence
static void s_FillCdsStartPosition(string &line, string &concat_exon, size_t length_per_line, TSeqPos feat_aln_start_totalexon, ENa_strand seq_strand, ENa_strand feat_strand, list< TSeqPos > &start)
fill the cds start positions (1 based)
static const int k_IdStartMargin
static const int k_SequencePropertyLabelMargin
static string s_GetFinalTranslatedString(const CSeq_loc &loc, CScope &scope, int first_encoding_base, int align_length, const string &translation, const string &sequence, char gap_char)
static const int k_ColorMismatchIdentity
threshhold to color mismatch. 98 means 98%
static const char * k_DefaultMaskSeqLocTempl
#define row(bind, expected)
void Init(string rid_in, string cdd_rid_in, string entrez_term_in, bool is_na_in, string database_in, int query_number_in, string user_url_in, string preComputedResID_in, string linkoutOrder_in, bool structure_linkout_as_group_in=false, bool for_alignment_in=true)
CRange< TSeqPos > subjRange
Structure that holds information needed for creation seqID URL in descriptions and alignments.
CRange< TSeqPos > seqRange
sequence range
string defline
sequence defline
bool useTemplates
bool indicating that templates should be used when contsructing links
string segs
string containing align segments in the the following format seg1Start-seg1End,seg2Start-seg2End
bool advancedView
bool indicating that advanced view design option should be used when contsructing links
string resourcesUrl
URL(s) to other resources from .ncbirc.
structure for store feature display info
string alignRowTmpl
Template for displayin actual pairwise alignment - BLAST_ALIGN_ROWS.
string alnTitlesTmpl
Template for displaying multiple defline titles.
string alignFeatureLinkTmpl
Template for displaying align features link -ALN_FEATURES_LINK.
string alignInfoFrameTmpl
Template for displaying frame data ALIGN_PARAMS_FRAME, part of BLAST_ALIGN_PARAMS.
string alnSeqInfoTmpl
Template for displaying sequnce link in defline.
string alignQueryAnchTempl
Template for displaying one set of query anchored alignment - BLAST_QUERY_ANCH_NAV.
string alnTitlesLinkTmpl
Template for displaying link for more defline titles.
string alignInfoMethodTmpl
Template for displaying frame data ALIGN_PARAMS_METHOD, part of BLAST_ALIGN_PARAMS.
string alignFeatureTmpl
Template for displaying align features -ALN_FEATURES.
string sortInfoTmpl
Template for displaying Sort by header - SORT_ALIGNS_SEQ.
string alnDefLineTmpl
Template for displaying one defline ALN_DEFLINE_ROW.
string alignInfoTmpl
Template for displaying singe align params - BLAST_ALIGN_PARAMS_NUC,BLAST_ALIGN_PARAMS_PROT.
string alignHeaderTmpl
Template for displaying header,deflines and gene info - BLAST_ALIGN_HEADER.
string alignRowTmplLast
Template for displayin actual last pairwise alignment - BLAST_ALIGN_ROWS_LST.
CRef< objects::CSeq_id > seqID
seqID used in defline
CAlignFormatUtil::SSeqURLInfo * seqUrlInfo
list< CRef< objects::CSeq_id > > ids
TGi gi
gi used in defline
string title
sequnce title
store feature information
store alnvec and score info
CRef< objects::CAlnVec > alnvec
vector< objects::SFeatInfo * > feat_list
objects::SFeatInfo * feat5
objects::SFeatInfo * feat3
vector< string > align_stats
vector< objects::CAlnMap::TSignedRange > rowRng
vector< objects::CAlnMap::TSeqPosList > insertLength
bool show_seq_property_label
vector< double > percent_ident
vector< objects::CAlnMap::TSeqPosList > seqStarts
vector< string > seq_property_label
vector< TSAlnSeqlocInfoList > masked_regions
objects::CAlnMap::TSignedRange currRange
vector< objects::CAlnMap::TSeqPosList > insertAlnStart
vector< TSAlnFeatureInfoList > bioseqFeature
vector< objects::CAlnMap::TSeqPosList > insertStart
vector< string > sequence
vector< string > seqidArray
vector< objects::CAlnMap::TSeqPosList > seqStops
int max_seq_property_label
vector< int > align_length
internal insert information aln_start.
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