示例#1
0
文件: main.py 项目: mdsmith/DumbView
def mainCmpH5(options):
    alnReader = AlignmentSet(options.inputCmpH5,
                             referenceFastaFname=options.referenceFilename)
    if options.fofn is not None:
        alnReader.attach(options.fofn)

    if options.referenceFilename:
        referenceTable = loadReferences(options.referenceFilename, alnReader)
    else:
        referenceTable = None

    for refWindow in options.referenceWindows:
        refId = refWindow.refId
        refName = alnReader.referenceInfo(refWindow.refId).FullName
        refLength = alnReader.referenceInfo(refWindow.refId).Length
        refWindow = refWindow._replace(refId=refId)
        refWindow = makeDisplayWindow(refLength, options.width, refWindow)

        if options.rowNumbers != None:
            alns = alnReader[options.rowNumbers]
        else:
            alns = readsInWindow(alnReader, refWindow, options.depth,
                                       minMapQV=options.minMapQV, strategy=options.sorting)

        print windowToGffString(Window(refName, refWindow.start, refWindow.end))

        if options.oneAtATime:
            formatIndividualAlignments(alnReader, refWindow, alns)
        else:
            formatWindow(alnReader, refWindow, alns,
                         referenceTable, options.aligned, options.color,
                         options.realign, options.consensus)
        print
示例#2
0
def mainGff(options):
    reader = GffReader(options.inputGff)
    alnsFname, referenceFname = extractCmpH5AndReferenceFromGff(reader)
    # Allow overriding
    alnsFname = options.inputCmpH5 or alnsFname
    referenceFname = options.referenceFilename or referenceFname

    assert os.path.isfile(alnsFname)
    assert os.path.isfile(referenceFname)

    alnReader = AlignmentSet(alnsFname, referenceFastaFname=referenceFname)

    if options.fofn is not None:
        alnReader.attach(options.fofn)

    referenceTable = loadReferences(referenceFname, alnReader)

    for i, gffRecord in enumerate(reader):
        referenceSeq = gffRecord.get("reference", "-")
        variantSeq   = gffRecord.get("variantSeq", "-")
        variantConfidence = gffRecord.confidence
        variantSummary = "(%s > %s)" % (referenceSeq, variantSeq)
        print gffRecord.type, gffRecord.seqid, gffRecord.start, gffRecord.end, \
            variantSummary, variantConfidence
        refId = gffRecord.seqid
        refLength = alnReader.referenceInfo(gffRecord.seqid).Length
        refWindow = makeDisplayWindow(refLength, options.width,
                                       Window(refId,
                                              gffRecord.start-10,
                                              gffRecord.end+10))
        if "rows" in gffRecord.attributes:
            alns = alnReader[map(int, gffRecord.rows.split(","))]
        else:
            alns = readsInWindow(alnReader, refWindow, options.depth,
                                 minMapQV=options.minMapQV, strategy=options.sorting)
        formatWindow(alnReader, refWindow, alns, referenceTable,
                     aligned=(gffRecord.type != "insertion"),
                     consensus=options.consensus,
                     useColor=options.color,
                     doRealign=options.realign)

        if options.pulseRecognizer:
            # CSV output for pulse recognizer
            print
            csvFname = "variant-" + str(i) +  ".csv"
            dumpVariantCsv(csvFname, alnReader, alns, gffRecord)
            formatVariantCsvLink(csvFname)

        print