コード例 #1
0
def main():
    #Get arguments
    args = argParse()
    print("- ARGS :")
    print(args, "\n")

    #create indexedReference
    print("- REFERENCE :")
    reference = Reference()
    #check if already indexed
    fileName = path.splitext(args.ref)[0]
    # retrieve from .gz
    if (path.exists(fileName + ".dumped.gz")):
        reference.load(fileName)
        print("reference loaded from dumped.gz")
    #index sequence
    else:
        sequence = getSequence(args.ref)
        reference.createIndex(sequence)
        reference.save(fileName)
        print("reference indexed and saved")

    print("DEBUG", reference.N)
    print("Reference : ", "\n", reference.text[:10], "...", "\n")
    #open Reads
    print("- READS :")

    readStream = openReads(args.reads)
    readName, readContent = getNextRead(readStream)
    print("First read :", readName, readContent)
    print("RevCompl :", reverseCompl(readContent), "\n")

    #outputStream
    outputStream = open(args.out, "w")

    #Start the timer
    print("- FINDING ALIGNEMENT :")
    with Timer() as total_time:
        while (readContent != -1):
            print(readName, "(processing)")
            isRevCompl = False
            bestScore, bestPos = getBestSemiGlobalAlg(readContent, reference,
                                                      args.k, args.dmax)
            bestScoreRev, bestPosRev = getBestSemiGlobalAlg(
                reverseCompl(readContent), reference, args.k, args.dmax)

            #if the reverse search is better we take it
            if (bestScoreRev < bestScore):
                bestScore, bestPos = bestScoreRev, bestPosRev
                isRevCompl = True

            #Found a result
            if (bestScore != len(readContent)):
                if bestScore <= args.dmax:
                    appendResults(outputStream, readName, bestPos, isRevCompl,
                                  bestScore)  #with tabs

            readName, readContent = getNextRead(readStream)

    total_time.print('\nIt tooks {} secondes.', 5)
    print()

    readStream.close()
    outputStream.close()

    #print out file
    print("- RESULTS :")
    f = open(args.out, "r")
    print(f.read())
    f.close()
    print("exported in:", args.out)