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