[Yt-svn] yt: Added get_data_by_redshift and get_data_by_time to EnzoSimul...
hg at spacepope.org
hg at spacepope.org
Tue Apr 20 12:20:21 PDT 2010
hg Repository: yt
details: yt/rev/624bed888796
changeset: 1569:624bed888796
user: Britton Smith <brittonsmith at gmail.com>
date:
Tue Apr 20 13:19:57 2010 -0600
description:
Added get_data_by_redshift and get_data_by_time to EnzoSimulation class
allowing the user to get datasets based on lists of redshifts or times.
diffstat:
yt/extensions/EnzoSimulation.py | 44 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 43 insertions(+), 1 deletions(-)
diffs (61 lines):
diff -r 5f15ebafbe21 -r 624bed888796 yt/extensions/EnzoSimulation.py
--- a/yt/extensions/EnzoSimulation.py Mon Apr 19 10:18:48 2010 -0700
+++ b/yt/extensions/EnzoSimulation.py Tue Apr 20 13:19:57 2010 -0600
@@ -1,5 +1,6 @@
+from yt.logger import lagosLogger as mylog
import yt.lagos as lagos
-from yt.logger import lagosLogger as mylog
+import yt.funcs as funcs
import numpy as na
import os
@@ -368,8 +369,49 @@
mylog.info("create_cosmology_splice: Used %d data dumps to get from z = %f to %f." %
(len(cosmology_splice),initial_redshift,final_redshift))
+ self.allOutputs.sort(key=lambda obj: obj['time'])
return cosmology_splice
+ def get_data_by_redshift(self, redshifts, tolerance=None):
+ """
+ : param redshifts: a list of redshifts.
+ : tolerance: if not None, do not return a dataset unless the redshift is within the tolerance value.
+ Get datasets for a list of redshifts.
+ """
+
+ redshifts = funcs.ensure_list(redshifts)
+ my_datasets = []
+ for redshift in redshifts:
+ self.allOutputs.sort(key=lambda obj:na.fabs(redshift - obj['redshift']))
+ if (tolerance is None or na.abs(redshift - self.allOutputs[0]['redshift']) <= tolerance) \
+ and self.allOutputs[0] not in my_datasets:
+ my_datasets.append(self.allOutputs[0])
+ else:
+ mylog.error("No dataset added for z = %f." % redshift)
+
+ self.allOutputs.sort(key=lambda obj: obj['time'])
+ return my_datasets
+
+ def get_data_by_time(self, times, tolerance=None):
+ """
+ : param redshifts: a list of times.
+ : tolerance: if not None, do not return a dataset unless the redshift is within the tolerance value.
+ Get datasets for a list of times.
+ """
+
+ times = funcs.ensure_list(times)
+ my_datasets = []
+ for my_time in times:
+ self.allOutputs.sort(key=lambda obj:na.fabs(my_time - obj['time']))
+ if (tolerance is None or na.abs(my_time - self.allOutputs[0]['time']) <= tolerance) \
+ and self.allOutputs[0] not in my_datasets:
+ my_datasets.append(self.allOutputs[0])
+ else:
+ mylog.error("No dataset added for z = %f." % my_time)
+
+ self.allOutputs.sort(key=lambda obj: obj['time'])
+ return my_datasets
+
def _calculate_deltaz_max(self):
"Calculate delta z that corresponds to full box length going from z to (z - delta z)."
More information about the yt-svn
mailing list