<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.8.14">
  <compounddef id="classforpy_1_1_tree" kind="class" language="C++" prot="public">
    <compoundname>forpy::Tree</compoundname>
    <derivedcompoundref refid="classforpy_1_1_classification_tree" prot="public" virt="non-virtual">forpy::ClassificationTree</derivedcompoundref>
    <derivedcompoundref refid="classforpy_1_1_regression_tree" prot="public" virt="non-virtual">forpy::RegressionTree</derivedcompoundref>
    <includes refid="tree_8h" local="no">tree.h</includes>
      <sectiondef kind="friend">
      <memberdef kind="friend" id="classforpy_1_1_tree_1a7c6b5c8100b27b9c3692820d4d40bd50" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>friend class</type>
        <definition>friend class forpy::Forest</definition>
        <argsstring></argsstring>
        <name>forpy::Forest</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="319" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="316" bodyend="-1"/>
      </memberdef>
      <memberdef kind="friend" id="classforpy_1_1_tree_1ab2f44cbb59a08132f4c843e5225bba0e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>friend class</type>
        <definition>friend class cereal::access</definition>
        <argsstring></argsstring>
        <name>cereal::access</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="320" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="320" bodyend="-1"/>
      </memberdef>
      <memberdef kind="friend" id="classforpy_1_1_tree_1aadb9578d7828ae7e52f60203e1c4f4b6" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>friend std::ostream &amp;</type>
        <definition>std::ostream&amp; operator&lt;&lt;</definition>
        <argsstring>(std::ostream &amp;stream, const Tree &amp;self)</argsstring>
        <name>operator&lt;&lt;</name>
        <param>
          <type>std::ostream &amp;</type>
          <declname>stream</declname>
        </param>
        <param>
          <type>const <ref refid="classforpy_1_1_tree" kindref="compound">Tree</ref> &amp;</type>
          <declname>self</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="312" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="312" bodyend="316"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="private-attrib">
      <memberdef kind="variable" id="classforpy_1_1_tree_1ab5f61943c13ee4a49cee80379688bf64" prot="private" static="no" mutable="no">
        <type><ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref></type>
        <definition>uint forpy::Tree::max_depth</definition>
        <argsstring></argsstring>
        <name>max_depth</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>The maximum depth of the tree. Non-const for serialization purposes only. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="334" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="328" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1a98c1a3ec2c1ea2bd7af98777490cd9e9" prot="private" static="no" mutable="no">
        <type>bool</type>
        <definition>bool forpy::Tree::is_initialized_for_training</definition>
        <argsstring></argsstring>
        <name>is_initialized_for_training</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Whether the <ref refid="classforpy_1_1_tree_1a18ee73095b840748f6ebbe6d4047bd0e" kindref="member">fit</ref> method has been called and the DFS and BFS methods can now be used for training. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="339" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="339" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1a65c0a49605a095981066f865a5cddfd5" prot="private" static="no" mutable="no">
        <type>unsigned int</type>
        <definition>unsigned int forpy::Tree::min_samples_at_node</definition>
        <argsstring></argsstring>
        <name>min_samples_at_node</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>The minimum number of samples that must arrive at an inner node. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="341" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="341" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1abbda07d8785ef47b669607621af59d11" prot="private" static="no" mutable="no">
        <type>unsigned int</type>
        <definition>unsigned int forpy::Tree::min_samples_at_leaf</definition>
        <argsstring></argsstring>
        <name>min_samples_at_leaf</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>The minimum number of samples that must arrive at a leaf. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="343" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="343" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1a6b4d08e4aa697fe33cc4c78eba6f6bb9" prot="private" static="no" mutable="no">
        <type>float</type>
        <definition>float forpy::Tree::weight</definition>
        <argsstring></argsstring>
        <name>weight</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>A weight assigned to this tree. Can be used by learning algorithms. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="345" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="345" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1a3d7a4f0f4fd0898375162ace44ee1a61" prot="private" static="no" mutable="no">
        <type>std::atomic&lt; size_t &gt;</type>
        <definition>std::atomic&lt;size_t&gt; forpy::Tree::stored_in_leafs</definition>
        <argsstring></argsstring>
        <name>stored_in_leafs</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>The amount of samples stored in leafs so far. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="347" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="347" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1ab5a6ab26fac8f02143edc7ca86f55c40" prot="private" static="no" mutable="no">
        <type>std::shared_ptr&lt; <ref refid="classforpy_1_1_i_decider" kindref="compound">IDecider</ref> &gt;</type>
        <definition>std::shared_ptr&lt;IDecider&gt; forpy::Tree::decider</definition>
        <argsstring></argsstring>
        <name>decider</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>The associated classifier manager. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="349" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="349" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1aaf2020df1c36fe0a935ea9ec2e6355b6" prot="private" static="no" mutable="no">
        <type>std::shared_ptr&lt; <ref refid="classforpy_1_1_i_leaf" kindref="compound">ILeaf</ref> &gt;</type>
        <definition>std::shared_ptr&lt;ILeaf&gt; forpy::Tree::leaf_manager</definition>
        <argsstring></argsstring>
        <name>leaf_manager</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>The associated leaf manager. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="351" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="351" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1a1fccccd44acd59ec0235131d965d1a2e" prot="private" static="no" mutable="no">
        <type>std::vector&lt; std::pair&lt; <ref refid="namespaceforpy_1a324c9643e02b76477c3a99a48773be8c" kindref="member">id_t</ref>, <ref refid="namespaceforpy_1a324c9643e02b76477c3a99a48773be8c" kindref="member">id_t</ref> &gt; &gt;</type>
        <definition>std::vector&lt;std::pair&lt;id_t, id_t&gt; &gt; forpy::Tree::tree</definition>
        <argsstring></argsstring>
        <name>tree</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Holds the entire tree structure. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="353" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="353" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1aca27a6f06e9d51c4f57a2b6728f78de2" prot="private" static="no" mutable="no">
        <type>std::unique_ptr&lt; mu::variant&lt; std::vector&lt; std::tuple&lt; size_t, float, size_t, size_t &gt; &gt;, std::vector&lt; std::tuple&lt; size_t, double, size_t, size_t &gt; &gt;, std::vector&lt; std::tuple&lt; size_t, uint32_t, size_t, size_t &gt; &gt;, std::vector&lt; std::tuple&lt; size_t, uint8_t, size_t, size_t &gt; &gt; &gt; &gt;</type>
        <definition>std::unique_ptr&lt; mu::variant&lt;std::vector&lt;std::tuple&lt;size_t, float, size_t, size_t&gt; &gt;, std::vector&lt;std::tuple&lt;size_t, double, size_t, size_t&gt; &gt;, std::vector&lt;std::tuple&lt;size_t, uint32_t, size_t, size_t&gt; &gt;, std::vector&lt;std::tuple&lt;size_t, uint8_t, size_t, size_t&gt; &gt; &gt; &gt; forpy::Tree::fast_tree</definition>
        <argsstring></argsstring>
        <name>fast_tree</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Pointer to a structure that can be used for fast predictions.</para><para>Vector ids are node ids. The first value in the tuple is the threshold value at that node. If the first and second tuple elements are the same, they contain a leaf ID. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="365" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="365" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1ab33106bed03867b2489dae54f5c5500a" prot="private" static="no" mutable="no">
        <type>std::vector&lt; std::future&lt; void &gt; &gt;</type>
        <definition>std::vector&lt;std::future&lt;void&gt; &gt; forpy::Tree::futures</definition>
        <argsstring></argsstring>
        <name>futures</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="366" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="366" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1a3fb03748fbbd6306b56b7470586c4845" prot="private" static="no" mutable="no">
        <type>std::mutex</type>
        <definition>std::mutex forpy::Tree::fut_mtx</definition>
        <argsstring></argsstring>
        <name>fut_mtx</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="367" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="367" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1a5d82b4527282466155d649b66205af6c" prot="private" static="no" mutable="no">
        <type>std::atomic&lt; <ref refid="namespaceforpy_1a324c9643e02b76477c3a99a48773be8c" kindref="member">id_t</ref> &gt;</type>
        <definition>std::atomic&lt;id_t&gt; forpy::Tree::next_id</definition>
        <argsstring></argsstring>
        <name>next_id</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="368" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="368" bodyend="-1"/>
      </memberdef>
      <memberdef kind="variable" id="classforpy_1_1_tree_1a6e72e2f34aa0b4cc540c74a66b806e26" prot="private" static="no" mutable="no">
        <type><ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref></type>
        <definition>uint forpy::Tree::random_seed</definition>
        <argsstring></argsstring>
        <name>random_seed</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="369" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="369" bodyend="-1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="public-func">
      <memberdef kind="function" id="classforpy_1_1_tree_1afa48b090a00bb0557146bb3d5fb45f3f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type></type>
        <definition>forpy::Tree::Tree</definition>
        <argsstring>(const uint &amp;max_depth=std::numeric_limits&lt; uint &gt;::max(), const uint &amp;min_samples_at_leaf=1, const uint &amp;min_samples_at_node=2, const std::shared_ptr&lt; IDecider &gt; &amp;decider=nullptr, const std::shared_ptr&lt; ILeaf &gt; &amp;leaf_manager=nullptr, const uint &amp;random_seed=1)</argsstring>
        <name>Tree</name>
        <param>
          <type>const <ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref> &amp;</type>
          <declname>max_depth</declname>
          <defval>std::numeric_limits&lt; <ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref> &gt;::max()</defval>
        </param>
        <param>
          <type>const <ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref> &amp;</type>
          <declname>min_samples_at_leaf</declname>
          <defval>1</defval>
        </param>
        <param>
          <type>const <ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref> &amp;</type>
          <declname>min_samples_at_node</declname>
          <defval>2</defval>
        </param>
        <param>
          <type>const std::shared_ptr&lt; <ref refid="classforpy_1_1_i_decider" kindref="compound">IDecider</ref> &gt; &amp;</type>
          <declname>decider</declname>
          <defval>nullptr</defval>
        </param>
        <param>
          <type>const std::shared_ptr&lt; <ref refid="classforpy_1_1_i_leaf" kindref="compound">ILeaf</ref> &gt; &amp;</type>
          <declname>leaf_manager</declname>
          <defval>nullptr</defval>
        </param>
        <param>
          <type>const <ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref> &amp;</type>
          <declname>random_seed</declname>
          <defval>1</defval>
        </param>
        <briefdescription>
