def printTable(assembliesList, caption, options): print ''' \\rowcolors{1}{tableShade}{white} \\begin{FPtable} \caption[Contig path statistics.]{Contig path statistics. %s} \\tiny \\centering \\begin{tabular}{| r | p{.75in} | p{.75in} | p{.4in} | p{.4in} | p{.5in} | p{.5in} || c |} \\hline ID & Intra chromosomal joins & Inter chromosomal joins & Insertions & Deletions & Insertion and deletion & Insertion at ends & \(\sum\) errors \\\\ \\hline \\hline''' % (caption) # hom/het sw & scf & ctgE+ctgN i = 0 for row in assembliesList: i += 1 if options.showAssemblyNumbers: s = '%s.%s' % (lgn.idMap[row.ID[0]], row.ID[1:]) else: s = '%s' % (lgn.idMap[row.ID[0]]) sys.stdout.write('%s' % s) # sys.stdout.write( ' & %s & %s' % ( lgn.prettyNumber(row.valuesDict['totalHomoToHeteroSwitches']), # lgn.prettyNumber( row.valuesDict['totalScaffoldGaps'] + # row.valuesDict['totalBleedingHeartScaffoldGaps'] ) )) # sys.stdout.write( ' & %s' % ( lgn.prettyNumber( row.valuesDict['totalContigEnds'] + # row.valuesDict['totalContigEndsWithNs'] ))) #sys.stdout.write( ' & %.4f' % ( row.valuesDict['errorsPerContig'])) #sys.stdout.write( ' & %.2e' % ( row.valuesDict['errorsPerMappedBase'])) for v in [ 'totalErrorsHaplotypeToHaplotypeSameChromosome', 'totalErrorsHaplotypeToHaplotypeDifferentChromosome', 'totalErrorsHaplotypeToInsertion', 'totalErrorsHaplotypeToDeletion', 'totalErrorsHaplotypeToInsertionAndDeletion', 'totalErrorsContigEndsWithInsert' ]: sys.stdout.write(' & %s' % (lgn.prettyNumber(row.valuesDict[v]))) #sys.stdout.write( ' & %s' % ( lgn.prettyNumber( row.valuesDict['totalErrorsNonSpecific']))) sys.stdout.write(' & %s \\\\\n' % lgn.prettyNumber(row.totalErrors)) if not i % options.mod and i != len(assembliesList): print '\\hline' print '''\\hline
def printLine( a, kind, options ): if options.showAssemblyNumbers: s = '%s.%s' % (lgn.idMap[a.ID[0]], a.ID[1:]) else: s = '%s' % (lgn.idMap[a.ID[0]]) sys.stdout.write( '%s' % s ) if kind == 'hom': for k in [ 'totalCallsInHomozygous', 'totalCorrectInHomozygous', 'totalErrorsInHomozygous' ]: sys.stdout.write( ' & %s -- %s' % ( lgn.prettyNumber( a.subStatsLower[ k ]), lgn.prettyNumber( a.subStatsUpper[ k ]))) sys.stdout.write( ' \\\\\n' ) elif kind == 'het': for k in [ 'totalCallsInHeterozygous', 'totalCorrectInHeterozygous', 'totalErrorsInHeterozygous' ]: sys.stdout.write( ' & %s -- %s' % ( lgn.prettyNumber( a.subStatsLower[ k ]), lgn.prettyNumber( a.subStatsUpper[ k ]))) sys.stdout.write( ' \\\\\n' ) elif kind == 'indel': for k in [ 'totalCallsInOneHaplotypeOnly', 'totalCorrectInOneHaplotypeOnly', 'totalErrorsInOneHaplotypeOnly' ]: sys.stdout.write( ' & %s -- %s' % ( lgn.prettyNumber( a.subStatsLower[ k ]), lgn.prettyNumber( a.subStatsUpper[ k ]))) sys.stdout.write( ' \\\\\n' )
def printLine(a, kind, options): if options.showAssemblyNumbers: s = '%s.%s' % (lgn.idMap[a.ID[0]], a.ID[1:]) else: s = '%s' % (lgn.idMap[a.ID[0]]) sys.stdout.write('%s' % s) if kind == 'hom': for k in [ 'totalCallsInHomozygous', 'totalCorrectInHomozygous', 'totalErrorsInHomozygous' ]: sys.stdout.write(' & %s -- %s' % (lgn.prettyNumber( a.subStatsLower[k]), lgn.prettyNumber(a.subStatsUpper[k]))) sys.stdout.write(' \\\\\n') elif kind == 'het': for k in [ 'totalCallsInHeterozygous', 'totalCorrectInHeterozygous', 'totalErrorsInHeterozygous' ]: sys.stdout.write(' & %s -- %s' % (lgn.prettyNumber( a.subStatsLower[k]), lgn.prettyNumber(a.subStatsUpper[k]))) sys.stdout.write(' \\\\\n') elif kind == 'indel': for k in [ 'totalCallsInOneHaplotypeOnly', 'totalCorrectInOneHaplotypeOnly', 'totalErrorsInOneHaplotypeOnly' ]: sys.stdout.write(' & %s -- %s' % (lgn.prettyNumber( a.subStatsLower[k]), lgn.prettyNumber(a.subStatsUpper[k]))) sys.stdout.write(' \\\\\n')
def printTable( assembliesList, caption, options ): print ''' \\rowcolors{1}{tableShade}{white} \\begin{FPtable} \caption[Contig path statistics.]{Contig path statistics. %s} \\tiny \\centering \\begin{tabular}{| r | p{.75in} | p{.75in} | p{.4in} | p{.4in} | p{.5in} | p{.5in} || c |} \\hline ID & Intra chromosomal joins & Inter chromosomal joins & Insertions & Deletions & Insertion and deletion & Insertion at ends & \(\sum\) errors \\\\ \\hline \\hline''' % ( caption ) # hom/het sw & scf & ctgE+ctgN i = 0 for row in assembliesList: i += 1 if options.showAssemblyNumbers: s = '%s.%s' % (lgn.idMap[row.ID[0]], row.ID[1:]) else: s = '%s' % (lgn.idMap[row.ID[0]]) sys.stdout.write( '%s' % s ) # sys.stdout.write( ' & %s & %s' % ( lgn.prettyNumber(row.valuesDict['totalHomoToHeteroSwitches']), # lgn.prettyNumber( row.valuesDict['totalScaffoldGaps'] + # row.valuesDict['totalBleedingHeartScaffoldGaps'] ) )) # sys.stdout.write( ' & %s' % ( lgn.prettyNumber( row.valuesDict['totalContigEnds'] + # row.valuesDict['totalContigEndsWithNs'] ))) #sys.stdout.write( ' & %.4f' % ( row.valuesDict['errorsPerContig'])) #sys.stdout.write( ' & %.2e' % ( row.valuesDict['errorsPerMappedBase'])) for v in [ 'totalErrorsHaplotypeToHaplotypeSameChromosome', 'totalErrorsHaplotypeToHaplotypeDifferentChromosome', 'totalErrorsHaplotypeToInsertion', 'totalErrorsHaplotypeToDeletion', 'totalErrorsHaplotypeToInsertionAndDeletion', 'totalErrorsContigEndsWithInsert' ]: sys.stdout.write( ' & %s' % ( lgn.prettyNumber( row.valuesDict[v] ))) #sys.stdout.write( ' & %s' % ( lgn.prettyNumber( row.valuesDict['totalErrorsNonSpecific']))) sys.stdout.write( ' & %s \\\\\n' % lgn.prettyNumber( row.totalErrors )) if not i % options.mod and i != len( assembliesList ): print '\\hline' print '''\\hline
def isMaxFormat(n, m): if n == m: return '\\textbf{ %s }' % lgn.prettyNumber(n) else: return '%s' % lgn.prettyNumber(n)
def isMaxFormat( n, m ): if n == m: return '\\textbf{ %s }' % lgn.prettyNumber( n ) else: return '%s' % lgn.prettyNumber( n )
def outputDict( assembliesDict, options ): sortOrder = sorted( assembliesDict, key = lambda x: int(x[1:]) ) # number sortOrder = sorted( sortOrder, key = lambda x: assembliesDict[x].id[0] ) # letter fileOrder = [] if not options.noContigs: fileOrder += ['contigsOverlapGene', 'contigsOverlap' ] # if options.scaffolds: # fileOrder += ['scaffoldsOverlapGene', 'scaffoldsOverlap'] annotOrderGenes = ['transcripts'] # 'cds' annotOrder = ['cds', 'utr', 'nxe+nge', 'repeat'] # 'island' fileNameMap = {'contigsOverlapGene':'COG', 'contigsOverlap':'CO'} annotNameMap = {'transcripts':'xcript', 'cds':'cds', 'utr':'utr', 'nxe+nge':'nxe+nge', 'repeat':'repeat'} # print the header sys.stdout.write('#ID') i = -1 for f in fileOrder: i += 1 if f.endswith('OverlapGene'): order = annotOrderGenes else: order = annotOrder for a in order: if options.bases: if options.aveHaps: totalStr = lgn.prettyNumber( assembliesDict[sortOrder[0]].valuesDict[f][a][1].baseLength + assembliesDict[sortOrder[0]].valuesDict[f][a][2].baseLength ) else: totalStr = '%s, %s' % ( lgn.prettyNumber(assembliesDict[sortOrder[0]].valuesDict[f][a][1].baseLength), lgn.prettyNumber(assembliesDict[sortOrder[0]].valuesDict[f][a][2].baseLength )) else: if options.aveHaps: totalStr = lgn.prettyNumber( assembliesDict[sortOrder[0]].valuesDict[f][a][1].samples + assembliesDict[sortOrder[0]].valuesDict[f][a][2].samples ) else: totalStr = '%s, %s' % ( lgn.prettyNumber(assembliesDict[sortOrder[0]].valuesDict[f][a][1].samples), lgn.prettyNumber(assembliesDict[sortOrder[0]].valuesDict[f][a][2].samples) ) sys.stdout.write('\t%s-%s (%s)' % (fileNameMap[f], annotNameMap[a], totalStr)) sys.stdout.write('\n') for assembly in sortOrder: if options.hideAssemblyNumbers: nameStr = '%s' % (lgn.idMap[assembliesDict[assembly].id[0]]) else: nameStr = '%s.%s' % (lgn.idMap[assembliesDict[assembly].id[0]], assembliesDict[assembly].id[1:]) sys.stdout.write('%s' % nameStr) for filetype in fileOrder: if filetype.endswith('OverlapGene'): order = annotOrderGenes else: order = annotOrder for annot in order: aveHap = IntervalsTag() for hap in assembliesDict[assembly].valuesDict[filetype][annot]: it = assembliesDict[assembly].valuesDict[filetype][annot][hap] if options.bases: fracStr = '%.2f' % ( float( it.totalComplete ) / it.baseLength ) numer = it.complete denom = it.samples else: fracStr = '%.2f' % ( float( it.complete ) / it.samples ) numer = it.complete denom = it.samples if fracStr == '1.00' and ( numer != denom ): fracStr = '0.99' if not options.aveHaps: sys.stdout.write('\thapA%d %s' % (hap, fracStr)) else: aveHap.complete += it.complete aveHap.samples += it.samples aveHap.totalComplete += it.totalComplete aveHap.baseLength += it.baseLength if options.aveHaps: if options.bases: fracStr = '%.2f' % ( float( aveHap.totalComplete ) / aveHap.baseLength ) numer = aveHap.totalComplete denom = aveHap.baseLength else: fracStr = '%.2f' % ( float( aveHap.complete ) / aveHap.samples ) numer = aveHap.complete denom = aveHap.samples if fracStr == '1.00' and ( numer != denom ): fracStr = '0.99' sys.stdout.write('\t%s' % fracStr) sys.stdout.write('\n')
def outputDict(assembliesDict, options): sortOrder = sorted(assembliesDict, key=lambda x: int(x[1:])) # number sortOrder = sorted(sortOrder, key=lambda x: assembliesDict[x].id[0]) # letter fileOrder = [] if not options.noContigs: fileOrder += ['contigsOverlapGene', 'contigsOverlap'] # if options.scaffolds: # fileOrder += ['scaffoldsOverlapGene', 'scaffoldsOverlap'] annotOrderGenes = ['transcripts'] # 'cds' annotOrder = ['cds', 'utr', 'nxe+nge', 'repeat'] # 'island' fileNameMap = {'contigsOverlapGene': 'COG', 'contigsOverlap': 'CO'} annotNameMap = { 'transcripts': 'xcript', 'cds': 'cds', 'utr': 'utr', 'nxe+nge': 'nxe+nge', 'repeat': 'repeat' } # print the header sys.stdout.write('#ID') i = -1 for f in fileOrder: i += 1 if f.endswith('OverlapGene'): order = annotOrderGenes else: order = annotOrder for a in order: if options.bases: if options.aveHaps: totalStr = lgn.prettyNumber(assembliesDict[ sortOrder[0]].valuesDict[f][a][1].baseLength + assembliesDict[sortOrder[0]]. valuesDict[f][a][2].baseLength) else: totalStr = '%s, %s' % (lgn.prettyNumber(assembliesDict[ sortOrder[0]].valuesDict[f][a][1].baseLength), lgn.prettyNumber( assembliesDict[sortOrder[0]]. valuesDict[f][a][2].baseLength)) else: if options.aveHaps: totalStr = lgn.prettyNumber(assembliesDict[ sortOrder[0]].valuesDict[f][a][1].samples + assembliesDict[sortOrder[0]]. valuesDict[f][a][2].samples) else: totalStr = '%s, %s' % (lgn.prettyNumber(assembliesDict[ sortOrder[0]].valuesDict[f][a][1].samples), lgn.prettyNumber( assembliesDict[sortOrder[0]]. valuesDict[f][a][2].samples)) sys.stdout.write('\t%s-%s (%s)' % (fileNameMap[f], annotNameMap[a], totalStr)) sys.stdout.write('\n') for assembly in sortOrder: if options.hideAssemblyNumbers: nameStr = '%s' % (lgn.idMap[assembliesDict[assembly].id[0]]) else: nameStr = '%s.%s' % (lgn.idMap[assembliesDict[assembly].id[0]], assembliesDict[assembly].id[1:]) sys.stdout.write('%s' % nameStr) for filetype in fileOrder: if filetype.endswith('OverlapGene'): order = annotOrderGenes else: order = annotOrder for annot in order: aveHap = IntervalsTag() for hap in assembliesDict[assembly].valuesDict[filetype][ annot]: it = assembliesDict[assembly].valuesDict[filetype][annot][ hap] if options.bases: fracStr = '%.2f' % (float(it.totalComplete) / it.baseLength) numer = it.complete denom = it.samples else: fracStr = '%.2f' % (float(it.complete) / it.samples) numer = it.complete denom = it.samples if fracStr == '1.00' and (numer != denom): fracStr = '0.99' if not options.aveHaps: sys.stdout.write('\thapA%d %s' % (hap, fracStr)) else: aveHap.complete += it.complete aveHap.samples += it.samples aveHap.totalComplete += it.totalComplete aveHap.baseLength += it.baseLength if options.aveHaps: if options.bases: fracStr = '%.2f' % (float(aveHap.totalComplete) / aveHap.baseLength) numer = aveHap.totalComplete denom = aveHap.baseLength else: fracStr = '%.2f' % (float(aveHap.complete) / aveHap.samples) numer = aveHap.complete denom = aveHap.samples if fracStr == '1.00' and (numer != denom): fracStr = '0.99' sys.stdout.write('\t%s' % fracStr) sys.stdout.write('\n')