<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-xref gmail-py gmail-py-obj gmail-docutils gmail-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-pre" style="hyphens: none;"><a class="gmail-reference gmail-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">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-xref gmail-py gmail-py-obj gmail-docutils gmail-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-pre" style="hyphens: none;"><a class="gmail-reference gmail-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">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">http://halotools.readthedocs.io/en/latest/function_usage/mock_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><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature">Y.Rohin Kumar,<br>+919818092877.</div></div>
<br><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:0 0 0 .8ex;border-left:1px #ccc solid;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="h5"><div class="gmail_extra"><br clear="all"><div><div class="m_-1536088062748626870gmail_signature" data-smartmail="gmail_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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="m_-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:0 0 0 .8ex;border-left:1px #ccc solid;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="m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-lang-py m_-1536088062748626870m_9139575992978253931m_-3233564156165609470gmail-prettyprint m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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="m_-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:0 0 0 .8ex;border-left:1px #ccc solid;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>