def _read_part_file_descriptor(fname): """ Read a file descriptor and returns the array of the fields found. """ # Mapping mapping = [ ('position_x', 'particle_position_x'), ('position_y', 'particle_position_y'), ('position_z', 'particle_position_z'), ('velocity_x', 'particle_velocity_x'), ('velocity_y', 'particle_velocity_y'), ('velocity_z', 'particle_velocity_z'), ('mass', 'particle_mass'), ('identity', 'particle_identity'), ('levelp', 'particle_level'), ('family', 'particle_family'), ('tag', 'particle_tag') ] # Convert to dictionary mapping = {k: v for k, v in mapping} with open(fname, 'r') as f: line = f.readline() tmp = VERSION_RE.match(line) mylog.debug('Reading part file descriptor %s.' % fname) if not tmp: raise YTParticleOutputFormatNotImplemented() version = int(tmp.group(1)) if version == 1: # Skip one line (containing the headers) line = f.readline() fields = [] for i, line in enumerate(f.readlines()): tmp = VAR_DESC_RE.match(line) if not tmp: raise YTFileNotParseable(fname, i+1) # ivar = tmp.group(1) varname = tmp.group(2) dtype = tmp.group(3) if varname in mapping: varname = mapping[varname] else: varname = 'particle_%s' % varname fields.append((varname, dtype)) else: raise YTParticleOutputFormatNotImplemented() return fields
def _read_part_file_descriptor(fname: Union[str, "os.PathLike[str]"]): """ Read a file descriptor and returns the array of the fields found. """ # Mapping mapping_list = [ ("position_x", "particle_position_x"), ("position_y", "particle_position_y"), ("position_z", "particle_position_z"), ("velocity_x", "particle_velocity_x"), ("velocity_y", "particle_velocity_y"), ("velocity_z", "particle_velocity_z"), ("mass", "particle_mass"), ("identity", "particle_identity"), ("levelp", "particle_level"), ("family", "particle_family"), ("tag", "particle_tag"), ] # Convert to dictionary mapping = {k: v for k, v in mapping_list} with open(fname) as f: line = f.readline() tmp = VERSION_RE.match(line) mylog.debug("Reading part file descriptor %s.", fname) if not tmp: raise YTParticleOutputFormatNotImplemented() version = int(tmp.group(1)) if version == 1: # Skip one line (containing the headers) line = f.readline() fields = [] for i, line in enumerate(f.readlines()): tmp = VAR_DESC_RE.match(line) if not tmp: raise YTFileNotParseable(fname, i + 1) # ivar = tmp.group(1) varname = tmp.group(2) dtype = tmp.group(3) if varname in mapping: varname = mapping[varname] else: varname = f"particle_{varname}" fields.append((varname, dtype)) else: raise YTParticleOutputFormatNotImplemented() return fields
def _read_fluid_file_descriptor(fname): """ Read a file descriptor and returns the array of the fields found. """ # Mapping mapping = [ ("density", "Density"), ("velocity_x", "x-velocity"), ("velocity_y", "y-velocity"), ("velocity_z", "z-velocity"), ("pressure", "Pressure"), ("metallicity", "Metallicity"), ] # Add mapping for magnetic fields mapping += [ (key, key) for key in ( f"B_{dim}_{side}" for side in ["left", "right"] for dim in ["x", "y", "z"] ) ] # Convert to dictionary mapping = {k: v for k, v in mapping} with open(fname) as f: line = f.readline() tmp = VERSION_RE.match(line) mylog.debug("Reading fluid file descriptor %s.", fname) if not tmp: return [] version = int(tmp.group(1)) if version == 1: # Skip one line (containing the headers) line = f.readline() fields = [] for i, line in enumerate(f.readlines()): tmp = VAR_DESC_RE.match(line) if not tmp: raise YTFileNotParseable(fname, i + 1) # ivar = tmp.group(1) varname = tmp.group(2) dtype = tmp.group(3) if varname in mapping: varname = mapping[varname] else: varname = f"hydro_{varname}" fields.append((varname, dtype)) else: mylog.error("Version %s", version) raise YTParticleOutputFormatNotImplemented() return fields
def _read_fluid_file_descriptor(fname): """ Read a file descriptor and returns the array of the fields found. """ # Mapping mapping = [ ('density', 'Density'), ('velocity_x', 'x-velocity'), ('velocity_y', 'y-velocity'), ('velocity_z', 'z-velocity'), ('pressure', 'Pressure'), ('metallicity', 'Metallicity'), ] # Add mapping for magnetic fields mapping += [(key, key) for key in ('B_{0}_{1}'.format(dim,side) for side in ['left','right'] for dim in ['x','y','z'])] # Convert to dictionary mapping = {k: v for k, v in mapping} with open(fname, 'r') as f: line = f.readline() tmp = VERSION_RE.match(line) mylog.debug('Reading fluid file descriptor %s.' % fname) if not tmp: return [] version = int(tmp.group(1)) if version == 1: # Skip one line (containing the headers) line = f.readline() fields = [] for i, line in enumerate(f.readlines()): tmp = VAR_DESC_RE.match(line) if not tmp: raise YTFileNotParseable(fname, i+1) # ivar = tmp.group(1) varname = tmp.group(2) dtype = tmp.group(3) if varname in mapping: varname = mapping[varname] else: varname = 'hydro_%s' % varname fields.append((varname, dtype)) else: mylog.error('Version %s', version) raise YTParticleOutputFormatNotImplemented() return fields
def _read_fluid_file_descriptor(fname): """ Read a file descriptor and returns the array of the fields found. """ VERSION_RE = re.compile('# version: *(\d+)') VAR_DESC_RE = re.compile(r'\s*(\d+),\s*(\w+),\s*(\w+)') # Mapping mapping = [ ('density', 'Density'), ('velocity_x', 'x-velocity'), ('velocity_y', 'y-velocity'), ('velocity_z', 'z-velocity'), ('pressure', 'Pressure'), ('metallicity', 'Metallicity'), ] # Convert in dictionary mapping = {k: v for k, v in mapping} with open(fname, 'r') as f: line = f.readline() tmp = VERSION_RE.match(line) mylog.info('Reading fluid file descriptor.') if not tmp: return [] version = int(tmp.group(1)) if version == 1: # Skip one line (containing the headers) line = f.readline() fields = [] for i, line in enumerate(f.readlines()): tmp = VAR_DESC_RE.match(line) if not tmp: raise YTFileNotParseable(fname, i + 1) # ivar = tmp.group(1) varname = tmp.group(2) dtype = tmp.group(3) if varname in mapping: varname = mapping[varname] else: varname = 'particle_%s' % varname fields.append((varname, dtype)) else: mylog.error('Version %s', version) raise YTParticleOutputFormatNotImplemented() return fields
def _read_fluid_file_descriptor(fname: Union[str, "os.PathLike[str]"]): """ Read a file descriptor and returns the array of the fields found. """ # Mapping mapping_list = [ ("density", "Density"), ("velocity_x", "x-velocity"), ("velocity_y", "y-velocity"), ("velocity_z", "z-velocity"), ("pressure", "Pressure"), ("metallicity", "Metallicity"), # Add mapping for ionized species # Note: we expect internally that these names use the HII, HeII, # HeIII, ... convention for historical reasons. So we need to map # the names read from `hydro_file_descriptor.txt` to this # convention. # This will create fields like ("ramses", "HII") which are mapped # to ("gas", "H_p1_fraction") in fields.py ("H_p1_fraction", "HII"), ("He_p1_fraction", "HeII"), ("He_p2_fraction", "HeIII"), ] # Add mapping for magnetic fields mapping_list += [(key, key) for key in (f"B_{dim}_{side}" for side in ["left", "right"] for dim in ["x", "y", "z"])] # Convert to dictionary mapping = {k: v for k, v in mapping_list} with open(fname) as f: line = f.readline() tmp = VERSION_RE.match(line) mylog.debug("Reading fluid file descriptor %s.", fname) if not tmp: return [] version = int(tmp.group(1)) if version == 1: # Skip one line (containing the headers) line = f.readline() fields = [] for i, line in enumerate(f.readlines()): tmp = VAR_DESC_RE.match(line) if not tmp: raise YTFileNotParseable(fname, i + 1) # ivar = tmp.group(1) varname = tmp.group(2) dtype = tmp.group(3) if varname in mapping: varname = mapping[varname] else: varname = f"hydro_{varname}" fields.append((varname, dtype)) else: mylog.error("Version %s", version) raise YTParticleOutputFormatNotImplemented() return fields