static void silent_fmt_hits(AjPList hits, AjPFeattable feat, AjBool silent, AjBool rev) { PSilent res; AjPFeature sf = NULL; AjPStr tmpFeatStr = NULL; ajListSort(hits,silent_basecompare); while(ajListPop(hits,(void **)&res)) { if (rev) sf = ajFeatNewIIRev(feat, res->match, res->match+ajStrGetLen(res->site)-1); else sf = ajFeatNewII(feat, res->match, res->match+ajStrGetLen(res->site)-1); if (silent) { ajFmtPrintS(&tmpFeatStr, "*silent Yes"); ajFeatTagAdd (sf, NULL, tmpFeatStr); } ajFmtPrintS(&tmpFeatStr, "*enzyme %S", res->code); ajFeatTagAdd (sf, NULL, tmpFeatStr); ajFmtPrintS(&tmpFeatStr, "*rspattern %S", res->site); ajFeatTagAdd (sf, NULL, tmpFeatStr); ajFmtPrintS(&tmpFeatStr, "*baseposn %d", res->base); ajFeatTagAdd (sf, NULL, tmpFeatStr); ajFmtPrintS(&tmpFeatStr, "*aa %S.%S", res->seqaa, res->reaa); ajFeatTagAdd (sf, NULL, tmpFeatStr); ajFmtPrintS(&tmpFeatStr, "*mutation %c->%c", res->obase,res->nbase); ajFeatTagAdd (sf, NULL, tmpFeatStr); ajStrDel(&res->code); ajStrDel(&res->site); ajStrDel(&res->seqaa); ajStrDel(&res->reaa); AJFREE(res); } ajStrDel(&tmpFeatStr); return; }
static void digest_report_hits(AjPFeattable TabRpt, AjPList l, ajint be, const char* s) { AjPFeature gf = NULL; EmbPPropFrag fr; AjPStr t; ajint len; AjPStr tmpStr = NULL; size_t stlen; t = ajStrNew(); stlen = strlen(s); len = (ajint) stlen; while(ajListPop(l,(void **)&fr)) { ajStrAssignSubC(&t,s,fr->start,fr->end); gf = ajFeatNewII(TabRpt,fr->start+be,fr->end+be); ajFmtPrintS(&tmpStr, "*molwt %.3f", fr->molwt); ajFeatTagAdd(gf, NULL, tmpStr); if(fr->start>0) { ajFmtPrintS(&tmpStr, "*cterm %c", *(s+(fr->start)-1)); ajFeatTagAdd(gf, NULL, tmpStr); } if(fr->end<len-1) { ajFmtPrintS(&tmpStr, "*nterm %c", *(s+(fr->end+1))); ajFeatTagAdd(gf, NULL, tmpStr); } AJFREE(fr); } ajStrDel(&t); ajStrDel(&tmpStr); return; }
static void jaspscan_ReportHits(AjPFeattable TabRpt, const AjPTable mattab, AjPList hits) { PJsphits hit = NULL; PJspmat info = NULL; AjPFeature feat = NULL; AjPStr str = NULL; float fnum = 0.; str = ajStrNew(); while(ajListPop(hits,(void **)&hit)) { if(hit->start <= hit->end) feat = ajFeatNewII(TabRpt,hit->start,hit->end); else feat = ajFeatNewIIRev(TabRpt,hit->start,hit->end); ajFmtPrintS(&str,"*pc %.3f",hit->scorepc); ajFeatTagAdd(feat, NULL, str); ajFmtPrintS(&str,"*id %S",hit->matname); ajFeatTagAdd(feat, NULL, str); info = ajTableFetch(mattab,hit->matname); if(!info) ajWarn("No info for matrix %S",hit->matname); if(ajStrGetLen(info->name)) { ajFmtPrintS(&str,"*name %S",info->name); ajFeatTagAdd(feat, NULL, str); } if(ajStrGetLen(info->species)) { ajFmtPrintS(&str,"*species %S",info->species); ajFeatTagAdd(feat, NULL, str); } if(ajStrGetLen(info->klass)) { ajFmtPrintS(&str,"*class %S",info->klass); ajFeatTagAdd(feat, NULL, str); } if(ajStrGetLen(info->sgroup)) { ajFmtPrintS(&str,"*supergroup %S",info->sgroup); ajFeatTagAdd(feat, NULL, str); } if(ajStrGetLen(info->protseq)) { ajFmtPrintS(&str,"*pseq %S",info->protseq); ajFeatTagAdd(feat, NULL, str); } if(ajStrGetLen(info->exp)) { ajFmtPrintS(&str,"*exp %S",info->exp); ajFeatTagAdd(feat, NULL, str); } if(ajStrGetLen(info->pmid)) { ajFmtPrintS(&str,"*pmid %S",info->pmid); ajFeatTagAdd(feat, NULL, str); } if(ajStrGetLen(info->num)) { ajStrToFloat(info->num,&fnum); ajFmtPrintS(&str,"*info %.3f",fnum); ajFeatTagAdd(feat, NULL, str); } if(ajStrGetLen(info->jaspar)) { ajFmtPrintS(&str,"*jaspar %S",info->jaspar); ajFeatTagAdd(feat, NULL, str); } if(ajStrGetLen(info->transfac)) { ajFmtPrintS(&str,"*transfac %S",info->transfac); ajFeatTagAdd(feat, NULL, str); } if(ajStrGetLen(info->mcs)) { ajStrToFloat(info->mcs,&fnum); ajFmtPrintS(&str,"*mcs %.3f",fnum); ajFeatTagAdd(feat, NULL, str); } if(ajStrGetLen(info->models)) { ajFmtPrintS(&str,"*built %S",info->models); ajFeatTagAdd(feat, NULL, str); } jaspscan_hitsdel(&hit); } ajStrDel(&str); return; }