<div dir="ltr"><div class="gmail_extra"><div><div class="gmail_signature"><div dir="ltr"><div class="gmail_signature"><div dir="ltr"><div dir="ltr">On Tue, Aug 1, 2017 at 10:50 AM, Rohin Kumar <span dir="ltr"><<a href="mailto:yrohinkumar@gmail.com" target="_blank">yrohinkumar@gmail.com</a>></span> wrote:<br></div></div></div></div></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I started with KD-tree but after realising it doesn't support custom metrics (I don't know the reason for this - would be nice feature)</div></div></blockquote><div><br></div>The scikit-learn KD-tree doesn't support custom metrics because it utilizes relatively strong assumptions about the form of the metric when constructing the tree. The Ball Tree makes fewer assumptions, which is why it can support arbitrary metrics. It would in principal be possible to create a KD Tree that supports custom *axis-aligned* metrics, but again I think that would be too specialized for inclusion in scikit-learn.</div><div class="gmail_quote"><br></div><div class="gmail_quote">One project you might check out is cykdtree: <a href="https://pypi.python.org/pypi/cykdtree">https://pypi.python.org/pypi/cykdtree</a></div><div class="gmail_quote">I'm not certain whether it supports the queries you need, but I would bet the team behind that would be willing to work toward these sorts of specialized queries if they don't already exist.</div><div class="gmail_quote"><br></div><div class="gmail_quote">   Jake<br><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I shifted to BallTree and was looking for a 2 metric based categorisation. After looking around, the best I could find at most were brute-force methods written in python (had my own version too) or better optimised ones in C or FORTRAN. The closest one was halotools which again works with euclidean metric. For now, I will try to get my work done with 2 different BallTrees iteratively in bins. If I find a better option will try to post an update. </div><div><br></div><div>Regards,</div><div>Rohin.</div><div class="gmail_extra"><div><div class="gmail-m_1841845733642931505m_8106977170556019894gmail_signature"><br></div></div>
<br><div class="gmail_quote"><span class="gmail-">On Tue, Aug 1, 2017 at 10:55 PM, Jacob Vanderplas <span dir="ltr"><<a href="mailto:jakevdp@cs.washington.edu" target="_blank">jakevdp@cs.washington.edu</a>></span> wrote:<br></span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-"><div dir="ltr">Hi Rohin,<div>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.<div><br></div><div>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.</div><div><br></div><div>Thanks,</div><div>  Jake</div></div></div></span><div class="gmail_extra"><span class="gmail-"><br clear="all"><div><div class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705gmail_signature"><div dir="ltr"><div class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705gmail_signature"><div dir="ltr"><div dir="ltr"> <font size="1">Jake VanderPlas</font></div><div dir="ltr"><font size="1"> Senior Data Science Fellow</font></div><div dir="ltr"><span style="font-size:x-small"> Director of Open Software</span><div><div><font size="1"> </font><span style="font-size:x-small">University of Washington </span><span style="font-size:x-small">eScience Institute<br></span></div></div></div></div></div></div></div></div></span><div><div class="gmail-m_1841845733642931505m_8106977170556019894h5">
<br><div class="gmail_quote"><span class="gmail-">On Tue, Aug 1, 2017 at 6:15 AM, Rohin Kumar <span dir="ltr"><<a href="mailto:yrohinkumar@gmail.com" target="_blank">yrohinkumar@gmail.com</a>></span> wrote:<br></span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-"><div dir="ltr"><div>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 <code class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-xref gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-py gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-py-obj gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-docutils gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-literal" style="font-size:13px;text-decoration-line:none;line-height:inherit;padding:0px 1px;border-radius:3px;margin:0px;border:none;background-color:transparent"><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-pre"><a class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-reference gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-internal" href="http://halotools.readthedocs.io/en/latest/api/halotools.mock_observables.rp_pi_tpcf.html#halotools.mock_observables.rp_pi_tpcf" title="halotools.mock_observables.rp_pi_tpcf" style="color:rgb(0,105,214);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;font-size:13px;text-decoration-line:none;line-height:inherit" target="_blank">rp_pi_tpcf</a><b style="color:rgb(0,105,214);font-family:monospace"> </b><font face="arial, helvetica, sans-serif" color="#000000">or</font><b style="color:rgb(0,105,214);font-family:monospace"> </b></span></code><code class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-xref gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-py gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-py-obj gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-docutils gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-literal" style="background-color:transparent;font-size:13px;color:rgb(0,105,214);text-decoration-line:none;line-height:inherit;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;padding:0px 1px;border-radius:3px;margin:0px;border:none;font-weight:bold"><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-pre"><a class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-reference gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail-internal" href="http://halotools.readthedocs.io/en/latest/api/halotools.mock_observables.s_mu_tpcf.html#halotools.mock_observables.s_mu_tpcf" title="halotools.mock_observables.s_mu_tpcf" style="background-color:transparent;font-size:13px;color:rgb(0,105,214);text-decoration-line:none;line-height:inherit;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif" target="_blank">s_mu_tpcf</a></span></code></div><div>using pairs (DD,DR,RR) calculated from BallTree.two_point_correlation</div><div><br></div><div>In halotools (<a href="http://halotools.readthedocs.io/en/latest/function_usage/mock_observables_functions.html" target="_blank">http://halotools.readthedocs.<wbr>io/en/latest/function_usage/mo<wbr>ck_observables_functions.html</a>) 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.</div><div><br></div>Thanks & Regards,<div>Rohin</div></div></span><div class="gmail_extra"><div><div class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270gmail_signature"><br></div></div><div><div class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705h5">
<br><div><div class="gmail-h5"><div class="gmail_quote">On Tue, Aug 1, 2017 at 5:18 PM, Rohin Kumar <span dir="ltr"><<a href="mailto:yrohinkumar@gmail.com" target="_blank">yrohinkumar@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Dear Jake,</div><div><br></div>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.<div><br></div><div>Thanks & Regards,</div><div>Rohin.</div><div><div class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270h5"><div class="gmail_extra"><br clear="all"><div><div class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870gmail_signature"><br></div></div>
<br><div class="gmail_quote">On Mon, Jul 31, 2017 at 8:16 PM, Jacob Vanderplas <span dir="ltr"><<a href="mailto:jakevdp@cs.washington.edu" target="_blank">jakevdp@cs.washington.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870h5">On Sun, Jul 30, 2017 at 11:18 AM, Rohin Kumar <span dir="ltr"><<a href="mailto:yrohinkumar@gmail.com" target="_blank">yrohinkumar@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><p style="margin:0px 0px 1em;padding:0px;border:0px;font-variant-numeric:inherit;font-stretch:inherit;font-size:15px;line-height:inherit;font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;clear:both;color:rgb(36,39,41)"><strong style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline">update</strong></p><p style="margin:0px 0px 1em;padding:0px;border:0px;font-variant-numeric:inherit;font-stretch:inherit;font-size:15px;line-height:inherit;font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;clear:both;color:rgb(36,39,41)">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</p><pre class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-lang-py gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-prettyprint gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-prettyprinted" style="margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-variant-numeric:inherit;font-stretch:inherit;font-size:13px;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;width:auto;max-height:600px;overflow:auto;background-color:rgb(239,240,241);color:rgb(57,51,24);word-wrap:normal"><code style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;white-space:inherit"><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">tree1</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">=</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(43,145,175)">BallTree</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">(</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">X</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">,</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">metric</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">=</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(125,39,39)">'metri<wbr>c1'</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">)</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)"> </span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-com" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(133,140,147)">#for x-z plane</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">
tree2</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">=</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-typ" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(43,145,175)">BallTree</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">(</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">X</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">,</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">metric</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">=</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-str" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(125,39,39)">'metri<wbr>c2'</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pun" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)">)</span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-pln" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(48,51,54)"> </span><span class="gmail-m_1841845733642931505m_8106977170556019894m_-1727506087633997705m_3249404269485805270m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-com" style="margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:inherit;vertical-align:baseline;color:rgb(133,140,147)">#for y-z plane</span></code></pre><p style="margin:0px 0px 1em;padding:0px;border:0px;font-variant-numeric:inherit;font-stretch:inherit;font-size:15px;line-height:inherit;font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;clear:both;color:rgb(36,39,41)">And then calculate correlation functions in a loop to get <code style="margin:0px;padding:1px 5px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:13px;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;background-color:rgb(239,240,241);white-space:pre-wrap">tpcf(X,r1,r2)</code> using <code style="margin:0px;padding:1px 5px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:13px;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;background-color:rgb(239,240,241);white-space:pre-wrap">tree1.<wbr>two_point_correlation(X,r1)</code> an<wbr>d <code style="margin:0px;padding:1px 5px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:13px;line-height:inherit;font-family:Consolas,Menlo,Monaco,"Lucida Console","Liberation Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono","Courier New",monospace,sans-serif;vertical-align:baseline;background-color:rgb(239,240,241);white-space:pre-wrap">tree2.two_point_correlation(<wbr>X,r2)</code></p></div></blockquote><div><br></div></div></div><div>Hi Rohin,</div><div>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,</div><div>   Jake</div><span><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>______________________________<wbr>_________________<br>
scikit-learn mailing list<br>
<a href="mailto:scikit-learn@python.org" target="_blank">scikit-learn@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scikit-learn" rel="noreferrer" target="_blank">https://mail.python.org/mailma<wbr>n/listinfo/scikit-learn</a><br>
<br></blockquote></span></div><br></div></div>
<br>______________________________<wbr>_________________<br>
scikit-learn mailing list<br>
<a href="mailto:scikit-learn@python.org" target="_blank">scikit-learn@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scikit-learn" rel="noreferrer" target="_blank">https://mail.python.org/mailma<wbr>n/listinfo/scikit-learn</a><br>
<br></blockquote></div><br></div></div></div></div>
</blockquote></div><br></div></div></div></div></div><div><div class="gmail-h5">
<br>______________________________<wbr>_________________<br>
scikit-learn mailing list<br>
<a href="mailto:scikit-learn@python.org" target="_blank">scikit-learn@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scikit-learn" rel="noreferrer" target="_blank">https://mail.python.org/mailma<wbr>n/listinfo/scikit-learn</a><br>
<br></div></div></blockquote></div><br></div></div></div><div><div class="gmail-h5">
<br>______________________________<wbr>_________________<br>
scikit-learn mailing list<br>
<a href="mailto:scikit-learn@python.org" target="_blank">scikit-learn@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scikit-learn" rel="noreferrer" target="_blank">https://mail.python.org/mailma<wbr>n/listinfo/scikit-learn</a><br>
<br></div></div></blockquote></div><br></div></div>
<br>______________________________<wbr>_________________<br>
scikit-learn mailing list<br>
<a href="mailto:scikit-learn@python.org">scikit-learn@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/scikit-learn" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/scikit-learn</a><br>
<br></blockquote></div><br></div></div>