Spaces:
No application file
No application file
| # Copyright 2012 by Wibowo Arindrarto. All rights reserved. | |
| # This file is part of the Biopython distribution and governed by your | |
| # choice of the "Biopython License Agreement" or the "BSD 3-Clause License". | |
| # Please see the LICENSE file that should have been included as part of this | |
| # package. | |
| """Bio.SearchIO base classes for HMMER-related code.""" | |
| from Bio.SearchIO._index import SearchIndexer | |
| class _BaseHmmerTextIndexer(SearchIndexer): | |
| """Base indexer class for HMMER plain text output.""" | |
| def __init__(self, *args, **kwargs): | |
| super().__init__(*args, **kwargs) | |
| self._preamble = b"" | |
| def get_raw(self, offset): | |
| """Return the raw record from the file as a bytes string.""" | |
| handle = self._handle | |
| qresult_raw = b"" | |
| # read header first | |
| if not self._preamble: | |
| handle.seek(0) | |
| while True: | |
| line = handle.readline() | |
| if line.startswith(self.qresult_start): | |
| break | |
| qresult_raw += line | |
| else: | |
| qresult_raw += self._preamble | |
| # and read the qresult raw string | |
| handle.seek(offset) | |
| while True: | |
| # preserve whitespace, don't use read_forward | |
| line = handle.readline() | |
| qresult_raw += line | |
| # break when we've reached qresult end | |
| if line.startswith(self.qresult_end) or not line: | |
| break | |
| return qresult_raw | |