wreader.py
Go to the documentation of this file.
1 # Author: M. Reichert
2 # Date: 04.07.2024
3 import numpy as np
4 from tqdm import tqdm
5 from nucleus_multiple_class import nucleus_multiple
6 import h5py
7 import os
8 
9 
10 
11 class wreader(object):
12  """
13  Minimalistic class to lazily read WinNet data.
14  """
15 
16  def __init__(self, path, silent=False):
17  """
18  Initialize the class
19  - path: Path to the WinNet data
20  """
21  # The path to the WinNet run
22  self.path = path
23 
24  # Silent mode
25  self.silent = silent
26 
27  # The path to the hdf5 file
28  self.filename = os.path.join(path, "WinNet_data.h5")
29 
30  # The path to the snapshots in case of ascii mode
31  self.__snapshot_path = os.path.join(path, "snaps")
32 
33 
34 
35  @property
36  def is_crashed(self):
37  """
38  Check if the run has crashed
39  """
40  if not hasattr(self,"_wreader__is_crashed"):
41  self.__read_is_crashed()
42  return self.__is_crashed
43 
44 
45  def __read_is_crashed(self):
46  """
47  Read if the run has crashed
48  """
49  # Check existence finab
50  mode = self.check_existence('finab')
51  if mode==0:
52  self.__is_crashed = True
53  else:
54  self.__is_crashed = False
55 
56 
57 
58  @property
59  def A(self):
60  """
61  Mass number
62  """
63  if not hasattr(self,"_wreader__A"):
64  self.__read_A_Z_N()
65  return self.__A
66 
67  def __read_A_Z_N(self):
68  """
69  Read the mass number A
70  """
71  # Check if Ascii (mode = 2), hdf5 (mode = 1), or not present (mode = 0)
72  mode = self.check_existence('snapshot')
73 
74  if mode == 2:
75  self.__N, self.__Z = np.loadtxt(os.path.join(self.__snapshot_path, "snapsh_0001.dat"),unpack=True, usecols=(0,1),
76  skiprows=3,dtype=int)
77  self.__A = self.__N + self.__Z
78  elif mode == 1:
79  with h5py.File(self.filename, 'r') as hf:
80  self.__A = hf['snapshots/A'][:]
81  self.__Z = hf['snapshots/Z'][:]
82  self.__N = hf['snapshots/N'][:]
83  elif mode == 0:
84  error_msg = 'Failed to read A, Z, and N in "'+str(self.path)+'". '+\
85  'Snapshots not present as Ascii nor as Hdf5!'
86  raise ValueError(error_msg)
87 
88  @property
89  def Z(self):
90  """
91  Atomic number
92  """
93  if not hasattr(self,"_wreader__Z"):
94  self.__read_A_Z_N()
95  return self.__Z
96 
97  @property
98  def N(self):
99  """
100  Neutron number
101  """
102  if not hasattr(self,"_wreader__N"):
103  self.__read_A_Z_N()
104  return self.__N
105 
106 
107  def __read_snapshots(self):
108  """
109  Read the snapshots
110  """
111  # Check if Ascii (mode = 2), hdf5 (mode = 1), or not present (mode = 0)
112  mode = self.check_existence('snapshot')
113 
114  if mode == 2:
115  # Get list of files (no directories)
116  snapshot_files = [f for f in os.listdir(self.__snapshot_path) if os.path.isfile(os.path.join(self.__snapshot_path, f))]
117  # Now only take files that start with a 'snapsh_'
118  snapshot_files = [f for f in snapshot_files if f.startswith('snapsh_')]
119  self.__snapshots_time = np.zeros(len(snapshot_files))
120  self.__snapshots_Y = np.zeros((len(snapshot_files), len(self.A)))
121  self.__snapshots_X = np.zeros((len(snapshot_files), len(self.A)))
122  for i, f in enumerate(tqdm(snapshot_files, desc='Reading snapshots', disable=self.silent)):
123  fname = 'snapsh_' + str(i+1).zfill(4) + '.dat'
124  with open(os.path.join(self.__snapshot_path, fname), 'r') as file:
125  lines = file.readlines()
126  self.__snapshots_time[i] = float(lines[1].split()[0])
127  for j, line in enumerate(lines[3:]):
128  self.__snapshots_Y[i, j] = float(line.split()[2])
129  self.__snapshots_X[i, j] = float(line.split()[3])
130  elif mode == 1:
131  with h5py.File(self.filename, 'r') as hf:
132  self.__snapshots_time = hf['snapshots/time'][:]
133  self.__snapshots_Y = hf['snapshots/Y'][:]
134  self.__snapshots_X = self.__snapshots_Y*self.A
135  elif mode == 0:
136  error_msg = 'Failed to read timescales in "'+str(self.path)+'". '+\
137  'Not present as Ascii nor as Hdf5!'
138  raise ValueError(error_msg)
139 
140 
141 
142  def check_existence(self, entry):
143  """
144  Check whether an entry is in the hdf5 format (return 1),
145  or in the ascii format (return 2), or does not exist (return 0)
146  """
147  if (entry == 'mainout'):
148  value = self.__check_files('mainout.dat','mainout')
149  elif (entry == 'timescales'):
150  value = self.__check_files('timescales.dat','timescales')
151  elif (entry == 'energy'):
152  value = self.__check_files('generated_energy.dat','energy')
153  elif (entry == 'tracked_nuclei'):
154  value = self.__check_files('tracked_nuclei.dat','tracked_nuclei')
155  elif (entry == 'snapshot'):
156  value = self.__check_files('snaps/snapsh_0001.dat','snapshots')
157  elif (entry == 'flows'):
158  value = self.__check_files('flow/flow_0001.dat','flows')
159  elif (entry == "nuloss"):
160  value = self.__check_files('nu_loss_gain.dat','nu_loss_gain')
161  elif (entry == 'finab'):
162  value = self.__check_files('finab.dat','finab')
163  elif (entry == 'finabsum'):
164  value = self.__check_files('finabsum.dat','finab')
165  elif (entry == 'finabelem'):
166  value = self.__check_files('finabelem.dat','finab')
167  else:
168  error_msg = 'Checked for unknown entry "'+str(entry)+'". '
169  raise ValueError(error_msg)
170 
171  return value
172 
173 
174  def __check_files(self, ascii_file_path, hdf5_key):
175  '''
176  Check if something exists in hdf5 or ascii
177  '''
178  value = 0
179  if not os.path.exists(self.filename):
180  if not os.path.exists(os.path.join(self.path, ascii_file_path)):
181  value = 0
182  else:
183  value = 2
184  else:
185  with h5py.File(self.filename, 'r') as hf:
186  if hdf5_key in hf.keys():
187  value = 1
188  elif os.path.exists(os.path.join(self.path, ascii_file_path)):
189  value = 2
190  else:
191  value = 0
192 
193  return value
194 
195  @property
196  def nr_of_snaps(self):
197  """
198  Number of snapshots
199  """
200  if not hasattr(self,"_wreader__nr_of_snaps"):
201  self.__read_nr_of_snaps()
202  return self.__nr_of_snaps
203 
205  """
206  Read the number of snapshots
207  """
208  # Check if Ascii (mode = 2), hdf5 (mode = 1), or not present (mode = 0)
209  mode = self.check_existence('snapshot')
210 
211  if mode == 2:
212  snapshot_files = [f for f in os.listdir(self.__snapshot_path) if os.path.isfile(os.path.join(self.__snapshot_path, f))]
213  snapshot_files = [f for f in snapshot_files if f.startswith('snapsh_')]
214  self.__nr_of_snaps = len(snapshot_files)
215  elif mode == 1:
216  with h5py.File(self.filename, 'r') as hf:
217  self.__nr_of_snaps = len(hf['snapshots/time'][:])
218  elif mode == 0:
219  error_msg = 'Failed to read nr of snapshots in "'+str(self.path)+'". '+\
220  'Not present as Ascii nor as Hdf5!'
221  raise ValueError(error_msg)
222 
223  @property
224  def tracked_nuclei(self):
225  """
226  Get the tracked nuclei
227  """
228  if not hasattr(self,"_wreader__tracked_nuclei"):
229  self.__read_tracked_nuclei()
230  return self.__tracked_nuclei
231 
233  """
234  Read the tracked nuclei
235  """
236  # Check if Ascii (mode = 2), hdf5 (mode = 1), or not present (mode = 0)
237  mode = self.check_existence('tracked_nuclei')
239 
240  if mode == 2:
241  # self.__tracked_nuclei = np.loadtxt(os.path.join(self.path, "tracked_nuclei.dat"), unpack=True)
242  path = os.path.join(self.path, "tracked_nuclei.dat")
243  with open(path, 'r') as f:
244  first_line = f.readline()
245 
246  first_line = first_line.replace('Y(','')
247  first_line = first_line.replace(')','')
248  first_line = first_line.replace('#','')
249  track_nuclei_names = first_line.split()[1:] # Since the first entry is "time"
250  track_nuclei_data = np.loadtxt(path, skiprows=1)
251  nm = nucleus_multiple(names=track_nuclei_names)
252  Z = nm.Z
253  N = nm.N
254  A = nm.A
255  Xnuclei = track_nuclei_data[:,1:]*A
256  self.__tracked_nuclei['time'] = track_nuclei_data[:,0]
257  self.__tracked_nuclei['Z'] = Z
258  self.__tracked_nuclei['N'] = N
259  self.__tracked_nuclei['A'] = A
260  self.__tracked_nuclei['names'] = track_nuclei_names
261  elnames = nm.elnames
262  self.__tracked_nuclei['latex_names'] = [r"$^{"+str(A[i])+r"}$"+elnames[i].title() for i in range(len(A))]
263  for i, name in enumerate(track_nuclei_names):
264  self.__tracked_nuclei[name] = Xnuclei[:,i]
265  elif mode == 1:
266  with h5py.File(self.filename, 'r') as hf:
267  self.__tracked_nuclei['Z'] = hf['tracked_nuclei/Z'][:]
268  self.__tracked_nuclei['N'] = hf['tracked_nuclei/N'][:]
269  self.__tracked_nuclei['A'] = hf['tracked_nuclei/A'][:]
270  self.__tracked_nuclei['time'] = hf['tracked_nuclei/time'][:]
271  Xnuclei = hf['tracked_nuclei/Y'][:,:] * self.__tracked_nuclei['A']
272  nm = nucleus_multiple(Z=self.__tracked_nuclei['Z'], N=self.__tracked_nuclei['N'])
273  self.__tracked_nuclei['names'] = nm.names
274  for i, name in enumerate(nm.names):
275  self.__tracked_nuclei[name] = Xnuclei[:,i]
276 
277  elnames = nm.elnames
278  A = self.__tracked_nuclei['A']
279  self.__tracked_nuclei['latex_names'] = [r"$^{"+str(A[i])+r"}$"+elnames[i].title() for i in range(len(A))]
280  elif mode == 0:
281  error_msg = 'Failed to read tracked nuclei in "'+str(self.path)+'". '+\
282  'Not present as Ascii nor as Hdf5!'
283  raise ValueError(error_msg)
284 
285  @property
286  def Y(self):
287  """
288  Get abundance at snapshot idx
289  """
290  if not hasattr(self,"_wreader__snapshots_time"):
291  self.__read_snapshots()
292  return self.__snapshots_Y
293 
294  @property
295  def X(self):
296  """
297  Get mass fraction at snapshot idx
298  """
299  if not hasattr(self,"_wreader__snapshots_time"):
300  self.__read_snapshots()
301  return self.__snapshots_X
302 
303  @property
304  def snapshot_time(self):
305  """
306  Get time at snapshot idx
307  """
308  if not hasattr(self,"_wreader__snapshots_time"):
309  self.__read_snapshots()
310  return self.__snapshots_time
311 
312  @property
313  def tau(self):
314  """
315  Get the timescale of "tau", e.g., "tau_ag"
316  """
317  if not hasattr(self,"_wreader__timescales"):
318  self.__read_timescales()
319  return self.__timescales
320 
321 
322  @property
323  def nuloss(self):
324  """
325  Get the neutrino losses and gains
326  """
327  if not hasattr(self,"_wreader__nuloss"):
328  self.__read_nuloss()
329  return self.__nuloss
330 
331 
332  def __read_nuloss(self):
333  """
334  Read the neutrino losses and gains
335  """
336  # Check if Ascii (mode = 2), hdf5 (mode = 1), or not present (mode = 0)
337  mode = self.check_existence('nuloss')
338 
339  if mode == 2:
340  columns = ["time", "temp", "dens", "rad", "nu_total", "nu_beta", "nu_nuheat", "nu_thermal"]
341  data = np.loadtxt(os.path.join(self.path, "nu_loss_gain.dat"), unpack=True)
342  self.__nuloss = {}
343  for i, col in enumerate(columns):
344  self.__nuloss[col] = data[i]
345  elif mode == 1:
346  with h5py.File(self.filename, 'r') as hf:
347  self.__nuloss = {}
348  for key in hf['nu_loss_gain'].keys():
349  self.__nuloss[key] = hf['nu_loss_gain'][key][:]
350  elif mode == 0:
351  error_msg = 'Failed to read nuloss in "'+str(self.path)+'". '+\
352  'Not present as Ascii nor as Hdf5!'
353  raise ValueError(error_msg)
354 
355 
356  def __read_timescales(self):
357  """
358  Read the timescales
359  """
360  # Check if Ascii (mode = 2), hdf5 (mode = 1), or not present (mode = 0)
361  mode = self.check_existence('timescales')
362 
363  if (mode == 2):
364  self.__timescales = {}
365  with open(os.path.join(self.path, "timescales.dat"), 'r') as f:
366  lines = f.readlines()
367  header = lines[0]
368  header = header.replace('#', '').replace('[s]', '').replace('[GK]', '')
369  key = header.split()
370  data = np.loadtxt(os.path.join(self.path, "timescales.dat"), unpack=True)
371  for i, k in enumerate(key):
372  self.__timescales[k] = data[i]
373 
374  elif (mode == 1):
375  with h5py.File(self.filename, 'r') as hf:
376  self.__timescales = {}
377  for key in hf['timescales'].keys():
378  self.__timescales[key] = hf['timescales'][key][:]
379  elif (mode == 0):
380  error_msg = 'Failed to read timescales in "'+str(self.path)+'". '+\
381  'Not present as Ascii nor as Hdf5!'
382  raise ValueError(error_msg)
383 
384 
385  @property
386  def mainout(self):
387  """
388  Get an entry from the mainout
389  """
390  if not hasattr(self,"_wreader__mainout"):
391  self.__read_mainout()
392  return self.__mainout
393 
394  def __read_mainout(self):
395  """
396  Read the mainout
397  """
398  # Check if Ascii (mode = 2), hdf5 (mode = 1), or not present (mode = 0)
399  mode = self.check_existence('mainout')
400 
401  if mode == 2:
402  columns = ['iteration', 'time', 'temp', 'dens', 'ye',
403  'rad', 'yn', 'yp', 'ya', 'ylight', 'yheavy',
404  'zbar', 'abar', 'entr']
405  data = np.loadtxt(os.path.join(self.path, "mainout.dat"), unpack=True)
406  self.__mainout = {}
407  for i, col in enumerate(columns):
408  self.__mainout[col] = data[i]
409  elif mode == 1:
410  with h5py.File(self.filename, 'r') as hf:
411  self.__mainout = {}
412  for key in hf['mainout'].keys():
413  self.__mainout[key] = hf['mainout'][key][:]
414  elif mode == 0:
415  error_msg = 'Failed to read mainout in "'+str(self.path)+'". '+\
416  'Not present as Ascii nor as Hdf5!'
417  raise ValueError(error_msg)
418 
419 
420  @property
421  def energy(self):
422  """
423  Get the energy
424  """
425  if not hasattr(self,"_wreader__energy"):
426  self.__read_energy()
427  return self.__energy
428 
429  def __read_energy(self):
430  """
431  Read the energy
432  """
433  # Check if Ascii (mode = 2), hdf5 (mode = 1), or not present (mode = 0)
434  mode = self.check_existence('energy')
435 
436  if mode == 2:
437  columns = ['time', 'engen_tot', 'S_src', 'engen_beta', 'engen_ng_gn', 'engen_pg_gp',
438  'engen_ag_ga', 'engen_np_pn', 'engen_na_an', 'engen_ap_pa', 'engen_fiss']
439  data = np.loadtxt(os.path.join(self.path, "generated_energy.dat"), unpack=True)
440  self.__energy = {}
441  for i, col in enumerate(columns):
442  self.__energy[col] = data[i]
443  elif mode == 1:
444  with h5py.File(self.filename, 'r') as hf:
445  self.__energy = {}
446  for key in hf['energy'].keys():
447  self.__energy[key] = hf['energy'][key][:]
448  elif mode == 0:
449  error_msg = 'Failed to read energy in "'+str(self.path)+'". '+\
450  'Not present as Ascii nor as Hdf5!'
451  raise ValueError(error_msg)
452 
453  @property
454  def finab(self):
455  """
456  Get the final abundances from the finab.dat file
457  """
458  if not hasattr(self,"_wreader__finab"):
459  self.__read_finab()
460  return self.__finab
461 
462  def __read_finab(self):
463  """
464  Reader of the finab
465  """
466  # Check if Ascii (mode = 2), hdf5 (mode = 1), or not present (mode = 0)
467  mode = self.check_existence('finab')
468  if mode == 2:
469  A,Z,N,Y,X = np.loadtxt(os.path.join(self.path, "finab.dat"), unpack=True)
470  elif mode == 1:
471  with h5py.File(self.filename, 'r') as hf:
472  A = hf['finab/finab/A'][:]
473  Z = hf['finab/finab/Z'][:]
474  N = A-Z
475  Y = hf['finab/finab/Y'][:]
476  X = hf['finab/finab/X'][:]
477  elif mode == 0:
478  error_msg = 'Failed to read finab in "'+str(self.path)+'". '+\
479  'Not present as Ascii nor as Hdf5!'
480  raise ValueError(error_msg)
481  self.__finab = {"A": A, "Z": Z, "N": N, "Y": Y, "X": X}
482 
483 
484  @property
485  def finabsum(self):
486  """
487  Get the final abundances from the finabsum.dat file
488  """
489  if not hasattr(self,"_wreader__finabsum"):
490  self.__read_finabsum()
491  return self.__finabsum
492 
493  def __read_finabsum(self):
494  """
495  Reader of the finabsum
496  """
497  # Check if Ascii (mode = 2), hdf5 (mode = 1), or not present (mode = 0)
498  mode = self.check_existence('finabsum')
499  if mode == 2:
500  A,Y,X = np.loadtxt(os.path.join(self.path, "finabsum.dat"), unpack=True)
501  elif mode == 1:
502  with h5py.File(self.filename, 'r') as hf:
503  A = hf['finab/finabsum/A'][:]
504  Y = hf['finab/finabsum/Y'][:]
505  X = hf['finab/finabsum/X'][:]
506  elif mode == 0:
507  error_msg = 'Failed to read finabsum in "'+str(self.path)+'". '+\
508  'Not present as Ascii nor as Hdf5!'
509  raise ValueError(error_msg)
510  self.__finabsum = {"A": A, "Y": Y, "X": X}
511 
512 
513  @property
514  def finabelem(self):
515  """
516  Get the final abundances from the finabelem.dat file
517  """
518  if not hasattr(self,"_wreader__finabelem"):
519  self.__read_finabelem()
520  return self.__finabelem
521 
522  def __read_finabelem(self):
523  """
524  Reader of the finabsum
525  """
526  # Check if Ascii (mode = 2), hdf5 (mode = 1), or not present (mode = 0)
527  mode = self.check_existence('finabelem')
528  if mode == 2:
529  Z, Y = np.loadtxt(os.path.join(self.path, "finabelem.dat"), unpack=True)
530  elif mode == 1:
531  with h5py.File(self.filename, 'r') as hf:
532  Z = hf['finab/finabelem/Z'][:]
533  Y = hf['finab/finabelem/Y'][:]
534  elif mode == 0:
535  error_msg = 'Failed to read finabelem in "'+str(self.path)+'". '+\
536  'Not present as Ascii nor as Hdf5!'
537  raise ValueError(error_msg)
538  self.__finabelem = {"Z": Z, "Y": Y}
539 
540  def flow_entry(self, iteration, flow_group='flows'):
541  """
542  Get the flow entry
543  """
544  mode = self.check_existence('flows')
545 
546  if mode == 2:
547  fname = os.path.join(self.path, "flow/flow_" + str(iteration).zfill(4) + ".dat")
548  with open(fname, 'r') as f:
549  lines = f.readlines()
550  header = lines[1]
551  time, temp, dens = np.array(header.split()).astype(float)
552 
553  # Read the whole flow
554  nin,zin,yin,nout,zout,yout,flows = np.loadtxt(fname, unpack=True, skiprows=3)
555  nin = nin.astype(int)
556  zin = zin.astype(int)
557  nout = nout.astype(int)
558  zout = zout.astype(int)
559  flow = {}
560  flow['time'] = time
561  flow['temp'] = temp
562  flow['dens'] = dens
563  flow['n_in'] = nin
564  flow['p_in'] = zin
565  flow['y_in'] = yin
566  flow['n_out'] = nout
567  flow['p_out'] = zout
568  flow['y_out'] = yout
569  flow['flow'] = flows
570  elif mode == 1:
571  with h5py.File(self.filename, 'r') as hf:
572  flow = {}
573  for key in hf[flow_group][str(iteration)].keys():
574  flow[key] = hf[flow_group][str(iteration)][key][:]
575  elif mode == 0:
576  error_msg = 'Failed to read flow in "'+str(self.path)+'". '+\
577  'Not present as Ascii nor as Hdf5!'
578  raise ValueError(error_msg)
579 
580  return flow
581 
582 
583  def __getitem__(self, key):
584  """
585  Get the value of a specific key.
586  """
587  if key == "mainout":
588  return self.mainout
589  elif key == "timescales":
590  return self.tau
591  elif key == "energy":
592  return self.energy
593  elif key == "tracked_nuclei":
594  return self.tracked_nuclei
595  elif key == "nuloss":
596  return self.nuloss
597 
598 
599 if __name__ == "__main__":
600  w = wreader('/home/mreichert/data/Networks/comparison_winNet/WinNet-dev/runs/Example_MRSN_r_process_winteler')
601  w.tracked_nuclei
602  pass
src_files.wreader.wreader.__N
__N
Definition: wreader.py:82
src_files.wreader.wreader.__getitem__
def __getitem__(self, key)
Definition: wreader.py:583
src_files.wreader.wreader.__read_energy
def __read_energy(self)
Definition: wreader.py:429
src_files.wreader.wreader.__read_tracked_nuclei
def __read_tracked_nuclei(self)
Definition: wreader.py:232
src_files.wreader.wreader.__nuloss
__nuloss
Definition: wreader.py:342
src_files.wreader.wreader.nuloss
def nuloss(self)
Definition: wreader.py:323
src_files.wreader.wreader.finabelem
def finabelem(self)
Definition: wreader.py:514
src_files.wreader.wreader.__read_nr_of_snaps
def __read_nr_of_snaps(self)
Definition: wreader.py:204
src_files.wreader.wreader.__init__
def __init__(self, path, silent=False)
Definition: wreader.py:16
src_files.wreader.wreader.path
path
Definition: wreader.py:22
src_files.wreader.wreader.flow_entry
def flow_entry(self, iteration, flow_group='flows')
Definition: wreader.py:540
src_files.wreader.wreader.tracked_nuclei
def tracked_nuclei(self)
Definition: wreader.py:224
src_files.wreader.wreader.__read_finabelem
def __read_finabelem(self)
Definition: wreader.py:522
src_files.wreader.wreader.A
def A(self)
Definition: wreader.py:59
src_files.wreader.wreader.__nr_of_snaps
__nr_of_snaps
Definition: wreader.py:214
src_files.wreader.wreader.__energy
__energy
Definition: wreader.py:440
src_files.wreader.wreader.__read_mainout
def __read_mainout(self)
Definition: wreader.py:394
src_files.wreader.wreader.tau
def tau(self)
Definition: wreader.py:313
src_files.wreader.wreader.__snapshots_time
__snapshots_time
Definition: wreader.py:119
src_files.wreader.wreader.finabsum
def finabsum(self)
Definition: wreader.py:485
src_files.wreader.wreader.__tracked_nuclei
__tracked_nuclei
Definition: wreader.py:238
src_files.wreader.wreader.filename
filename
Definition: wreader.py:28
src_files.wreader.wreader.__read_is_crashed
def __read_is_crashed(self)
Definition: wreader.py:45
src_files.wreader.wreader.Y
def Y(self)
Definition: wreader.py:286
src_files.wreader.wreader.__snapshots_Y
__snapshots_Y
Definition: wreader.py:120
src_files.wreader.wreader.__read_snapshots
def __read_snapshots(self)
Definition: wreader.py:107
src_files.wreader.wreader.__read_finab
def __read_finab(self)
Definition: wreader.py:462
src_files.wreader.wreader.__read_A_Z_N
def __read_A_Z_N(self)
Definition: wreader.py:67
src_files.wreader.wreader.__read_timescales
def __read_timescales(self)
Definition: wreader.py:356
src_files.wreader.wreader.check_existence
def check_existence(self, entry)
Definition: wreader.py:142
src_files.wreader.wreader.__A
__A
Definition: wreader.py:77
src_files.wreader.wreader.finab
def finab(self)
Definition: wreader.py:454
src_files.wreader.wreader.__mainout
__mainout
Definition: wreader.py:406
src_files.wreader.wreader.__is_crashed
__is_crashed
Definition: wreader.py:52
src_files.wreader.wreader.silent
silent
Definition: wreader.py:25
src_files.wreader.wreader.__finab
__finab
Definition: wreader.py:481
src_files.wreader.wreader.__snapshot_path
__snapshot_path
Definition: wreader.py:31
src_files.wreader.wreader.__timescales
__timescales
Definition: wreader.py:364
src_files.wreader.wreader.mainout
def mainout(self)
Definition: wreader.py:386
src_files.wreader.wreader.N
def N(self)
Definition: wreader.py:98
src_files.nucleus_multiple_class.nucleus_multiple
Definition: nucleus_multiple_class.py:10
src_files.wreader.wreader.__read_finabsum
def __read_finabsum(self)
Definition: wreader.py:493
src_files.wreader.wreader.energy
def energy(self)
Definition: wreader.py:421
src_files.wreader.wreader.__finabelem
__finabelem
Definition: wreader.py:538
src_files.wreader.wreader.is_crashed
def is_crashed(self)
Definition: wreader.py:36
src_files.wreader.wreader.__snapshots_X
__snapshots_X
Definition: wreader.py:121
src_files.wreader.wreader.__check_files
def __check_files(self, ascii_file_path, hdf5_key)
Definition: wreader.py:174
src_files.wreader.wreader.__finabsum
__finabsum
Definition: wreader.py:510
src_files.wreader.wreader
Definition: wreader.py:11
src_files.wreader.wreader.nr_of_snaps
def nr_of_snaps(self)
Definition: wreader.py:196
src_files.wreader.wreader.X
def X(self)
Definition: wreader.py:295
src_files.wreader.wreader.Z
def Z(self)
Definition: wreader.py:89
src_files.wreader.wreader.__Z
__Z
Definition: wreader.py:75
src_files.wreader.wreader.__read_nuloss
def __read_nuloss(self)
Definition: wreader.py:332
src_files.wreader.wreader.snapshot_time
def snapshot_time(self)
Definition: wreader.py:304