[yt-users] Light Cone Projection

Pengfei Chen madcpf at gmail.com
Wed Sep 25 04:19:51 PDT 2013


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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.spacepope.org/pipermail/yt-users-spacepope.org/attachments/20130925/2620a0e5/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: light_ray.py
Type: application/octet-stream
Size: 28660 bytes
Desc: not available
URL: <http://lists.spacepope.org/pipermail/yt-users-spacepope.org/attachments/20130925/2620a0e5/attachment-0001.obj>


More information about the yt-users mailing list