Пример #1
0
class RecordReceiver:
    def __init__(self, handle):
        self.handle = handle

    def __call__(self, id, rec):
        self.handle.write(rec)


# Functor that deals with bad records - prints an error message to HANDLE
class BadRecordReceiver:
    def __init__(self, handle):
        self.handle = handle
        self.badIDs = []

    def __call__(self, badID):
        self.badIDs.append(badID)
        self.handle.write("Bad ID: %s\n" % badID)


# Form pattern for accession strings
accessionPat = prefix + "%%0%dd" % digits

batchSize = 500

for curr in xrange(start, end + 1, batchSize):
    # Generate accession strings for this batch
    ids = [accessionPat % num for num in range(curr, min(curr + batchSize, end + 1))]
    GenBank.download_many(
        ids, RecordReceiver(sys.stdout), database="nucleotide", broken_fn=BadRecordReceiver(sys.stderr), faildelay=5.0
    )