AlignmentFile принимает в качестве первого аргумента:
filepath_or_object
Так вместо того, чтобы поставлять имя файла, вы можете поставить объект, который поддерживает интерфейс файла типа, то есть методы seek
, read
, tell
. При реализации класса для этого вы также можете реализовать кэширование на чтениях, которое, конечно, должно зависеть от текущей позиции курсора.
Если размер файла достаточно мал, так что она вписывается в памяти, вы можете прочитать полный файл и работать на io.BytesIO
объекта, нет необходимости, чтобы сделать свой собственный класс:
data = io.BytesIO(open('datafile','rb').read())
your_object = AlignmentFile(data, <other args>)
Я не уверен, что это значительно ускорит работу, потому что я предполагаю, что современные операционные системы (я знаю, что Linux сделает это) делают доступ к кеш-файлу. Поэтому, возможно, этого достаточно, чтобы полагаться на это.