@@ -93,6 +93,15 @@ class Grid(object):
9393 format fails. The default is ``None`` and normally the file
9494 format is guessed from the file extension.
9595
96+ assume_volumetric : bool (optional)
97+ If ``False`` (default), check the file header to determine whether
98+ the data in `grid` is a 3D volume. If ``True``, assume `grid` is volumetric.
99+
100+ .. Note:: `assume_volumetric` only has an effect when loading
101+ MRC/CCP4 files. See :class:`gridData.mrc.MRC`
102+
103+ .. versionadded:: 1.1.0
104+
96105 Raises
97106 ------
98107 TypeError
@@ -196,7 +205,7 @@ class Grid(object):
196205
197206 def __init__ (self , grid = None , edges = None , origin = None , delta = None ,
198207 metadata = None , interpolation_spline_order = 3 ,
199- file_format = None ):
208+ file_format = None , assume_volumetric = False ):
200209 # file formats are guessed from extension == lower case key
201210 self ._exporters = {
202211 'DX' : self ._export_dx ,
@@ -238,7 +247,7 @@ def __init__(self, grid=None, edges=None, origin=None, delta=None,
238247 filename = str (grid )
239248
240249 if filename is not None :
241- self .load (filename , file_format = file_format )
250+ self .load (filename , file_format = file_format , assume_volumetric = assume_volumetric )
242251 else :
243252 self ._load (grid , edges , metadata , origin , delta )
244253
@@ -532,7 +541,8 @@ def _load(
532541 "grid={0} edges={1} origin={2} delta={3}" .format (
533542 grid , edges , origin , delta ))
534543
535- def load (self , filename , file_format = None ):
544+ # NOTE: keep loader kwargs in sync between load() and __init__()
545+ def load (self , filename , file_format = None , assume_volumetric = False ):
536546 """Load saved grid and edges from `filename`
537547
538548 The :meth:`load` method calls the class's constructor method and
@@ -545,32 +555,32 @@ def load(self, filename, file_format=None):
545555 # are not really a file
546556 raise IOError (errno .ENOENT , "file not found" , filename )
547557 loader = self ._get_loader (filename , file_format = file_format )
548- loader (filename )
558+ loader (filename , assume_volumetric = assume_volumetric )
549559
550- def _load_python (self , filename ):
560+ def _load_python (self , filename , ** kwargs ):
551561 with open (filename , 'rb' ) as f :
552562 saved = pickle .load (f )
553563 self ._load (grid = saved ['grid' ],
554564 edges = saved ['edges' ],
555565 metadata = saved ['metadata' ])
556566
557- def _load_mrc (self , filename ):
567+ def _load_mrc (self , filename , assume_volumetric = False , ** kwargs ):
558568 """Initializes Grid from a MRC/CCP4 file."""
559- mrcfile = mrc .MRC (filename )
569+ mrcfile = mrc .MRC (filename , assume_volumetric = assume_volumetric )
560570 grid , edges = mrcfile .histogramdd ()
561571 self ._load (grid = grid , edges = edges , metadata = self .metadata )
562572 # Store header for access from Grid object (undocumented)
563573 # https://github.com/MDAnalysis/GridDataFormats/pull/100#discussion_r782604833
564574 self ._mrc_header = mrcfile .header .copy ()
565575
566- def _load_dx (self , filename ):
576+ def _load_dx (self , filename , ** kwargs ):
567577 """Initializes Grid from a OpenDX file."""
568578 dx = OpenDX .field (0 )
569579 dx .read (filename )
570580 grid , edges = dx .histogramdd ()
571581 self ._load (grid = grid , edges = edges , metadata = self .metadata )
572582
573- def _load_plt (self , filename ):
583+ def _load_plt (self , filename , ** kwargs ):
574584 """Initialize Grid from gOpenMol plt file."""
575585 g = gOpenMol .Plt ()
576586 g .read (filename )
0 commit comments