Removed CachedReader
This commit is contained in:
parent
1aa5eed106
commit
cf28882418
@ -32,18 +32,11 @@ class WrongTopologyError(Exception):
|
|||||||
|
|
||||||
|
|
||||||
def open_with_mdanalysis(
|
def open_with_mdanalysis(
|
||||||
topology, trajectory, cached=False, index_file=None, charges=None, masses=None
|
topology, trajectory, index_file=None, charges=None, masses=None
|
||||||
):
|
):
|
||||||
"""Open the topology and trajectory with mdanalysis."""
|
"""Open the topology and trajectory with mdanalysis."""
|
||||||
uni = mdanalysis.Universe(topology, trajectory, convert_units=False)
|
uni = mdanalysis.Universe(topology, trajectory, convert_units=False)
|
||||||
if cached is not False:
|
reader = BaseReader(uni.trajectory)
|
||||||
if cached is True:
|
|
||||||
maxsize = 128
|
|
||||||
else:
|
|
||||||
maxsize = cached
|
|
||||||
reader = CachedReader(uni.trajectory, maxsize)
|
|
||||||
else:
|
|
||||||
reader = BaseReader(uni.trajectory)
|
|
||||||
reader.universe = uni
|
reader.universe = uni
|
||||||
if topology.endswith(".tpr"):
|
if topology.endswith(".tpr"):
|
||||||
charges = uni.atoms.charges
|
charges = uni.atoms.charges
|
||||||
@ -274,11 +267,6 @@ class BaseReader:
|
|||||||
self._nojump_matrixes = mats
|
self._nojump_matrixes = mats
|
||||||
|
|
||||||
def __init__(self, rd):
|
def __init__(self, rd):
|
||||||
"""
|
|
||||||
Args:
|
|
||||||
filename: Trajectory file to open.
|
|
||||||
reindex (bool, opt.): If True, regenerate the index file if necessary.
|
|
||||||
"""
|
|
||||||
self.rd = rd
|
self.rd = rd
|
||||||
self._nojump_matrixes = None
|
self._nojump_matrixes = None
|
||||||
if path.exists(nojump_load_filename(self)):
|
if path.exists(nojump_load_filename(self)):
|
||||||
@ -291,39 +279,5 @@ class BaseReader:
|
|||||||
return len(self.rd)
|
return len(self.rd)
|
||||||
|
|
||||||
def __checksum__(self):
|
def __checksum__(self):
|
||||||
if hasattr(self.rd, "cache"):
|
cache = array("L", self.rd._xdr.offsets.tobytes())
|
||||||
# Has an pygmx reader
|
return checksum(self.filename, str(cache))
|
||||||
return checksum(self.filename, str(self.rd.cache))
|
|
||||||
elif hasattr(self.rd, "_xdr"):
|
|
||||||
# Has an mdanalysis reader
|
|
||||||
cache = array("L", self.rd._xdr.offsets.tobytes())
|
|
||||||
return checksum(self.filename, str(cache))
|
|
||||||
|
|
||||||
|
|
||||||
class CachedReader(BaseReader):
|
|
||||||
"""A reader that has a least-recently-used cache for frames."""
|
|
||||||
|
|
||||||
@property
|
|
||||||
def cache_info(self):
|
|
||||||
"""Get Information about the lru cache."""
|
|
||||||
return self._get_item.cache_info()
|
|
||||||
|
|
||||||
def clear_cache(self):
|
|
||||||
"""Clear the cache of the frames."""
|
|
||||||
self._get_item.cache_clear()
|
|
||||||
|
|
||||||
def __init__(self, rd, maxsize):
|
|
||||||
"""
|
|
||||||
Args:
|
|
||||||
filename (str): Trajectory file that will be opened.
|
|
||||||
maxsize: Maximum size of the lru_cache or None for infinite cache.
|
|
||||||
"""
|
|
||||||
super().__init__(rd)
|
|
||||||
self._get_item = lru_cache(maxsize=maxsize)(self._get_item)
|
|
||||||
|
|
||||||
def _get_item(self, item):
|
|
||||||
"""Buffer function for lru_cache, since __getitem__ can not be cached."""
|
|
||||||
return super().__getitem__(item)
|
|
||||||
|
|
||||||
def __getitem__(self, item):
|
|
||||||
return self._get_item(item)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user