This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
Functions | |
| char * | print_formatDescription (char *description, int4 firstLineIndent, int4 remainingLinesIndent, int4 maxLineLength) |
| void | print_gappedAlignmentsFull (char *query, struct PSSMatrix PSSMatrix) |
| void | print_gappedAlignmentsBrief () |
| void | print_singleSequence (unsigned char *sequence, int4 length) |
| char * | print_eValue2String (double evalue) |
| void | print_XMLheader (char *query, struct PSSMatrix PSSMatrix) |
| void | print_XMLfooter () |
| char* print_eValue2String | ( | double | evalue | ) |
Definition at line 817 of file print.c.
References print_eValueBuf.
Referenced by print_gappedAlignmentsBrief(), print_gappedExtension(), and print_tabularGappedExtension().
00818 { 00819 char* eValueBuffer = print_eValueBuf; 00820 00821 if (evalue < 1.0e-180) { 00822 sprintf(print_eValueBuf, "0.0"); 00823 } else if (evalue < 1.0e-99) { 00824 sprintf(print_eValueBuf, "%2.0le", evalue); 00825 eValueBuffer++; /* Knock off digit. */ 00826 } else if (evalue < 0.0009) { 00827 sprintf(print_eValueBuf, "%3.0le", evalue); 00828 } else if (evalue < 0.1) { 00829 sprintf(print_eValueBuf, "%4.3lf", evalue); 00830 } else if (evalue < 1.0) { 00831 sprintf(print_eValueBuf, "%3.2lf", evalue); 00832 } else if (evalue < 10.0) { 00833 sprintf(print_eValueBuf, "%2.1lf", evalue); 00834 } else { 00835 sprintf(print_eValueBuf, "%5.0lf", evalue); 00836 } 00837 00838 return eValueBuffer; 00839 }
Here is the caller graph for this function:

| char* print_formatDescription | ( | char * | description, | |
| int4 | firstLineIndent, | |||
| int4 | remainingLinesIndent, | |||
| int4 | maxLineLength | |||
| ) |
Definition at line 192 of file print.c.
References global_malloc(), and int4.
Referenced by main(), and print_gappedAlignmentsFull().
00194 { 00195 int4 length, startWord = 0, endWord = 0, startLine = 0, newDescriptionPos = 0; 00196 int4 maxLengthAfterIndent, count; 00197 char* newDescription; 00198 00199 length = strlen(description); 00200 00201 // Declare memory for formatted description, which will be at most double its length 00202 newDescription = (char*)global_malloc(sizeof(char) * length * 2); 00203 00204 startLine = startWord = endWord = 0; 00205 00206 while (endWord < length) 00207 { 00208 // Find the end of the current word 00209 while (endWord < length && description[endWord] != ' ' && 00210 description[endWord] != '\n' && description[endWord] != '\t') 00211 { 00212 endWord++; 00213 } 00214 00215 if (startLine == 0) 00216 maxLengthAfterIndent = maxLineLength - firstLineIndent; 00217 else 00218 maxLengthAfterIndent = maxLineLength - remainingLinesIndent; 00219 00220 // If it is too far along 00221 if (endWord - startLine > maxLengthAfterIndent) 00222 { 00223 // If this is the first word of this line, we need to cut the word in half 00224 if (startLine == startWord) 00225 { 00226 // Copy portion of the word 00227 memcpy(newDescription + newDescriptionPos, description + startLine, 00228 sizeof(char) * maxLineLength); 00229 newDescriptionPos += maxLineLength; 00230 00231 // Add carriage return 00232 newDescription[newDescriptionPos] = '\n'; 00233 newDescriptionPos++; 00234 00235 // Add indent 00236 count = 0; 00237 while (count < remainingLinesIndent) 00238 { 00239 newDescription[newDescriptionPos] = ' '; 00240 newDescriptionPos++; 00241 count++; 00242 } 00243 00244 // Set pointers for next line 00245 startLine += maxLineLength; 00246 endWord = startWord = startLine; 00247 } 00248 // Else exclude this last word and copy the rest of the line over 00249 else 00250 { 00251 // Copy line over 00252 memcpy(newDescription + newDescriptionPos, description + startLine, 00253 sizeof(char) * (startWord - startLine)); 00254 newDescriptionPos += (startWord - startLine); 00255 00256 // Add carriage return 00257 newDescription[newDescriptionPos] = '\n'; 00258 newDescriptionPos++; 00259 00260 // Add indent 00261 count = 0; 00262 while (count < remainingLinesIndent) 00263 { 00264 newDescription[newDescriptionPos] = ' '; 00265 newDescriptionPos++; 00266 count++; 00267 } 00268 00269 // Set pointers for next line 00270 startLine = endWord = startWord; 00271 } 00272 } 00273 else 00274 { 00275 // Advance past current whitespace 00276 endWord++; 00277 00278 // This is the start of the next word 00279 startWord = endWord; 00280 } 00281 } 00282 00283 // Copy the last bit over 00284 memcpy(newDescription + newDescriptionPos, description + startLine, 00285 sizeof(char) * (length - startLine)); 00286 newDescriptionPos += (length - startLine); 00287 00288 // Null terminate 00289 newDescription[newDescriptionPos] = '\0'; 00290 00291 // Free the unformatted description 00292 free(description); 00293 00294 return newDescription; 00295 }
Here is the call graph for this function:

Here is the caller graph for this function:

| void print_gappedAlignmentsBrief | ( | ) |
Definition at line 515 of file print.c.
References finalAlignment::alignment, alignments_finalAlignments, finalAlignment::description, alignment::descriptionLocation, gappedExtension::eValue, alignment::gappedExtensions, global_malloc(), global_realloc(), finalAlignment::highestNominalScore, int4, memSingleBlock_getEntry(), gappedExtension::normalizedScore, parameters_getDescriptions, parameters_numDisplayAlignments, print_cafeDescription(), print_eValue2String(), statistics_gappedCalculateEvalue(), and statistics_gappedNominal2normalized().
Referenced by blast_search().
00516 { 00517 char* line; 00518 int4 descriptionLength; 00519 struct alignment* currentAlignment; 00520 struct finalAlignment* finalAlignment; 00521 struct gappedExtension* currentExtension; 00522 int4 count = 0; 00523 char* description; 00524 double normalizedScore, eValue; 00525 00526 printf(" Score E\n"); 00527 printf("Sequences producing significant alignments: (bits) Value\n\n"); 00528 00529 // For each alignment 00530 while (count < alignments_finalAlignments->numEntries 00531 && count < parameters_numDisplayAlignments) 00532 { 00533 finalAlignment = memSingleBlock_getEntry(alignments_finalAlignments, count); 00534 currentAlignment = finalAlignment->alignment; 00535 currentExtension = currentAlignment->gappedExtensions; 00536 00537 // Get description of subject 00538 if (parameters_getDescriptions) 00539 { 00540 #ifdef CAFEMODE 00541 description = print_cafeDescription(currentAlignment->descriptionLocation, 1); 00542 descriptionLength = strlen(description); 00543 #else 00544 descriptionLength = strlen(finalAlignment->description); 00545 description = (char*)global_malloc(sizeof(char) * (descriptionLength + 1)); 00546 strcpy(description, finalAlignment->description); 00547 #endif 00548 } 00549 else 00550 { 00551 description = (char*)global_malloc(sizeof(char)); strcpy(description, ""); 00552 descriptionLength = 0; 00553 } 00554 00555 // Realloc description string to length displayed 00556 description = (char*)global_realloc(description, sizeof(char) * 67); 00557 00558 // Construct line with description, normalized score and eValue 00559 line = (char*)global_malloc(sizeof(char) * 90); 00560 00561 // If description is more than 63 chars long 00562 if (descriptionLength > 63) 00563 { 00564 // Cut off end and add ... 00565 description[63] = '\0'; 00566 strcat(description, "..."); 00567 } 00568 else 00569 { 00570 // Otherwise pad out remaining with spaces 00571 while (descriptionLength < 66) 00572 { 00573 description[descriptionLength] = ' '; 00574 descriptionLength++; 00575 } 00576 description[descriptionLength] = '\0'; 00577 } 00578 00579 // If no gapped extensions have been performed and scored, use the alignment's 00580 // highest nominal score to calculate normalized score and e-value 00581 if (currentExtension == NULL) 00582 { 00583 normalizedScore = statistics_gappedNominal2normalized( 00584 finalAlignment->highestNominalScore); 00585 eValue = statistics_gappedCalculateEvalue(normalizedScore); 00586 00587 sprintf(line, "%s %4.0f %s\n", description, normalizedScore, 00588 print_eValue2String(eValue)); 00589 } 00590 else 00591 { 00592 sprintf(line, "%s %4.0f %s\n", description, currentExtension->normalizedScore, 00593 print_eValue2String(currentExtension->eValue)); 00594 } 00595 00596 printf("%s", line); 00597 00598 // Free memory used constructing line 00599 free(line); 00600 free(description); 00601 00602 count++; 00603 } 00604 printf("\n"); 00605 }
Here is the call graph for this function:

Here is the caller graph for this function:

| void print_gappedAlignmentsFull | ( | char * | query, | |
| struct PSSMatrix | PSSMatrix | |||
| ) |
Definition at line 363 of file print.c.
References finalAlignment::alignment, alignments_finalAlignments, alignments_numClusters, blast_queryDescription, alignment::cluster, finalAlignment::description, alignment::descriptionLocation, alignment::gappedExtensions, global_malloc(), int4, memSingleBlock_getEntry(), alignment::numUnpackRegions, parameters_allClusterMembers, parameters_getDescriptions, parameters_numDisplayTracebacks, parameters_outputType, parameters_ssearch, parameters_tabular, parameters_xml, print_cafeDescription(), print_encodeGreaterLessThan(), print_formatDescription(), print_gappedExtension(), print_tabularGappedExtension(), print_untilWhitespace(), print_XMLgappedExtension(), alignment::subject, gappedExtension::subjectEnd, alignment::subjectLength, uint4, unpack_selectRegion(), unpackRegion::unpackedSubject, and alignment::unpackRegions.
Referenced by blast_search().
00364 { 00365 struct alignment* alignment; 00366 struct finalAlignment* finalAlignment; 00367 struct gappedExtension* currentExtension; 00368 char* description, *queryDescription; 00369 unsigned char* subject; 00370 int4 count = 0, descriptionLength, hspNum; 00371 uint4 clusterSizes[alignments_numClusters]; 00372 uint4 queryDescriptionLength; 00373 00374 queryDescriptionLength = strlen(blast_queryDescription); 00375 queryDescription = (char*)global_malloc(queryDescriptionLength + 1); 00376 strcpy(queryDescription, blast_queryDescription); 00377 queryDescription = print_untilWhitespace(queryDescription); 00378 00379 // Clear array of cluster sizes 00380 count = 0; 00381 while (count < alignments_numClusters) 00382 { 00383 clusterSizes[count] = 0; 00384 count++; 00385 } 00386 00387 // For each alignment we are to print the traceback 00388 count = 0; 00389 while ((count < parameters_numDisplayTracebacks || parameters_numDisplayTracebacks == 0) 00390 && count < alignments_finalAlignments->numEntries) 00391 { 00392 finalAlignment = memSingleBlock_getEntry(alignments_finalAlignments, count); 00393 alignment = finalAlignment->alignment; 00394 if (alignment->cluster > 0) 00395 { 00396 clusterSizes[alignment->cluster]++; 00397 } 00398 count++; 00399 } 00400 00401 // For each alignment we are to print the traceback 00402 count = 0; 00403 while ((count < parameters_numDisplayTracebacks || parameters_numDisplayTracebacks == 0) 00404 && count < alignments_finalAlignments->numEntries) 00405 { 00406 finalAlignment = memSingleBlock_getEntry(alignments_finalAlignments, count); 00407 alignment = finalAlignment->alignment; 00408 00409 // If this alignment is to be displayed 00410 if (parameters_allClusterMembers || alignment->cluster == 0 || 00411 clusterSizes[alignment->cluster] > 0) 00412 { 00413 // Print description 00414 if (parameters_getDescriptions) 00415 { 00416 // If we are in cafe mode, use cafe function to get the description 00417 #ifdef CAFEMODE 00418 description = print_cafeDescription(alignment->descriptionLocation, 0); 00419 #else 00420 descriptionLength = strlen(finalAlignment->description); 00421 description = (char*)global_malloc(sizeof(char) * (descriptionLength + 1)); 00422 strcpy(description, finalAlignment->description); 00423 #endif 00424 00425 if (parameters_outputType == parameters_xml) 00426 { 00427 description = print_encodeGreaterLessThan(description); 00428 } 00429 else if (parameters_outputType == parameters_tabular) 00430 { 00431 description = print_untilWhitespace(description); 00432 } 00433 else 00434 { 00435 description = print_formatDescription(description, 0, 11, 68); 00436 } 00437 } 00438 else 00439 { 00440 description = (char*)global_malloc(sizeof(char)); 00441 strcpy(description, ""); 00442 } 00443 00444 if (parameters_outputType == parameters_xml) 00445 { 00446 printf(" <Hit>\n"); 00447 printf(" <Hit_num>%d</Hit_num>\n", count + 1); 00448 printf(" <Hit_id>gnl|BL_ORD_ID|%d</Hit_id>\n", alignment->descriptionLocation); 00449 printf(" <Hit_def>%s</Hit_def>\n", description); 00450 printf(" <Hit_accession>%d</Hit_accession>\n", alignment->descriptionLocation); 00451 printf(" <Hit_len>%d</Hit_len>\n", alignment->subjectLength); 00452 printf(" <Hit_hsps>\n"); 00453 } 00454 else if (parameters_outputType == parameters_tabular) 00455 { 00456 } 00457 else 00458 { 00459 printf(">%s\n", description); 00460 if (!parameters_allClusterMembers && clusterSizes[alignment->cluster] > 1) 00461 { 00462 printf(" [%d near-identical alignment(s) not displayed]\n", 00463 clusterSizes[alignment->cluster] - 1); 00464 clusterSizes[alignment->cluster] = 0; 00465 } 00466 // printf(" Length = %d DescriptionLocation = %d\n\n", 00467 // alignment->subjectLength, alignment->descriptionLocation); 00468 printf(" Length = %d\n\n", alignment->subjectLength); 00469 } 00470 00471 // Get list of gapped extensions 00472 currentExtension = alignment->gappedExtensions; 00473 hspNum = 0; 00474 00475 // For each gapped extension 00476 while (currentExtension != NULL) 00477 { 00478 hspNum++; 00479 00480 if (parameters_ssearch) 00481 subject = alignment->subject; 00482 else 00483 // Get the unpacked subject 00484 subject = unpack_selectRegion(alignment->unpackRegions, alignment->numUnpackRegions, 00485 currentExtension->subjectEnd)->unpackedSubject; 00486 00487 // Print the gapped extension 00488 if (parameters_outputType == parameters_xml) 00489 print_XMLgappedExtension(currentExtension, PSSMatrix, query, subject, hspNum); 00490 else if (parameters_outputType == parameters_tabular) 00491 print_tabularGappedExtension(currentExtension, PSSMatrix, query, subject, 00492 queryDescription, description); 00493 else if (parameters_outputType != parameters_tabular) 00494 print_gappedExtension(currentExtension, PSSMatrix, query, subject); 00495 00496 currentExtension = currentExtension->next; 00497 } 00498 00499 if (parameters_outputType == parameters_xml) 00500 { 00501 printf(" </Hit_hsps>\n"); 00502 printf(" </Hit>\n"); 00503 } 00504 00505 free(description); 00506 } 00507 00508 count++; 00509 } 00510 00511 free(queryDescription); 00512 }
Here is the call graph for this function:

Here is the caller graph for this function:

| void print_singleSequence | ( | unsigned char * | sequence, | |
| int4 | length | |||
| ) |
Definition at line 842 of file print.c.
References encoding_getLetter(), and int4.
Referenced by cluster_printCluster(), cluster_printSequence(), main(), rsdb_printCluster(), and rsdb_printSequence().
00843 { 00844 int4 count = 0; 00845 while (count < length) 00846 { 00847 printf("%c", encoding_getLetter(sequence[count])); 00848 count++; 00849 } 00850 }
Here is the call graph for this function:

Here is the caller graph for this function:

| void print_XMLfooter | ( | ) |
Definition at line 892 of file print.c.
References statisticalParameters::H, statisticalParameters::K, statisticalParameters::lambda, readdb_numberOfSequences, statistics_databaseSize, statistics_gappedParams, statistics_lengthAdjust, and statistics_searchSpaceSize.
Referenced by blast_search().
00893 { 00894 printf(" </Iteration_hits>\n"); 00895 printf(" <Iteration_stat>\n"); 00896 printf(" <Statistics>\n"); 00897 printf(" <Statistics_db-num>%d</Statistics_db-num>\n", readdb_numberOfSequences); 00898 printf(" <Statistics_db-len>%llu</Statistics_db-len>\n", statistics_databaseSize); 00899 printf(" <Statistics_hsp-len>%d</Statistics_hsp-len>\n", statistics_lengthAdjust); 00900 printf(" <Statistics_eff-space>%llu</Statistics_eff-space>\n", statistics_searchSpaceSize); 00901 printf(" <Statistics_kappa>%.3f</Statistics_kappa>\n", statistics_gappedParams.K); 00902 printf(" <Statistics_lambda>%.3f</Statistics_lambda>\n", statistics_gappedParams.lambda); 00903 printf(" <Statistics_entropy>%.3f</Statistics_entropy>\n", statistics_gappedParams.H); 00904 printf(" </Statistics>\n"); 00905 printf(" </Iteration_stat>\n"); 00906 printf(" </Iteration>\n"); 00907 printf(" </BlastOutput_iterations>\n"); 00908 printf("</BlastOutput>\n"); 00909 }
Here is the caller graph for this function:

| void print_XMLheader | ( | char * | query, | |
| struct PSSMatrix | PSSMatrix | |||
| ) |
Definition at line 853 of file print.c.
References blast_queryDescription, encoding_alphabetType, encoding_protein, PSSMatrix::length, parameters_cutoff, parameters_extendGap, parameters_filterEnabled, parameters_scoringMatrix, parameters_startGap, and parameters_subjectDatabaseFile.
Referenced by blast_search().
00854 { 00855 printf("<?xml version=\"1.0\"?>\n"); 00856 printf("<!DOCTYPE BlastOutput PUBLIC \"-//NCBI//NCBI BlastOutput/EN\" \"NCBI_BlastOutput.dtd\">\n"); 00857 printf("<BlastOutput>\n"); 00858 if (encoding_alphabetType == encoding_protein) 00859 printf(" <BlastOutput_program>blastp</BlastOutput_program>\n"); 00860 else 00861 printf(" <BlastOutput_program>blastn</BlastOutput_program>\n"); 00862 printf(" <BlastOutput_version>FSA-BLAST 1.03</BlastOutput_version>\n"); 00863 printf(" <BlastOutput_reference>~Reference: Altschul, Stephen F., Thomas L. Madden, Alejandro A. Schaffer, ~Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), ~"Gapped BLAST and PSI-BLAST: a new generation of protein database search~programs", Nucleic Acids Res. 25:3389-3402.</BlastOutput_reference>\n"); 00864 printf(" <BlastOutput_db>%s</BlastOutput_db>\n", parameters_subjectDatabaseFile); 00865 printf(" <BlastOutput_query-ID>lcl|QUERY</BlastOutput_query-ID>\n"); 00866 printf(" <BlastOutput_query-def>%s</BlastOutput_query-def>\n", blast_queryDescription); 00867 printf(" <BlastOutput_query-len>%d</BlastOutput_query-len>\n", PSSMatrix.length); 00868 printf(" <BlastOutput_param>\n"); 00869 printf(" <Parameters>\n"); 00870 printf(" <Parameters_matrix>%s</Parameters_matrix>\n", parameters_scoringMatrix); 00871 printf(" <Parameters_expect>%g</Parameters_expect>\n", parameters_cutoff); 00872 printf(" <Parameters_gap-open>%d</Parameters_gap-open>\n", parameters_startGap); 00873 printf(" <Parameters_gap-extend>%d</Parameters_gap-extend>\n", parameters_extendGap); 00874 if (parameters_filterEnabled) 00875 { 00876 if (encoding_alphabetType == encoding_protein) 00877 printf(" <Parameters_filter>S</Parameters_filter>\n"); 00878 else 00879 printf(" <Parameters_filter>D</Parameters_filter>\n"); 00880 } 00881 else 00882 printf(" <Parameters_filter>F</Parameters_filter>\n"); 00883 printf(" </Parameters>\n"); 00884 printf(" </BlastOutput_param>\n"); 00885 printf(" <BlastOutput_iterations>\n"); 00886 printf(" <Iteration>\n"); 00887 printf(" <Iteration_iter-num>1</Iteration_iter-num>\n"); 00888 printf(" <Iteration_hits>\n"); 00889 }
Here is the caller graph for this function:

1.5.2