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

Go to the source code of this file.
Data Structures | |
| struct | crudeAli |
Functions | |
| crudeAli * | crudeAliFind (DNA *probe, int probeSize, struct nt4Seq **chrome, int chromeCount, int tileSize, int minScore) |
| struct crudeAli* crudeAliFind | ( | DNA * | probe, | |
| int | probeSize, | |||
| struct nt4Seq ** | chrome, | |||
| int | chromeCount, | |||
| int | tileSize, | |||
| int | minScore | |||
| ) | [read] |
Definition at line 794 of file crudeali.c.
References AllocVar, caIsCdna, caTileSize, chromIx(), cmpGenesByScore(), countGenesBetter(), countPrettyGood(), filterPoorGenes(), findCrudeGenes(), freeFastProber(), freeMem(), initWormDnaMatchScores(), makeFastProber(), maxHitsAtOnce, needMem(), reverseComplement(), scoreNoninsertingExtensions(), slAddHead, and slReverse().
Referenced by xenAlignBig(), and xenAlignWorm().
00797 { 00798 int oneGeneCount; 00799 int i; 00800 int chromeIx; 00801 int geneCount = 0; 00802 int maxGeneCount = 2*maxHitsAtOnce; 00803 int isRc; 00804 struct nt4Seq *target; 00805 struct crudeGene *crudeGenes = needMem(maxGeneCount*sizeof(*crudeGenes)); 00806 struct fastProber *fps[2]; 00807 struct crudeAli *aliList = NULL, *ali; 00808 int goodGeneCount; 00809 00810 initWormDnaMatchScores(); 00811 caTileSize = tileSize; 00812 caIsCdna = (tileSize >= 14); 00813 fps[0] = makeFastProber(probe, probeSize); 00814 reverseComplement(probe, probeSize); 00815 fps[1] = makeFastProber(probe, probeSize); 00816 reverseComplement(probe, probeSize); 00817 for (chromeIx = 0; chromeIx < chromeCount; ++chromeIx) 00818 { 00819 target = chrome[chromeIx]; 00820 for (isRc = 0; isRc <= 1; ++isRc) 00821 { 00822 /* Get crude idea of genes on one strand. */ 00823 oneGeneCount = findCrudeGenes(fps[isRc], target, 00824 crudeGenes+geneCount, maxGeneCount-geneCount, isRc); 00825 00826 /* Increment gene count and if necessary compact list. */ 00827 geneCount += oneGeneCount; 00828 if (maxGeneCount - geneCount < maxHitsAtOnce) 00829 geneCount = filterPoorGenes(crudeGenes, geneCount); 00830 } 00831 if (maxGeneCount - geneCount < maxHitsAtOnce) 00832 break; 00833 } 00834 00835 /* Sort genes by initial promise and get rid of some trash. */ 00836 { 00837 int bestScore, worstScore; 00838 qsort(crudeGenes, geneCount, sizeof(crudeGenes[0]), cmpGenesByScore); 00839 bestScore = crudeGenes[0].score; 00840 worstScore = crudeGenes[geneCount-1].score; 00841 if (bestScore > worstScore) 00842 { 00843 int cutOff = bestScore/10; 00844 goodGeneCount = geneCount = countGenesBetter(crudeGenes, geneCount, cutOff); 00845 } 00846 else if (bestScore >= minScore) 00847 goodGeneCount = geneCount; 00848 else 00849 goodGeneCount = 0; 00850 } 00851 00852 if (tileSize == 8) 00853 { 00854 goodGeneCount = countPrettyGood(crudeGenes, geneCount, 4, 4); 00855 geneCount = goodGeneCount; 00856 for (i=0; i<geneCount; ++i) 00857 scoreNoninsertingExtensions(crudeGenes+i, probe, probeSize); 00858 qsort(crudeGenes, geneCount, sizeof(crudeGenes[0]), cmpGenesByScore); 00859 goodGeneCount = countPrettyGood(crudeGenes, geneCount, 4, minScore); 00860 } 00861 for (i=0; i<goodGeneCount; ++i) 00862 { 00863 AllocVar(ali); 00864 ali->chromIx = chromIx(crudeGenes[i].target, chrome, chromeCount); 00865 ali->start = crudeGenes[i].targetStart; 00866 ali->end = crudeGenes[i].targetEnd; 00867 ali->score = crudeGenes[i].score; 00868 ali->strand = (crudeGenes[i].isRc ? '-' : '+'); 00869 slAddHead(&aliList, ali); 00870 } 00871 slReverse(&aliList); 00872 freeFastProber(&fps[0]); 00873 freeFastProber(&fps[1]); 00874 freeMem(crudeGenes); 00875 00876 return aliList; 00877 }
Here is the call graph for this function:

Here is the caller graph for this function:

1.5.2