[yt-users] Light Cone Projection

Britton Smith brittonsmith at gmail.com
Mon Sep 30 04:36:43 PDT 2013


Hi Pengfei,

To answer your first question, the minimum_coherent_box_fraction option is
a bit of a failed experiment in which one is using as many datasets as
possible in the light cone, instead of using as few as possible.  In this
case, we use the same ray trajectory through multiple datasets until the
ray has extended the length of one box.  This was to avoid making cuts in
halos or filaments by using thin slices of each dataset.  Functionally,
this works by waiting to re-randomize the ray trajectory until you've gone
through a full box length.  In practice, doing this produced a number of
artifacts in the light cone projections so should probably be used with
caution in the light rays.  I think in reality, one should stick with the
option of using the smallest number of datasets as possible to traverse a
redshift interval.

On your second question, the problem is actually that, if you start from a
random position in a periodic cube of box length L, you only return to that
position after moving a distance of L if you move exactly along the axis
directions.  As another example, if you started in the corner of the box
and went toward the opposite corner (which is the same point since it's
periodic) you would have to travel a distance of sqrt(3) * L to get there.
In reality, though, you probably do not want to be starting from the same
point in each dataset, since you will then just be resampling the same
structure over and over.

Other than that, the code itself looks just fine.  Please, let me know if I
haven't answered your questions.

Britton


On Wed, Sep 25, 2013 at 12:19 PM, Pengfei Chen <madcpf at gmail.com> wrote:

