static void blastiodAxtOutput(FILE *f, struct axt *axt, int tSize, int qSize, int lineSize, boolean isProt, boolean isTranslated) /* Output base-by-base part of alignment in blast-like fashion. */ { int tOff = axt->tStart; int dt = (isTranslated ? 3 : 1); int qOff = axt->qStart; int lineStart, lineEnd, i; int digits = calcDigitCount(axt, tSize, qSize); struct axtScoreScheme *ss = NULL; if (isProt) ss = axtScoreSchemeProteinDefault(); for (lineStart = 0; lineStart < axt->symCount; lineStart = lineEnd) { lineEnd = lineStart + lineSize; if (lineEnd > axt->symCount) lineEnd = axt->symCount; fprintf(f, "Query: %-*d ", digits, plusStrandPos(qOff, qSize, axt->qStrand, FALSE)); for (i=lineStart; i<lineEnd; ++i) { char c = axt->qSym[i]; fputc(c, f); if (c != '-') ++qOff; } fprintf(f, " %-d\n", plusStrandPos(qOff, qSize, axt->qStrand, TRUE)); fprintf(f, " %*s ", digits, " "); for (i=lineStart; i<lineEnd; ++i) { char q, t, c; q = axt->qSym[i]; t = axt->tSym[i]; if (isProt) { if (q == t) c = q; else if (ss->matrix[(int)q][(int)t] > 0) c = '+'; else c = ' '; } else c = ((toupper(q) == toupper(t)) ? '|' : ' '); fputc(c, f); } fprintf(f, "\n"); fprintf(f, "Sbjct: %-*d ", digits, plusStrandPos(tOff, tSize, axt->tStrand, FALSE)); for (i=lineStart; i<lineEnd; ++i) { char c = axt->tSym[i]; fputc(c, f); if (c != '-') tOff += dt; } fprintf(f, " %-d\n", plusStrandPos(tOff, tSize, axt->tStrand, TRUE)); fprintf(f, "\n"); } }
static int countPositives(char *a, char *b, int size) /* Count positive (not necessarily identical) protein matches. */ { int count = 0; int i; struct axtScoreScheme *ss = axtScoreSchemeProteinDefault(); for (i=0; i<size; ++i) { if (ss->matrix[(int)a[i]][(int)b[i]] > 0) ++count; } return count; }
void doOtherProteinAli(struct sqlConnection *conn, char *localId, char *localName) /* Put up page that shows alignment between this protein sequence * and other species. */ { char *otherTable = cartString(cart, hggOtherPepTable); char *otherId = cartString(cart, hggOtherId); char *localTable = genomeSetting("knownGenePep"); bioSeq *localSeq = getSeq(conn, localTable, localId); bioSeq *otherSeq = getSeq(conn, otherTable, otherId); if (localSeq != NULL && otherSeq != NULL) { struct axtScoreScheme *ss = axtScoreSchemeProteinDefault(); if (axtAffineSmallEnough(localSeq->size, otherSeq->size)) { struct axt *axt = axtAffine(localSeq, otherSeq, ss); hPrintf("<TT><PRE>"); if (axt != NULL) { printf("ID (including gaps) %3.1f%%, coverage (of both) %3.1f%%, score %d\n", axtIdWithGaps(axt)*100, axtCoverage(axt, localSeq->size, otherSeq->size)*100, axt->score); printf("Alignment between %s (top %s %daa) and\n", localName, localSeq->name, localSeq->size); printf("%s homolog (bottom %s %daa)\n", otherTable, otherSeq->name, otherSeq->size); printf("\n"); axtPrintTraditional(axt, 60, ss, stdout); axtFree(&axt); } else { printf("%s and %s don't align\n", localSeq->name, otherSeq->name); } hPrintf("</PRE></TT>"); } else { printf("Sorry, %s (%d amino acids) and %s (%d amino acids) are too big to align", localSeq->name, localSeq->size, otherSeq->name, otherSeq->size); } } else { warn("Couldn't get sequences, database out of sync?"); } }
void freen(char *out) /* Test some hair-brained thing. */ { char *a = "CVMVFTVSCSKMSSIVDRDDSSIFDGLVEEDDKDKAKRVSRNKSEKKRRDQFNVLIKELG" "SMLPGNARKMDKSTVLQKSIDFLRKHKETTAQSDASEIRQDWKPTFLSNEEFTQLMLEAL" "DGFFLAIMTDGSIIYVSESVTSLLEHLPSDLVDQSIFNFIPEGEHSEVYKILSTHLLESD" "SLTPEYLKSKNQLEFCCHMLRGTIDPKEPSTYEYVRFIGNFKSLTSVSTSTHNGFEGTIQ" "RTHRPSYEDRVCFVATVRLATPQFIKEMCTVEEPNEEFTSRHSLEWKFLFLDHRAPPIIG" "YLPFEVLGTSGYDYYHVDDLENLAKCHEHLMQYGKGKSCYYRFLTKGQQWIWLQTHYYIT" "YHQWNSRPEFIVCTHTVVSYAEVRAERRRELGIEESLPETAADKSQDSGSDNRINTVSLK" "EALERFDHSPTPSASSRSSRKSSHTAVSDPSSTPTKIPTDTSTPPRQHLPAHEKMTQRRS" "SFSSQSINSQSVGPSLTQPAMSQAANLPIPQGMSQFQFSAQLGAMQHLKDQLEQRTRMIE" "ANIHRQQEELRKIQEQLQMVHGQGLQMFLQQSNPGLNFGSVQLSSGNSNIQQLTPVNMQG" "QVVPANQVQSGHISTGQHMIQQQTLQSTSTQQSQQSVMSGHSQQTSLPSQTPSTLTAPLY" "NTMVISQPAAGSMVQIPSSMPQNSTQSATVTTFTQDRQIRFSQGQQLVTKLVTAPVACGA" "VMVPSTMLMGQVVTAYPTFATQQQQAQTLSVTQQQQQQQQQPPQQQQQQQQSSQEQQLPS" "VQQPAQAQLGQPPQQFLQTSRLLHGNPSTQLILSAAFPLQQSTFPPSHHQQHQPQQQQQL" "PRHRTDSLTDPSKVQPQ"; char *b = "CVMVFTVSCSKMSSIVDRDDSSIFDGLVEEDDKDKAKRVSRNKSEKKRRDQFNVLIKELG" "SMLPGNARKMDKSTVLQKSIDFLRKHKETTAQSDASEIRQDWKPTFLSNEEFTQLMLEAL" "DGFFLAIMTDGSIIYVSESVTSLLEHLPSDLVDQSIFNFIPEGEHSEVYKILSTHLLESD" "SLTPEYLKSKNQLEFCCHMLRGTIDPKEPSTYEYVRFIGNFKSLTSVSTSTHNGFEGTIQ" "RTHRPSYEDRVCFVATVRLATPQFIKEMCTVEEPNEEFTSRHSLEWKFLFLDHRAPPIIG" "xQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ" "YHQWNSRPEFIVCTHTVVSYAEVRAERRRELGIEESLPETAADKSQDSGSDNRINTVSLK" "EALERFDHSPTPSASSRSSRKSSHTAVSDPSSTPTKIPTDTSTPPRQHLPAHEKMTQRRS" "SFSSQSINSQSVGPSLTQPAMSQAANLPIPQGMSQFQFSAQLGAMQHLKDQLEQRTRMIE" "ANIHRQQEELRKIQEQLQMVHGQGLQMFLQQSNPGLNFGSVQLSSGNSNIQQLTPVNMQG" "QVVPANQVQSGHISTGQHMIQQQTLQSTSTQQSQQSVMSGHSQQTSLPSQTPSTLTAPLY" "NTMVISQPAAGSMVQIPSSMPQNSTQSATVTTFTQDRQIRFSQGQQLVTKLVTAPVACGA" "VMVPSTMLMGQVVTAYPTFATQQQQAQTLSVTQQQQQQQQQPPQQQQQQQQSSQEQQLPS" "VQQPAQAQLGQPPQQFLQTSRLLHGNPSTQLILSAAFPLQQSTFPPSHHQQHQPQQQQQL" "PRHRTDSLTDPSKVQPQ"; char *c = "CVMVFTVSCSKMSSIVDRDDSSIFDGLVEEDDKDKAKRVSRNKSEKKRRDQFNVLIKELG" "xMLPGNARKMDKSTVLQKSIDFLRKHKETTAQSDASEIRQDWKPTFLSNEEFTQLMLEAL" "xxFFLAIMTDGSIIYVSESVTSLLEHLPSDLVDQSIFNFIPEGEHSEVYKILSTHLLESD" "xxxPEYLKSKNQLEFCCHMLRGTIDPKEPSTYEYVRFIGNFKSLTSVSTSTHNGFEGTIQ" "xxxxPSYEDRVCFVATVRLATPQFIKEMCTVEEPNEEFTSRHSLEWKFLFLDHRAPPIIG" "xxxxxVLGTSGYDYYHVDDLENLAKCHEHLMQYGKGKSCYYRFLTKGQQWIWLQTHYYIT" "xxxxxxRPEFIVCTHTVVSYAEVRAERRRELGIEESLPETAADKSQDSGSDNRINTVSLK" "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" "xxxxxxxxSQSVGPSLTQPAMSQAANLPIPQGMSQFQFSAQLGAMQHLKDQLEQRTRMIE" "xxxxxxxxxLRKIQEQLQMVHGQGLQMFLQQSNPGLNFGSVQLSSGNSNIQQLTPVNMQG" "xxxxxxxxxxGHISTGQHMIQQQTLQSTSTQQSQQSVMSGHSQQTSLPSQTPSTLTAPLY" "xxxxxxxxxxxSMVQIPSSMPQNSTQSATVTTFTQDRQIRFSQGQQLVTKLVTAPVACGA" "xxxxxxxxxxxxVTAYPTFATQQQQAQTLSVTQQQQQQQQQPPQQQQQQQQSSQEQQLPS" "xxxxxxxxxxxxxQQFLQTSRLLHGNPSTQLILSAAFPLQQSTFPPSHHQQHQPQQQQQL" "PRHRTDSLTDPSKVQPQ"; char *d = "CVMVFTVSCSKMSSIVDRDDSSIFDGLVEEDDKDKAKRVSRNKSEKKRRDQFNVLIKELG" "SMLPGNARKMDKSTVLQKSIDFLRKHKETTAQSDASEIRQDWKPTFLSNEEFTQLMLEAL" "DGFFLAIMTDGSIIYVSESVTSLLEHLPSDLVDQSIFNFIPEGEHSEVYKILSTHLLESD" "SLTPEYLKSKNQLEFCCHMLRGTIDPKEPSTYEYVRFIGNFKSLTSVSTSTHNGFEGTIQ" "RTHRPSYEDRVCFVATVRLATPQFIKEMCTVEEPNEEFTSRHSLEWKFLFLDHRAPPIIG" "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" "YHQWNSRPEFIVCTHTVVSYAEVRAERRRELGIEESLPETAADKSQDSGSDNRINTVSLK" "EALERFDHSPTPSASSRSSRKSSHTAVSDPSSTPTKIPTDTSTPPRQHLPAHEKMTQRRS" "SFSSQSINSQSVGPSLTQPAMSQAANLPIPQGMSQFQFSAQLGAMQHLKDQLEQRTRMIE" "ANIHRQQEELRKIQEQLQMVHGQGLQMFLQQSNPGLNFGSVQLSSGNSNIQQLTPVNMQG" "QVVPANQVQSGHISTGQHMIQQQTLQSTSTQQSQQSVMSGHSQQTSLPSQTPSTLTAPLY" "NTMVISQPAAGSMVQIPSSMPQNSTQSATVTTFTQDRQIRFSQGQQLVTKLVTAPVACGA" "VMVPSTMLMGQVVTAYPTFATQQQQAQTLSVTQQQQQQQQQPPQQQQQQQQSSQEQQLPS" "VQQPAQAQLGQPPQQFLQTSRLLHGNPSTQLILSAAFPLQQSTFPPSHHQQHQPQQQQQL" "PRHRTDSLTDPSKVQPQ"; char *e = "CVMVFTVSCSKMSSIVDRDDSSIFDGLVEEDDKDKAKRVSRNKSEKKRRDQFNVLIKELG" "XXXXXXXXXXXXXXXXXXXXXXXXXHKETTAQSDASEIRQDWKPTFLSNEEFTQLMLEAL" "XXXXXXXXXXXXXXXXXXXXXXXXEHLPSDLVDQSIFNFIPEGEHSEVYKILSTHLLESD" "XXXXXXXXXXXXXXXXXXXXXXXIDPKEPSTYEYVRFIGNFKSLTSVSTSTHNGFEGTIQ" "XXXXXXXXXXXXXXXXXXXXXXQFIKEMCTVEEPNEEFTSRHSLEWKFLFLDHRAPPIIG" "XXXXXVXXXXXXXXXXXXXXXNLAKCHEHLMQYGKGKSCYYRFLTKGQQWIWLQTHYYIT" "XXXXXXXXXXXXXXXXXXXXAEVRAERRRELGIEESLPETAADKSQDSGSDNRINTVSLK" "XXXXXXXXXXXXXXXXXXXRKSSHTAVSDPSSTPTKIPTDTSTPPRQHLPAHEKMTQRRS" "XXXXXXXXXXXXXXXXXXPAMSQAANLPIPQGMSQFQFSAQLGAMQHLKDQLEQRTRMIE" "XXXXXXXXXXXXXXXXXQMVHGQGLQMFLQQSNPGLNFGSVQLSSGNSNIQQLTPVNMQG" "XXXXXXXXXXXXXXXXQHMIQQQTLQSTSTQQSQQSVMSGHSQQTSLPSQTPSTLTAPLY" "XXXXXXXXXXXXXXXIPSSMPQNSTQSATVTTFTQDRQIRFSQGQQLVTKLVTAPVACGA" "XXXXXXXXXXXXXXAYPTFATQQQQAQTLSVTQQQQQQQQQPPQQQQQQQQSSQEQQLPS" "XXXXXXXXXXXXXQQFLQTSRLLHGNPSTQLILSAAFPLQQSTFPPSHHQQHQPQQQQQL" "PRHRTDSLTDPSKVQPQ"; a = cloneString(a); // tolowers(a); b = cloneString(b); // tolowers(b); xenAlignAffine(a, strlen(a), b, strlen(b), axtScoreSchemeProteinDefault(), stdout, FALSE); }