<para>The standard constructor for the forpy trees. </para>        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>max_depth</parametername>
</parameternamelist>
<parameterdescription>
<para>uint &gt; 0 The maximum tree depth, including leafs (up to including). </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>min_samples_at_leaf</parametername>
</parameternamelist>
<parameterdescription>
<para>uint &gt; 0 The minimum number of samples at a leaf (from including). </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>min_samples_at_node</parametername>
</parameternamelist>
<parameterdescription>
<para>uint&gt;=2*min_samples_at_leaf The minimum number of samples at a node (from including). </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>decider</parametername>
</parameternamelist>
<parameterdescription>
<para><ref refid="classforpy_1_1_i_decider" kindref="compound">IDecider</ref> The decider that stores, optimizes and applies the decision rules for each inner tree node. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>leaf_manager</parametername>
</parameternamelist>
<parameterdescription>
<para>The leaf manager generates, stores and handles the return values of the leaf nodes. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>random_seed</parametername>
</parameternamelist>
<parameterdescription>
<para>uint&gt;0 Seed for the random engine. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="55" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1ad1e134d460ce946ed75527a84769e26e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type></type>
        <definition>forpy::Tree::Tree</definition>
        <argsstring>(std::string filename)</argsstring>
        <name>Tree</name>
        <param>
          <type>std::string</type>
          <declname>filename</declname>
        </param>
        <briefdescription>
