Hi Rohin,
Ah, I see. I don't think a BallTree is the right data structure for an
anisotropic N-point query, because it fundamentally assumes spherical
symmetry of the metric. You may be able to do something like this with a
specialized KD-tree, but scikit-learn doesn't support this, and I don't
imagine that it ever will given the very specialized nature of the
application.

I'm certain someone has written efficient code for this operation in the
astronomy community, but I don't know of any good Python package to
recommend for this – I'd suggest googling for keywords and seeing where
that gets you.

Thanks,
  Jake

 Jake VanderPlas
 Senior Data Science Fellow
 Director of Open Software
 University of Washington eScience Institute

On Tue, Aug 1, 2017 at 6:15 AM, Rohin Kumar <yrohinku...@gmail.com> wrote:

> Since you seem to be from Astrophysics/Cosmology background (I am assuming
> you are jakevdp - the creator of astroML - if you are - I am lucky!), I can
> explain my application scenario. I am trying to calculate the anisotropic
> two-point correlation function something like done in rp_pi_tpcf
> <http://halotools.readthedocs.io/en/latest/api/halotools.mock_observables.rp_pi_tpcf.html#halotools.mock_observables.rp_pi_tpcf>
>  or s_mu_tpcf
> <http://halotools.readthedocs.io/en/latest/api/halotools.mock_observables.s_mu_tpcf.html#halotools.mock_observables.s_mu_tpcf>
> using pairs (DD,DR,RR) calculated from BallTree.two_point_correlation
>
> In halotools (http://halotools.readthedocs.io/en/latest/function_usage/
> mock_observables_functions.html) it is implemented using rectangular
> grids. I could calculate 2pcf with custom metrics using one variable with
> BallTree as done in astroML. I intend to find the anisotropic counter part.
>
> Thanks & Regards,
> Rohin
>
> Y.Rohin Kumar,
> +919818092877 <+91%2098180%2092877>.
>
> On Tue, Aug 1, 2017 at 5:18 PM, Rohin Kumar <yrohinku...@gmail.com> wrote:
>
>> Dear Jake,
>>
>> Thanks for your response. I meant to group/count pairs in boxes (using
>> two arrays simultaneously-hence needing 2 metrics) instead of one distance
>> array as the binning parameter. I don't know if the algorithm supports such
>> a thing. For now, I am proceeding with your suggestion of two ball trees at
>> huge computational cost. I hope I am able to frame my question properly.
>>
>> Thanks & Regards,
>> Rohin.
>>
>>
>>
>> On Mon, Jul 31, 2017 at 8:16 PM, Jacob Vanderplas <
>> jake...@cs.washington.edu> wrote:
>>
>>> On Sun, Jul 30, 2017 at 11:18 AM, Rohin Kumar <yrohinku...@gmail.com>
>>> wrote:
>>>
>>>> *update*
>>>>
>>>> May be it doesn't have to be done at the tree creation level. It could
>>>> be using loops and creating two different balltrees. Something like
>>>>
>>>> tree1=BallTree(X,metric='metric1') #for x-z plane
>>>> tree2=BallTree(X,metric='metric2') #for y-z plane
>>>>
>>>> And then calculate correlation functions in a loop to get tpcf(X,r1,r2)
>>>>  using tree1.two_point_correlation(X,r1) and
>>>> tree2.two_point_correlation(X,r2)
>>>>
>>>
>>> Hi Rohin,
>>> It's not exactly clear to me what you wish the tree to do with the two
>>> different metrics, but in any case the ball tree only supports one metric
>>> at a time. If you can construct your desired result from two ball trees
>>> each with its own metric, then that's probably the best way to proceed,
>>>    Jake
>>>
>>>
>>>>
>>>> _______________________________________________
>>>> scikit-learn mailing list
>>>> scikit-learn@python.org
>>>> https://mail.python.org/mailman/listinfo/scikit-learn
>>>>
>>>>
>>>
>>> _______________________________________________
>>> scikit-learn mailing list
>>> scikit-learn@python.org
>>> https://mail.python.org/mailman/listinfo/scikit-learn
>>>
>>>
>>
>
> _______________________________________________
> scikit-learn mailing list
> scikit-learn@python.org
> https://mail.python.org/mailman/listinfo/scikit-learn
>
>
_______________________________________________
scikit-learn mailing list
scikit-learn@python.org
https://mail.python.org/mailman/listinfo/scikit-learn

Reply via email to