> Hi Britton,
>
> Thank you very much for your detailed instructions. I've added two
> parameters in _calculate_light_ray_solution in light_ray.py. They are
> 'start_point' and 'start_direction', each of which is supposed to be a
> 3-element list/array. Their default values are None and they can be used
> together or individually. The code is attached and it works. But I still
> have two problems:
>
> (1) I am confused about the parameter "minimum_coherent_box_fraction", and
> what the following statement is trying to do:
>
>             if (q == 0) or (self.minimum_coherent_box_fraction == 0) or \
>                     (box_fraction_used >
>                      self.minimum_coherent_box_fraction) or \
>                     (box_fraction_used +
>                      self.light_ray_solution[q]['traversal_box_fraction']
> > 1.0):
>
> What does "coherent large scale structure" and "box coherence" mean?
>
> (2) When I am using minimum datasets the start point of each dataset is
> not same as the end point of the last dataset even if I
> set minimum_coherent_box_fraction = 1. Because
>
>                      box_fraction_used +
>                      self.light_ray_solution[q]['traversal_box_fraction']
> > 1.0
>
> is always satisfied when using minimum datasets. I don't know the right
> way to get start point to be the same as the end point of the last dataset,
> so I tried to change the statements in (1) to
>            if (q == 0):
> I find it works for(parameters when call make_light_ray):
>                   start_point=None,
>                   start_direction=None,
> and
>                   start_point=None,
>                   start_direction=[1,1,0],
> and
>                   start_point=[0.5,0.5,0.5],
>                   start_direction=[1,1,0],
> But not
>                   start_point=[0.5,0.5,0.5],
>                   start_direction=None,
>
> For the last case it shows the following error:
>
> yt : [INFO     ] 2013-09-25 04:07:18,162 Getting the binary hierarchy
> Parsing Hierarchy100%
> |||||||||||||||||||||||||||||||||||||||||||||||||||||||||| Time: 00:00:00
> yt : [INFO     ] 2013-09-25 04:07:18,185 Gathering a field list (this may
> take a moment.)
> yt : [INFO     ] 2013-09-25 04:07:18,443 Getting field t from 0
> Traceback (most recent call last):
>   File "make_light_ray.py", line 68, in <module>
>     njobs=-1)
>   File
> "/Users/madcpf/Documents/yt/yt/analysis_modules/cosmological_observation/light_ray/light_ray.py",
> line 388, in make_light_ray
>     (sub_ray['dts'] *
>   File "/Users/madcpf/Documents/yt/yt/data_objects/data_containers.py",
> line 318, in __getitem__
>     self.get_data(key)
>   File "/Users/madcpf/Documents/yt/yt/data_objects/data_containers.py",
> line 525, in get_data
>     for grid in self._grids])
> ValueError: need at least one array to concatenate
>
> Could you please take a look when you have time?
>
> Thank you so much!
>
> Pengfei
>
>
>
>
> 2013/9/11 Britton Smith <brittonsmith at gmail.com>
>
>> Hi Pengfei,
>>
>> That is right.  Using plan_cosmology_splice will allow you to minimize
>> the number of outputs needed to traverse a given redshift interval.  Note,
>> that since the start and stop positions in each dataset are random, there
>> is no guarantee that you will not pass through the same structure more than
>> once, although the odds are quite low.
>>
>> I'm very glad to hear you're interested in working on this.  For
>> starters, you might want to read our documentation page on developing for
>> yt, which is here:
>> http://yt-project.org/doc/advanced/developing.html
>> This will explain some basics about how to work in a way that will make
>> it easiest for your contributions to be pulled into the main repository.
>>
>> As for specifics on what you want to do, you should check out the yt
>> source file:
>> yt/analysis_modules/cosmological_observation/light_ray/light_ray.py
>>
>> Have a look at the routine called _calculate_light_ray_solution.  This
>> routine is called by make_light_ray, and is responsible for creating the
>> list of starting and ending positions for each ray segment.  Starting on
>> line 165, you can see where the random initial position for a segment is
>> calculated.  Here is where you would want to add the ability to set a fixed
>> position.  A few lines down, a random trajectory is calculated, which is
>> used along with the length of the ray segment to determine the end point.
>>
>> This should get you started.  Please, let us know if you have any more
>> questions.  Additionally, you might consider joining the developers mailing
>> list if you think you would like to continue working on yt, which would be
>> great!  Good luck!
>>
>> Britton
>>
>>
>> On Wed, Sep 11, 2013 at 12:59 AM, Pengfei Chen <madcpf at gmail.com> wrote:
>>
>>> Hi Britton,
>>>
>>> Thank you so much for your reply! I think I understand how LightRay
>>> works. What plan_cosmology_splice() does is to choose output redshifts so
>>> that comoving distance between them is approximately equal to but less than
>>> the comoving box size. So the light ray would not pass through the same
>>> structure in one dataset no matter how it travels. Is it right?
>>>
>>> Also I would like to add support to the LightRay object for setting a
>>> fixed initial position. Since I never modified yt or any other large code
>>> before, could you please give me some advice? Is there any documentation or
>>> tutorials I could read?
>>>
>>> Have a nice day!
>>>
>>> Pengfei
>>>
>>>
>>> 2013/9/9 Britton Smith <brittonsmith at gmail.com>
>>>
>>>> Hi Pengfei,
>>>>
>>>> Thank you for catching all of those errors in the source and
>>>> documentation.  As of now, they have all been fixed and if you do "yt
>>>> update" the recipe should run as normal without the need to alter anything.
>>>>
>>>> I can answer your additional questions here.
>>>>
>>>> (1) What's the initial spectrum before any absorption?
>>>>>
>>>>
>>>> The spectrum generator only creates absorption features.  Essentially,
>>>> it assumes that you have already subtracted off the continuum, so
>>>> effectively the input spectrum is just f(lambda) = 1.0.
>>>>
>>>>
>>>>> (2) Where does the light ray originate from? Is it shoot from a random
>>>>> position in the first dataset? Can we set it manually like on the surface
>>>>> of the box? Does it go out of the box and back into it until the next
>>>>> output redshift?
>>>>>
>>>>
>>>> The light ray originates in a random position inside the first dataset
>>>> with a random trajectory.  This code assumes a periodic domain, so the ray
>>>> will wrap around if it leaves the box.  Once it has traversed a distance
>>>> equivalent to the comoving distance to the next dataset, it terminates and
>>>> begins a new ray there.  Currently, you can not manually set the initial
>>>> position of a LightRay, but you can also using the ray object (
>>>> http://yt-project.org/doc/analyzing/objects.html#available-objects).
>>>> If you are interested in adding support to the LightRay object for setting
>>>> a fixed initial position (and presumably a fixed end position), let me know
>>>> and I can help you get started.  If you were to do this, we would be very
>>>> pleased do have you contribute this code back to the main code base.
>>>>
>>>>
>>>>> (3) In the output file lightraysolution.txt, what do the
>>>>> parameters(dl/box, Start x/y/z, End x/y/z) mean?
>>>>>
>>>>
>>>> Since the start and stop positions are randomly chosen, this file shows
>>>> what those random positions are for each dataset, in case you want to know
>>>> that.  dl/box is the fraction of the box length that was used for a ray in
>>>> that dataset.  For more information on this, I would suggest you check out
>>>> this page:
>>>>
>>>> http://yt-project.org/doc/analysis_modules/light_ray_generator.html#light-ray-generator
>>>>
>>>> Britton
>>>>
>>>>
>>>>>
>>>>> Sorry that I have so many questions... I wonder if there is some
>>>>> existing documents or paper that have a more detailed description.
>>>>>
>>>>> Thank you again for your help! Have a nice weekend!
>>>>>
>>>>> Pengfei
>>>>>
>>>>>
>>>>>
>>>>> 2013/9/6 Britton Smith <brittonsmith at gmail.com>
>>>>>
>>>>>> Hi Pengfei,
>>>>>>
>>>>>> The near_redshift and far_redshift are free parameters for you to
>>>>>> set, and just control the redshift interval over which to make the light
>>>>>> cone projection.  You might also want to look at the narrative
>>>>>> documentation on the light cone generator, which you can find here:
>>>>>> http://yt-project.org/doc/analysis_modules/light_cone_generator.html
>>>>>> Note, that you need to use this with a simulation that made enough
>>>>>> data outputs to connect the redshift interval you specify.  The
>>>>>> "enzo_tiny_cosmology" dataset available at
>>>>>> http://yt-project.org/data/ was configured to work with the light
>>>>>> cone recipe in the cookbook, so I would suggest downloading that.
>>>>>>
>>>>>> As for the error, this is happening because there is a line in your
>>>>>> enzo parameter file that contains more than one "=" sign.  I have just
>>>>>> submitted a pull request that fixes it, so this should be fixed soon.  In
>>>>>> the mean time, you can simply comment out that line in your parameter file
>>>>>> and everything should work fine.
>>>>>>
>>>>>> Britton
>>>>>>
>>>>>>
>>>>>> On Fri, Sep 6, 2013 at 3:02 AM, Pengfei Chen <madcpf at gmail.com>wrote:
>>>>>>
>>>>>>> Hi all,
>>>>>>>
>>>>>>> I downloaded the example script of light cone projectoin(
>>>>>>> http://yt-project.org/doc/cookbook/cosmological_analysis.html#light-cone-projection)
>>>>>>> to my laptop and changed the Enzo simulation parameter file and redshifts.
>>>>>>> But when I ran it the following error occurred:
>>>>>>>
>>>>>>>   File "light_cone_projection.py", line 19, in <module>
>>>>>>>     find_outputs=False)
>>>>>>>   File
>>>>>>> "/Users/madcpf/Documents/dev_yt/src/yt-hg/yt/analysis_modules/cosmological_observation/light_cone/light_cone.py",
>>>>>>> line 158, in __init__
>>>>>>>     find_outputs=find_outputs)
>>>>>>>   File
>>>>>>> "/Users/madcpf/Documents/dev_yt/src/yt-hg/yt/analysis_modules/cosmological_observation/cosmology_splice.py",
>>>>>>> line 44, in __init__
>>>>>>>     find_outputs=find_outputs)
>>>>>>>   File "/Users/madcpf/Documents/dev_yt/src/yt-hg/yt/convenience.py",
>>>>>>> line 131, in simulation
>>>>>>>     find_outputs=find_outputs)
>>>>>>>   File
>>>>>>> "/Users/madcpf/Documents/dev_yt/src/yt-hg/yt/frontends/enzo/simulation_handling.py",
>>>>>>> line 81, in __init__
>>>>>>>     find_outputs=find_outputs)
>>>>>>>   File
>>>>>>> "/Users/madcpf/Documents/dev_yt/src/yt-hg/yt/data_objects/time_series.py",
>>>>>>> line 343, in __init__
>>>>>>>     self._parse_parameter_file()
>>>>>>>   File
>>>>>>> "/Users/madcpf/Documents/dev_yt/src/yt-hg/yt/frontends/enzo/simulation_handling.py",
>>>>>>> line 273, in _parse_parameter_file
>>>>>>>     param, vals = (i.strip() for i in line.split("="))
>>>>>>> ValueError: need more than 1 value to unpack
>>>>>>>
>>>>>>> Does the parameters "near_redshift" and "far_redshift" in LightCone
>>>>>>> need to be the same with "CosmologyFinalRedshift" and
>>>>>>> "CosmologyInitialRedshift" in enzo parameter file?
>>>>>>> Does anyone know how to solve this?
>>>>>>>
>>>>>>> Thank you all!
>>>>>>>
>>>>>>> Pengfei
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> yt-users mailing list
>>>>>>> yt-users at lists.spacepope.org
>>>>>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> yt-users mailing list
>>>>>> yt-users at lists.spacepope.org
>>>>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> yt-users mailing list
>>>>> yt-users at lists.spacepope.org
>>>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> yt-users mailing list
>>>> yt-users at lists.spacepope.org
>>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>>
>>>>
>>>
>>> _______________________________________________
>>> yt-users mailing list
>>> yt-users at lists.spacepope.org
>>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>>
>>>
>>
>> _______________________________________________
>> yt-users mailing list
>> yt-users at lists.spacepope.org
>> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>>
>>
>
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-users-spacepope.org/attachments/20130930/68ce56b3/attachment.htm>


More information about the yt-users mailing list