<para>Deserialization constructor for the forpy trees. </para>        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>filename</parametername>
</parameternamelist>
<parameterdescription>
<para>string The filename to deserialize the tree from. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="67" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a4fd94dc0367bea76936d4b577ba55d71" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void forpy::Tree::make_node</definition>
        <argsstring>(const IDataProvider *data_provider, Desk *d)</argsstring>
        <name>make_node</name>
        <param>
          <type>const <ref refid="classforpy_1_1_i_data_provider" kindref="compound">IDataProvider</ref> *</type>
          <declname>data_provider</declname>
        </param>
        <param>
          <type><ref refid="structforpy_1_1_desk" kindref="compound">Desk</ref> *</type>
          <declname>d</declname>
        </param>
        <briefdescription>
<para>Handle the creation of one tree node. </para>        </briefdescription>
        <detaileddescription>
<para>Takes the next one of the list of marked nodes and fits it to the data. If necessary, creates two child nodes and a split criterion, otherwise makes it a leaf.</para><para>The function is to be used within a thread (see <ref refid="classforpy_1_1_tree_1a1b561eb3d6e7328d43e5d09f8e439268" kindref="member">forpy::Tree::parallel_DFS</ref>). It is marked <computeroutput>const</computeroutput> so as to avoid concurrent writes to member elements. Everything that is written to must be available in a <ref refid="structforpy_1_1_desk" kindref="compound">forpy::Desk</ref>.</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>data_provider</parametername>
</parameternamelist>
<parameterdescription>
<para>shared(IDataProvider) The data provider to use. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>d</parametername>
</parameternamelist>
<parameterdescription>
<para><ref refid="structforpy_1_1_desk" kindref="compound">Desk</ref> <ref refid="structforpy_1_1_desk" kindref="compound">Desk</ref> to use thread local memory from. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="85" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a0e21f03982ebee32e02292b2d0ca2322" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void forpy::Tree::DFS</definition>
        <argsstring>(const IDataProvider *data_provider, const ECompletionLevel &amp;completion, Desk *d)</argsstring>
        <name>DFS</name>
        <param>
          <type>const <ref refid="classforpy_1_1_i_data_provider" kindref="compound">IDataProvider</ref> *</type>
          <declname>data_provider</declname>
        </param>
        <param>
          <type>const <ref refid="namespaceforpy_1adad607d1828338b79a86c36984d87e82" kindref="member">ECompletionLevel</ref> &amp;</type>
          <declname>completion</declname>
        </param>
        <param>
          <type><ref refid="structforpy_1_1_desk" kindref="compound">Desk</ref> *</type>
          <declname>d</declname>
        </param>
        <briefdescription>
<para>Do one DFS step with given completion level. </para>        </briefdescription>
        <detaileddescription>
<para>For <ref refid="namespaceforpy_1adad607d1828338b79a86c36984d87e82aa0db49ba470c1c9ae2128c3470339153" kindref="member">CompletionLevel::Level</ref>, the branch of the tree below the currently marked node is completed.</para><para>The function is to be used within a thread (see <ref refid="classforpy_1_1_tree_1a1b561eb3d6e7328d43e5d09f8e439268" kindref="member">forpy::Tree::parallel_DFS</ref>).</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>data_provider</parametername>
</parameternamelist>
<parameterdescription>
<para><ref refid="classforpy_1_1_i_data_provider" kindref="compound">forpy::IDataProvider</ref>* The data provider to use to get the samples with the relevant ids. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>completion</parametername>
</parameternamelist>
<parameterdescription>
<para>CompletionLevel The <ref refid="namespaceforpy_1adad607d1828338b79a86c36984d87e82" kindref="member">ECompletionLevel</ref> to reach before returning from the function. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>d</parametername>
</parameternamelist>
<parameterdescription>
<para><ref refid="structforpy_1_1_desk" kindref="compound">Desk</ref> <ref refid="structforpy_1_1_desk" kindref="compound">Desk</ref> to use thread local memory from. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="104" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a1b561eb3d6e7328d43e5d09f8e439268" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void forpy::Tree::parallel_DFS</definition>
        <argsstring>(Desk *d, TodoMark &amp;mark, IDataProvider *data_provider, const bool &amp;finalize=true)</argsstring>
        <name>parallel_DFS</name>
        <param>
          <type><ref refid="structforpy_1_1_desk" kindref="compound">Desk</ref> *</type>
          <declname>d</declname>
        </param>
        <param>
          <type><ref refid="structforpy_1_1_todo_mark" kindref="compound">TodoMark</ref> &amp;</type>
          <declname>mark</declname>
        </param>
        <param>
          <type><ref refid="classforpy_1_1_i_data_provider" kindref="compound">IDataProvider</ref> *</type>
          <declname>data_provider</declname>
        </param>
        <param>
          <type>const bool &amp;</type>
          <declname>finalize</declname>
          <defval>true</defval>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="106" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a3387743826c6dbcda481391667e0cd66" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void forpy::Tree::DFS_and_store</definition>
        <argsstring>(Desk *d, TodoMark &amp;mark, const IDataProvider *dprov, const ECompletionLevel &amp;comp)</argsstring>
        <name>DFS_and_store</name>
        <param>
          <type><ref refid="structforpy_1_1_desk" kindref="compound">Desk</ref> *</type>
          <declname>d</declname>
        </param>
        <param>
          <type><ref refid="structforpy_1_1_todo_mark" kindref="compound">TodoMark</ref> &amp;</type>
          <declname>mark</declname>
        </param>
        <param>
          <type>const <ref refid="classforpy_1_1_i_data_provider" kindref="compound">IDataProvider</ref> *</type>
          <declname>dprov</declname>
        </param>
        <param>
          <type>const <ref refid="namespaceforpy_1adad607d1828338b79a86c36984d87e82" kindref="member">ECompletionLevel</ref> &amp;</type>
          <declname>comp</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="108" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a1b8177f98112a850f6240e17b275a61a" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t forpy::Tree::get_depth</definition>
        <argsstring>() const</argsstring>
        <name>get_depth</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Get the tree depth.</para><para>The depth is defined to be 0 for an &quot;empty&quot; tree (only a leaf/root node) and as the amount of edges on the longest path in the tree otherwise. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="118" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a18ee73095b840748f6ebbe6d4047bd0e" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="classforpy_1_1_tree" kindref="compound">Tree</ref> *</type>
        <definition>Tree* forpy::Tree::fit</definition>
        <argsstring>(const Data&lt; MatCRef &gt; &amp;data_v, const Data&lt; MatCRef &gt; &amp;annotation_v, const size_t &amp;n_threads, const bool &amp;complete_dfs=true, const std::vector&lt; float &gt; &amp;weights=std::vector&lt; float &gt;())</argsstring>
        <name>fit</name>
        <param>
          <type>const <ref refid="namespaceforpy_1a724d37691de11a57b50b9935b5550a89" kindref="member">Data</ref>&lt; <ref refid="namespaceforpy_1a4a9ac2f76a00cbaa27aa5c24ff4074a5" kindref="member">MatCRef</ref> &gt; &amp;</type>
          <declname>data_v</declname>
        </param>
        <param>
          <type>const <ref refid="namespaceforpy_1a724d37691de11a57b50b9935b5550a89" kindref="member">Data</ref>&lt; <ref refid="namespaceforpy_1a4a9ac2f76a00cbaa27aa5c24ff4074a5" kindref="member">MatCRef</ref> &gt; &amp;</type>
          <declname>annotation_v</declname>
        </param>
        <param>
          <type>const size_t &amp;</type>
          <declname>n_threads</declname>
        </param>
        <param>
          <type>const bool &amp;</type>
          <declname>complete_dfs</declname>
          <defval>true</defval>
        </param>
        <param>
          <type>const std::vector&lt; float &gt; &amp;</type>
          <declname>weights</declname>
          <defval>std::vector&lt; float &gt;()</defval>
        </param>
        <briefdescription>
<para>Standard fitting function. </para>        </briefdescription>
        <detaileddescription>
<para>Fits this tree to the data given by the data provider. If complete_dfs is true, the tree is completely fitted to the data Otherwise, just a node todo for the root node is added and the tree may be performed step-by-step by calling the <ref refid="namespaceforpy_1a5a7b10963eacab5123565f04b2279001a838fea3c1a3e8dd6c22fe9605a701668" kindref="member">BFS</ref> or <ref refid="classforpy_1_1_tree_1a0e21f03982ebee32e02292b2d0ca2322" kindref="member">DFS</ref> functions.</para><para>Releases the GIL in Python!</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>data_v</parametername>
</parameternamelist>
<parameterdescription>
<para>Variant of 2D array, col-major contiguous Col-wise data points. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>annotation_v</parametername>
</parameternamelist>
<parameterdescription>
<para>Variant of 2D array, row-major contiguous Row-wise annotations. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>n_threads</parametername>
</parameternamelist>
<parameterdescription>
<para>size_t The number of threads to use. If set to 0, use all hardware threads. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>complete_dfs</parametername>
</parameternamelist>
<parameterdescription>
<para>bool If set to true, finishes training the tree. Otherwise, the training is just set up, and <ref refid="classforpy_1_1_tree_1a4fd94dc0367bea76936d4b577ba55d71" kindref="member">make_node</ref> must be called. Default: true. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>weights</parametername>
</parameternamelist>
<parameterdescription>
<para>vector&lt;float&gt; A vector with positive weights for each sample or an empty vector. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="143" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1ad2c9d3b7cd1c084e9c89091716eb40eb" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="classforpy_1_1_tree" kindref="compound">Tree</ref> *</type>
        <definition>Tree* forpy::Tree::fit_dprov</definition>
        <argsstring>(std::shared_ptr&lt; IDataProvider &gt; data_provider, const bool &amp;complete_dfs=true)</argsstring>
        <name>fit_dprov</name>
        <param>
          <type>std::shared_ptr&lt; <ref refid="classforpy_1_1_i_data_provider" kindref="compound">IDataProvider</ref> &gt;</type>
          <declname>data_provider</declname>
        </param>
        <param>
          <type>const bool &amp;</type>
          <declname>complete_dfs</declname>
          <defval>true</defval>
        </param>
        <briefdescription>
<para>The fitting function for a single tree. </para>        </briefdescription>
        <detaileddescription>
<para>Fits this tree to the data given by the data provider. If complete_dfs is true, the tree is completely fitted to the data Otherwise, just a node todo for the root node is added and the tree may be performed step-by-step by calling the <ref refid="namespaceforpy_1a5a7b10963eacab5123565f04b2279001a838fea3c1a3e8dd6c22fe9605a701668" kindref="member">BFS</ref> or <ref refid="classforpy_1_1_tree_1a0e21f03982ebee32e02292b2d0ca2322" kindref="member">DFS</ref> functions.</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>data_provider</parametername>
</parameternamelist>
<parameterdescription>
<para>shared(IDataProvider) The data provider for the fitting process. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>complete_dfs</parametername>
</parameternamelist>
<parameterdescription>
<para>bool If true, complete the fitting process. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="161" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a339f44dae73984e14d4a65e1813f4e2a" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="namespaceforpy_1a324c9643e02b76477c3a99a48773be8c" kindref="member">id_t</ref></type>
        <definition>id_t forpy::Tree::predict_leaf</definition>
        <argsstring>(const Data&lt; MatCRef &gt; &amp;data, const id_t &amp;start_node=0, const std::function&lt; void(void *)&gt; &amp;dptf=nullptr) const</argsstring>
        <name>predict_leaf</name>
        <param>
          <type>const <ref refid="namespaceforpy_1a724d37691de11a57b50b9935b5550a89" kindref="member">Data</ref>&lt; <ref refid="namespaceforpy_1a4a9ac2f76a00cbaa27aa5c24ff4074a5" kindref="member">MatCRef</ref> &gt; &amp;</type>
          <declname>data</declname>
        </param>
        <param>
          <type>const <ref refid="namespaceforpy_1a324c9643e02b76477c3a99a48773be8c" kindref="member">id_t</ref> &amp;</type>
          <declname>start_node</declname>
          <defval>0</defval>
        </param>
        <param>
          <type>const std::function&lt; void(void *)&gt; &amp;</type>
          <declname>dptf</declname>
          <defval>nullptr</defval>
        </param>
        <briefdescription>
<para>Get the leaf id of the leaf where the given data will arrive. </para>        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>data</parametername>
</parameternamelist>
<parameterdescription>
<para>The data to propagate through the tree. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>start_node</parametername>
</parameternamelist>
<parameterdescription>
<para>The node to start from, doesn&apos;t have to be the root. </para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>dptf</parametername>
</parameternamelist>
<parameterdescription>
<para>Feature mapping function; disabled at the moment. </para></parameterdescription>
</parameteritem>
</parameterlist>
<simplesect kind="return"><para>The node id of the leaf. </para></simplesect>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="172" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a5a66b58b7cf5d1bb81f044ebf7970901" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="namespaceforpy_1a724d37691de11a57b50b9935b5550a89" kindref="member">Data</ref>&lt; <ref refid="namespaceforpy_1a96f4b931f57ef7b106a2137e9b92939c" kindref="member">Mat</ref> &gt;</type>
        <definition>Data&lt;Mat&gt; forpy::Tree::predict</definition>
        <argsstring>(const Data&lt; MatCRef &gt; &amp;data_v, const int &amp;num_threads=1, const bool &amp;use_fast_prediction_if_available=true, const bool &amp;predict_proba=false, const bool &amp;for_forest=false)</argsstring>
        <name>predict</name>
        <param>
          <type>const <ref refid="namespaceforpy_1a724d37691de11a57b50b9935b5550a89" kindref="member">Data</ref>&lt; <ref refid="namespaceforpy_1a4a9ac2f76a00cbaa27aa5c24ff4074a5" kindref="member">MatCRef</ref> &gt; &amp;</type>
          <declname>data_v</declname>
        </param>
        <param>
          <type>const int &amp;</type>
          <declname>num_threads</declname>
          <defval>1</defval>
        </param>
        <param>
          <type>const bool &amp;</type>
          <declname>use_fast_prediction_if_available</declname>
          <defval>true</defval>
        </param>
        <param>
          <type>const bool &amp;</type>
          <declname>predict_proba</declname>
          <defval>false</defval>
        </param>
        <param>
          <type>const bool &amp;</type>
          <declname>for_forest</declname>
          <defval>false</defval>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Predicts new data points.</para><para>Releases the GIL in Python!</para><para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>data_v</parametername>
</parameternamelist>
<parameterdescription>
<para>Variant of 2D data, row-major contiguous The data predict with one sample per row.</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>num_threads</parametername>
</parameternamelist>
<parameterdescription>
<para>int&gt;0 The number of threads to use for prediction. The number of samples should be at least three times larger than the number of threads to observe good parallelization behavior. Currently disabled.</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>use_fast_prediction_if_available</parametername>
</parameternamelist>
<parameterdescription>
<para>bool If set to true (default), this will create a compressed version of the tree that has particularly favorable properties for fast access and use it for predictions. You can trigger the creation manually by calling <ref refid="classforpy_1_1_tree_1aaf950617741fdb9b495c3d68a0885eea" kindref="member">Tree::enable_fast_prediction</ref>.</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>predict_proba</parametername>
</parameternamelist>
<parameterdescription>
<para>bool If enabled, will ask the leaf manager to provide probability information additionally to the prediction output.</para></parameterdescription>
</parameteritem>
<parameteritem>
<parameternamelist>
<parametername>for_forest</parametername>
</parameternamelist>
<parameterdescription>
<para>bool If set to true, will create an intermediate result that can be fused to a whole forest result. Not relevant for end-users. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="201" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1af407e82e843b92cbe9be90656395512d" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type><ref refid="namespaceforpy_1a724d37691de11a57b50b9935b5550a89" kindref="member">Data</ref>&lt; <ref refid="namespaceforpy_1a96f4b931f57ef7b106a2137e9b92939c" kindref="member">Mat</ref> &gt;</type>
        <definition>Data&lt;Mat&gt; forpy::Tree::predict_proba</definition>
        <argsstring>(const Data&lt; MatCRef &gt; &amp;data_v, const int &amp;num_threads=1, const bool &amp;use_fast_prediction_if_available=true)</argsstring>
        <name>predict_proba</name>
        <param>
          <type>const <ref refid="namespaceforpy_1a724d37691de11a57b50b9935b5550a89" kindref="member">Data</ref>&lt; <ref refid="namespaceforpy_1a4a9ac2f76a00cbaa27aa5c24ff4074a5" kindref="member">MatCRef</ref> &gt; &amp;</type>
          <declname>data_v</declname>
        </param>
        <param>
          <type>const int &amp;</type>
          <declname>num_threads</declname>
          <defval>1</defval>
        </param>
        <param>
          <type>const bool &amp;</type>
          <declname>use_fast_prediction_if_available</declname>
          <defval>true</defval>
        </param>
        <briefdescription>
<para>Overload for consistency with the sklearn interface. </para>        </briefdescription>
        <detaileddescription>
<para><ref refid="classforpy_1_1_tree_1a5a66b58b7cf5d1bb81f044ebf7970901" kindref="member">Tree::predict</ref>. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="211" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a7a7a83ed7c395bcfa0c5de78aff7c55b" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="namespaceforpy_1a724d37691de11a57b50b9935b5550a89" kindref="member">Data</ref>&lt; <ref refid="namespaceforpy_1a96f4b931f57ef7b106a2137e9b92939c" kindref="member">Mat</ref> &gt;</type>
        <definition>Data&lt;Mat&gt; forpy::Tree::predict_leaf_result</definition>
        <argsstring>(const Data&lt; MatCRef &gt; &amp;data, const id_t &amp;start_node=0, const std::function&lt; void(void *)&gt; &amp;dptf=nullptr) const</argsstring>
        <name>predict_leaf_result</name>
        <param>
          <type>const <ref refid="namespaceforpy_1a724d37691de11a57b50b9935b5550a89" kindref="member">Data</ref>&lt; <ref refid="namespaceforpy_1a4a9ac2f76a00cbaa27aa5c24ff4074a5" kindref="member">MatCRef</ref> &gt; &amp;</type>
          <declname>data</declname>
        </param>
        <param>
          <type>const <ref refid="namespaceforpy_1a324c9643e02b76477c3a99a48773be8c" kindref="member">id_t</ref> &amp;</type>
          <declname>start_node</declname>
          <defval>0</defval>
        </param>
        <param>
          <type>const std::function&lt; void(void *)&gt; &amp;</type>
          <declname>dptf</declname>
          <defval>nullptr</defval>
        </param>
        <briefdescription>
<para>Get the data prediction result for the given data. </para>        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="218" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="218" bodyend="222"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1afff75b3d58f747ce9fd97591503450c6" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type><ref refid="namespaceforpy_1a724d37691de11a57b50b9935b5550a89" kindref="member">Data</ref>&lt; <ref refid="namespaceforpy_1a96f4b931f57ef7b106a2137e9b92939c" kindref="member">Mat</ref> &gt;</type>
        <definition>Data&lt;Mat&gt; forpy::Tree::combine_leaf_results</definition>
        <argsstring>(const std::vector&lt; Data&lt; Mat &gt;&gt; &amp;leaf_results, const Vec&lt; float &gt; &amp;weights=Vec&lt; float &gt;(), const bool &amp;predict_proba=false) const</argsstring>
        <name>combine_leaf_results</name>
        <param>
          <type>const std::vector&lt; <ref refid="namespaceforpy_1a724d37691de11a57b50b9935b5550a89" kindref="member">Data</ref>&lt; <ref refid="namespaceforpy_1a96f4b931f57ef7b106a2137e9b92939c" kindref="member">Mat</ref> &gt;&gt; &amp;</type>
          <declname>leaf_results</declname>
        </param>
        <param>
          <type>const <ref refid="namespaceforpy_1a36398396324079cc112b2c14d72ef20d" kindref="member">Vec</ref>&lt; float &gt; &amp;</type>
          <declname>weights</declname>
          <defval><ref refid="namespaceforpy_1a36398396324079cc112b2c14d72ef20d" kindref="member">Vec</ref>&lt; float &gt;()</defval>
        </param>
        <param>
          <type>const bool &amp;</type>
          <declname>predict_proba</declname>
          <defval>false</defval>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Combine the leaf results of several trees to the forest result. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="227" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="227" bodyend="232"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1ae34a6102319922edfe7e87deb0ef7a31" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>bool</type>
        <definition>bool forpy::Tree::is_initialized</definition>
        <argsstring>() const</argsstring>
        <name>is_initialized</name>
        <briefdescription>
<para>Whether the trees <ref refid="classforpy_1_1_tree_1a18ee73095b840748f6ebbe6d4047bd0e" kindref="member">fit</ref> method has been called and its DFS and BFS methods can now be used. </para>        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="238" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="238" bodyend="238"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1afbbfbed6ba0300fa1ca7d6768aee6d10" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>float</type>
        <definition>float forpy::Tree::get_weight</definition>
        <argsstring>() const</argsstring>
        <name>get_weight</name>
        <briefdescription>
<para>The tree weight. </para>        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="243" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="243" bodyend="243"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a6518d6bf8358c5e5f872c9050ce5c568" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t forpy::Tree::get_n_nodes</definition>
        <argsstring>() const</argsstring>
        <name>get_n_nodes</name>
        <briefdescription>
<para>The number of tree nodes. </para>        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="248" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="248" bodyend="248"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1acab58c599683c1d368e32ff8c5616ca7" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void forpy::Tree::set_weight</definition>
        <argsstring>(const float &amp;new_weight)</argsstring>
        <name>set_weight</name>
        <param>
          <type>const float &amp;</type>
          <declname>new_weight</declname>
        </param>
        <briefdescription>
<para>Sets the tree weight. </para>        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="253" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="253" bodyend="253"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a4ad92c076f735a8c63129ef4a301793a" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t forpy::Tree::get_input_data_dimensions</definition>
        <argsstring>() const</argsstring>
        <name>get_input_data_dimensions</name>
        <briefdescription>
<para>The data dimension that is required by this tree. </para>        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="258" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="258" bodyend="260"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a2ac6a894a91e33d620f2c1bc68b427bb" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>std::shared_ptr&lt; const <ref refid="classforpy_1_1_i_decider" kindref="compound">IDecider</ref> &gt;</type>
        <definition>std::shared_ptr&lt;const IDecider&gt; forpy::Tree::get_decider</definition>
        <argsstring>() const</argsstring>
        <name>get_decider</name>
        <briefdescription>
<para>The classifier manager used by this tree. </para>        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="265" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="265" bodyend="267"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1ae33a3e582ea38b9cf20984b307bbc76b" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>std::shared_ptr&lt; const <ref refid="classforpy_1_1_i_leaf" kindref="compound">ILeaf</ref> &gt;</type>
        <definition>std::shared_ptr&lt;const ILeaf&gt; forpy::Tree::get_leaf_manager</definition>
        <argsstring>() const</argsstring>
        <name>get_leaf_manager</name>
        <briefdescription>
<para>The leaf manager used by this tree. </para>        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="272" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="272" bodyend="274"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a58763b59096bc3da795ff908ec99e320" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>size_t</type>
        <definition>size_t forpy::Tree::get_samples_stored</definition>
        <argsstring>() const</argsstring>
        <name>get_samples_stored</name>
        <briefdescription>
<para>The number of samples stored in leafs. </para>        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="279" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="279" bodyend="279"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a3a088d0ae731e18077df3cc0595ce32b" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
        <type>const std::vector&lt; std::pair&lt; <ref refid="namespaceforpy_1a324c9643e02b76477c3a99a48773be8c" kindref="member">id_t</ref>, <ref refid="namespaceforpy_1a324c9643e02b76477c3a99a48773be8c" kindref="member">id_t</ref> &gt; &gt;</type>
        <definition>const std::vector&lt;std::pair&lt;id_t, id_t&gt; &gt; forpy::Tree::get_tree</definition>
        <argsstring>() const</argsstring>
        <name>get_tree</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="281" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="281" bodyend="283"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1aaf950617741fdb9b495c3d68a0885eea" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void forpy::Tree::enable_fast_prediction</definition>
        <argsstring>()</argsstring>
        <name>enable_fast_prediction</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Unpack the hash maps for thresholds and feature IDs for fast predictions.</para><para>This only works for trees with threshold deciders and AlignedSurfaceCalcluators for the features. Requires more memory than the default trees, but is significantly faster. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="292" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1a940aa1b2516a8fc6edee66f21c52cf12" prot="public" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <type>void</type>
        <definition>void forpy::Tree::disable_fast_prediction</definition>
        <argsstring>()</argsstring>
        <name>disable_fast_prediction</name>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
<para>Frees the memory from the unpacked trees for fast predictions. </para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="297" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="297" bodyend="300"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1adb61c1db5f21236d020afd11aabcf5e9" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual">
        <type>bool</type>
        <definition>bool forpy::Tree::operator==</definition>
        <argsstring>(Tree const &amp;rhs) const</argsstring>
        <name>operator==</name>
        <param>
          <type><ref refid="classforpy_1_1_tree" kindref="compound">Tree</ref> const &amp;</type>
          <declname>rhs</declname>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="302" column="1"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1af2ff0d0b1705f026398ea449fc06b6ea" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual">
        <type>void</type>
        <definition>void forpy::Tree::save</definition>
        <argsstring>(const std::string &amp;filename) const</argsstring>
        <name>save</name>
        <param>
          <type>const std::string &amp;</type>
          <declname>filename</declname>
        </param>
        <briefdescription>
<para>Save the tree. </para>        </briefdescription>
        <detaileddescription>
<para><parameterlist kind="param"><parameteritem>
<parameternamelist>
<parametername>filename</parametername>
</parameternamelist>
<parameterdescription>
<para>string The filename of the file to store the tree in. </para></parameterdescription>
</parameteritem>
</parameterlist>
</para>        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="310" column="1"/>
      </memberdef>
      </sectiondef>
      <sectiondef kind="private-func">
      <memberdef kind="function" id="classforpy_1_1_tree_1a2b8d5817874cb6ab06d7e4bd4b290163" prot="private" static="no" const="no" explicit="no" inline="yes" virt="non-virtual">
        <templateparamlist>
          <param>
            <type>class Archive</type>
          </param>
        </templateparamlist>
        <type>void</type>
        <definition>void forpy::Tree::serialize</definition>
        <argsstring>(Archive &amp;ar, const uint &amp;)</argsstring>
        <name>serialize</name>
        <param>
          <type>Archive &amp;</type>
          <declname>ar</declname>
        </param>
        <param>
          <type>const <ref refid="namespaceforpy_1ad05e34c62859518b61b76b5085e913d8" kindref="member">uint</ref> &amp;</type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="322" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="322" bodyend="328"/>
      </memberdef>
      <memberdef kind="function" id="classforpy_1_1_tree_1acfde2b7295597451c98affd002c3ff23" prot="private" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
        <type></type>
        <definition>forpy::Tree::DISALLOW_COPY_AND_ASSIGN</definition>
        <argsstring>(Tree)</argsstring>
        <name>DISALLOW_COPY_AND_ASSIGN</name>
        <param>
          <type><ref refid="classforpy_1_1_tree" kindref="compound">Tree</ref></type>
        </param>
        <briefdescription>
        </briefdescription>
        <detaileddescription>
        </detaileddescription>
        <inbodydescription>
        </inbodydescription>
        <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="373" column="1"/>
      </memberdef>
      </sectiondef>
    <briefdescription>
<para>The main tree class for the forpy framework. </para>    </briefdescription>
    <detaileddescription>
<para>This class is the core element of the framework. It can be used as a standalone tree or to form a forest. </para>    </detaileddescription>
    <inheritancegraph>
      <node id="218">
        <label>forpy::ClassificationTree</label>
        <link refid="classforpy_1_1_classification_tree"/>
        <childnode refid="217" relation="public-inheritance">
        </childnode>
      </node>
      <node id="217">
        <label>forpy::Tree</label>
        <link refid="classforpy_1_1_tree"/>
      </node>
      <node id="219">
        <label>forpy::RegressionTree</label>
        <link refid="classforpy_1_1_regression_tree"/>
        <childnode refid="217" relation="public-inheritance">
        </childnode>
      </node>
    </inheritancegraph>
    <collaborationgraph>
      <node id="221">
        <label>std::vector&lt; std::pair&lt; id_t, id_t &gt; &gt;</label>
      </node>
      <node id="220">
        <label>forpy::Tree</label>
        <link refid="classforpy_1_1_tree"/>
        <childnode refid="221" relation="usage">
          <edgelabel>tree</edgelabel>
        </childnode>
        <childnode refid="222" relation="usage">
          <edgelabel>futures</edgelabel>
        </childnode>
        <childnode refid="223" relation="usage">
          <edgelabel>fast_tree</edgelabel>
        </childnode>
      </node>
      <node id="223">
        <label>std::unique_ptr&lt; mu::variant&lt; std::vector&lt; std::tuple&lt; size_t, float, size_t, size_t &gt; &gt;, std::vector&lt; std::tuple&lt; size_t, double, size_t, size_t &gt; &gt;, std::vector&lt; std::tuple&lt; size_t, uint32_t, size_t, size_t &gt; &gt;, std::vector&lt; std::tuple&lt; size_t, uint8_t, size_t, size_t &gt; &gt; &gt; &gt;</label>
      </node>
      <node id="222">
        <label>std::vector&lt; std::future&lt; void &gt; &gt;</label>
      </node>
    </collaborationgraph>
    <location file="/Users/classner/git/forpy/include/forpy/tree.h" line="36" column="1" bodyfile="/Users/classner/git/forpy/include/forpy/tree.h" bodystart="36" bodyend="374"/>
    <listofallmembers>
      <member refid="classforpy_1_1_tree_1ab2f44cbb59a08132f4c843e5225bba0e" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>cereal::access</name></member>
      <member refid="classforpy_1_1_tree_1afff75b3d58f747ce9fd97591503450c6" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>combine_leaf_results</name></member>
      <member refid="classforpy_1_1_tree_1ab5a6ab26fac8f02143edc7ca86f55c40" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>decider</name></member>
      <member refid="classforpy_1_1_tree_1a0e21f03982ebee32e02292b2d0ca2322" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>DFS</name></member>
      <member refid="classforpy_1_1_tree_1a3387743826c6dbcda481391667e0cd66" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>DFS_and_store</name></member>
      <member refid="classforpy_1_1_tree_1a940aa1b2516a8fc6edee66f21c52cf12" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>disable_fast_prediction</name></member>
      <member refid="classforpy_1_1_tree_1acfde2b7295597451c98affd002c3ff23" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>DISALLOW_COPY_AND_ASSIGN</name></member>
      <member refid="classforpy_1_1_tree_1aaf950617741fdb9b495c3d68a0885eea" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>enable_fast_prediction</name></member>
      <member refid="classforpy_1_1_tree_1aca27a6f06e9d51c4f57a2b6728f78de2" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>fast_tree</name></member>
      <member refid="classforpy_1_1_tree_1a18ee73095b840748f6ebbe6d4047bd0e" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>fit</name></member>
      <member refid="classforpy_1_1_tree_1ad2c9d3b7cd1c084e9c89091716eb40eb" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>fit_dprov</name></member>
      <member refid="classforpy_1_1_tree_1a7c6b5c8100b27b9c3692820d4d40bd50" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>forpy::Forest</name></member>
      <member refid="classforpy_1_1_tree_1a3fb03748fbbd6306b56b7470586c4845" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>fut_mtx</name></member>
      <member refid="classforpy_1_1_tree_1ab33106bed03867b2489dae54f5c5500a" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>futures</name></member>
      <member refid="classforpy_1_1_tree_1a2ac6a894a91e33d620f2c1bc68b427bb" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>get_decider</name></member>
      <member refid="classforpy_1_1_tree_1a1b8177f98112a850f6240e17b275a61a" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>get_depth</name></member>
      <member refid="classforpy_1_1_tree_1a4ad92c076f735a8c63129ef4a301793a" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>get_input_data_dimensions</name></member>
      <member refid="classforpy_1_1_tree_1ae33a3e582ea38b9cf20984b307bbc76b" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>get_leaf_manager</name></member>
      <member refid="classforpy_1_1_tree_1a6518d6bf8358c5e5f872c9050ce5c568" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>get_n_nodes</name></member>
      <member refid="classforpy_1_1_tree_1a58763b59096bc3da795ff908ec99e320" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>get_samples_stored</name></member>
      <member refid="classforpy_1_1_tree_1a3a088d0ae731e18077df3cc0595ce32b" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>get_tree</name></member>
      <member refid="classforpy_1_1_tree_1afbbfbed6ba0300fa1ca7d6768aee6d10" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>get_weight</name></member>
      <member refid="classforpy_1_1_tree_1ae34a6102319922edfe7e87deb0ef7a31" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>is_initialized</name></member>
      <member refid="classforpy_1_1_tree_1a98c1a3ec2c1ea2bd7af98777490cd9e9" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>is_initialized_for_training</name></member>
      <member refid="classforpy_1_1_tree_1aaf2020df1c36fe0a935ea9ec2e6355b6" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>leaf_manager</name></member>
      <member refid="classforpy_1_1_tree_1a4fd94dc0367bea76936d4b577ba55d71" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>make_node</name></member>
      <member refid="classforpy_1_1_tree_1ab5f61943c13ee4a49cee80379688bf64" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>max_depth</name></member>
      <member refid="classforpy_1_1_tree_1abbda07d8785ef47b669607621af59d11" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>min_samples_at_leaf</name></member>
      <member refid="classforpy_1_1_tree_1a65c0a49605a095981066f865a5cddfd5" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>min_samples_at_node</name></member>
      <member refid="classforpy_1_1_tree_1a5d82b4527282466155d649b66205af6c" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>next_id</name></member>
      <member refid="classforpy_1_1_tree_1aadb9578d7828ae7e52f60203e1c4f4b6" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>operator&lt;&lt;</name></member>
      <member refid="classforpy_1_1_tree_1adb61c1db5f21236d020afd11aabcf5e9" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>operator==</name></member>
      <member refid="classforpy_1_1_tree_1a1b561eb3d6e7328d43e5d09f8e439268" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>parallel_DFS</name></member>
      <member refid="classforpy_1_1_tree_1a5a66b58b7cf5d1bb81f044ebf7970901" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>predict</name></member>
      <member refid="classforpy_1_1_tree_1a339f44dae73984e14d4a65e1813f4e2a" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>predict_leaf</name></member>
      <member refid="classforpy_1_1_tree_1a7a7a83ed7c395bcfa0c5de78aff7c55b" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>predict_leaf_result</name></member>
      <member refid="classforpy_1_1_tree_1af407e82e843b92cbe9be90656395512d" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>predict_proba</name></member>
      <member refid="classforpy_1_1_tree_1a6e72e2f34aa0b4cc540c74a66b806e26" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>random_seed</name></member>
      <member refid="classforpy_1_1_tree_1af2ff0d0b1705f026398ea449fc06b6ea" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>save</name></member>
      <member refid="classforpy_1_1_tree_1a2b8d5817874cb6ab06d7e4bd4b290163" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>serialize</name></member>
      <member refid="classforpy_1_1_tree_1acab58c599683c1d368e32ff8c5616ca7" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>set_weight</name></member>
      <member refid="classforpy_1_1_tree_1a3d7a4f0f4fd0898375162ace44ee1a61" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>stored_in_leafs</name></member>
      <member refid="classforpy_1_1_tree_1afa48b090a00bb0557146bb3d5fb45f3f" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>Tree</name></member>
      <member refid="classforpy_1_1_tree_1ad1e134d460ce946ed75527a84769e26e" prot="public" virt="non-virtual"><scope>forpy::Tree</scope><name>Tree</name></member>
      <member refid="classforpy_1_1_tree_1a1fccccd44acd59ec0235131d965d1a2e" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>tree</name></member>
      <member refid="classforpy_1_1_tree_1a6b4d08e4aa697fe33cc4c78eba6f6bb9" prot="private" virt="non-virtual"><scope>forpy::Tree</scope><name>weight</name></member>
    </listofallmembers>
  </compounddef>
</doxygen>
