"platforms/cuda/vscode:/vscode.git/clone" did not exist on "e4beb29036cc2fc93c9be08c4e4651ecc24576c7"
Commit 9c666133 authored by peastman's avatar peastman
Browse files

Merge pull request #178 from swails/master

Support gzip and bzip2 compression for StateDataReporter (based on filename extension) and other small fixes
parents 8eb840b6 17d440fe
...@@ -203,3 +203,8 @@ ununtrium = Element(113, "ununtrium", "Uut", 284*daltons) ...@@ -203,3 +203,8 @@ ununtrium = Element(113, "ununtrium", "Uut", 284*daltons)
ununquadium = Element(114, "ununquadium", "Uuq", 289*daltons) ununquadium = Element(114, "ununquadium", "Uuq", 289*daltons)
ununpentium = Element(115, "ununpentium", "Uup", 288*daltons) ununpentium = Element(115, "ununpentium", "Uup", 288*daltons)
ununhexium = Element(116, "ununhexium", "Uuh", 292*daltons) ununhexium = Element(116, "ununhexium", "Uuh", 292*daltons)
# Aliases to recognize common alternative spellings. Both the '==' and 'is'
# relational operators will work with any chosen name
sulphur = sulfur
aluminium = aluminum
...@@ -436,7 +436,7 @@ class Chain(object): ...@@ -436,7 +436,7 @@ class Chain(object):
self._finalize() self._finalize()
def get_residue(self, residue_number, insertion_code=' '): def get_residue(self, residue_number, insertion_code=' '):
return residues_by_num_icode[str(residue_number) + insertion_code] return self.residues_by_num_icode[str(residue_number) + insertion_code]
def __contains__(self, residue_number): def __contains__(self, residue_number):
return self.residues_by_number.__contains__(residue_number) return self.residues_by_number.__contains__(residue_number)
...@@ -916,7 +916,6 @@ if __name__=='__main__': ...@@ -916,7 +916,6 @@ if __name__=='__main__':
import doctest, sys import doctest, sys
doctest.testmod(sys.modules[__name__]) doctest.testmod(sys.modules[__name__])
import sys
import os import os
import gzip import gzip
import re import re
......
...@@ -31,9 +31,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -31,9 +31,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
__author__ = "Peter Eastman" __author__ = "Peter Eastman"
__version__ = "1.0" __version__ = "1.0"
import bz2
import gzip
import simtk.openmm as mm import simtk.openmm as mm
import simtk.unit as unit import simtk.unit as unit
from simtk.openmm.app import PDBFile
import math import math
class StateDataReporter(object): class StateDataReporter(object):
...@@ -67,6 +68,13 @@ class StateDataReporter(object): ...@@ -67,6 +68,13 @@ class StateDataReporter(object):
self._reportInterval = reportInterval self._reportInterval = reportInterval
self._openedFile = isinstance(file, str) self._openedFile = isinstance(file, str)
if self._openedFile: if self._openedFile:
# Detect the desired compression scheme from the filename extension
# and open all files unbuffered
if file.endswith('.gz'):
self._out = gzip.GzipFile(fileobj=open(file, 'wb', 0))
elif file.endswith('.bz2'):
self._out = bz2.BZ2File(file, 'w', 0)
else:
self._out = open(file, 'w', 0) self._out = open(file, 'w', 0)
else: else:
self._out = file self._out = file
...@@ -109,7 +117,10 @@ class StateDataReporter(object): ...@@ -109,7 +117,10 @@ class StateDataReporter(object):
self._initializeConstants(simulation) self._initializeConstants(simulation)
headers = self._constructHeaders() headers = self._constructHeaders()
print >>self._out, '#"%s"' % ('"'+self._separator+'"').join(headers) print >>self._out, '#"%s"' % ('"'+self._separator+'"').join(headers)
try:
self._out.flush() self._out.flush()
except AttributeError:
pass
self._hasInitialized = True self._hasInitialized = True
# Check for errors. # Check for errors.
...@@ -120,7 +131,10 @@ class StateDataReporter(object): ...@@ -120,7 +131,10 @@ class StateDataReporter(object):
# Write the values. # Write the values.
print >>self._out, self._separator.join(str(v) for v in values) print >>self._out, self._separator.join(str(v) for v in values)
try:
self._out.flush() self._out.flush()
except AttributeError:
pass
def _constructReportValues(self, simulation, state): def _constructReportValues(self, simulation, state):
"""Query the simulation for the current state of our observables of interest. """Query the simulation for the current state of our observables of interest.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment