<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[The Stack Canary]]></title><description><![CDATA[<h1>Technology in Depth </h1><p>By <i>Developers</i>, for <i>Everyone</i></p>]]></description><link>https://www.thestackcanary.com/</link><image><url>https://www.thestackcanary.com/favicon.png</url><title>The Stack Canary</title><link>https://www.thestackcanary.com/</link></image><generator>Ghost 5.75</generator><lastBuildDate>Sun, 12 Apr 2026 19:30:13 GMT</lastBuildDate><atom:link href="https://www.thestackcanary.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Resist Vendor Lock-In With Supabase]]></title><description><![CDATA[Not only is Supabase the open-source Firebase alternative, it just might be safer too. ]]></description><link>https://www.thestackcanary.com/supasafe-supabase/</link><guid isPermaLink="false">6629b0cf6904c319203f26d5</guid><category><![CDATA[Elixir]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Fri, 26 Apr 2024 02:08:00 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2024/04/Dark-Blue-Virtual-Tech-Banner--1-.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.thestackcanary.com/content/images/2024/04/Dark-Blue-Virtual-Tech-Banner--1-.png" alt="Resist Vendor Lock-In With Supabase"><p>In one of his recent YouTube videos, <a href="https://twitter.com/t3dotgg?ref=thestackcanary.com" rel="noreferrer">Theo Browne</a> highlights the potential pitfalls that comes with using a Platform-as-a-Service. </p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/TKyNPg7UIIc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="The $4 BILLION Hack That Everyone Missed"></iframe></figure><p>The video goes over recent work done to fuzz suspected Firebase-backed services looking for leaked credentials. As is shown in the video, this is an all-too common pattern in these platforms, where the &quot;backend&quot; is being directly manipulated from client-side SDKs, such that theres a high likelihood that credentials are carelessly exposed to the client. In addition to potential secret leakage, many of these platforms, including Firestore, do not have great default security settings.  This has obvious MAJOR security concerns is a horrible practice for the industry to standardize on, but yet these platforms still remain extremely popular despite known security concerns due to their ease of use and how they enable rapid development. </p><p>In addition to these security concerns, Firebase has long drawn the ire of many developers due to its tight coupling with Google&apos;s proprietary ecosystem, and its cost structure which has lead to more than a few horror stories about unexpectedly high bills (although these issues can often be attributed to poor database practices that lead to exponentially ballooning costs). With much apprehension towards Firebase, many looked for alternatives, and found themselves needing to piece together a solution from many different parts. Here enters <a href="https://supabase.com/?ref=thestackcanary.com" rel="noreferrer">Supabase</a>, which pitches itself as the &quot;open-source Firebase alternative.&quot;  Supabase offers similar solutions as Firebase, such as a realtime database, object storage, user authentication and management, edge functions, and much more.  Supabase, however, is built entirely from open-source software (in fact, they stipulate that <a href="https://github.com/supabase/supabase?tab=readme-ov-file&amp;ref=thestackcanary.com#how-it-works" rel="noreferrer">Supabase will only ever include software that comes with an MIT, Apache 2, or equivalent license</a>).</p><p> When asked about his thoughts on Supabase, Theo rightly points out that these problems still exist when using their client SDKs, but he stresses that unlike Firebase, since Supabase is built entirely on open-source software (namely <a href="https://www.postgresql.org/?ref=thestackcanary.com" rel="noreferrer">PostgreSQL</a>) you not only can connect directly to the database, but it is actively encouraged by the CEO himself.</p><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">cc <a href="https://twitter.com/chasers?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">@chasers</a> <a href="https://twitter.com/filipecabaco?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">@filipecabaco</a> <a href="https://twitter.com/wenboxie?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">@wenboxie</a> <br><br>Alternatively: just connect to Postgres<br>&#xAF;\_(&#x30C4;)_/&#xAF;</p>&#x2014; Paul Copplestone &#x2014; e/postgres (@kiwicopple) <a href="https://twitter.com/kiwicopple/status/1781161242637602896?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">April 19, 2024</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><p>Wow! What a breath of fresh air that is! And as it turns out, even when &quot;just&quot; using Supabase in this way, it is still great! You get an authentication table with Row-Level-Security and robust security practices out of the box, access to their wonderful front-end database management, and the ability to easily integrate their other features such as <a href="https://supabase.com/edge-functions?ref=thestackcanary.com" rel="noreferrer">Edge Functions</a>, <a href="https://supabase.com/storage?ref=thestackcanary.com" rel="noreferrer">Object Storage</a>, all while maintaining tight control over your backend. It just makes sense! It offers the rapid development experience that is all too valuable, while not compromising on security. </p><p>Still, you might be wondering what this looks like from the developer perspective. Surely if you&apos;re writing directly to the database this must be more unwieldily than using those client SDKs right? Well, not necessarily! </p><p>Supabase still offer <a href="https://postgrest.org/en/v12/?ref=thestackcanary.com" rel="noreferrer">PostgREST</a> out of the box, which exposes a REST API for database operations, but you have control over where you fire off those requests from. And since you have complete control over your database, you can even do a hybrid approach, which is what I prefer. Since Supabase takes care of the <code>auth.users</code> table (and even makes it read-only through the web frontend), you might want to just use the REST APIs they expose to handle authentication, but then handle everything else yourself.  </p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">If you want to have a table NOT be exposed as an API through PostgREST, just add it to a different schema from the public schema. All tables under the public schema will be exposed.</div></div><p>Even though you might want Supabase to handle authentication, you still might want to extend features from that <code>users.auth</code> table. Since they discourage modifying that table directly, the suggested approach is to make a table in the <code>public</code> schema (which is the default schema &#x2013; the <code>auth</code> schema is managed by Supabase) to manage any additional information related to the user. The documentation goes into much more detail about <a href="https://supabase.com/docs/guides/auth/managing-user-data?ref=thestackcanary.com#creating-user-tables" rel="noreferrer">Managing User Data</a>, but that is the gist of the situation. Well, if you want this new table (let&apos;s call it <code>Profiles</code>) to stay in sync with the <code>auth.users</code> table, it&apos;s best to have the <code>Profiles</code> table refer to the <code>auth.users</code> table, and add a Postgres trigger to run a function to create a new entry in the <code>Profiles</code> table whenever a new user is registered. </p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">It&apos;s also worth noting that in their recent General Availability Launch Week, Supabase also announced new efforts to increase security practices across projects, including a Postgres Linter and new Security Advisor and Performance Advisor dashboards to help you maintain good security posture. </div></div><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/supabase/splinter?ref=thestackcanary.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - supabase/splinter: Supabase Postgres Linter</div><div class="kg-bookmark-description">Supabase Postgres Linter. Contribute to supabase/splinter development by creating an account on GitHub.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" alt="Resist Vendor Lock-In With Supabase"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">supabase</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/966032ded7ca25ff60a2b6d2cb729f96ee103f143195ce1c3991b19e2032b39e/supabase/splinter" alt="Resist Vendor Lock-In With Supabase"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://supabase.com/blog/security-performance-advisor?ref=thestackcanary.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Supabase Security Advisor &amp; Performance Advisor</div><div class="kg-bookmark-description">We&#x2019;re making it easier to build a secure and high-performing application.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://supabase.com/favicon/mstile-310x310.png" alt="Resist Vendor Lock-In With Supabase"><span class="kg-bookmark-author">Supabase</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://supabase.com/images/blog/ga-week/security-peformance-advisor/og.png?v=3" alt="Resist Vendor Lock-In With Supabase"></div></a></figure><p>Let&apos;s walk through an example of what this might look like using my favorite backend language, <a href="https://elixir-lang.org/?ref=thestackcanary.com" rel="noreferrer">Elixir</a> (it&apos;s also a favorite of Supabase themselves).  I&apos;ll be using Elixir&apos;s very nice ORM, <a href="https://hexdocs.pm/ecto/Ecto.html?ref=thestackcanary.com" rel="noreferrer">Ecto</a>.</p><p>One you make your new project (using <code>mix new</code> or perhaps more commonly in this situation, <code>mix phx.new</code>) you&apos;ll want to make sure you have Ecto as a dependency, and then you&apos;ll want to model the <code>auth.users</code> table as well as the new <code>public.profiles</code> table. </p><pre><code class="language-elixir">defmodule User do
  @moduledoc &quot;&quot;&quot;
  This schema represents the default Supabase users table, which is under the &apos;auth&apos; schema.

  Since we don&apos;t actually manage this schema, we will not make any migrations for it.

  This is mainly for convenience when unmarshalling data and working with users, so we
  can refer to the User struct rather than a generic map.

  Notice that we specify the primary key which will be referred to later

  Ecto schemas do not have to have 1-to-1 fields match the table in the database, so we can use whatever minimal fields we want to mirror in the profiles table (`id` at a minimum).
  &quot;&quot;&quot;
  use Ecto.Schema
  import Ecto.Changeset

  # id is a UUID
  @primary_key {:id, :binary_id, autogenerate: false}
  schema &quot;auth.users&quot; do
    field :created_at, :naive_datetime_usec
    field :updated_at, :naive_datetime_usec
  end

end
</code></pre><pre><code class="language-elixir">defmodule Profile do
  @moduledoc &quot;&quot;&quot;
  This schema holds extra information about users
  &quot;&quot;&quot;
  use Ecto.Schema
  import Ecto.Changeset

  schema &quot;profiles&quot; do
    field :first_name, :string
    field :last_name, :string

    embeds_one :settings, Settings do
      field :default_portfolio, :string
      field :theme, Ecto.Enum, values: [dark: &quot;Dark&quot;, light: &quot;Light&quot;, system: &quot;System&quot;]
    end

    # This is the most important line and the one that is required to
    # properly link this table to `auth.users`
    # Make sure to set the type to :binary_id, which is what the Supabase 
    # auth uses
    belongs_to :user, User, type: :binary_id, references: :id, primary_key: true

    timestamps()
  end
end
</code></pre><p>Now we would create the necessary migrations, starting with creating the <code>public.profiles</code> table.</p><pre><code class="language-elixir">defmodule CreateProfiles do
  use Ecto.Migration

  def change do
    create table(:profiles, primary_key: false) do
      # notice the `prefix` since `public` is the default prefix
      # notice the specifying the type to match the Supabase defaults
      # make sure to set this as the primary key
      add :id, references(:users, on_delete: :delete_all, prefix: &quot;auth&quot;, type: :uuid),
        primary_key: true

      # These fields should match what you have in your schema
      add :first_name, :string
      add :last_name, :string
      add :settings, :map

      # This represents the `inserted_at` and `updated_at` fields in the 
      # schema, and are required by default
      timestamps()
    end

    # You might also want to add indexes to improve performance and ensure data integrity
    create index(:profiles, [:id])
  end
end
</code></pre><p>Now we add a migration to add the trigger:</p><pre><code class="language-elixir">defmodule CreateProfilesTrigger do
  use Ecto.Migration

  def up do
    # Function to insert a new profile
    execute &quot;&quot;&quot;
    CREATE OR REPLACE FUNCTION public.create_profile_for_new_user()
    RETURNS TRIGGER AS $$
    BEGIN
      INSERT INTO public.profiles (id, inserted_at, updated_at)
      VALUES (NEW.id, now(), now());
      RETURN NEW;
    END;
    $$ LANGUAGE plpgsql SECURITY DEFINER;
    &quot;&quot;&quot;

    # Trigger to call the function after a user is inserted
    execute &quot;&quot;&quot;
    CREATE TRIGGER trigger_create_profile_after_user_insert
    AFTER INSERT ON auth.users
    FOR EACH ROW
    EXECUTE FUNCTION public.create_profile_for_new_user();
    &quot;&quot;&quot;
  end

  def down do
    execute &quot;DROP TRIGGER IF EXISTS trigger_create_profile_after_user_insert ON auth.users;&quot;
    execute &quot;DROP FUNCTION IF EXISTS create_profile_for_new_user;&quot;
  end
end
</code></pre><p>And that&apos;s it, you now have extended the ability to store information for the users while keeping the security provided by the protected <code>auth.users</code> table. But now how do you use it?</p><p>Well, let me show you how in fewer than 90 lines of code:</p><pre><code class="language-elixir">defmodule UserManagement do
  @req Req.new(
         base_url: Application.compile_env(:myapp, [:supabase, :base_url]),
         headers: [apikey: Application.compile_env(:myapp, [:supabase, :api_key])],
         url: &quot;/auth/v1/:action&quot;
       )

  def get_current_user(bearer_token) do
    Req.get!(
      @req,
      auth: {:bearer, bearer_token},
      path_params: [action: &quot;user&quot;]
    )
    |&gt; Map.get(:body)
  end

  def signup_with_username_and_password(email, password) do
    Req.post!(
      @req,
      path_params: [action: &quot;signup&quot;],
      json: %{email: email, password: password}
    )
    |&gt; Map.get(:body)
  end

  def login_with_email_and_password(email, password) do
    Req.post!(
      @req,
      path_params: [action: &quot;token&quot;],
      params: [grant_type: &quot;password&quot;],
      json: %{email: email, password: password}
    )
    |&gt; Map.get(:body)
  end

  def send_password_recovery_email(email) do
    Req.post!(
      @req,
      path_params: [action: &quot;recover&quot;],
      json: %{email: email}
    )
    |&gt; Map.get(:body)
  end

  def update_user(bearer_token, data \\ %{}) do
    {email, data} = Map.pop(data, &quot;email&quot;)
    {password, data} = Map.pop(data, &quot;password&quot;)

    body = %{
      &quot;data&quot; =&gt; data
    }

    body = if email, do: Map.put(body, &quot;email&quot;, email), else: body
    body = if password, do: Map.put(body, &quot;password&quot;, password), else: body

    Req.put!(
      @req,
      path_params: [action: &quot;user&quot;],
      auth: {:bearer, bearer_token},
      json: body
    )
    |&gt; Map.get(:body)
  end

  def logout(bearer_token) do
    Req.post!(
      @req,
      auth: {:bearer, bearer_token},
      path_params: [action: &quot;logout&quot;]
    )
    |&gt; Map.get(:body)
  end

  def send_email_invite(bearer_token, email) do
    Req.post!(
      @req,
      auth: {:bearer, bearer_token},
      json: %{email: email},
      path_params: [action: &quot;invite&quot;]
    )
    |&gt; Map.get(:body)
  end
end</code></pre><p>Pretty simple right? You could surely condense this more too if you so choose. </p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">The wonderful <a href="https://hexdocs.pm/req/readme.html?ref=thestackcanary.com" rel="noreferrer">Req</a> library takes care of a lot of the tedious parts of these requests, such as JSON-encoding and Bearer authentication. I highly recommend it over other HTTP clients for these reasons. </div></div><p>As long as you set your API key and Supabase instance URL into the application environment, this will have you ready to perform all of your user management tasks, and upon registration have the new user reflected in the <code>auth.users</code> table as well as the <code>public.profiles</code> table. </p><p>And lastly, make sure you connect to your database using the connection string (or you can specify each field if you&apos;d like).</p><pre><code class="language-elixir">import Config

config :myapp, MyApp.Repo,
  url:
    &quot;myconnectionstring&quot;,</code></pre><p>This barely scratched the surface of what you can do with Supabase, but I hope it at least demonstrates how quick it is to get started with it and how flexible it is to have complete control over your stack. </p><p>Of course this example was in Elixir, but you could extend this to any other backend language and get the same benefits, and avoid falling victim to vendor lock-in! </p>]]></content:encoded></item><item><title><![CDATA[Launch Your AI App in 48 Hours]]></title><description><![CDATA[Don't spend 6 months building your app just to find out nobody wants it. Do this instead. ]]></description><link>https://www.thestackcanary.com/launch-your-ai-app-in-48-hours/</link><guid isPermaLink="false">66172e4e6904c319203f2528</guid><category><![CDATA[Elixir]]></category><category><![CDATA[Machine Learning]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Wed, 17 Apr 2024 03:27:08 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2024/04/Dark-Blue-Virtual-Tech-Banner.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.thestackcanary.com/content/images/2024/04/Dark-Blue-Virtual-Tech-Banner.png" alt="Launch Your AI App in 48 Hours"><p>In his book <a href="https://noahkagan.com/mdwbook/?ref=thestackcanary.com" rel="noreferrer"><em>Million Dollar Weekend</em></a>, author <a href="https://twitter.com/noahkagan?ref=thestackcanary.com" rel="noreferrer">Noah Kagan</a> emphasizes the importance of validating an idea before investing much time or money on it. A large part of the book is about how to go about validating an idea&apos;s potential through market research as well as through actual transactions where you seek out people who are willing to part ways with their money in exchange for what you&apos;re offering, not in the future, but NOW. Many of the examples he gave involved having either no existing fulfillment arrangement prepared, or having very basic, lower resolution options such as accepting personal PayPal payments.  Kagan even pushed back at the idea of a Minimally Viable Product (MVP), suggesting that oftentimes people still put too much time and / or money into them with no feedback loop during that process.</p><p>There are cases where people start off their product as just a Google Sheets spreadsheet, or maybe a mass email newsletter from their personal email, or so on. With the advent of much more approachable machine learning and artificial intelligence platforms, such as OpenAI&apos;s ChatGPT, Anthropic&apos;s Claude, and many more, it has become increasingly easy for technical and non-technical people alike to leverage these new tools to enhance or even serve as the foundation for their product. </p><p>While reading it, you might have found yourself thinking &quot;well sure, that method works for THAT, but it won&apos;t work for what I&apos;M cooking up!&quot; For instance, you might be trying to catch the wave of AI-powered apps, and you&apos;ve thought of your next big AI Idea.  It might seem like in the case of building an AI-powered app that you wouldn&apos;t be able to build and validate it in a weekend as Kagan suggests, but that&apos;s far from the case. </p><p>Here I&apos;ll show you how you can build, deploy, and validate your AI Web App to see if you have a Zero or a Hero. </p><h2 id="your-weapon-of-choice">Your Weapon of Choice</h2><p>If you&apos;re a frequent reader of mine, you might have seen this coming, but the tool we&apos;ll be working with today is Elixir&apos;s Livebook application. </p><p>What makes Livebook so well suited for quickly building and deploying an idea to get to validation is that it takes care of so much for you:</p><ul><li>Compose a simple, effective, and reactive UI using the <a href="https://hexdocs.pm/kino/0.12.3/Kino.html?ref=thestackcanary.com" rel="noreferrer">Kino</a> library</li><li>Manage secrets and environment variables using your existing credential from your Hub</li><li>Use smart cells to help setup common operations such as database connections and queries, plotting, data display, or even machine learning tasks using the <a href="https://github.com/livebook-dev/kino_bumblebee/blob/main/lib/kino_bumblebee/task_cell.ex?ref=thestackcanary.com" rel="noreferrer"><code>kino_bumblebee</code></a> library<ul><li>You can use a smart-cell as is or convert to code to have more granular control</li></ul></li><li>Generate a Dockerfile for deployment or use the <a href="https://livebook.dev/integrations/hugging-face/?ref=thestackcanary.com" rel="noreferrer">Hugging Face</a> integration, you can </li></ul><p>If you&apos;re unfamiliar with Livebook, I suggest you read <a href="https://www.thestackcanary.com/elixirs-secret-weapon/" rel="noreferrer">this article</a> and come back here when you&apos;re finished. </p><p>Great, now that you&apos;re back hopefully you have a good grasp of what Livebook has to offer, and maybe you can even tell where this is going.  </p><p>The plan is simple:</p><ol><li>Use Elixir&apos;s robust machine learning ecosystem (I conveniently explain it <a href="https://www.thestackcanary.com/understanding-the-elixir-machine-learning-ecosystem/" rel="noreferrer">here</a>) to implement a crude prototype<ol><li>Leverage libraries like <code>Kino</code> to develop the UI</li></ol></li><li>Deploy the <strong>password protected</strong> notebook to either a VPS or HuggingFace Spaces using the native integration with Livebook</li><li>Start asking people for money in exchange for access to your newly deployed application</li><li>Iterate based on feedback from your new customers</li></ol><p>Now you might be thinking to yourself &quot;I&apos;m sure it&apos;s way more involved than that!&quot; Well, let&apos;s work through an example so you can see for yourself.</p><h2 id="lets-build-your-ai-web-app">Let&apos;s Build Your AI Web App</h2><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">If you want to see a live version of a very similar version of this app, you can go to <a href="https://huggingface.co/spaces/acalejos/livebook-apps?logs=container&amp;ref=thestackcanary.com">https://huggingface.co/spaces/acalejos/livebook-apps?logs=container</a></div></div><p>If you&apos;re unfamiliar with Elixir, do not fret. I&apos;ll do my best to add comments and walk you through this code, and hopefully by the end of it you will see how approachable it is.</p><h3 id="idea">Idea</h3><p>In open-source development, it is not unusual for someone to start a project, it gains a lot of traction and users, and then the original author loses passion for the project or just wants to work on something new. In these cases, it is common for the maintainers to look towards active members of their community to pass the baton of maintainer to. There are even some solutions such as <a href="https://seeking-maintainers.net/?ref=thestackcanary.com">https://seeking-maintainers.net/</a> that will try to help pair existing maintainers with new maintainers.  That is not the case will all big projects, however, and sometimes large projects become abandoned for a wide variety of reasons.  Existing solutions usually rely on the current maintainer actively searching for a new one, so there&apos;s a potential for an opportunity here.</p><p>Knowing this, and knowing that many people don&apos;t know where to start when it comes to contributing to open-source projects, you set out to make a site that can find the best abandoned projects and have people pay for access to your list. Not only do you have the list, but you want to integrate fancy new AI features to generate a robust and comprehensive report on the repositories you find.</p><p>So, let&apos;s for now focus on building out these automated reports for the sake of demonstration. At least while validating, you could certainly hand-pick the repositories, and use this to generate reports.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text"> If you&apos;re curious about how you might automate the process of finding these repositories, you can look into the <a href="https://docs.github.com/en/rest/search/search?apiVersion=2022-11-28&amp;ref=thestackcanary.com#search-repositories" rel="noreferrer">GitHub Repository Search API</a>, which you can use to filter for time of last commit, last activity, number of stars, etc. Using a combination of these queries you can perform powerful searches. <br><br>You can find an example of using the Code Search API in Elixir <a href="https://gist.github.com/acalejos/61dfed2a0bd29d6990c52a9261399697?ref=thestackcanary.com" rel="noreferrer">here</a>. The repository search API will have a slightly different endpoint, but is very similar. </div></div><p>By the end, you will have made something that looks like this:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.thestackcanary.com/content/images/2024/04/Screenshot-2024-04-10-at-11.13.16-PM.png" class="kg-image" alt="Launch Your AI App in 48 Hours" loading="lazy" width="2000" height="1278" srcset="https://www.thestackcanary.com/content/images/size/w600/2024/04/Screenshot-2024-04-10-at-11.13.16-PM.png 600w, https://www.thestackcanary.com/content/images/size/w1000/2024/04/Screenshot-2024-04-10-at-11.13.16-PM.png 1000w, https://www.thestackcanary.com/content/images/size/w1600/2024/04/Screenshot-2024-04-10-at-11.13.16-PM.png 1600w, https://www.thestackcanary.com/content/images/2024/04/Screenshot-2024-04-10-at-11.13.16-PM.png 2078w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Sample App</span></figcaption></figure><p>And the reports it generates will look like this:</p><figure class="kg-card kg-image-card"><img src="https://www.thestackcanary.com/content/images/2024/04/report.png" class="kg-image" alt="Launch Your AI App in 48 Hours" loading="lazy" width="2000" height="2636" srcset="https://www.thestackcanary.com/content/images/size/w600/2024/04/report.png 600w, https://www.thestackcanary.com/content/images/size/w1000/2024/04/report.png 1000w, https://www.thestackcanary.com/content/images/size/w1600/2024/04/report.png 1600w, https://www.thestackcanary.com/content/images/2024/04/report.png 2170w" sizes="(min-width: 720px) 720px"></figure><h3 id="build-it">Build It</h3><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">You can find the code as a Livebook <a href="https://gist.github.com/acalejos/93e0963756d384bc7900230fd3c83302?ref=thestackcanary.com" rel="noreferrer">here</a></div></div><p>You can find the code <a href="https://gist.github.com/acalejos/93e0963756d384bc7900230fd3c83302?ref=thestackcanary.com" rel="noreferrer">here</a>. And here is a walkthrough of the code so you have a better understanding of how we built it:</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/Qo79CLJhvFI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Launch Your AI App in 48 Hours With This Tool"></iframe></figure><h3 id="ship-it">Ship It</h3><p>Awesome! You have now built your validation product! Next it&apos;s time to get it out into the world. As it turns out, Livebook has you covered here! </p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">If you watched the video above in its entirety, you will have seen how to deploy to HuggingFace Spaces using the Livebook integration, so I will not cover that here. What I will cover now is how to configure a Dockerfile so that you can deploy on infrastructure of your choice.</div></div><p>Look for the rocket ship icon on the left sidebar. This is the Deploy tab. From here, you can configure your application with some different settings based on how you want it to behave when deployed.  Just click the <strong>Configure</strong> button at the top right of the slide-over menu. </p><p>From here you will configure the following:</p><ul><li>Set the slug to the URL slug you want the application to be accessible from</li><li>Set a password for the application if you want it to be password protected. <strong>I suggest you do so since the way you will validate this application is to ask people for money in exchange for that password.</strong></li><li>Select the session type you want to use. <strong>I suggest <code>multi-session</code>, which will mean that each new person who connects to your application gets a new session. This means you do not have to implement the server-side logic for handling multiple clients. </strong></li><li>Select the time to disconnect during inactivity</li><li>Select whether to show your source code. <strong>You likely will not want to show it.</strong></li><li>Select &quot;Only Render Rich Outputs&quot;. <strong>If you do not do this, all of your code will be present in the Livebook, not just the code that displays your UI. </strong></li><li>Select whether to show existing sessions when a new client connects. <strong>I suggest you de-select this. You want each new client to start a new instance of the application.</strong></li></ul><p>Now if you click the <strong>Deploy</strong> button at the bottom of this form, it will deploy in the cluster where your Livebook is running. Since this is likely just a local instance, you probably want to instead now exit this configuration menu and click &quot;Deploy With Docker.&quot;  This will generate a <code>Dockerfile</code> based on the configuration settings we just set. </p><p>There are a few other settings you can configure from this page. We don&apos;t need GPU support on our deployed Docker image since we&apos;re using the OpenAI adapter with instructor, but if you want to use another adapter with a local model, you might want to click one of the buttons to use the CUDA-enabled Docker images. </p><p>Now you can copy the generated <code>Dockerfile</code> and deploy on the infrastructure of your choice!</p><p>Since each hosting solution has its own method from deploying from a <code>Dockerfile</code>, I won&apos;t go into detail here. Consult the documentation from your hosting provider more detail. </p><h3 id="validate-it">Validate It</h3><p>This is the last but most important part &#x2013; get somebody to give you money for access to your new application. Notice you didn&apos;t have to set up your own authentication, a database, a CRM, an email client, etc. </p><p>With just the password protection provided by Livebook, you are now equipped to go start selling your app and see what people are willing to pay, see what they have to say, and generally get feedback to start iterating and/or pivoting on your idea. </p><p>You can always also add all of that other stuff if you wish, or more robust forms of authentication, but if you have to be worried about people trying to circumvent your access measure, then perhaps that is validation in and of itself? </p><h2 id="conclusion">Conclusion</h2><p>If you want more detail about this process, I <strong>highly</strong> recommend you go out and buy yourself a copy of <em>Million Dollar Weekend</em>. It&apos;s a very approachable book that can be read in a day. If you&apos;re more inclined towards audiobooks, the audiobook is only about four hours long. </p><p>I wanted this article to serve as encouragement to show how approachable it can be to create </p>]]></content:encoded></item><item><title><![CDATA[Livebook: Elixir's Swiss Army Knife]]></title><description><![CDATA[From learning, to prototyping, to production - Livebook can really do it all. ]]></description><link>https://www.thestackcanary.com/elixirs-secret-weapon/</link><guid isPermaLink="false">65fb52f36904c319203f2246</guid><category><![CDATA[Elixir]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Sun, 24 Mar 2024 21:54:25 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2024/03/Virtual-Tech-Banner--4-.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.thestackcanary.com/content/images/2024/03/Virtual-Tech-Banner--4-.png" alt="Livebook: Elixir&apos;s Swiss Army Knife"><p><a href="https://twitter.com/ac_alejos?ref=thestackcanary.com"><img src="https://img.shields.io/twitter/follow/ac_alejos?style=social" alt="Livebook: Elixir&apos;s Swiss Army Knife" loading="lazy"></a></p>
<h2 id="the-problem-of-adoption-friction">The Problem of Adoption Friction</h2><p>Recently <a href="https://youtu.be/XHxs-INUKz4?si=fUSTCtOcE4WlG_2Y&amp;ref=thestackcanary.com" rel="noreferrer">I gave a talk</a> about my first year programming with Elixir and my experience contributing to Elixir&apos;s open-source ecosystem. In it, I made some points about how a big part of encouraging language adoption is to reduce friction.</p><p>One common point of friction that many languages suffer from is fractured tooling ecosystems.  These are language ecosystems where the language is unopinionated about things such as its formatting, linting, testing, build system, etc. These can be good for advanced users who have the benefit of experience when deciding which tools to choose, giving them more options depending on their needs.  This can, however, just as easily leave beginners wary to even start. Many people credit Go with popularizing the practice of providing developers with standardized libraries and tooling for all parts of the development lifecycle. Providing code formatters, package managers, package repositories, LSPs, unit testing libraries, etc. straight from the language&apos;s core team can drastically reduce adoption friction by preventing the phenomenon of  analysis paralysis, where people can get too overwhelmed by the bevy of tooling options that they never get around to actually writing code.</p><p>Elixir excels in this respect, providing tools such as ExDoc (for documentation), ExUnit (for testing), Mix (build tool), Hex (package manager),  Mix format (for formatting), and more. When writing code, the only decisions left to make (for the most part) are design and implementation details for your code, rather than needing to concern yourself with these details that can (and have been) standardized. </p><h2 id="understanding-your-audience">Understanding Your Audience</h2><p>In that same talk, I also spoke about the idea of &quot;entry-points&quot; to the language and how targeting them can help reduce adoption friction, especially in a world where most people are first introduced to other programming paradigms such as object-oriented as opposed to functional programming like Elixir. Here are some of the most common points of entry I came up with for Elixir.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.thestackcanary.com/content/images/2024/03/elixir_points_of_entry.png" class="kg-image" alt="Livebook: Elixir&apos;s Swiss Army Knife" loading="lazy" width="792" height="612" srcset="https://www.thestackcanary.com/content/images/size/w600/2024/03/elixir_points_of_entry.png 600w, https://www.thestackcanary.com/content/images/2024/03/elixir_points_of_entry.png 792w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Elixir Points of Entry</span></figcaption></figure><p>Understanding the perspective of your potential adopters is crucial in focusing where developer efforts should go, and in general a good first impression can do a lot to convince people to stay.  </p><p>First impressions can be made in all sorts of ways, from good landing pages, to detailed documentation, to convincing testimonials and showcases, but one common way is the place where many people first interact with the language: its REPL (or interactive session). In Elixir, this is IEx.</p><p>Many people prefer, above reading documentation or reading source code, getting their hands dirty by immediately interacting with the language. They prefer the hands-on approach to learning the language, which is a large reason why more and more languages are moving to code playgrounds as their getting started guide.  They want to get immediate feedback and iterate on quick ideas to gauge whether the language is worth investing more time into. There is only so much you can do from a REPL, so when they&apos;ve reached the limits of exploration through that means, they might start working on a small script of sorts, but depending on which entry-point they came from, the next natural step might be quite different.</p><p>Wouldn&apos;t it be great if there was a place that served as a nexus, where someone coming from the embedded world could be introduced to the language in much the same way as someone coming from the Machine Learning World, while still leaning into those very domains that brought them there?</p><h2 id="enter-livebook-the-one-stop-shop">Enter Livebook, the One-Stop-Shop</h2><p><a href="https://livebook.dev/?ref=thestackcanary.com" rel="noreferrer">Livebook</a> is an interactive Notebook-style Elixir application that lets you write reproducible, shareable, deployable, extensible, interactive, and integrated Elixir workflows (and even has support for Erlang!). With these characteristics in mind, Livebook is fast becoming the premier gateway application to introduce newcomers to all that the language has to offer. <a href="https://dockyard.com/?ref=thestackcanary.com" rel="noreferrer">Dockyard</a> has even gone as far as writing all of the curriculum for <a href="https://github.com/DockYard-Academy/curriculum?ref=thestackcanary.com" rel="noreferrer">Dockyard Academy</a> as Elixir Livebooks.</p><p>For the last couple of months, I&apos;ve been spending much of my time in Livebook, and have found it to really enhance my workflow when working on my libraries. I prepared much of my ElixirConfUS 2023 talk as a Livebook (also published as a blog post <a href="https://www.thestackcanary.com/serving-spam-detection-with-xgboost-and-elixir/" rel="noreferrer">here</a>), as well as wrote the <a href="https://www.thestackcanary.com/plotting-xgboost-trees-in-elixir/" rel="noreferrer">documentation for the EXGBoost Plotting Module</a> as a Livebook, in addition to working on several interactive libraries for Livebook (which I will touch on later). </p><p>It&apos;s very quick to get started with Livebook as it has standalone Mac and Windows installers that bundle in Erlang/OTP and Elixir, so you can get started without any prerequisites. You also have the options to use Livebook Teams to gain collaboration features or run instances of Livebook in the cloud, so you don&apos;t have to worry about managing installs! </p><p>Livebook is available in three different runtime options: <strong>standalone</strong> if you want to use Livebook as its own instance of Elixir, <strong>attached</strong> if you want Livebook to connect to an existing instance of Elixir, or <strong>embedded </strong>if you want to install Livebook on an embedded device (see the <a href="https://nerves-project.org/?ref=thestackcanary.com" rel="noreferrer">Nerves Project</a>).</p><p>Livebook can be viewed as a next-generation, &quot;supercharged IEx,&quot; and is still getting better. Let&apos;s go into some more detail regarding some of the earlier points I mentioned to show the power and versatility of Livebook.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4D3;</div><div class="kg-callout-text">If you want to see some examples of Livebook in action, you can check out some apps I have deployed to HuggingFace Spaces <a href="https://huggingface.co/spaces/acalejos/livebook-apps?ref=thestackcanary.com" rel="noreferrer">here</a>.</div></div><h3 id="reproducible">Reproducible</h3><p>Livebooks fundamentally consists of a series of code cells (or other cells such as markdown) which are executed in the order they appear (top-down).  Working within the immutable nature of Elixir, each cell receives the output state of the previous cell as its input state, and passes its output state to the next cell, meaning that whenever a cell is run, all previous cells will run first since it depends on their collective state.  This ensures reproducibility of workflows.  Livebook also has the concept of &quot;Sections&quot; and &quot;Forks&quot;, where you can Fork from a section which means that the initial state of the current section relies on the final state of the forked section. This means that Livebook cell execution is represented as a tree, which enables very flexible workflows. </p><p>This is fundamentally different from other notebook execution environments such as <a href="https://jupyter.org/?ref=thestackcanary.com" rel="noreferrer">Jupyter Notebooks</a>, which does not enforce that cells must be executed in order and allows mutable changes to cells such that executing the same cell multiple times can have compounding effects on the state of the notebook. </p><figure class="kg-card kg-embed-card kg-card-hascaption"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Livebook solved one of the biggest problems in Jupyter notebooks - cells are executed in order - but it&apos;s not all clear skies.<br><br>While it solves tons of issues:<br><br>1. deterministic output from rerunning the Livebook<br>2. proper stale cell tracking for efficient re-evaluations<br>3.&#x2026; <a href="https://t.co/2CUR4UQjDi?ref=thestackcanary.com">pic.twitter.com/2CUR4UQjDi</a></p>&#x2014; Thomas Millar (@thmsmlr) <a href="https://twitter.com/thmsmlr/status/1759281738662944954?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">February 18, 2024</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div><figcaption><p><span style="white-space: pre-wrap;">Problems Livebook solves</span></p></figcaption></figure><h3 id="shareable">Shareable</h3><p>One of my favorite decisions that the Livebook team was making a Livebook&apos;s <code>.livemd</code> filetype perfectly valid Markdown, such that you can share Livebooks anywhere that Markdown can be shared. I&apos;ve written several blog posts entirely within Livebook then simply copied the <code>.livemd</code> Markdown into a blog post as Markdown (see <a href="https://www.thestackcanary.com/serving-spam-detection-with-xgboost-and-elixir/" rel="noreferrer">here</a> for an example). </p><p>This is in stark contrast to the format used by Jupyter Notebooks, which uses a custom JSON schema to represent its notebooks, so if you want to share the notebook you either have to export to another format (such as HTML, or PDF) or rely on the hosting service to provide rendering (e.g. GitHub supports rendering <code>.ipynb</code> files).</p><p>Meta information is stored as Markdown comments, so the Livebook application itself can render <strong>additional details</strong>. When exporting a Livebook to Markdown, you also have the option of whether to include the output of the cells, which again, is also just valid Markdown! </p><p>Lastly, Livebook offers a &quot;Run in Livebook&quot; <a href="https://livebook.dev/badge/?ref=thestackcanary.com" rel="noreferrer">badge generator</a> that you can place in the exported Markdown, and the badge will allow a one-click import of the Livebook. You can import Livebooks this way, or many other ways such as from local or cloud storage, from a URL, or from source. </p><h3 id="extensible">Extensible</h3><p>Out of the box, Livebook comes outfitted with several great integrations such as Smart Cells for Slack, Databases (PostgreSQL / MySQL Microsoft SQL Server, and more), Plotting via VegaLite, and more. You can check out the full list of built-in integrations <a href="https://livebook.dev/integrations/?ref=thestackcanary.com" rel="noreferrer">here</a>.</p><p>What&apos;s great about these integrations is that most of them are built on top of the <a href="https://hexdocs.pm/kino/Kino.html?ref=thestackcanary.com" rel="noreferrer">Kino library</a>, and are open-source!  Anyone has the ability to contribute their own extensions using Kino and its various abstractions, such as <a href="https://hexdocs.pm/kino/Kino.JS.html?ref=thestackcanary.com" rel="noreferrer">Kino.JS</a>, <a href="https://hexdocs.pm/kino/Kino.JS.html?ref=thestackcanary.com" rel="noreferrer">Kino.JS.Live</a>, and <a href="https://hexdocs.pm/kino/Kino.SmartCell.html?ref=thestackcanary.com" rel="noreferrer">Kino.SmartCell</a>. These abstractions are built on top of well-established Elixir concepts such as <a href="https://hexdocs.pm/elixir/GenServer.html?ref=thestackcanary.com" rel="noreferrer">GenServers</a>, meaning that you will either already be familiar with the abstraction, or by learning the abstraction you will gain useful experience for use in other Elixir projects. Writing custom Kinos is a great way to dip your toes into writing Client/Server behaviours in Elixir!</p><p>I won&apos;t go into too much detail about the behaviours defined in Kino in this article, but if you&apos;re interested in my preliminary thoughts you can refer to this post where I spoke about it a bit:</p><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">I haven&apos;t taken time to refine my thoughts, but here&apos;s some initial takeaways. If people want to hear more about this maybe I&apos;ll make a blog post:<br><br>First I would say is to evaluate what you need (if any) between a normal Kino.JS, a live <a href="https://t.co/Gspg7o9TWY?ref=thestackcanary.com">https://t.co/Gspg7o9TWY</a>, and a&#x2026;</p>&#x2014; Andr&#xE9;s C Alejos (@ac_alejos) <a href="https://twitter.com/ac_alejos/status/1759334543268430179?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">February 18, 2024</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><p>One example of this extensibility comes from <a href="https://twitter.com/thmsmlr?ref=thestackcanary.com" rel="noreferrer">Thomas Millar</a>, who talks about how he wanted the ability to have Livebook hot-reloading where as soon as he changed a file that the Livebook depends on it re-executes the cell, so he went ahead and built it and shared it with the community!</p><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">What if Livebook had Phoenix.LiveReloader?<br><br>Right now there is a chasm between Mix projects and Livebook. While Livebook gives a REPL-like experience and visuals, Mix gives you testing, multiple files, etc.<br><br>Often I find myself prototyping modules in Livebook, then refactoring&#x2026; <a href="https://t.co/zbDUaWmcm5?ref=thestackcanary.com">pic.twitter.com/zbDUaWmcm5</a></p>&#x2014; Thomas Millar (@thmsmlr) <a href="https://twitter.com/thmsmlr/status/1762210503810507140?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">February 26, 2024</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><p>I&apos;ve also built out a few Kinos for different use cases that I came across and figured I would share. </p><p>Here&apos;s a simple Kino I built to embed YouTube videos using the <a href="https://developers.google.com/youtube/player_parameters?ref=thestackcanary.com#Parameters" rel="noreferrer">YouTube iframe API</a>: </p><figure class="kg-card kg-bookmark-card kg-card-hascaption"><a class="kg-bookmark-container" href="https://github.com/acalejos/kino_youtube?ref=thestackcanary.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - acalejos/kino_youtube: A simple Kino that wraps the YouTube Embedded iFrame API to render a YouTube player in a Livebook.</div><div class="kg-bookmark-description">A simple Kino that wraps the YouTube Embedded iFrame API to render a YouTube player in a Livebook. - acalejos/kino_youtube</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" alt="Livebook: Elixir&apos;s Swiss Army Knife"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">acalejos</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/3ac64ebe736182c0f8cd598ccacfe4edf1f8c2e106ed4e38fa39755b9863ec3d/acalejos/kino_youtube" alt="Livebook: Elixir&apos;s Swiss Army Knife"></div></a><figcaption><p><span style="white-space: pre-wrap;">Kino YouTube</span></p></figcaption></figure><p>Kino has a set of built-in components such as <a href="https://hexdocs.pm/kino/Kino.Control.html?ref=thestackcanary.com#button/1" rel="noreferrer">Kino.Control.Button</a>, <a href="https://hexdocs.pm/kino/Kino.Control.html?ref=thestackcanary.com#form/2" rel="noreferrer">Kino.Control.Form</a>, and even <a href="https://hexdocs.pm/kino/Kino.Input.html?ref=thestackcanary.com#audio/2" rel="noreferrer">Kino.Input.Audio</a>. I was wanting to use the audio input to emit event live during a recording for a project I was working on, but found that the Kino.Input.Audio component only allowed listening to the upload event for the audio recording as a whole audio file, so you couldn&apos;t receive the event with the audio data until the audio finished recording. I decided to write my own Kino for live audio, and published it along with an app showcasing it. </p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/acalejos/kino_live_audio?ref=thestackcanary.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">GitHub - acalejos/kino_live_audio: A Kino designed to record a raw audio stream (no client-side encoding) and emit events.</div><div class="kg-bookmark-description">A Kino designed to record a raw audio stream (no client-side encoding) and emit events. - acalejos/kino_live_audio</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" alt="Livebook: Elixir&apos;s Swiss Army Knife"><span class="kg-bookmark-author">GitHub</span><span class="kg-bookmark-publisher">acalejos</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://opengraph.githubassets.com/3e687ba1614b2dcd90eabfe98a63ed14315ebc3edbf9dd8f96545280c0f6815b/acalejos/kino_live_audio" alt="Livebook: Elixir&apos;s Swiss Army Knife"></div></a></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">I&apos;m planning on creating a 3-part series on making custom Kinos in the near future. If you want to ensure that you see them, make sure to subscribe! </div></div><div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="background-color: #F0F0F0; display: none;">
            
            <div class="kg-signup-card-content">
                
                <div class="kg-signup-card-text ">
                    <h2 class="kg-signup-card-heading"><span style="white-space: pre-wrap;">Sign up for The Stack Canary</span></h2>
                    <p class="kg-signup-card-subheading"><span style="white-space: pre-wrap;">Don&apos;t miss out on learning more about Livebook &amp; Kino!</span></p>
                    
        <form class="kg-signup-card-form" data-members-form="signup">
            
            <div class="kg-signup-card-fields">
                <input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
                <button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
                    <span class="kg-signup-card-button-default">Subscribe</span>
                    <span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
        <g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
            <g class="nc-loop-dots-4-24-icon-o">
                <circle cx="4" cy="12" r="3"/>
                <circle cx="12" cy="12" r="3"/>
                <circle cx="20" cy="12" r="3"/>
            </g>
            <style data-cap="butt">
                .nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
                .nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
                .nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
                .nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
                .nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
                @keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
            </style>
        </g>
    </svg></span>
                </button>
            </div>
            <div class="kg-signup-card-success">
                Email sent! Check your inbox to complete your signup.
            </div>
            <div class="kg-signup-card-error" data-members-error></div>
        </form>
        
                    <p class="kg-signup-card-disclaimer"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
                </div>
            </div>
        </div><h3 id="interactive">Interactive</h3><p>As I showed above, you can add interactive experiences to Livebook using the Kino library. These interactions can be powered by the three major behaviours provided by the Kino library: Kino.JS, Kino.JS.Live, and Kino.SmartCell.</p><p> Here&apos;s the example I mentioned showcasing the <code>kino_live_audio</code> library I wrote and how to use it to make a live Voice Activity Detection app in Livebook! </p><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">I couldn&apos;t find any <a href="https://twitter.com/livebookdev?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">@livebookdev</a> Kino to stream raw audio events, so I went ahead and made one!<br><br>Check out how in less than 90 lines of <a href="https://twitter.com/elixirlang?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">@elixirlang</a> code you can capture audio, predict whether a voice is detected, and plot it live while streaming. <a href="https://twitter.com/hashtag/MyElixirStatus?src=hash&amp;ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">#MyElixirStatus</a> <a href="https://t.co/ZYjlFxL78E?ref=thestackcanary.com">pic.twitter.com/ZYjlFxL78E</a></p>&#x2014; Andr&#xE9;s C Alejos (@ac_alejos) <a href="https://twitter.com/ac_alejos/status/1761520038165520617?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">February 24, 2024</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><p>There are built-in interactive Kinos such as the <a href="https://github.com/livebook-dev/kino_bumblebee?ref=thestackcanary.com" rel="noreferrer"><code>kino_bumblebee</code></a> library, which provides a GUI to the Elixir <a href="https://github.com/elixir-nx/bumblebee?ref=thestackcanary.com" rel="noreferrer">Bumblebee</a> library.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.thestackcanary.com/content/images/2024/03/Kino-Bumblebee-Token-Classification.png" class="kg-image" alt="Livebook: Elixir&apos;s Swiss Army Knife" loading="lazy" width="1852" height="805" srcset="https://www.thestackcanary.com/content/images/size/w600/2024/03/Kino-Bumblebee-Token-Classification.png 600w, https://www.thestackcanary.com/content/images/size/w1000/2024/03/Kino-Bumblebee-Token-Classification.png 1000w, https://www.thestackcanary.com/content/images/size/w1600/2024/03/Kino-Bumblebee-Token-Classification.png 1600w, https://www.thestackcanary.com/content/images/2024/03/Kino-Bumblebee-Token-Classification.png 1852w" sizes="(min-width: 720px) 720px"><figcaption><code spellcheck="false" style="white-space: pre-wrap;"><span>kino_bumblebee</span></code><span style="white-space: pre-wrap;"> SmartCell</span></figcaption></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Want to know more about Bumblebee and other libraries mentioned throughout this article? Then you should read my <a href="https://www.thestackcanary.com/understanding-the-elixir-machine-learning-ecosystem/" rel="noreferrer">Elixir ML Explained</a> article.</div></div><p>There&apos;s also support for the <a href="https://vega.github.io/vega-lite/?ref=thestackcanary.com" rel="noreferrer">VegaLite JavaScript library</a> (via <a href="https://hexdocs.pm/vega_lite/VegaLite.html?ref=thestackcanary.com" rel="noreferrer">Elixir bindings</a>) to build interactive plots and graphics. You can read more about the Vega-Lite capabilities within Livebook <a href="https://github.com/livebook-dev/livebook/blob/main/lib/livebook/notebook/learn/intro_to_vega_lite.livemd?ref=thestackcanary.com" rel="noreferrer">here</a> and you can see some plotting with Vega in action in my post about <a href="https://www.thestackcanary.com/plotting-xgboost-trees-in-elixir/" rel="noreferrer">Plotting in XGBoost</a>, which itself is just a Livebook with Vega plots of decision trees from XGBoost. You can see the <code>.livemd</code> file <a href="https://github.com/acalejos/exgboost/blob/main/notebooks/plotting.livemd?ref=thestackcanary.com" rel="noreferrer">here</a>.</p><h3 id="integrated">Integrated</h3><p>As I mentioned before, Livebook has three runtime options, including an option to attach an instance of Livebook to a running Elixir node. This options provides a ton of flexibility and opportunity to not only use Livebook as the first step in prototyping, but to use it seamlessly during development and even production.</p><p>For example, you could use Livebook to create dashboard of live-running production systems or otherwise introspect into the state of the system.</p><p>Here&apos;s an example of Thomas Millar using Livebook to integrate with the <a href="https://github.com/elixir-wallaby/wallaby?ref=thestackcanary.com" rel="noreferrer">Wallaby</a> library to ease the process of creating automated browser test code.</p><figure class="kg-card kg-embed-card kg-card-hascaption"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Coming soon &#x2728;<br><br>Browser automation tooling in <a href="https://twitter.com/livebookdev?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">@livebookdev</a> <br><br>It&apos;s so tedious to find the right css selectors, so I built a little monkey-see, monkey-do browser recorder that generates Wallaby code. Enjoy!<a href="https://twitter.com/hashtag/myelixirstatus?src=hash&amp;ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">#myelixirstatus</a> <a href="https://t.co/EpPXeJVdyO?ref=thestackcanary.com">pic.twitter.com/EpPXeJVdyO</a></p>&#x2014; Thomas Millar (@thmsmlr) <a href="https://twitter.com/thmsmlr/status/1757128491034624249?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">February 12, 2024</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div><figcaption><p><span style="white-space: pre-wrap;">Livebook Wallaby integration</span></p></figcaption></figure><p>Here&apos;s an example of using my <a href="https://github.com/acalejos/merquery?ref=thestackcanary.com" rel="noreferrer">Merquery</a> SmartCell to automatically create Postman-like cells to test a Phoenix application&apos;s routes with the ability to pre-populate parameter information as well.</p><figure class="kg-card kg-embed-card kg-card-hascaption"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Another day, a bit more progress. <a href="https://twitter.com/shahryar_tbiz?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">@shahryar_tbiz</a> Previously suggested auto generating Postman-style smart cells base on your defined routes. <br><br>I got a working demo of it going, so you can interactively tests all of your routes with one command!<a href="https://twitter.com/hashtag/MyElixirStatus?src=hash&amp;ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">#MyElixirStatus</a> <a href="https://t.co/bEMFoCbwzc?ref=thestackcanary.com">pic.twitter.com/bEMFoCbwzc</a></p>&#x2014; Andr&#xE9;s C Alejos (@ac_alejos) <a href="https://twitter.com/ac_alejos/status/1756551191079592155?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">February 11, 2024</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div><figcaption><p><span style="white-space: pre-wrap;">Merquery Integration with Phoenix Routes</span></p></figcaption></figure><p>Since Livebook is either attached to a running Elixir node, or is a standalone node itself, you can interact with it like you would with any other node on an cluster in Elixir!</p><h3 id="deployable">Deployable</h3><p>Livebook isn&apos;t even necessarily just for prototyping either! Livebook apps can be deployed either locally or into the cloud (<a href="https://livebook.dev/integrations/hugging-face/?ref=thestackcanary.com" rel="noreferrer">first-class support for HuggingFace Spaces</a>). There are many options when deploying Livebook apps, including support for multi-session apps (apps where each new connection spawns a new instance of the app) and password-protected apps. You can choose whether or not to expose the underlying source code to the users, meaning that you can hide proprietary implementation details if you want, or use let others learn from your implementation.</p><p>You also have the option to only include rich output (e.g. the interactive cells I spoke about earlier) in the deployed app, meaning you can create very rich and complex apps and control what gets shown in the deployed app. </p><p>Here are some examples of deployed Livebook applications, and you can see examples of all I just discussed.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://hugobarauna-livebook.hf.space/apps?ref=thestackcanary.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Livebook</div><div class="kg-bookmark-description"></div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://hugobarauna-livebook.hf.space/favicon.svg" alt="Livebook: Elixir&apos;s Swiss Army Knife"></div></div><div class="kg-bookmark-thumbnail"><img src="https://hugobarauna-livebook.hf.space/images/logo.png" alt="Livebook: Elixir&apos;s Swiss Army Knife"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://huggingface.co/spaces/acalejos/livebook-apps?ref=thestackcanary.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Livebook - a Hugging Face Space by acalejos</div><div class="kg-bookmark-description">Discover amazing ML apps made by the community</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://huggingface.co/favicon.ico" alt="Livebook: Elixir&apos;s Swiss Army Knife"><span class="kg-bookmark-author">a Hugging Face Space by acalejos</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://cdn-thumbnails.huggingface.co/social-thumbnails/spaces/acalejos/livebook-apps.png" alt="Livebook: Elixir&apos;s Swiss Army Knife"></div></a></figure><h2 id="bringing-it-all-together">Bringing It All Together</h2><p>Let&apos;s look back at the common Elixir entrypoints I mentioned at the top of this article:</p><figure class="kg-card kg-image-card"><img src="https://www.thestackcanary.com/content/images/2024/03/elixir_points_of_entry.png" class="kg-image" alt="Livebook: Elixir&apos;s Swiss Army Knife" loading="lazy" width="792" height="612" srcset="https://www.thestackcanary.com/content/images/size/w600/2024/03/elixir_points_of_entry.png 600w, https://www.thestackcanary.com/content/images/2024/03/elixir_points_of_entry.png 792w" sizes="(min-width: 720px) 720px"></figure><p>I just showed how Livebook has a ton to offer regardless of which of these points of entry you&apos;re coming from. You can get exposed to backend development since you can write any Elixir code. Kinos are generally implemented as GenServers, which is a core pattern to become familiar with when writing backend Elixir code. You can also use Livebook as one node in a cluster and practice distributed Elixir.</p><p>Livebook itself is a Pheonix LiveView app, so if nothing else, you can refer to the source code for good Phoenix code practices or write Kinos for practice with frontend (albeit, not necessarily with Phoenix). </p><p>Livebook is great for machine learning due to the ability to perform exploratory data analysis with libraries such as <a href="https://github.com/elixir-explorer/explorer?ref=thestackcanary.com" rel="noreferrer">Explorer</a> / <a href="https://github.com/livebook-dev/kino_explorer?ref=thestackcanary.com" rel="noreferrer">Kino Explorer</a>, create new workflows like I showed before with <a href="https://www.thestackcanary.com/serving-spam-detection-with-xgboost-and-elixir/" rel="noreferrer"><em>Serving Spam Detection with XGBoost and Elixir</em></a><em>, </em>work with SmartCells (like <code>kino_bumblebee</code>) to learn and generate code snippets, and much more! </p><p>Lastly, Livebook even works great for folks working in embedded projects since it supports an embedded runtime. In fact, the Nerves Project supports a <a href="https://github.com/nerves-livebook/nerves_livebook/blob/main/README.md?ref=thestackcanary.com" rel="noreferrer">firmware image</a> that comes pre-loaded with Livebook.</p><h2 id="conclusion">Conclusion</h2><p>I hope I convinced you to not only give Livebook a try, but that it should have a permanent spot in your developer toolkit. Whenever I suggest how to get started with Elixir at this point I always point to Livebook. It has so much to offer and can seamlessly grow with you as a developer. When you&apos;re just learning the language it can simply serve as a learning tool, but it has the ability to scale with you and eventually you can use it for production use-cases. </p>]]></content:encoded></item><item><title><![CDATA[Plotting XGBoost Trees in Elixir]]></title><description><![CDATA[XGBoost is one of the most popular Machine Learning tools. Here's how to make beautiful plots for it with Elixir.]]></description><link>https://www.thestackcanary.com/plotting-xgboost-trees-in-elixir/</link><guid isPermaLink="false">65b16c5d6904c319203f2140</guid><category><![CDATA[Elixir]]></category><category><![CDATA[Machine Learning]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Sat, 27 Jan 2024 18:43:06 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2024/01/EXGBoost_Plotting.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.thestackcanary.com/content/images/2024/01/EXGBoost_Plotting.png" alt="Plotting XGBoost Trees in Elixir"><p><a href="https://livebook.dev/run?url=www.thestackcanary.com%2Fplotting-xgboost-trees-in-elixir%2F&amp;ref=thestackcanary.com"><img src="https://livebook.dev/badge/v1/black.svg" alt="Plotting XGBoost Trees in Elixir" loading="lazy"></a></p>
<h1 id="plotting-in-exgboost">Plotting in EXGBoost</h1>
<pre><code class="language-elixir">Mix.install([
  {:exgboost, &quot;~&gt; 0.5&quot;},
  {:scidata, &quot;~&gt; 0.1&quot;},
  {:kino_vega_lite, &quot;~&gt; 0.1&quot;}
])

# This assumed you launch this livebook from its location in the exgboost/notebooks folder
</code></pre>
<h2 id="introduction">Introduction</h2>
<p>Much of the utility from decision trees come from their intuitiveness and ability to inform dcisions outside of the confines of a black-box model. A decision tree can be easily translated to a series of actions that can be taken on behalf of the stakeholder to achieve the desired outcome. This makes them especially useful in business decisions, where people might still want to have the final say but be as informed as possible. Additionally, tabular data is still quite popular in the business domain, which conforms to the required input for decision trees.</p>
<p>Decision trees can be used for both regression and classification tasks, but classification tends to be what is most associated with decision trees.</p>
<!-- livebook:{"break_markdown":true} -->
<p>This notebook will go over some of the details of the <code>EXGBoost.Plotting</code> module, including using preconfiged styles, custom styling, as well as customizing the entire vidualization.</p>
<h2 id="plotting-apis">Plotting APIs</h2>
<p>There are 2 main APIs exposed to control plotting in <code>EXGBoost</code>:</p>
<ul>
<li>
<p>Top-level API (<code>EXGBoost.plot_tree/2</code>)</p>
<ul>
<li>Using predefined styles</li>
<li>Defining custom styles</li>
<li>Mix of the first 2</li>
</ul>
</li>
<li>
<p><code>EXBoost.Plotting</code> module API</p>
<ul>
<li>Use the Vega <code>data</code> spec defined in <code>EXGBoost.get_data_spec/2</code></li>
<li>Define your own Vega spec using the data from either <code>EXGBoost.Plotting.to_tabular/1</code> or some other means</li>
</ul>
<p>We will walk through each of these in detail.</p>
</li>
</ul>
<p>Regardless of which API you choose to use, it is helpful to understand how the plotting module works (althought the higher-level API you choose to work with the less important it becomes).</p>
<h2 id="implementation-details">Implementation Details</h2>
<p>The plotting functionality provided in <code>EXGBoost</code> is powered by the <a href="https://vega.github.io/vega/?ref=thestackcanary.com">Vega</a> JavaScript library and the Elixir <a href="https://hexdocs.pm/vega_lite/VegaLite.html?ref=thestackcanary.com"><code>VegaLite</code></a> library which provides the piping to interop with the JavaScript libraries.  <strong>We do not actually much use the Elixir API provided by the Elixir VegaLite library. It is mainly used for the purposes of rendering.</strong></p>
<p>Vega is a plotting library built on top of the very powerful <a href="https://d3js.org/?ref=thestackcanary.com">D3</a> JavaScript library. Vega visualizations are defined according to the respective JSON Schema specification. Vega-Lite offers a <a href="https://vega.github.io/schema/vega-lite/v5.json?ref=thestackcanary.com">reduced schema</a> compared to the <a href="https://vega.github.io/schema/vega/v5.json?ref=thestackcanary.com">full Vega spec</a>. <code>EXGBoost.Plotting</code> leverages several transforms which are not available in the reduced Vega-Lite schema, which is the reason for targeting the lower-level API.</p>
<p>For these reasons, unfortunately we could not just implement plotting for <code>EXGBoost</code> as a composable Vega-Lite pipeline. This makes working synamically with the spec a bit more unwieldly, but much care was taken to still make the high-level plotting API extensible, and if needed you can go straight to defining your own JSON spec.</p>
<h2 id="setup-data">Setup Data</h2>
<p>We will still be using the Iris dataset for this notebook, but if you want more details about the process of training and evaluating a model please check out the <code>Iris Classification with Gradient Boosting</code> notebook.</p>
<p>So let&apos;s proceed by setting up the Iris dataset.</p>
<pre><code class="language-elixir">{x, y} = Scidata.Iris.download()
data = Enum.zip(x, y) |&gt; Enum.shuffle()
{train, test} = Enum.split(data, ceil(length(data) * 0.8))
{x_train, y_train} = Enum.unzip(train)
{x_test, y_test} = Enum.unzip(test)

x_train = Nx.tensor(x_train)
y_train = Nx.tensor(y_train)

x_test = Nx.tensor(x_test)
y_test = Nx.tensor(y_test)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code>#Nx.Tensor&lt;
  s64[30]
  [2, 1, 0, 0, 2, 2, 2, 1, 2, 2, 2, 0, 1, 0, 0, 2, 1, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 2, 1, 2]
&gt;
</code></pre>
<h2 id="train-your-booster">Train Your Booster</h2>
<p>Now go ahead and train your booster. We will use <code>early_stopping_rounds: 1</code> because we&apos;re not interested in the accuracy of the booster for this demonstration (<em>Note that we need to set <code>evals</code> to use early stopping</em>).</p>
<p>You will notice that <code>EXGBoost</code> also provides an implementation for <code>Kino.Render</code> so that <code>EXGBoost.Booster</code>s are rendered as a plot by default.</p>
<pre><code class="language-elixir">booster =
  EXGBoost.train(
    x_train,
    y_train,
    num_class: 3,
    objective: :multi_softprob,
    num_boost_rounds: 10,
    evals: [{x_train, y_train, &quot;training&quot;}],
    verbose_eval: false,
    early_stopping_rounds: 1
  )
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;f0&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;f0&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;f1&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f1&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;f1&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f0&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;f1&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f1&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;f1&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f1&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;f1&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;f0&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;f0&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;f1&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;f0&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;f2&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;f3&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;f1&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;vertical&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x)&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y)&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x)&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:0},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>You&apos;ll notice that the plot doesn&apos;t display any labels to the features in the splits, and instead only shows features labelled as &quot;f2&quot; etc. If you provide feature labels during training, your plot will show the splits using the feature labels.</p>
<pre><code class="language-elixir">booster =
  EXGBoost.train(x_train, y_train,
    num_class: 3,
    objective: :multi_softprob,
    num_boost_rounds: 10,
    evals: [{x_train, y_train, &quot;training&quot;}],
    verbose_eval: false,
    feature_name: [&quot;sepal length&quot;, &quot;sepal width&quot;, &quot;petal length&quot;, &quot;petal width&quot;],
    early_stopping_rounds: 1
  )
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;vertical&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x)&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y)&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x)&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:0},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<h2 id="top-level-api">Top-Level API</h2>
<p><code>EXGBoost.plot_tree/2</code> is the quickest way to customize the output of the plot.</p>
<p>This API uses <a href="https://vega.github.io/vega/docs/marks/?ref=thestackcanary.com">Vega <code>Mark</code>s</a> to describe the plot. Each of the following <code>Mark</code> options accepts any of the valid keys from their respective <code>Mark</code> type as described in the Vega documentation.</p>
<p><strong>Please note that these are passed as a <code>Keyword</code>, and as such the keys must be atoms rather than strings as the Vega docs show. Valid options for this API are <code>camel_cased</code> atoms as opposed to the <code>pascalCased</code> strings the Vega docs describe, so if you wish to pass <code>&quot;fontSize&quot;</code> as the Vega docs show, you would instead pass it as <code>font_size:</code> in this API.</strong></p>
<p>The plot is composed of the following parts:</p>
<ul>
<li>Top-level keys: Options controlling parts of the plot outside of direct control of a <code>Mark</code>, such as <code>:padding</code>, <code>:autosize</code>, etc. Accepts any Vega top-level <a href="https://vega.github.io/vega/docs/specification/?ref=thestackcanary.com">top-level key</a> in addition to several specific to this API (scuh as <code>:style</code> and <code>:depth</code>).</li>
<li><code>:leaves</code>: <code>Mark</code> specifying the leaf nodes of the tree
<ul>
<li><code>:text</code>: <a href="https://vega.github.io/vega/docs/marks/text/?ref=thestackcanary.com">Text Mark</a></li>
<li><code>:rect</code>: <a href="https://vega.github.io/vega/docs/marks/rect/?ref=thestackcanary.com">Rect Mark</a></li>
</ul>
</li>
<li><code>:splits</code> <code>Mark</code> specifying the split (or inner / decision) nodes of the tree
<ul>
<li><code>:text</code>: <a href="https://vega.github.io/vega/docs/marks/text/?ref=thestackcanary.com">Text Mark</a></li>
<li><code>:rect</code>: <a href="https://vega.github.io/vega/docs/marks/rect/?ref=thestackcanary.com">Rect Mark</a></li>
<li><code>:children</code>: <a href="https://vega.github.io/vega/docs/marks/text/?ref=thestackcanary.com">Text Mark</a> for the child count</li>
</ul>
</li>
<li><code>:yes</code>
<ul>
<li><code>:path</code>: <a href="https://vega.github.io/vega/docs/marks/path/?ref=thestackcanary.com">Path Mark</a></li>
<li><code>:text</code>: <a href="https://vega.github.io/vega/docs/marks/text/?ref=thestackcanary.com">Text Mark</a></li>
</ul>
</li>
<li><code>:no</code>
<ul>
<li><code>:path</code>: <a href="https://vega.github.io/vega/docs/marks/path/?ref=thestackcanary.com">Path Mark</a></li>
<li><code>:text</code>: <a href="https://vega.github.io/vega/docs/marks/text/?ref=thestackcanary.com">Text Mark</a></li>
</ul>
</li>
</ul>
<p><code>EXGBoost.plot_tree/2</code> defaults to outputting a <code>VegaLite</code> struct. If you pass the <code>:path</code> option it will save to a file instead.</p>
<p>If you want to add any marks to the underlying plot you will have to use the lower-level <code>EXGBoost.Plotting</code> API, as the top-level API is only capable of customizing these marks.</p>
<!-- livebook:{"break_markdown":true} -->
<h3 id="top-level-keys">Top-Level Keys</h3>
<!-- livebook:{"break_markdown":true} -->
<p><code>EXGBoost</code> supports changing the direction of the plots through the <code>:rankdir</code> option. Avaiable directions are <code>[:tb, :bt, :lr, :rl]</code>, with top-to-bottom (<code>:tb</code>) being the default.</p>
<pre><code class="language-elixir">EXGBoost.plot_tree(booster, rankdir: :bt)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;-1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;vertical&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x)&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y)&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x)&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:0},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>By default, plotting only shows one (the first) tree, but seeing as a <code>Booster</code> is really an ensemble of trees you can choose which tree to plot through the <code>:index</code> option, or set to <code>nil</code> to have a dropdown box to select the tree.</p>
<pre><code class="language-elixir">EXGBoost.plot_tree(booster, rankdir: :lr, index: 4)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;horizontal&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x) + scaledNodeWidth/2&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y) - scaledNodeHeight/2&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x) - scaledNodeWidth/2&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight/2&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y-nodeWidth/3) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:4},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>You&apos;ll also notice that the plot is interactive, with support for scrolling, zooming, and collapsing sections of the tree. If you click on a split node you will toggle the visibility of its descendents, and the rest of the tree will fill the canvas.</p>
<p>You can also use the <code>:depth</code> option to programatically set the max depth to display in the tree:</p>
<pre><code class="language-elixir">EXGBoost.plot_tree(booster, rankdir: :lr, index: 4, depth: 3)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;horizontal&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x) + scaledNodeWidth/2&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y) - scaledNodeHeight/2&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x) - scaledNodeWidth/2&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight/2&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y-nodeWidth/3) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:4},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>One way to affect the canvas size is by controlling the padding.</p>
<p>You can add padding to all side by specifying an integer for the <code>:padding</code> option</p>
<pre><code class="language-elixir">EXGBoost.plot_tree(booster, rankdir: :rl, index: 4, depth: 3, padding: 50)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;-1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;horizontal&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x) - scaledNodeWidth/2&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y) - scaledNodeHeight/2&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x) + scaledNodeWidth/2&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight/2&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x+nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y-nodeWidth/3) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x+nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:50,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:4},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>Or specify padding for each side:</p>
<pre><code class="language-elixir">EXGBoost.plot_tree(booster,
  rankdir: :lr,
  index: 4,
  depth: 3,
  padding: [top: 5, bottom: 25, left: 50, right: 10]
)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;horizontal&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x) + scaledNodeWidth/2&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y) - scaledNodeHeight/2&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x) - scaledNodeWidth/2&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight/2&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y-nodeWidth/3) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:{&quot;bottom&quot;:25,&quot;left&quot;:50,&quot;right&quot;:10,&quot;top&quot;:5},&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:4},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>You can also specify the canvas size using the <code>:width</code> and <code>:height</code> options:</p>
<pre><code class="language-elixir">EXGBoost.plot_tree(booster,
  rankdir: :lr,
  index: 4,
  depth: 3,
  width: 500,
  height: 500
)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;horizontal&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x) + scaledNodeWidth/2&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y) - scaledNodeHeight/2&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x) - scaledNodeWidth/2&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight/2&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:500,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y-nodeWidth/3) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:4},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:500}
</code></pre>
<p>But do note that changing the padding of a canvas does change the size, even if you specify the size using <code>:height</code> and <code>:width</code></p>
<pre><code class="language-elixir">EXGBoost.plot_tree(booster,
  rankdir: :lr,
  index: 4,
  depth: 3,
  width: 500,
  height: 500,
  padding: 10
)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;horizontal&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x) + scaledNodeWidth/2&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y) - scaledNodeHeight/2&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x) - scaledNodeWidth/2&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight/2&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:500,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y-nodeWidth/3) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:10,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:4},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:500}
</code></pre>
<p>You can change the dimensions of all nodes through the <code>:node_height</code> and <code>:node_width</code> options:</p>
<pre><code class="language-elixir">EXGBoost.plot_tree(booster, rankdir: :lr, index: 4, depth: 3, node_width: 60, node_height: 60)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;horizontal&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x) + scaledNodeWidth/2&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y) - scaledNodeHeight/2&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x) - scaledNodeWidth/2&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight/2&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y-nodeWidth/3) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:4},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:60},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:25},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:60},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:60},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>Or change the space between nodes using the <code>:space_between</code> option.</p>
<p><strong>Note that the size of the accompanying nodes and/or text will change to accomodate the new <code>:space_between</code> option while trying to maintain the canvas size.</strong></p>
<pre><code class="language-elixir">EXGBoost.plot_tree(
  booster,
  rankdir: :lr,
  index: 4,
  depth: 3,
  space_between: [nodes: 200]
)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;horizontal&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x) + scaledNodeWidth/2&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y) - scaledNodeHeight/2&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x) - scaledNodeWidth/2&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight/2&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y-nodeWidth/3) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:4},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:200},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>So if you want to add the space between while not changing the size of the nodes you might need to manually adjust the canvas size:</p>
<pre><code class="language-elixir">EXGBoost.plot_tree(
  booster,
  rankdir: :lr,
  index: 4,
  depth: 3,
  space_between: [nodes: 200],
  height: 800
)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;horizontal&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x) + scaledNodeWidth/2&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y) - scaledNodeHeight/2&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x) - scaledNodeWidth/2&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight/2&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:800,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y-nodeWidth/3) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:4},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:200},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<pre><code class="language-elixir">EXGBoost.plot_tree(
  booster,
  rankdir: :lr,
  index: 4,
  depth: 3,
  space_between: [levels: 200]
)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;horizontal&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x) + scaledNodeWidth/2&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y) - scaledNodeHeight/2&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x) - scaledNodeWidth/2&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight/2&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y-nodeWidth/3) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:4},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:200},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<h3 id="mark-options">Mark Options</h3>
<p>The options controlling the appearance of individual marks all conform to a similar API. You can refer to the options and pre-defined defaults for a subset of the allowed options, but you can also pass other options so long as they are allowed by the Vega Mark spec (as defined <a href="#cell-y5oxrrri4daa6xt5">here</a>)</p>
<pre><code class="language-elixir">EXGBoost.plot_tree(
  booster,
  rankdir: :bt,
  index: 4,
  depth: 3,
  space_between: [levels: 200],
  yes: [
    text: [font_size: 18, fill: :teal]
  ],
  no: [
    text: [font_size: 20]
  ],
  node_width: 100
)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;-1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;vertical&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x)&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y)&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x)&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;teal&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(18/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(20/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:4},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:200},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>Most marks accept an <code>:opacity</code> option that you can use to effectively hide the mark:</p>
<pre><code class="language-elixir">EXGBoost.plot_tree(
  booster,
  rankdir: :lr,
  index: 4,
  depth: 3,
  splits: [
    text: [opacity: 0],
    rect: [opacity: 0],
    children: [opacity: 1]
  ]
)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;y&quot;,&quot;x&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;horizontal&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x) + scaledNodeWidth/2&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y) - scaledNodeHeight/2&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x) - scaledNodeWidth/2&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight/2&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y-nodeWidth/3) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:0},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;opacity&quot;:{&quot;value&quot;:0},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:4},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>And <code>text</code> marks accept normal text options such as <code>:fill</code>, <code>:font_size</code>, and <code>:font</code>:</p>
<pre><code class="language-elixir">EXGBoost.plot_tree(
  booster,
  node_width: 250,
  splits: [
    text: [font: &quot;Helvetica Neue&quot;, font_size: 20, fill: &quot;orange&quot;]
  ],
  space_between: [levels: 20]
)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#282a36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;vertical&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x)&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y)&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x)&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#50fa7b&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff5555&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;orange&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Helvetica Neue&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(20/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#44475a&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#ff79c6&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#f8f8f2&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:0},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:20},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:160},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:250},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<h3 id="styles">Styles</h3>
<p>There are a set of provided pre-configured settings for the top-level API that you may optionally use. You can refer to the <code>EXGBoost.Plottings.Styles</code> docs to see a gallery of each style in action. You can specify a style with the <code>:style</code> option in <code>EXGBoost.plot_tree/2</code>.</p>
<p>You can still specify custom settings along with using a style. Most styles only specify a subset of the total possible settings, but you are free to specify any other allowed keys and they will be merged with the style. Any options passed explicitly to the option <strong>does</strong> take precedence over the style options.</p>
<p>For example, let&apos;s look at the <code>:solarized_dark</code> style:</p>
<pre><code class="language-elixir">EXGBoost.Plotting.solarized_dark() |&gt; Keyword.take([:background, :height]) |&gt; IO.inspect()
EXGBoost.plot_tree(booster, style: :solarized_dark)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code>[background: &quot;#002b36&quot;]
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;#002b36&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;vertical&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x)&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y)&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x)&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#859900&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#dc322f&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#586e75&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#839496&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#073642&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#586e75&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#839496&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:0},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>You can see that it defines a background color of <code>#002b36</code> but does not restrict what the height must be.</p>
<pre><code class="language-elixir">EXGBoost.plot_tree(booster, style: :solarized_dark, background: &quot;white&quot;, height: 200)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;white&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;vertical&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x)&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y)&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x)&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:200,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#859900&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#dc322f&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#586e75&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#839496&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#073642&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#586e75&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#839496&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:0},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>We specified both <code>:background</code> and <code>:height</code> here, and the background specified in the option supercedes the one from the style.</p>
<p>You can also always get the style specification as a <code>Keyword</code> which can be passed to <code>EXGBoost.plot_tree/2</code> manually, making any needed changes yourself, like so:</p>
<pre><code class="language-elixir">custom_style = EXGBoost.Plotting.solarized_dark() |&gt; Keyword.put(:background, &quot;white&quot;)
EXGBoost.plot_tree(booster, style: custom_style)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-vega-lite">{&quot;$schema&quot;:&quot;https://vega.github.io/schema/vega/v5.json&quot;,&quot;autosize&quot;:&quot;fit&quot;,&quot;background&quot;:&quot;white&quot;,&quot;data&quot;:[{&quot;name&quot;:&quot;tree&quot;,&quot;values&quot;:[{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:0,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.425454557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218918934,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:0,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:1,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.212727293,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:1,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:1,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.410982668,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:1,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.211034521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:1,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:2,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.218530372,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-7.66345476e-9,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:2,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0719999969,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:2,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.128571421,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.422068983,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:2,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:3,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.292982191,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195790753,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:3,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:4,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18925412,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:4,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:4,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:4,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.110490814,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.295589149,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0065466417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:4,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00258299569,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.187741965,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:4,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:5,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:5,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.195117101,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.00513018994,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:5,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0662105083,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.283106089,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:5,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:6,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.234668195,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.18040958,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:6,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:7,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.173018426,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:7,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5,&quot;tree_id&quot;:7,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:7,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0843105838,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.236887291,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0104054213,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:7,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0072258329,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.171714455,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:7,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:8,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.179455951,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0102903834,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:8,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0586014725,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:8,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.068535842,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.2342868,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:8,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:9,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.202173784,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.169466257,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:9,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:10,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160806924,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:10,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.203813776,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.046239242,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:10,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:10,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145340025,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.123540193,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.160442933,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:10,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:11,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.168171152,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0149572417,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:11,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:11,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.195176765,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0395982973,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.204244092,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:11,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:12,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.181544691,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.161027163,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:12,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:13,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.150903225,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:13,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:13,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.18685849,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:13,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13117227,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.077316612,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.15599905,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:13,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:14,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:14,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.159298271,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0134122102,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:14,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0381595641,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:14,&quot;yes&quot;:8},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:2,&quot;tree_id&quot;:14,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.00389169785,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.101416349,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:8,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.186925322,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:14,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:15,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.16711998,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.154198557,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:15,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:16,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142255381,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:16,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:16,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.172067791,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:16,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.121421516,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.073711507,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148049027,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:16,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:17,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.151937172,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0142573239,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:17,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:17,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.153471231,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0392971113,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.168022811,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:17,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:18,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.156131104,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.148197949,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:18,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:19,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.134196311,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:19,&quot;yes&quot;:4},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:4,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:19,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.160865128,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:4,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:4,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:19,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110056646,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0594659112,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.139969245,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:19,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:20,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:20,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.145403519,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0147723975,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:3.20000005,&quot;tree_id&quot;:20,&quot;yes&quot;:6},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:20,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0483957976,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.162800461,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:10,&quot;no&quot;:11,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:20,&quot;yes&quot;:10},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0793080404,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:10,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.112726398,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:11,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:20,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:21,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.14705947,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.142660394,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:21,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:22,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:22,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.12631698,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:22,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.151711732,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:22,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.101206295,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0569678135,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.132955521,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:22,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.60000002,&quot;tree_id&quot;:23,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:4.9000001,&quot;tree_id&quot;:23,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.1391913,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0150168026,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:23,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.014580613,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:3,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:3,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:23,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0168433767,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.154607058,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:23,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:24,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.139016181,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.13727048,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:24,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:25,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:25,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.118402772,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.79999995,&quot;tree_id&quot;:25,&quot;yes&quot;:6},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:5.19999981,&quot;tree_id&quot;:25,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.0103592547,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.152987525,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:6,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0338534117,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.126058802,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:25,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:26,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:26,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.137931168,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:26,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.116194524,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0252925735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.148122758,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:26,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:27,&quot;yes&quot;:2},{&quot;depth&quot;:null,&quot;leaf&quot;:0.131407082,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131564274,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:27,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:28,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:3,&quot;tree_id&quot;:28,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.110398278,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:28,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.135915175,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:3,&quot;leaf&quot;:null,&quot;missing&quot;:8,&quot;no&quot;:9,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:&quot;sepal length&quot;,&quot;split_condition&quot;:6,&quot;tree_id&quot;:28,&quot;yes&quot;:8},{&quot;depth&quot;:null,&quot;leaf&quot;:0.01785478,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:8,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0288929809,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:9,&quot;parentid&quot;:7,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.117059968,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:28,&quot;yes&quot;:null},{&quot;depth&quot;:0,&quot;leaf&quot;:null,&quot;missing&quot;:2,&quot;no&quot;:3,&quot;nodeid&quot;:1,&quot;parentid&quot;:null,&quot;split&quot;:&quot;petal length&quot;,&quot;split_condition&quot;:5.0999999,&quot;tree_id&quot;:29,&quot;yes&quot;:2},{&quot;depth&quot;:1,&quot;leaf&quot;:null,&quot;missing&quot;:4,&quot;no&quot;:5,&quot;nodeid&quot;:2,&quot;parentid&quot;:1,&quot;split&quot;:&quot;petal width&quot;,&quot;split_condition&quot;:1.70000005,&quot;tree_id&quot;:29,&quot;yes&quot;:4},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.131456167,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:4,&quot;parentid&quot;:2,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:2,&quot;leaf&quot;:null,&quot;missing&quot;:6,&quot;no&quot;:7,&quot;nodeid&quot;:5,&quot;parentid&quot;:2,&quot;split&quot;:&quot;sepal width&quot;,&quot;split_condition&quot;:2.9000001,&quot;tree_id&quot;:29,&quot;yes&quot;:6},{&quot;depth&quot;:null,&quot;leaf&quot;:0.108389735,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:6,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:-0.0236288365,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:7,&quot;parentid&quot;:5,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null},{&quot;depth&quot;:null,&quot;leaf&quot;:0.138706177,&quot;missing&quot;:null,&quot;no&quot;:null,&quot;nodeid&quot;:3,&quot;parentid&quot;:1,&quot;split&quot;:null,&quot;split_condition&quot;:null,&quot;tree_id&quot;:29,&quot;yes&quot;:null}]},{&quot;name&quot;:&quot;treeCalcs&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;}]},{&quot;name&quot;:&quot;treeChildren&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:[&quot;childrenObjects&quot;],&quot;fields&quot;:[&quot;parentid&quot;],&quot;groupby&quot;:[&quot;parentid&quot;],&quot;ops&quot;:[&quot;values&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;childrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeAncestors&quot;,&quot;source&quot;:&quot;treeCalcs&quot;,&quot;transform&quot;:[{&quot;as&quot;:&quot;treeAncestors&quot;,&quot;expr&quot;:&quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;fields&quot;:[&quot;treeAncestors&quot;],&quot;type&quot;:&quot;flatten&quot;},{&quot;as&quot;:&quot;allParents&quot;,&quot;expr&quot;:&quot;datum.treeAncestors.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeChildrenAll&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;allParents&quot;,&quot;nodeid&quot;,&quot;name&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;as&quot;:[&quot;allChildrenObjects&quot;,&quot;allChildrenCount&quot;,&quot;id&quot;],&quot;fields&quot;:[&quot;parentid&quot;,&quot;parentid&quot;,&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;allParents&quot;],&quot;ops&quot;:[&quot;values&quot;,&quot;count&quot;,&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;},{&quot;as&quot;:&quot;allChildrenIds&quot;,&quot;expr&quot;:&quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;treeClickStoreTemp&quot;,&quot;source&quot;:&quot;treeAncestors&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;type&quot;:&quot;project&quot;},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;groupby&quot;:[&quot;nodeid&quot;,&quot;parentid&quot;,&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;ops&quot;:[&quot;min&quot;],&quot;type&quot;:&quot;aggregate&quot;}]},{&quot;name&quot;:&quot;treeClickStorePerm&quot;,&quot;on&quot;:[{&quot;insert&quot;:&quot;data(&apos;treeClickStoreTemp&apos;)&quot;,&quot;trigger&quot;:&quot;startingDepth &gt;= 0&quot;},{&quot;insert&quot;:&quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;},{&quot;remove&quot;:&quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;,&quot;trigger&quot;:&quot;node&quot;}],&quot;values&quot;:[]},{&quot;name&quot;:&quot;treeLayout&quot;,&quot;source&quot;:&quot;tree&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.tree_id === selectedTree&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;},{&quot;key&quot;:&quot;nodeid&quot;,&quot;parentKey&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;stratify&quot;},{&quot;as&quot;:[&quot;x&quot;,&quot;y&quot;,&quot;depth&quot;,&quot;children&quot;],&quot;method&quot;:&quot;tidy&quot;,&quot;nodeSize&quot;:[{&quot;signal&quot;:&quot;nodeWidth + spaceBetweenNodes&quot;},{&quot;signal&quot;:&quot;nodeHeight+ spaceBetweenLevels&quot;}],&quot;separation&quot;:{&quot;signal&quot;:&quot;false&quot;},&quot;type&quot;:&quot;tree&quot;},{&quot;as&quot;:&quot;y&quot;,&quot;expr&quot;:&quot;1*(datum.y+(height/10))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;x&quot;,&quot;expr&quot;:&quot;1*(datum.x+(width/2))&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;field&quot;:&quot;x&quot;,&quot;signal&quot;:&quot;x_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;field&quot;:&quot;y&quot;,&quot;signal&quot;:&quot;y_extent&quot;,&quot;type&quot;:&quot;extent&quot;},{&quot;as&quot;:&quot;xscaled&quot;,&quot;expr&quot;:&quot;scale(&apos;xscale&apos;,datum.x)&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;parent&quot;,&quot;expr&quot;:&quot;datum.parentid&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;fullTreeLayout&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildren&quot;,&quot;key&quot;:&quot;parentid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;childrenObjects&quot;,&quot;childrenIds&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeChildrenAll&quot;,&quot;key&quot;:&quot;allParents&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;allChildrenIds&quot;,&quot;allChildrenObjects&quot;]},{&quot;fields&quot;:[&quot;nodeid&quot;],&quot;from&quot;:&quot;treeCalcs&quot;,&quot;key&quot;:&quot;nodeid&quot;,&quot;type&quot;:&quot;lookup&quot;,&quot;values&quot;:[&quot;children&quot;]},{&quot;as&quot;:&quot;treeParent&quot;,&quot;expr&quot;:&quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,&quot;type&quot;:&quot;formula&quot;},{&quot;as&quot;:&quot;isLeaf&quot;,&quot;expr&quot;:&quot;datum.leaf == null&quot;,&quot;type&quot;:&quot;formula&quot;}]},{&quot;name&quot;:&quot;splitNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;leafNodes&quot;,&quot;source&quot;:&quot;fullTreeLayout&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;links&quot;,&quot;source&quot;:&quot;treeLayout&quot;,&quot;transform&quot;:[{&quot;type&quot;:&quot;treelinks&quot;},{&quot;orient&quot;:&quot;vertical&quot;,&quot;shape&quot;:&quot;line&quot;,&quot;sourceX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.source.x)&quot;},&quot;sourceY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.source.y)&quot;},&quot;targetX&quot;:{&quot;expr&quot;:&quot;scale(&apos;xscale&apos;, datum.target.x)&quot;},&quot;targetY&quot;:{&quot;expr&quot;:&quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight&quot;},&quot;type&quot;:&quot;linkpath&quot;},{&quot;expr&quot;:&quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;yesPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes === datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]},{&quot;name&quot;:&quot;noPaths&quot;,&quot;source&quot;:&quot;links&quot;,&quot;transform&quot;:[{&quot;expr&quot;:&quot;datum.source.yes !== datum.target.nodeid &quot;,&quot;type&quot;:&quot;filter&quot;}]}],&quot;height&quot;:400,&quot;marks&quot;:[{&quot;encode&quot;:{&quot;stroke&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;path&quot;:{&quot;field&quot;:&quot;path&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;strokeWidth&quot;:{&quot;signal&quot;:&quot;indexof(nodeHighlight, datum.target.nodeid)&gt; -1? 2:1&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;interactive&quot;:false,&quot;type&quot;:&quot;path&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#859900&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;yes&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;yesPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#dc322f&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;text&quot;:{&quot;value&quot;:&quot;no&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scale(&apos;xscale&apos;, datum.source.x-nodeWidth/4) + scale(&apos;xscale&apos;, datum.target.x)) / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;(scale(&apos;yscale&apos;, datum.source.y) + scale(&apos;yscale&apos;, datum.target.y)) / 2 - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;noPaths&quot;},&quot;type&quot;:&quot;text&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#586e75&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;splitNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#839496&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;bold&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.split + &apos; &lt;= &apos; + format(parent.split_condition, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;(scaledNodeWidth / 2)&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;},{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;right&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;stroke&quot;:{&quot;value&quot;:&quot;#657b83&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;text&quot;:{&quot;signal&quot;:&quot;parent.children&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;item.mark.group.width - (9/ span(xdom))*width&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;item.mark.group.height/2&quot;}}},&quot;interactive&quot;:false,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;group&quot;},{&quot;clip&quot;:false,&quot;encode&quot;:{&quot;update&quot;:{&quot;cornerRadius&quot;:{&quot;value&quot;:2},&quot;cursor&quot;:{&quot;signal&quot;:&quot;datum.children &gt; 0 ? &apos;pointer&apos; : &apos;&apos; &quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#073642&quot;},&quot;height&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight&quot;},&quot;opacity&quot;:{&quot;value&quot;:1},&quot;stroke&quot;:{&quot;value&quot;:&quot;#586e75&quot;},&quot;strokewidth&quot;:{&quot;value&quot;:1},&quot;tooltip&quot;:{&quot;signal&quot;:&quot;&quot;},&quot;width&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;datum.xscaled - (scaledNodeWidth / 2)&quot;},&quot;yc&quot;:{&quot;signal&quot;:&quot;scale(&apos;yscale&apos;,datum.y) - (scaledNodeHeight/2)&quot;}}},&quot;from&quot;:{&quot;data&quot;:&quot;leafNodes&quot;},&quot;marks&quot;:[{&quot;encode&quot;:{&quot;update&quot;:{&quot;align&quot;:{&quot;value&quot;:&quot;center&quot;},&quot;baseline&quot;:{&quot;value&quot;:&quot;middle&quot;},&quot;fill&quot;:{&quot;value&quot;:&quot;#839496&quot;},&quot;font&quot;:{&quot;value&quot;:&quot;Calibri&quot;},&quot;fontSize&quot;:{&quot;signal&quot;:&quot;(13/ span(xdom))*width&quot;},&quot;fontsize&quot;:{&quot;value&quot;:12},&quot;fontstyle&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;fontweight&quot;:{&quot;value&quot;:&quot;normal&quot;},&quot;limit&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth-scaledLimit&quot;},&quot;text&quot;:{&quot;signal&quot;:&quot;&apos;leaf = &apos; + format(parent.leaf, &apos;.2f&apos;)&quot;},&quot;x&quot;:{&quot;signal&quot;:&quot;scaledNodeWidth / 2&quot;},&quot;y&quot;:{&quot;signal&quot;:&quot;scaledNodeHeight / 2&quot;}}},&quot;interactive&quot;:false,&quot;name&quot;:&quot;title&quot;,&quot;type&quot;:&quot;text&quot;}],&quot;name&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;group&quot;}],&quot;padding&quot;:30,&quot;scales&quot;:[{&quot;domain&quot;:{&quot;signal&quot;:&quot;xdom&quot;},&quot;name&quot;:&quot;xscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;xrange&quot;},&quot;zero&quot;:false},{&quot;domain&quot;:{&quot;signal&quot;:&quot;ydom&quot;},&quot;name&quot;:&quot;yscale&quot;,&quot;range&quot;:{&quot;signal&quot;:&quot;yrange&quot;},&quot;zero&quot;:false}],&quot;signals&quot;:[{&quot;name&quot;:&quot;selectedTree&quot;,&quot;value&quot;:0},{&quot;name&quot;:&quot;node&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.nodeid&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;nodeHighlight&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;mouseover&quot;},{&quot;markname&quot;:&quot;leafNode&quot;,&quot;type&quot;:&quot;mouseover&quot;}],&quot;update&quot;:&quot;pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;)&quot;},{&quot;events&quot;:{&quot;type&quot;:&quot;mouseout&quot;},&quot;update&quot;:&quot;[0]&quot;}],&quot;value&quot;:&quot;[0]&quot;},{&quot;name&quot;:&quot;isExpanded&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;markname&quot;:&quot;splitNode&quot;,&quot;type&quot;:&quot;click&quot;},&quot;update&quot;:&quot;datum.children &gt; 0 &amp;&amp; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.childrenIds[0]) ? true : false&quot;}],&quot;value&quot;:0},{&quot;name&quot;:&quot;xrange&quot;,&quot;update&quot;:&quot;[0, width]&quot;},{&quot;name&quot;:&quot;yrange&quot;,&quot;update&quot;:&quot;[0, height]&quot;},{&quot;name&quot;:&quot;down&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;xy()&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;xcur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(xdom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;ycur&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;mousedown&quot;,&quot;update&quot;:&quot;slice(ydom)&quot;}],&quot;value&quot;:null},{&quot;name&quot;:&quot;delta&quot;,&quot;on&quot;:[{&quot;events&quot;:[{&quot;between&quot;:[{&quot;type&quot;:&quot;mousedown&quot;},{&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mouseup&quot;}],&quot;consume&quot;:true,&quot;source&quot;:&quot;window&quot;,&quot;type&quot;:&quot;mousemove&quot;}],&quot;update&quot;:&quot;down ? [down[0]-x(), down[1]-y()] : [0,0]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;anchor&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel&quot;,&quot;update&quot;:&quot;[invert(&apos;xscale&apos;, x()), invert(&apos;yscale&apos;, y())]&quot;}],&quot;value&quot;:[0,0]},{&quot;name&quot;:&quot;xext&quot;,&quot;update&quot;:&quot;[0,width]&quot;},{&quot;name&quot;:&quot;yext&quot;,&quot;update&quot;:&quot;[0,height]&quot;},{&quot;name&quot;:&quot;zoom&quot;,&quot;on&quot;:[{&quot;events&quot;:&quot;wheel!&quot;,&quot;force&quot;:true,&quot;update&quot;:&quot;pow(1.001, event.deltaY * pow(16, event.deltaMode))&quot;}],&quot;value&quot;:1},{&quot;name&quot;:&quot;xdom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[xcur[0] + span(xcur) * delta[0] / width, xcur[1] + span(xcur) * delta[0] / width]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[0] + (xdom[0] - anchor[0]) * zoom, anchor[0] + (xdom[1] - anchor[0]) * zoom]&quot;}],&quot;update&quot;:&quot;[x_extent[0] - nodeWidth/ 2, x_extent[1] + nodeWidth / 2]&quot;},{&quot;name&quot;:&quot;ydom&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;signal&quot;:&quot;delta&quot;},&quot;update&quot;:&quot;[ycur[0] + span(ycur) * delta[1] / height, ycur[1] + span(ycur) * delta[1] / height]&quot;},{&quot;events&quot;:{&quot;signal&quot;:&quot;zoom&quot;},&quot;update&quot;:&quot;[anchor[1] + (ydom[0] - anchor[1]) * zoom, anchor[1] + (ydom[1] - anchor[1]) * zoom]&quot;}],&quot;update&quot;:&quot;[y_extent[0] - nodeHeight, y_extent[1] + nodeHeight/3]&quot;},{&quot;name&quot;:&quot;scaledNodeWidth&quot;,&quot;update&quot;:&quot;(nodeWidth/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;scaledNodeHeight&quot;,&quot;update&quot;:&quot;abs(nodeHeight/ span(ydom))*height&quot;},{&quot;name&quot;:&quot;scaledLimit&quot;,&quot;update&quot;:&quot;(20/ span(xdom))*width&quot;},{&quot;name&quot;:&quot;spaceBetweenLevels&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;spaceBetweenNodes&quot;,&quot;value&quot;:10},{&quot;name&quot;:&quot;nodeWidth&quot;,&quot;value&quot;:100},{&quot;name&quot;:&quot;nodeHeight&quot;,&quot;value&quot;:45},{&quot;name&quot;:&quot;startingDepth&quot;,&quot;on&quot;:[{&quot;events&quot;:{&quot;throttle&quot;:0,&quot;type&quot;:&quot;timer&quot;},&quot;update&quot;:&quot;-1&quot;}],&quot;value&quot;:3}],&quot;width&quot;:600}
</code></pre>
<p>You can also programatically check which styles are available:</p>
<pre><code class="language-elixir">EXGBoost.Plotting.get_styles()
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-elixir">[
  horizon_light: [
    background: &quot;#FDF0ED&quot;,
    leaves: [
      text: [fill: &quot;#1A2026&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#F7E3D3&quot;, stroke: &quot;#F43E5C&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#1A2026&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#F43E5C&quot;, stroke: &quot;#1A2026&quot;, strokeWidth: 1],
      children: [fill: &quot;#1A2026&quot;, stroke: &quot;#1A2026&quot;, strokeWidth: 1]
    ],
    yes: [text: [fill: &quot;#48B685&quot;], path: [stroke: &quot;#1A2026&quot;, strokeWidth: 1]],
    no: [text: [fill: &quot;#F43E5C&quot;], path: [stroke: &quot;#1A2026&quot;, strokeWidth: 1]]
  ],
  horizon_dark: [
    background: &quot;#1C1E26&quot;,
    leaves: [
      text: [fill: &quot;#E3E6EE&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#232530&quot;, stroke: &quot;#F43E5C&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#E3E6EE&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#F43E5C&quot;, stroke: &quot;#E3E6EE&quot;, strokeWidth: 1],
      children: [fill: &quot;#E3E6EE&quot;, stroke: &quot;#E3E6EE&quot;, strokeWidth: 1]
    ],
    yes: [text: [fill: &quot;#48B685&quot;], path: [stroke: &quot;#E3E6EE&quot;, strokeWidth: 1]],
    no: [text: [fill: &quot;#F43E5C&quot;], path: [stroke: &quot;#E3E6EE&quot;, strokeWidth: 1]]
  ],
  gruvbox: [
    background: &quot;#282828&quot;,
    leaves: [
      text: [fill: &quot;#ebdbb2&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#3c3836&quot;, stroke: &quot;#b8bb26&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#ebdbb2&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#b8bb26&quot;, stroke: &quot;#ebdbb2&quot;, strokeWidth: 1],
      children: [fill: &quot;#ebdbb2&quot;, stroke: &quot;#ebdbb2&quot;, strokeWidth: 1]
    ],
    yes: [text: [fill: &quot;#b8bb26&quot;], path: [stroke: &quot;#ebdbb2&quot;, strokeWidth: 1]],
    no: [text: [fill: &quot;#fb4934&quot;], path: [stroke: &quot;#ebdbb2&quot;, strokeWidth: 1]]
  ],
  one_dark: [
    background: &quot;#282c34&quot;,
    leaves: [
      text: [fill: &quot;#abb2bf&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#3b4048&quot;, stroke: &quot;#98c379&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#abb2bf&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#98c379&quot;, stroke: &quot;#abb2bf&quot;, strokeWidth: 1],
      children: [fill: &quot;#abb2bf&quot;, stroke: &quot;#abb2bf&quot;, strokeWidth: 1]
    ],
    yes: [text: [fill: &quot;#98c379&quot;], path: [stroke: &quot;#abb2bf&quot;, strokeWidth: 1]],
    no: [text: [fill: &quot;#e06c75&quot;], path: [stroke: &quot;#abb2bf&quot;, strokeWidth: 1]]
  ],
  material: [
    background: &quot;#263238&quot;,
    leaves: [
      text: [fill: &quot;#eceff1&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#37474f&quot;, stroke: &quot;#80cbc4&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#eceff1&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#80cbc4&quot;, stroke: &quot;#eceff1&quot;, strokeWidth: 1],
      children: [fill: &quot;#eceff1&quot;, stroke: &quot;#eceff1&quot;, strokeWidth: 1]
    ],
    yes: [text: [fill: &quot;#c5e1a5&quot;], path: [stroke: &quot;#eceff1&quot;, strokeWidth: 1]],
    no: [text: [fill: &quot;#ef9a9a&quot;], path: [stroke: &quot;#eceff1&quot;, strokeWidth: 1]]
  ],
  nord: [
    background: &quot;#2e3440&quot;,
    leaves: [
      text: [fill: &quot;#d8dee9&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#3b4252&quot;, stroke: &quot;#88c0d0&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#d8dee9&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#88c0d0&quot;, stroke: &quot;#d8dee9&quot;, strokeWidth: 1],
      children: [fill: &quot;#d8dee9&quot;, stroke: &quot;#d8dee9&quot;, strokeWidth: 1]
    ],
    yes: [text: [fill: &quot;#a3be8c&quot;], path: [stroke: &quot;#d8dee9&quot;, strokeWidth: 1]],
    no: [text: [fill: &quot;#bf616a&quot;], path: [stroke: &quot;#d8dee9&quot;, strokeWidth: 1]]
  ],
  dracula: [
    background: &quot;#282a36&quot;,
    leaves: [
      text: [fill: &quot;#f8f8f2&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#44475a&quot;, stroke: &quot;#ff79c6&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#f8f8f2&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#ff79c6&quot;, stroke: &quot;#f8f8f2&quot;, strokeWidth: 1],
      children: [fill: &quot;#f8f8f2&quot;, stroke: &quot;#f8f8f2&quot;, strokeWidth: 1]
    ],
    yes: [text: [fill: &quot;#50fa7b&quot;], path: [stroke: &quot;#f8f8f2&quot;, strokeWidth: 1]],
    no: [text: [fill: &quot;#ff5555&quot;], path: [stroke: &quot;#f8f8f2&quot;, strokeWidth: 1]]
  ],
  monokai: [
    background: &quot;#272822&quot;,
    leaves: [
      text: [fill: &quot;#f8f8f2&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#3e3d32&quot;, stroke: &quot;#66d9ef&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#f8f8f2&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#66d9ef&quot;, stroke: &quot;#f8f8f2&quot;, strokeWidth: 1],
      children: [fill: &quot;#f8f8f2&quot;, stroke: &quot;#f8f8f2&quot;, strokeWidth: 1]
    ],
    yes: [text: [fill: &quot;#a6e22e&quot;], path: [stroke: &quot;#f8f8f2&quot;, strokeWidth: 1]],
    no: [text: [fill: &quot;#f92672&quot;], path: [stroke: &quot;#f8f8f2&quot;, strokeWidth: 1]]
  ],
  light: [
    background: &quot;#f0f0f0&quot;,
    padding: 10,
    leaves: [
      text: [fill: &quot;#000&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#ddd&quot;, stroke: &quot;#000&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#000&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#bbb&quot;, stroke: &quot;#000&quot;, strokeWidth: 1]
    ]
  ],
  high_contrast: [
    background: &quot;#000&quot;,
    padding: 10,
    leaves: [
      text: [fill: &quot;#fff&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#333&quot;, stroke: &quot;#fff&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#fff&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#666&quot;, stroke: &quot;#fff&quot;, strokeWidth: 1]
    ]
  ],
  dark: [
    background: &quot;#333&quot;,
    padding: 10,
    leaves: [
      text: [fill: &quot;#fff&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#666&quot;, stroke: &quot;#fff&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#fff&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#444&quot;, stroke: &quot;#fff&quot;, strokeWidth: 1],
      children: [fill: &quot;#fff&quot;, stroke: &quot;#fff&quot;, strokeWidth: 1]
    ]
  ],
  playful_dark: [
    background: &quot;#333&quot;,
    padding: 10,
    leaves: [
      text: [fill: &quot;#fff&quot;, font_size: 12, font_style: &quot;italic&quot;, font_weight: &quot;bold&quot;],
      rect: [fill: &quot;#e91e63&quot;, stroke: &quot;#fff&quot;, stroke_width: 1, radius: 5]
    ],
    splits: [
      text: [fill: &quot;#fff&quot;, font_size: 12, font_style: &quot;normal&quot;, font_weight: &quot;bold&quot;],
      rect: [fill: &quot;#8bc34a&quot;, stroke: &quot;#fff&quot;, stroke_width: 1, radius: 10]
    ],
    yes: [text: [fill: &quot;#4caf50&quot;], path: [stroke: &quot;#4caf50&quot;, stroke_width: 2]],
    no: [text: [fill: &quot;#f44336&quot;], path: [stroke: &quot;#f44336&quot;, stroke_width: 2]]
  ],
  playful_light: [
    background: &quot;#f0f0f0&quot;,
    padding: 10,
    leaves: [
      text: [fill: &quot;#000&quot;, font_size: 12, font_style: &quot;italic&quot;, font_weight: &quot;bold&quot;],
      rect: [fill: &quot;#e91e63&quot;, stroke: &quot;#000&quot;, stroke_width: 1, radius: 5]
    ],
    splits: [
      text: [fill: &quot;#000&quot;, font_size: 12, font_style: &quot;normal&quot;, font_weight: &quot;bold&quot;],
      children: [fill: &quot;#000&quot;, font_size: 12, font_style: &quot;normal&quot;, font_weight: &quot;bold&quot;],
      rect: [fill: &quot;#8bc34a&quot;, stroke: &quot;#000&quot;, stroke_width: 1, radius: 10]
    ],
    yes: [path: [stroke: &quot;#4caf50&quot;, stroke_width: 2]],
    no: [path: [stroke: &quot;#f44336&quot;, stroke_width: 2]]
  ],
  solarized_dark: [
    background: &quot;#002b36&quot;,
    leaves: [
      text: [fill: &quot;#839496&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#073642&quot;, stroke: &quot;#586e75&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#839496&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#586e75&quot;, stroke: &quot;#657b83&quot;, strokeWidth: 1],
      children: [fill: &quot;#657b83&quot;, stroke: &quot;#657b83&quot;, strokeWidth: 1]
    ],
    yes: [text: [fill: &quot;#859900&quot;], path: [stroke: &quot;#657b83&quot;, strokeWidth: 1]],
    no: [text: [fill: &quot;#dc322f&quot;], path: [stroke: &quot;#657b83&quot;, strokeWidth: 1]]
  ],
  solarized_light: [
    background: &quot;#fdf6e3&quot;,
    leaves: [
      text: [fill: &quot;#586e75&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;normal&quot;],
      rect: [fill: &quot;#eee8d5&quot;, stroke: &quot;#93a1a1&quot;, strokeWidth: 1]
    ],
    splits: [
      text: [fill: &quot;#586e75&quot;, fontSize: 12, fontStyle: &quot;normal&quot;, fontWeight: &quot;bold&quot;],
      rect: [fill: &quot;#93a1a1&quot;, stroke: &quot;#657b83&quot;, strokeWidth: 1],
      children: [fill: &quot;#657b83&quot;, stroke: &quot;#657b83&quot;, strokeWidth: 1]
    ],
    yes: [text: [fill: &quot;#859900&quot;], path: [stroke: &quot;#657b83&quot;, strokeWidth: 1]],
    no: [text: [fill: &quot;#dc322f&quot;], path: [stroke: &quot;#657b83&quot;, strokeWidth: 1]]
  ]
]
</code></pre>
<h3 id="configuration">Configuration</h3>
<p>You can also set defaults for the top-level API using an <code>Application</code> configuration for <code>EXGBoost</code> under the <code>:plotting</code> key. Since the defaults are collected from your configuration file at compile-time, anything you set during runtime, even if you set it to the Application environment, will not be registered as defaults.</p>
<p>For example, if you just want to change the default pre-configured style you can do:</p>
<!-- livebook:{"force_markdown":true} -->
<pre><code class="language-elixir">Mix.install([
  {:exgboost, path: Path.join(__DIR__, &quot;..&quot;), env: :dev},
],
  config: 
  [
    exgboost: [
      plotting: [
          style: :solarized_dark,
        ]]
      ],
  lockfile: :exgboost)
</code></pre>
<p>You can also make one-off changes to any of the settings with this method. In effect, this turns into a default custom style. <strong>Just make sure to set <code>style: nil</code> to ensure that the <code>style</code> option doesn&apos;t supercede any of your settings.</strong> Here&apos;s an example of that:</p>
<!-- livebook:{"force_markdown":true} -->
<pre><code class="language-elixir">  default_style = 
  [
    style: nil,
    background: &quot;#3f3f3f&quot;,
    leaves: [
      # Foreground
      text: [fill: &quot;#dcdccc&quot;, font_size: 12, font_style: &quot;normal&quot;, font_weight: &quot;normal&quot;],
      # Comment
      rect: [fill: &quot;#7f9f7f&quot;, stroke: &quot;#7f9f7f&quot;]
    ],
    splits: [
      # Foreground
      text: [fill: &quot;#dcdccc&quot;, font_size: 12, font_style: &quot;normal&quot;, font_weight: &quot;bold&quot;],
      # Comment
      rect: [fill: &quot;#7f9f7f&quot;, stroke: &quot;#7f9f7f&quot;],
      # Selection
      children: [fill: &quot;#2b2b2b&quot;, stroke: &quot;#2b2b2b&quot;]
    ],
    yes: [
      # Green
      text: [fill: &quot;#7f9f7f&quot;],
      # Selection
      path: [stroke: &quot;#2b2b2b&quot;]
    ],
    no: [
      # Red
      text: [fill: &quot;#cc9393&quot;],
      # Selection
      path: [stroke: &quot;#2b2b2b&quot;]
    ]
  ]

Mix.install([
  {:exgboost, path: Path.join(__DIR__, &quot;..&quot;), env: :dev},
],
config: 
  [
    exgboost: [
      plotting: default_style,
    ]
  ]
)
</code></pre>
<p><strong>NOTE:  When you specify a parameter in the configuration, it is merged with the defaults which is different from runtime behavior.</strong></p>
<p>At any point, you can check what your default settings are by using <code>EXGBoost.Plotting.get_defaults/0</code></p>
<pre><code class="language-elixir">EXGBoost.Plotting.get_defaults()
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-elixir">[
  depth: nil,
  index: 0,
  validate: true,
  no: [
    path: [],
    text: [align: :center, baseline: :middle, font_size: 13, font: &quot;Calibri&quot;, text: &quot;no&quot;]
  ],
  yes: [
    path: [],
    text: [align: :center, baseline: :middle, font_size: 13, font: &quot;Calibri&quot;, text: &quot;yes&quot;]
  ],
  space_between: [nodes: 10, levels: 100],
  node_height: 45,
  node_width: 100,
  splits: [
    text: [align: :center, baseline: :middle, font_size: 13, font: &quot;Calibri&quot;],
    rect: [corner_radius: 2, opacity: 1],
    children: [align: :right, baseline: :middle, font: &quot;Calibri&quot;, font_size: 13]
  ],
  leaves: [
    text: [align: :center, baseline: :middle, font_size: 13, font: &quot;Calibri&quot;],
    rect: [corner_radius: 2, opacity: 1]
  ],
  padding: 30,
  width: 600,
  height: 400,
  background: &quot;#f5f5f5&quot;,
  autosize: &quot;fit&quot;,
  rankdir: :tb,
  style: :dracula
]
</code></pre>
<h2 id="low-level-api">Low-Level API</h2>
<p>If you find yourself needing more granular control over your plots, you can reach towards the <code>EXGBoost.Plotting</code> module. This module houses the <code>EXGBoost.Plotting.plot/2</code> function, which is what is used under the hood from the <code>EXGBoost.plot_tree/2</code> top-level API. This module also has the <code>get_data_spec/2</code> function, as well as the <code>to_tabular/1</code> function, both of which can be used to specify your own Vega specification. Lastly, the module also houses all of the pre-configured styles, which are 0-arity functions which output the <code>Keyword</code>s containing their respective style&apos;s options that can be passed to the plotting APIs.</p>
<p>Let&apos;s briefly go over the <code>to_tabular/1</code> and <code>get_data_spec/2</code> functions:</p>
<!-- livebook:{"break_markdown":true} -->
<p>The <code>to_tabular/1</code> function is used to convert a <code>Booster</code>, which is formatted as a tree structure, to a tabular format which can be ingested specifically by the <a href="https://vega.github.io/vega/docs/transforms/stratify/?ref=thestackcanary.com">Vega Stratify transform</a>. It returns a list of &quot;nodes&quot;, which are just <code>Map</code>s with info about each node in the tree.</p>
<pre><code class="language-elixir">EXGBoost.Plotting.to_tabular(booster) |&gt; hd
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-elixir">%{
  &quot;depth&quot; =&gt; 0,
  &quot;leaf&quot; =&gt; nil,
  &quot;missing&quot; =&gt; 2,
  &quot;no&quot; =&gt; 3,
  &quot;nodeid&quot; =&gt; 1,
  &quot;parentid&quot; =&gt; nil,
  &quot;split&quot; =&gt; &quot;petal length&quot;,
  &quot;split_condition&quot; =&gt; 3,
  &quot;tree_id&quot; =&gt; 0,
  &quot;yes&quot; =&gt; 2
}
</code></pre>
<p>You can use this function if you want to have complete control over the visualization, and just want a bit of a head start with respect to data transformation for converting the <code>Booster</code> into a more digestible format.</p>
<!-- livebook:{"break_markdown":true} -->
<p>The <code>get_data_source/2</code> function is used if you want to use the provided <a href="https://vega.github.io/vega/docs/data/?ref=thestackcanary.com">Vega data specification</a>. This is for those who want to only focus on implementing your own <a href="https://vega.github.io/vega/docs/marks/?ref=thestackcanary.com">Vega Marks</a>, and want to leverage the data transformation pipeline that powers the top-level API.</p>
<p>The data transformation used is the following pipeline:</p>
<p><code>to_tabular/1</code> -&gt; <a href="https://vega.github.io/vega/docs/transforms/filter/?ref=thestackcanary.com">Filter</a> (by tree index) -&gt; <a href="https://vega.github.io/vega/docs/transforms/stratify/?ref=thestackcanary.com">Stratify</a> -&gt; <a href="https://vega.github.io/vega/docs/transforms/tree/?ref=thestackcanary.com">Tree</a></p>
<pre><code class="language-elixir">EXGBoost.Plotting.get_data_spec(booster, rankdir: :bt)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code class="language-elixir">%{
  &quot;$schema&quot; =&gt; &quot;https://vega.github.io/schema/vega/v5.json&quot;,
  &quot;data&quot; =&gt; [
    %{
      &quot;name&quot; =&gt; &quot;tree&quot;,
      &quot;values&quot; =&gt; [
        %{
          &quot;depth&quot; =&gt; 0,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 2,
          &quot;no&quot; =&gt; 3,
          &quot;nodeid&quot; =&gt; 1,
          &quot;parentid&quot; =&gt; nil,
          &quot;split&quot; =&gt; &quot;petal length&quot;,
          &quot;split_condition&quot; =&gt; 3,
          &quot;tree_id&quot; =&gt; 0,
          &quot;yes&quot; =&gt; 2
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; 0.425454557,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 2,
          &quot;parentid&quot; =&gt; 1,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 0,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -0.218918934,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 3,
          &quot;parentid&quot; =&gt; 1,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 0,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; 0,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 2,
          &quot;no&quot; =&gt; 3,
          &quot;nodeid&quot; =&gt; 1,
          &quot;parentid&quot; =&gt; nil,
          &quot;split&quot; =&gt; &quot;petal length&quot;,
          &quot;split_condition&quot; =&gt; 3,
          &quot;tree_id&quot; =&gt; 1,
          &quot;yes&quot; =&gt; 2
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -0.212727293,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 2,
          &quot;parentid&quot; =&gt; 1,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 1,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; 1,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 4,
          &quot;no&quot; =&gt; 5,
          &quot;nodeid&quot; =&gt; 3,
          &quot;parentid&quot; =&gt; 1,
          &quot;split&quot; =&gt; &quot;petal width&quot;,
          &quot;split_condition&quot; =&gt; 1.79999995,
          &quot;tree_id&quot; =&gt; 1,
          &quot;yes&quot; =&gt; 4
        },
        %{
          &quot;depth&quot; =&gt; 2,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 6,
          &quot;no&quot; =&gt; 7,
          &quot;nodeid&quot; =&gt; 4,
          &quot;parentid&quot; =&gt; 3,
          &quot;split&quot; =&gt; &quot;petal length&quot;,
          &quot;split_condition&quot; =&gt; 5,
          &quot;tree_id&quot; =&gt; 1,
          &quot;yes&quot; =&gt; 6
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; 0.410982668,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 6,
          &quot;parentid&quot; =&gt; 4,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 1,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -7.66345476e-9,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 7,
          &quot;parentid&quot; =&gt; 4,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 1,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; 2,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 8,
          &quot;no&quot; =&gt; 9,
          &quot;nodeid&quot; =&gt; 5,
          &quot;parentid&quot; =&gt; 3,
          &quot;split&quot; =&gt; &quot;petal length&quot;,
          &quot;split_condition&quot; =&gt; 4.9000001,
          &quot;tree_id&quot; =&gt; 1,
          &quot;yes&quot; =&gt; 8
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -7.66345476e-9,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 8,
          &quot;parentid&quot; =&gt; 5,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 1,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -0.211034521,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 9,
          &quot;parentid&quot; =&gt; 5,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 1,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; 0,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 2,
          &quot;no&quot; =&gt; 3,
          &quot;nodeid&quot; =&gt; 1,
          &quot;parentid&quot; =&gt; nil,
          &quot;split&quot; =&gt; &quot;petal width&quot;,
          &quot;split_condition&quot; =&gt; 1.60000002,
          &quot;tree_id&quot; =&gt; 2,
          &quot;yes&quot; =&gt; 2
        },
        %{
          &quot;depth&quot; =&gt; 1,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 4,
          &quot;no&quot; =&gt; 5,
          &quot;nodeid&quot; =&gt; 2,
          &quot;parentid&quot; =&gt; 1,
          &quot;split&quot; =&gt; &quot;petal length&quot;,
          &quot;split_condition&quot; =&gt; 4.9000001,
          &quot;tree_id&quot; =&gt; 2,
          &quot;yes&quot; =&gt; 4
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -0.218530372,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 4,
          &quot;parentid&quot; =&gt; 2,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 2,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -7.66345476e-9,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 5,
          &quot;parentid&quot; =&gt; 2,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 2,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; 1,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 6,
          &quot;no&quot; =&gt; 7,
          &quot;nodeid&quot; =&gt; 3,
          &quot;parentid&quot; =&gt; 1,
          &quot;split&quot; =&gt; &quot;petal width&quot;,
          &quot;split_condition&quot; =&gt; 1.79999995,
          &quot;tree_id&quot; =&gt; 2,
          &quot;yes&quot; =&gt; 6
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; 0.0719999969,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 6,
          &quot;parentid&quot; =&gt; 3,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 2,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; 2,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 8,
          &quot;no&quot; =&gt; 9,
          &quot;nodeid&quot; =&gt; 7,
          &quot;parentid&quot; =&gt; 3,
          &quot;split&quot; =&gt; &quot;petal length&quot;,
          &quot;split_condition&quot; =&gt; 4.9000001,
          &quot;tree_id&quot; =&gt; 2,
          &quot;yes&quot; =&gt; 8
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; 0.128571421,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 8,
          &quot;parentid&quot; =&gt; 7,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 2,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; 0.422068983,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 9,
          &quot;parentid&quot; =&gt; 7,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 2,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; 0,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 2,
          &quot;no&quot; =&gt; 3,
          &quot;nodeid&quot; =&gt; 1,
          &quot;parentid&quot; =&gt; nil,
          &quot;split&quot; =&gt; &quot;petal length&quot;,
          &quot;split_condition&quot; =&gt; 3,
          &quot;tree_id&quot; =&gt; 3,
          &quot;yes&quot; =&gt; 2
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; 0.292982191,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 2,
          &quot;parentid&quot; =&gt; 1,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 3,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -0.195790753,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 3,
          &quot;parentid&quot; =&gt; 1,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 3,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; 0,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 2,
          &quot;no&quot; =&gt; 3,
          &quot;nodeid&quot; =&gt; 1,
          &quot;parentid&quot; =&gt; nil,
          &quot;split&quot; =&gt; &quot;petal length&quot;,
          &quot;split_condition&quot; =&gt; 3,
          &quot;tree_id&quot; =&gt; 4,
          &quot;yes&quot; =&gt; 2
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -0.18925412,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 2,
          &quot;parentid&quot; =&gt; 1,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 4,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; 1,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 4,
          &quot;no&quot; =&gt; 5,
          &quot;nodeid&quot; =&gt; 3,
          &quot;parentid&quot; =&gt; 1,
          &quot;split&quot; =&gt; &quot;petal width&quot;,
          &quot;split_condition&quot; =&gt; 1.79999995,
          &quot;tree_id&quot; =&gt; 4,
          &quot;yes&quot; =&gt; 4
        },
        %{
          &quot;depth&quot; =&gt; 2,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 6,
          &quot;no&quot; =&gt; 7,
          &quot;nodeid&quot; =&gt; 4,
          &quot;parentid&quot; =&gt; 3,
          &quot;split&quot; =&gt; &quot;petal length&quot;,
          &quot;split_condition&quot; =&gt; 5,
          &quot;tree_id&quot; =&gt; 4,
          &quot;yes&quot; =&gt; 6
        },
        %{
          &quot;depth&quot; =&gt; 3,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 10,
          &quot;no&quot; =&gt; 11,
          &quot;nodeid&quot; =&gt; 6,
          &quot;parentid&quot; =&gt; 4,
          &quot;split&quot; =&gt; &quot;sepal length&quot;,
          &quot;split_condition&quot; =&gt; 5.0999999,
          &quot;tree_id&quot; =&gt; 4,
          &quot;yes&quot; =&gt; 10
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; 0.110490814,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 10,
          &quot;parentid&quot; =&gt; 6,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 4,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; 0.295589149,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 11,
          &quot;parentid&quot; =&gt; 6,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 4,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -0.0065466417,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 7,
          &quot;parentid&quot; =&gt; 4,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 4,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; 2,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 8,
          &quot;no&quot; =&gt; 9,
          &quot;nodeid&quot; =&gt; 5,
          &quot;parentid&quot; =&gt; 3,
          &quot;split&quot; =&gt; &quot;petal length&quot;,
          &quot;split_condition&quot; =&gt; 4.9000001,
          &quot;tree_id&quot; =&gt; 4,
          &quot;yes&quot; =&gt; 8
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -0.00258299569,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 8,
          &quot;parentid&quot; =&gt; 5,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 4,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -0.187741965,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 9,
          &quot;parentid&quot; =&gt; 5,
          &quot;split&quot; =&gt; nil,
          &quot;split_condition&quot; =&gt; nil,
          &quot;tree_id&quot; =&gt; 4,
          &quot;yes&quot; =&gt; nil
        },
        %{
          &quot;depth&quot; =&gt; 0,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 2,
          &quot;no&quot; =&gt; 3,
          &quot;nodeid&quot; =&gt; 1,
          &quot;parentid&quot; =&gt; nil,
          &quot;split&quot; =&gt; &quot;petal width&quot;,
          &quot;split_condition&quot; =&gt; 1.60000002,
          &quot;tree_id&quot; =&gt; 5,
          ...
        },
        %{
          &quot;depth&quot; =&gt; 1,
          &quot;leaf&quot; =&gt; nil,
          &quot;missing&quot; =&gt; 4,
          &quot;no&quot; =&gt; 5,
          &quot;nodeid&quot; =&gt; 2,
          &quot;parentid&quot; =&gt; 1,
          &quot;split&quot; =&gt; &quot;petal length&quot;,
          &quot;split_condition&quot; =&gt; 4.9000001,
          ...
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; -0.195117101,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 4,
          &quot;parentid&quot; =&gt; 2,
          &quot;split&quot; =&gt; nil,
          ...
        },
        %{
          &quot;depth&quot; =&gt; nil,
          &quot;leaf&quot; =&gt; 0.00513018994,
          &quot;missing&quot; =&gt; nil,
          &quot;no&quot; =&gt; nil,
          &quot;nodeid&quot; =&gt; 5,
          &quot;parentid&quot; =&gt; 2,
          ...
        },
        %{&quot;depth&quot; =&gt; 1, &quot;leaf&quot; =&gt; nil, &quot;missing&quot; =&gt; 6, &quot;no&quot; =&gt; 7, &quot;nodeid&quot; =&gt; 3, ...},
        %{&quot;depth&quot; =&gt; nil, &quot;leaf&quot; =&gt; 0.0662105083, &quot;missing&quot; =&gt; nil, &quot;no&quot; =&gt; nil, ...},
        %{&quot;depth&quot; =&gt; nil, &quot;leaf&quot; =&gt; 0.283106089, &quot;missing&quot; =&gt; nil, ...},
        %{&quot;depth&quot; =&gt; 0, &quot;leaf&quot; =&gt; nil, ...},
        %{&quot;depth&quot; =&gt; nil, ...},
        %{...},
        ...
      ]
    },
    %{
      &quot;name&quot; =&gt; &quot;treeCalcs&quot;,
      &quot;source&quot; =&gt; &quot;tree&quot;,
      &quot;transform&quot; =&gt; [
        %{&quot;expr&quot; =&gt; &quot;datum.tree_id === selectedTree&quot;, &quot;type&quot; =&gt; &quot;filter&quot;},
        %{&quot;key&quot; =&gt; &quot;nodeid&quot;, &quot;parentKey&quot; =&gt; &quot;parentid&quot;, &quot;type&quot; =&gt; &quot;stratify&quot;},
        %{
          &quot;as&quot; =&gt; [&quot;x&quot;, &quot;y&quot;, &quot;depth&quot;, &quot;children&quot;],
          &quot;method&quot; =&gt; &quot;tidy&quot;,
          &quot;separation&quot; =&gt; %{&quot;signal&quot; =&gt; &quot;false&quot;},
          &quot;type&quot; =&gt; &quot;tree&quot;
        }
      ]
    },
    %{
      &quot;name&quot; =&gt; &quot;treeChildren&quot;,
      &quot;source&quot; =&gt; &quot;treeCalcs&quot;,
      &quot;transform&quot; =&gt; [
        %{
          &quot;as&quot; =&gt; [&quot;childrenObjects&quot;],
          &quot;fields&quot; =&gt; [&quot;parentid&quot;],
          &quot;groupby&quot; =&gt; [&quot;parentid&quot;],
          &quot;ops&quot; =&gt; [&quot;values&quot;],
          &quot;type&quot; =&gt; &quot;aggregate&quot;
        },
        %{
          &quot;as&quot; =&gt; &quot;childrenIds&quot;,
          &quot;expr&quot; =&gt; &quot;pluck(datum.childrenObjects,&apos;nodeid&apos;)&quot;,
          &quot;type&quot; =&gt; &quot;formula&quot;
        }
      ]
    },
    %{
      &quot;name&quot; =&gt; &quot;treeAncestors&quot;,
      &quot;source&quot; =&gt; &quot;treeCalcs&quot;,
      &quot;transform&quot; =&gt; [
        %{
          &quot;as&quot; =&gt; &quot;treeAncestors&quot;,
          &quot;expr&quot; =&gt; &quot;treeAncestors(&apos;treeCalcs&apos;, datum.nodeid, &apos;root&apos;)&quot;,
          &quot;type&quot; =&gt; &quot;formula&quot;
        },
        %{&quot;fields&quot; =&gt; [&quot;treeAncestors&quot;], &quot;type&quot; =&gt; &quot;flatten&quot;},
        %{&quot;as&quot; =&gt; &quot;allParents&quot;, &quot;expr&quot; =&gt; &quot;datum.treeAncestors.parentid&quot;, &quot;type&quot; =&gt; &quot;formula&quot;}
      ]
    },
    %{
      &quot;name&quot; =&gt; &quot;treeChildrenAll&quot;,
      &quot;source&quot; =&gt; &quot;treeAncestors&quot;,
      &quot;transform&quot; =&gt; [
        %{
          &quot;fields&quot; =&gt; [&quot;allParents&quot;, &quot;nodeid&quot;, &quot;name&quot;, &quot;parentid&quot;, &quot;x&quot;, &quot;y&quot;, &quot;depth&quot;, &quot;children&quot;],
          &quot;type&quot; =&gt; &quot;project&quot;
        },
        %{
          &quot;as&quot; =&gt; [&quot;allChildrenObjects&quot;, &quot;allChildrenCount&quot;, &quot;id&quot;],
          &quot;fields&quot; =&gt; [&quot;parentid&quot;, &quot;parentid&quot;, &quot;nodeid&quot;],
          &quot;groupby&quot; =&gt; [&quot;allParents&quot;],
          &quot;ops&quot; =&gt; [&quot;values&quot;, &quot;count&quot;, &quot;min&quot;],
          &quot;type&quot; =&gt; &quot;aggregate&quot;
        },
        %{
          &quot;as&quot; =&gt; &quot;allChildrenIds&quot;,
          &quot;expr&quot; =&gt; &quot;pluck(datum.allChildrenObjects,&apos;nodeid&apos;)&quot;,
          &quot;type&quot; =&gt; &quot;formula&quot;
        }
      ]
    },
    %{
      &quot;name&quot; =&gt; &quot;treeClickStoreTemp&quot;,
      &quot;source&quot; =&gt; &quot;treeAncestors&quot;,
      &quot;transform&quot; =&gt; [
        %{
          &quot;expr&quot; =&gt; &quot;startingDepth != -1 ? datum.depth &lt;= startingDepth : node != 0 &amp;&amp; !isExpanded ? datum.parentid == node: node != 0 &amp;&amp; isExpanded ? datum.allParents == node : false&quot;,
          &quot;type&quot; =&gt; &quot;filter&quot;
        },
        %{&quot;fields&quot; =&gt; [&quot;nodeid&quot;, &quot;parentid&quot;, &quot;x&quot;, &quot;y&quot;, &quot;depth&quot;, &quot;children&quot;], &quot;type&quot; =&gt; &quot;project&quot;},
        %{
          &quot;fields&quot; =&gt; [&quot;nodeid&quot;],
          &quot;groupby&quot; =&gt; [&quot;nodeid&quot;, &quot;parentid&quot;, &quot;x&quot;, &quot;y&quot;, &quot;depth&quot;, &quot;children&quot;],
          &quot;ops&quot; =&gt; [&quot;min&quot;],
          &quot;type&quot; =&gt; &quot;aggregate&quot;
        }
      ]
    },
    %{
      &quot;name&quot; =&gt; &quot;treeClickStorePerm&quot;,
      &quot;on&quot; =&gt; [
        %{&quot;insert&quot; =&gt; &quot;data(&apos;treeClickStoreTemp&apos;)&quot;, &quot;trigger&quot; =&gt; &quot;startingDepth &gt;= 0&quot;},
        %{&quot;insert&quot; =&gt; &quot;!isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;, &quot;trigger&quot; =&gt; &quot;node&quot;},
        %{&quot;remove&quot; =&gt; &quot;isExpanded ? data(&apos;treeClickStoreTemp&apos;): false&quot;, &quot;trigger&quot; =&gt; &quot;node&quot;}
      ],
      &quot;values&quot; =&gt; []
    },
    %{
      &quot;name&quot; =&gt; &quot;treeLayout&quot;,
      &quot;source&quot; =&gt; &quot;tree&quot;,
      &quot;transform&quot; =&gt; [
        %{&quot;expr&quot; =&gt; &quot;datum.tree_id === selectedTree&quot;, &quot;type&quot; =&gt; &quot;filter&quot;},
        %{&quot;expr&quot; =&gt; &quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid)&quot;, &quot;type&quot; =&gt; &quot;filter&quot;},
        %{&quot;key&quot; =&gt; &quot;nodeid&quot;, &quot;parentKey&quot; =&gt; &quot;parentid&quot;, &quot;type&quot; =&gt; &quot;stratify&quot;},
        %{
          &quot;as&quot; =&gt; [&quot;x&quot;, &quot;y&quot;, &quot;depth&quot;, &quot;children&quot;],
          &quot;method&quot; =&gt; &quot;tidy&quot;,
          &quot;nodeSize&quot; =&gt; [
            %{&quot;signal&quot; =&gt; &quot;nodeWidth + spaceBetweenNodes&quot;},
            %{&quot;signal&quot; =&gt; &quot;nodeHeight+ spaceBetweenLevels&quot;}
          ],
          &quot;separation&quot; =&gt; %{&quot;signal&quot; =&gt; &quot;false&quot;},
          &quot;type&quot; =&gt; &quot;tree&quot;
        },
        %{&quot;as&quot; =&gt; &quot;y&quot;, &quot;expr&quot; =&gt; &quot;-1*(datum.y+(height/10))&quot;, &quot;type&quot; =&gt; &quot;formula&quot;},
        %{&quot;as&quot; =&gt; &quot;x&quot;, &quot;expr&quot; =&gt; &quot;1*(datum.x+(width/2))&quot;, &quot;type&quot; =&gt; &quot;formula&quot;},
        %{&quot;field&quot; =&gt; &quot;x&quot;, &quot;signal&quot; =&gt; &quot;x_extent&quot;, &quot;type&quot; =&gt; &quot;extent&quot;},
        %{&quot;field&quot; =&gt; &quot;y&quot;, &quot;signal&quot; =&gt; &quot;y_extent&quot;, &quot;type&quot; =&gt; &quot;extent&quot;},
        %{&quot;as&quot; =&gt; &quot;xscaled&quot;, &quot;expr&quot; =&gt; &quot;scale(&apos;xscale&apos;,datum.x)&quot;, &quot;type&quot; =&gt; &quot;formula&quot;},
        %{&quot;as&quot; =&gt; &quot;parent&quot;, &quot;expr&quot; =&gt; &quot;datum.parentid&quot;, &quot;type&quot; =&gt; &quot;formula&quot;}
      ]
    },
    %{
      &quot;name&quot; =&gt; &quot;fullTreeLayout&quot;,
      &quot;source&quot; =&gt; &quot;treeLayout&quot;,
      &quot;transform&quot; =&gt; [
        %{
          &quot;fields&quot; =&gt; [&quot;nodeid&quot;],
          &quot;from&quot; =&gt; &quot;treeChildren&quot;,
          &quot;key&quot; =&gt; &quot;parentid&quot;,
          &quot;type&quot; =&gt; &quot;lookup&quot;,
          &quot;values&quot; =&gt; [&quot;childrenObjects&quot;, &quot;childrenIds&quot;]
        },
        %{
          &quot;fields&quot; =&gt; [&quot;nodeid&quot;],
          &quot;from&quot; =&gt; &quot;treeChildrenAll&quot;,
          &quot;key&quot; =&gt; &quot;allParents&quot;,
          &quot;type&quot; =&gt; &quot;lookup&quot;,
          &quot;values&quot; =&gt; [&quot;allChildrenIds&quot;, &quot;allChildrenObjects&quot;]
        },
        %{
          &quot;fields&quot; =&gt; [&quot;nodeid&quot;],
          &quot;from&quot; =&gt; &quot;treeCalcs&quot;,
          &quot;key&quot; =&gt; &quot;nodeid&quot;,
          &quot;type&quot; =&gt; &quot;lookup&quot;,
          &quot;values&quot; =&gt; [&quot;children&quot;]
        },
        %{
          &quot;as&quot; =&gt; &quot;treeParent&quot;,
          &quot;expr&quot; =&gt; &quot;reverse(pluck(treeAncestors(&apos;treeCalcs&apos;, datum.nodeid), &apos;nodeid&apos;))[1]&quot;,
          &quot;type&quot; =&gt; &quot;formula&quot;
        },
        %{&quot;as&quot; =&gt; &quot;isLeaf&quot;, &quot;expr&quot; =&gt; &quot;datum.leaf == null&quot;, &quot;type&quot; =&gt; &quot;formula&quot;}
      ]
    },
    %{
      &quot;name&quot; =&gt; &quot;splitNodes&quot;,
      &quot;source&quot; =&gt; &quot;fullTreeLayout&quot;,
      &quot;transform&quot; =&gt; [
        %{
          &quot;expr&quot; =&gt; &quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; datum.isLeaf&quot;,
          &quot;type&quot; =&gt; &quot;filter&quot;
        }
      ]
    },
    %{
      &quot;name&quot; =&gt; &quot;leafNodes&quot;,
      &quot;source&quot; =&gt; &quot;fullTreeLayout&quot;,
      &quot;transform&quot; =&gt; [
        %{
          &quot;expr&quot; =&gt; &quot;indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.nodeid) &amp;&amp; !datum.isLeaf&quot;,
          &quot;type&quot; =&gt; &quot;filter&quot;
        }
      ]
    },
    %{
      &quot;name&quot; =&gt; &quot;links&quot;,
      &quot;source&quot; =&gt; &quot;treeLayout&quot;,
      &quot;transform&quot; =&gt; [
        %{&quot;type&quot; =&gt; &quot;treelinks&quot;},
        %{
          &quot;orient&quot; =&gt; &quot;vertical&quot;,
          &quot;shape&quot; =&gt; &quot;line&quot;,
          &quot;sourceX&quot; =&gt; %{&quot;expr&quot; =&gt; &quot;scale(&apos;xscale&apos;, datum.source.x)&quot;},
          &quot;sourceY&quot; =&gt; %{&quot;expr&quot; =&gt; &quot;scale(&apos;yscale&apos;, datum.source.y)&quot;},
          &quot;targetX&quot; =&gt; %{&quot;expr&quot; =&gt; &quot;scale(&apos;xscale&apos;, datum.target.x)&quot;},
          &quot;targetY&quot; =&gt; %{&quot;expr&quot; =&gt; &quot;scale(&apos;yscale&apos;, datum.target.y) - scaledNodeHeight&quot;},
          &quot;type&quot; =&gt; &quot;linkpath&quot;
        },
        %{
          &quot;expr&quot; =&gt; &quot; indata(&apos;treeClickStorePerm&apos;, &apos;nodeid&apos;, datum.target.nodeid)&quot;,
          &quot;type&quot; =&gt; &quot;filter&quot;
        }
      ]
    },
    %{
      &quot;name&quot; =&gt; &quot;yesPaths&quot;,
      &quot;source&quot; =&gt; &quot;links&quot;,
      &quot;transform&quot; =&gt; [%{&quot;expr&quot; =&gt; &quot;datum.source.yes === datum.target.nodeid &quot;, &quot;type&quot; =&gt; &quot;filter&quot;}]
    },
    %{
      &quot;name&quot; =&gt; &quot;noPaths&quot;,
      &quot;source&quot; =&gt; &quot;links&quot;,
      &quot;transform&quot; =&gt; [%{&quot;expr&quot; =&gt; &quot;datum.source.yes !== datum.target.nodeid &quot;, &quot;type&quot; =&gt; &quot;filter&quot;}]
    }
  ]
}
</code></pre>
<p>The Vega fields which are not included with <code>get_data_spec/2</code> and are included in <code>plot/2</code> are:</p>
<ul>
<li><a href="https://vega.github.io/vega/docs/marks/?ref=thestackcanary.com">Marks</a></li>
<li><a href="https://vega.github.io/vega/docs/scales/?ref=thestackcanary.com">Scales</a></li>
<li><a href="https://vega.github.io/vega/docs/signals/?ref=thestackcanary.com">Signals</a></li>
</ul>
<p>You can make a completely valid plot using only the Data from <code>get_data_specs/2</code> and adding the marks you need.</p>
]]></content:encoded></item><item><title><![CDATA[Hacking Phoenix LiveUpload]]></title><description><![CDATA[Customizing Phoenix LiveUploads's Preview Images using PDF.js]]></description><link>https://www.thestackcanary.com/phoenix-liveuploads-pdf/</link><guid isPermaLink="false">65a4872b6904c319203f1f2e</guid><category><![CDATA[Elixir]]></category><category><![CDATA[Elixir Tips]]></category><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Mon, 15 Jan 2024 23:44:20 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2024/01/Pdf_Preview.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.thestackcanary.com/content/images/2024/01/Pdf_Preview.png" alt="Hacking Phoenix LiveUpload"><p>The Phoenix Framework  is a simply spectacular Server-Side-Rendered (SSR) web-development framework written in Elixir.  Phoenix supports reactive functionality through its web-socket based library called LiveView, which makes writing dynamic SSR web-apps a breeze. One of the built-in features of LiveView is its support of <a href="https://hexdocs.pm/phoenix_live_view/uploads.html?ref=thestackcanary.com" rel="noreferrer">Uploads</a> out of the box. Some of the features, as described in the documentation, are:</p><ul><li>Accept specification - Define accepted file types, max number of entries, max file size, etc. When the client selects file(s), the file metadata is automatically validated against the specification. See&#xA0;<a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html?ref=thestackcanary.com#allow_upload/3"><code>Phoenix.LiveView.allow_upload/3</code></a>.</li><li>Reactive entries - Uploads are populated in an&#xA0;<code>@uploads</code>&#xA0;assign in the socket. Entries automatically respond to progress, errors, cancellation, etc.</li><li>Drag and drop - Use the&#xA0;<code>phx-drop-target</code>&#xA0;attribute to enable. See&#xA0;<a href="https://hexdocs.pm/phoenix_live_view/Phoenix.Component.html?ref=thestackcanary.com#live_file_input/1"><code>Phoenix.Component.live_file_input/1</code></a>.</li></ul><p>LiveView even includes an out-of-the-box solution for rendering previews of your uploads using the <a href="https://hexdocs.pm/phoenix_live_view/Phoenix.Component.html?ref=thestackcanary.com#live_img_preview/1" rel="noreferrer"><code>live_img_preview/1</code></a> component, but notably, these previews only work for image uploads by default since it simply adds the file data as a <code>Blob</code> to an <code>img</code> tag. </p><p>In this article, I will walk you through how the Phoenix Live Image Preview works, and show you how to customize it so that you can add a custom rendering solution to render previews for other types of files &#x2013; in particular I will be showing how to render a PDF preview using Mozilla&apos;s <a href="https://github.com/mozilla/pdf.js?ref=thestackcanary.com" rel="noreferrer">pdf.js</a> library.</p><figure class="kg-card kg-video-card kg-width-regular kg-card-hascaption" data-kg-thumbnail="https://www.thestackcanary.com/content/media/2024/01/PdfPreview_thumb.jpg" data-kg-custom-thumbnail>
            <div class="kg-video-container">
                <video src="https://www.thestackcanary.com/content/media/2024/01/PdfPreview.mp4" poster="https://img.spacergif.org/v1/1490x1510/0a/spacer.png" width="1490" height="1510" loop autoplay muted playsinline preload="metadata" style="background: transparent url(&apos;https://www.thestackcanary.com/content/media/2024/01/PdfPreview_thumb.jpg&apos;) 50% 50% / cover no-repeat;"></video>
                <div class="kg-video-overlay">
                    <button class="kg-video-large-play-icon" aria-label="Play video">
                        <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                            <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                        </svg>
                    </button>
                </div>
                <div class="kg-video-player-container kg-video-hide">
                    <div class="kg-video-player">
                        <button class="kg-video-play-icon" aria-label="Play video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M23.14 10.608 2.253.164A1.559 1.559 0 0 0 0 1.557v20.887a1.558 1.558 0 0 0 2.253 1.392L23.14 13.393a1.557 1.557 0 0 0 0-2.785Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-pause-icon kg-video-hide" aria-label="Pause video">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <rect x="3" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                                <rect x="14" y="1" width="7" height="22" rx="1.5" ry="1.5"/>
                            </svg>
                        </button>
                        <span class="kg-video-current-time">0:00</span>
                        <div class="kg-video-time">
                            /<span class="kg-video-duration">0:17</span>
                        </div>
                        <input type="range" class="kg-video-seek-slider" max="100" value="0">
                        <button class="kg-video-playback-rate" aria-label="Adjust playback speed">1&#xD7;</button>
                        <button class="kg-video-unmute-icon" aria-label="Unmute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M15.189 2.021a9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h1.794a.249.249 0 0 1 .221.133 9.73 9.73 0 0 0 7.924 4.85h.06a1 1 0 0 0 1-1V3.02a1 1 0 0 0-1.06-.998Z"/>
                            </svg>
                        </button>
                        <button class="kg-video-mute-icon kg-video-hide" aria-label="Mute">
                            <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24">
                                <path d="M16.177 4.3a.248.248 0 0 0 .073-.176v-1.1a1 1 0 0 0-1.061-1 9.728 9.728 0 0 0-7.924 4.85.249.249 0 0 1-.221.133H5.25a3 3 0 0 0-3 3v2a3 3 0 0 0 3 3h.114a.251.251 0 0 0 .177-.073ZM23.707 1.706A1 1 0 0 0 22.293.292l-22 22a1 1 0 0 0 0 1.414l.009.009a1 1 0 0 0 1.405-.009l6.63-6.631A.251.251 0 0 1 8.515 17a.245.245 0 0 1 .177.075 10.081 10.081 0 0 0 6.5 2.92 1 1 0 0 0 1.061-1V9.266a.247.247 0 0 1 .073-.176Z"/>
                            </svg>
                        </button>
                        <input type="range" class="kg-video-volume-slider" max="100" value="100">
                    </div>
                </div>
            </div>
            <figcaption><p><span style="white-space: pre-wrap;">Demo of PDF Preview</span></p></figcaption>
        </figure><p>The code for this project can be found <a href="https://github.com/acalejos/phoenix-upload-pdf-preview?ref=thestackcanary.com" rel="noreferrer">here </a>at my GitHub. Feel free to give me a follow on there to see what else I&apos;m up to. </p><h2 id="how-do-phoenix-uploads-work">How Do Phoenix Uploads Work?</h2><p>The Phoenix documentation is pretty thorough on describing how uploads are handled, but I will give a brief synopsis here for convenience. </p><p>All uploads held in a session are stored in a reserved assigns variable <code>@uploads</code> . If you try to name or update the <code>uploads</code> assigns manually you will notice that you get an error since Phoenix reserves that particular key in the assigns. You enable uploads for a particular page using <a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html?ref=thestackcanary.com#allow_upload/3"><code>Phoenix.LiveView.allow_upload/3</code></a>, which accepts a specification  that tells it information such as the allowed file type, max file entries, max file size, and more.  The first parameter to <code>allow_upload</code> is a key that will specify a specific upload within the <code>uploads</code> assign, meaning you can have multiple upload &quot;sessions&quot; at once. </p><p>One of the keys you may optionally specify is the <code>:writer</code> key, which points to a module implementing the <a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.UploadWriter.html?ref=thestackcanary.com" rel="noreferrer">UploadWriter</a> behaviour which specifies what to do with the file chunks from the uploaded files before consuming the file uploads.  If you do not specify this option, then the default <a href="https://github.com/phoenixframework/phoenix_live_view/blob/v0.20.3/lib/phoenix_live_view/upload_tmp_file_writer.ex?ref=thestackcanary.com" rel="noreferrer"><code>UploadTmpFileWriter</code></a> will be used. </p><p>You then use the <a href="https://hexdocs.pm/phoenix_live_view/Phoenix.Component.html?ref=thestackcanary.com#live_file_input/1"><code>Phoenix.Component.live_file_input/1</code></a>&#xA0;component to specify the file input. As files are uploaded using the live file input component, data about the</p><p>The writer is the mediator between when the file is uploaded into the  <code>live_file_input</code> and when it is subsequently consumed using <a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html?ref=thestackcanary.com#consume_uploaded_entries/3"><code>Phoenix.LiveView.consume_uploaded_entries/3</code></a>.  The implementation of the writer dictates how you consume the uploads according to the <code>meta/1</code> implementation in the writer. For example, here is an example of how the default writer works along with the default example of how files are consumed:</p><pre><code class="language-elixir">defmodule Phoenix.LiveView.UploadTmpFileWriter do
  @moduledoc false

  @behaviour Phoenix.LiveView.UploadWriter

  # Other impls ommitted for brevity

  @impl true
  def meta(state) do
    %{path: state.path}
  end
end

defmodule Test.DemoLive do
  def handle_event(&quot;save&quot;, _params, socket) do
    uploaded_files =
      consume_uploaded_entries(socket, :avatar, fn %{path: path}, _entry -&gt;
        dest = Path.join(&quot;priv/static/uploads&quot;, Path.basename(path))
        File.cp!(path, dest)
        {:ok, Routes.static_path(socket, &quot;/uploads/#{Path.basename(dest)}&quot;)}
      end)
    {:noreply, update(socket, :uploaded_files, &amp;(&amp;1 ++ uploaded_files))}
  end
end</code></pre><p>Notice that the last parameter of <code>consume_uploaded_entry</code> specifies a function whose inputs are the outputs of the writer&apos;s <code>meta</code> implementation, so if you find yourself implementing your own writer, ensure that you keep this in mind. In our case, we are not going to change the writer since the modifications we are making mostly reside in the JavaScript side.</p><h2 id="adding-custom-preview-rendering">Adding Custom Preview Rendering</h2><p>Now I will discuss the necessary steps to add custom preview rendering to Phoenix Live Uploads. This will assume you have set up your Phoenix project with the appropriate routing and database connection, so we will not be discussing those portions. Refer to the <a href="https://hexdocs.pm/phoenix/up_and_running.html?ref=thestackcanary.com" rel="noreferrer">getting started guide</a> if needed.</p><p>The way-too-simplified explanation for what I&apos;m going to show is how to synchronize the PDF rendering and subsequent conversion to a <code>Blob</code> which then is stored as an HTML attribute in its corresponding element. A unique entry reference ID is used to identify the correct element and <code>Blob</code> between the server and client, but in order to generate the ID and not disrupt other upload types we must use the existing <code>LiveUploader</code> instance that LiveView uses by using the <code>UploadEntry</code> class. </p><p>To adapt this method to other file extensions, just change your rendering method and how you match on file extension. </p><p>The files in the repository that you should be concerned with are:</p><ul><li><a href="https://github.com/acalejos/phoenix-upload-pdf-preview/tree/main/lib/upload_pdf_preview_web/live/demo_live?ref=thestackcanary.com" rel="noreferrer"><code>index.ex</code></a></li><li><a href="https://github.com/acalejos/phoenix-upload-pdf-preview/blob/main/assets/js/app.js?ref=thestackcanary.com" rel="noreferrer"><code>app.js</code></a></li><li><a href="https://github.com/acalejos/phoenix-upload-pdf-preview/blob/5a96684eae4c89dd8699b8d88961d3076584734b/lib/upload_pdf_preview_web/components/layouts/root.html.heex?ref=thestackcanary.com#L13" rel="noreferrer"><code>root.html.heex</code></a></li></ul><p>You will have to make 1 modification to a file that is not included in the GitHub repository. After you run <code>mix deps.get</code>, go to the file located at <code>deps/phoenix_live_view/priv/static/phoenix_live_view.esm.js</code>, and at the bottom you will see where Phoenix Live View declares its JavaScript exports. By default it only exports the <code>LiveSocket</code> class, but you will need to add <code>UploadEntry</code> as an export. This will be used within <code>app.js</code>.</p><pre><code class="language-javascript">//deps/phoenix_live_view/priv/static/phoenix_live_view.esm.js
// Bottom of the file

// Before modifications
export { 
  LiveSocket
};

// After modifications
export { 
  LiveSocket, 
  UploadEntry 
};</code></pre><h2 id="modifying-indexex">Modifying <code>index.ex</code></h2><p>This is where all of the server-side code for the uploads reside. Let&apos;s start by enabling uploads. We need to give a key that we will use to store the uploads we want to associate with this input batch. We will use the key <code>:demo</code> here:</p><pre><code class="language-elixir">defmodule UploadPdfPreviewWeb.DemoLive.Index do
  use UploadPdfPreviewWeb, :live_view

  @impl true
  def mount(_session, _params, socket) do
    socket =
      socket
      |&gt; assign(:uploaded_files, [])
      |&gt; allow_upload(
        :demo,
        accept: ~w(.pdf .jpg .jpeg .png .tif .tiff),
        max_entries: 5
      )

    {:ok, socket}
  end
  ...
end</code></pre><p>So in this example we are accepting files with extensions <code>.pdf</code>, <code>.jpg</code>, <code>.jpeg</code>, <code>.png</code>, <code>.tif</code>, and <code>.tiff</code>. We are limiting an upload batch to at most five entries. We also add another assign separate from the <code>@uploads</code> assign where we will store uploaded files once they are consumed. </p><p>Most of the modification we will make are in the client-side hooks that are invoked from the <code>live_file_input</code> and <code>live_img_preview</code> components. Since the hooks are hard-coded in the components, I just looked at what the components are doing under the hood and copied the default with the only changes being the hooks. For the <code>live_file_input</code>, we now add a custom hook called <code>LiveFileUpload</code>, and for <code>live_img_preview</code> we conditionally include a hook <code>LivePdfPreview</code> only for PDF files, and otherwise we attach the default hook. </p><p>So now the custom <code>live_file_upload</code> looks <a href="https://github.com/acalejos/phoenix-upload-pdf-preview/blob/5a96684eae4c89dd8699b8d88961d3076584734b/lib/upload_pdf_preview_web/live/demo_live/index.ex?ref=thestackcanary.com#L53" rel="noreferrer">like</a>:</p><pre><code class="language-elixir">input
  id={@uploads.demo.ref}
  type=&quot;file&quot;
  name={@uploads.demo.name}
  accept={@uploads.demo.accept}
  data-phx-hook=&quot;LiveFileUpload&quot;
  data-phx-update=&quot;ignore&quot;
  data-phx-upload-ref={@uploads.demo.ref}
  data-phx-active-refs={join_refs(for(entry &lt;- @uploads.demo.entries, do: entry.ref))}
  data-phx-done-refs={
    join_refs(for(entry &lt;- @uploads.demo.entries, entry.done?, do: entry.ref))
  }
  data-phx-preflighted-refs={
    join_refs(for(entry &lt;- @uploads.demo.entries, entry.preflighted?, do: entry.ref))
  }
  data-phx-auto-upload={@uploads.demo.auto_upload?}
  multiple={@uploads.demo.max_entries &gt; 1}
  class=&quot;sr-only&quot;
/&gt;</code></pre><p>And the custom <code>live_img_preview</code> looks <a href="https://github.com/acalejos/phoenix-upload-pdf-preview/blob/5a96684eae4c89dd8699b8d88961d3076584734b/lib/upload_pdf_preview_web/live/demo_live/index.ex?ref=thestackcanary.com#L86" rel="noreferrer">like</a>:</p><pre><code class="language-elixir">&lt;img
    id={&quot;phx-preview-#{entry.ref}&quot;}
    data-phx-upload-ref={entry.upload_ref}
    data-phx-entry-ref={entry.ref}
    data-phx-hook={
      if entry.client_type == &quot;application/pdf&quot;,
        do: &quot;LivePdfPreview&quot;,
        else: &quot;Phoenix.LiveImgPreview&quot;
    }
    data-phx-update=&quot;ignore&quot;
/&gt;</code></pre><p>We can optionally choose to validate the entries beyond the provided validation:</p><pre><code class="language-elixir">  def handle_event(&quot;validate_upload&quot;, _params, socket) do
    num_remaining_uploads =
      length(socket.assigns.uploaded_files) - socket.assigns.uploads.demo.max_entries

    valid =
      Enum.uniq_by(socket.assigns.uploads.demo.entries, &amp; &amp;1.client_name)
      |&gt; Enum.take(num_remaining_uploads)

    socket =
      Enum.reduce(socket.assigns.uploads.demo.entries, socket, fn entry, socket -&gt;
        if entry in valid do
          socket
        else
          socket
          |&gt; cancel_upload(:demo, entry.ref)
          |&gt; put_flash(
            :error,
            &quot;Uploaded files should be unique and cannot exceed #{socket.assigns.uploads.demo.max_entries} total files.&quot;
          )
        end
      end)

    {:noreply, socket}
  end</code></pre><p>Here, we filter out any duplicate files and we check to see how many uploaded files have been done in previous batches (which is stored in the <code>uploaded_files</code> assigns) and take as many files as we have remaining. Then we cancel any of the files which didn&apos;t pass our validation. </p><p>Lastly, we add a handler for the file submissions, potentially customizing the behavior depending on file type:</p><pre><code class="language-elixir"> def handle_event(&quot;submit_upload&quot;, _params, socket) do
  uploaded_files =
    consume_uploaded_entries(socket, :demo, fn %{path: _path}, entry -&gt;
      case entry.client_type do
        &quot;application/pdf&quot; -&gt;
          # Handle PDFs
          IO.puts(&quot;PDF&quot;)

        _ -&gt;
          # Handle images
          IO.puts(&quot;Image&quot;)
      end
    end)

  socket =
    socket
    |&gt; update(:uploaded_files, &amp;(&amp;1 ++ uploaded_files))

  {:noreply, socket}
end</code></pre><h2 id="modifying-appjs">Modifying <code>app.js</code></h2><p>Next we can modify the client-side hooks, which consists of implementing the two hooks we defined in our server code. The <code>LiveFileUpload</code> code essentially commandeers the stock implementation of the hook from Phoenix Live View (which you can view <a href="https://github.com/phoenixframework/phoenix_live_view/blob/8a3014465d861a08234577023abb932e9ce1bc6c/assets/js/phoenix_live_view/hooks.js?ref=thestackcanary.com#L12" rel="noreferrer">here</a>).  It relies on the <code>UploadEntry</code> class we exported earlier, which communicates with the <a href="https://github.com/phoenixframework/phoenix_live_view/blob/8a3014465d861a08234577023abb932e9ce1bc6c/assets/js/phoenix_live_view/live_uploader.js?ref=thestackcanary.com#L15" rel="noreferrer"><code>LiveUploader</code></a> singleton class that stores data regarding the current uploads. The custom implementation essentially reimplements the stock version, adding in a check and new behavior for PDF file types. Let&apos;s walk through this code:</p><h3 id="livefileupload-hook"><code>LiveFileUpload</code> Hook</h3><pre><code class="language-javascript">Hooks.LiveFileUpload = {
  activeRefs() {
    return this.el.getAttribute(&quot;data-phx-active-refs&quot;);
  },

  preflightedRefs() {
    return this.el.getAttribute(&quot;data-phx-preflighted-refs&quot;);
  },

  mounted() {
    this.preflightedWas = this.preflightedRefs();
    let pdfjsLib = window[&quot;pdfjs-dist/build/pdf&quot;];
    // Ensure pdfjsLib is available globally
    if (typeof pdfjsLib === &quot;undefined&quot;) {
      console.error(&quot;pdf.js is not loaded&quot;);
      return;
    }
    // Use the global `pdfjsLib` to access PDFJS functionalities
    pdfjsLib.GlobalWorkerOptions.workerSrc =
      &quot;https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js&quot;;
    this.el.addEventListener(&quot;input&quot;, (event) =&gt; {
      const files = event.target.files;
      for (const file of files) {
        if (file.type === &quot;application/pdf&quot;) {
          const fileReader = new FileReader();
          fileReader.onload = (e) =&gt; {
            const typedarray = new Uint8Array(e.target.result);
            // Load the PDF file
            pdfjsLib.getDocument(typedarray).promise.then((pdf) =&gt; {
              // Assuming you want to preview the first page of each PDF
              pdf.getPage(1).then((page) =&gt; {
                const scale = 1.5;
                const viewport = page.getViewport({ scale: scale });
                const canvas = document.createElement(&quot;canvas&quot;);
                const context = canvas.getContext(&quot;2d&quot;);
                canvas.height = viewport.height;
                canvas.width = viewport.width;

                // Render PDF page into canvas context
                const renderContext = {
                  canvasContext: context,
                  viewport: viewport,
                };
                page.render(renderContext).promise.then(() =&gt; {
                  // Convert canvas to image and set as source for the element
                  const imgSrc = canvas.toDataURL(&quot;image/png&quot;);
                  let upload_entry = new UploadEntry(
                    this.el,
                    file,
                    this.__view
                  );
                  if (
                    (imgEl = document.getElementById(
                      `phx-preview-${upload_entry.ref}`
                    ))
                  ) {
                    imgEl.setAttribute(&quot;src&quot;, imgSrc);
                  } else {
                    this.el.setAttribute(
                      `pdf-preview-${upload_entry.ref}`,
                      imgSrc
                    );
                  }
                });
              });
            });
          };
          fileReader.readAsArrayBuffer(file);
        }
      }
    });
  },
  updated() {
    let newPreflights = this.preflightedRefs();
    if (this.preflightedWas !== newPreflights) {
      this.preflightedWas = newPreflights;
      if (newPreflights === &quot;&quot;) {
        this.__view.cancelSubmit(this.el.form);
      }
    }

    if (this.activeRefs() === &quot;&quot;) {
      this.el.value = null;
    }
    this.el.dispatchEvent(new CustomEvent(&quot;phx:live-file:updated&quot;));
  },
};</code></pre><p>On mount, we load PDF.js from the CloudFlare CDN (you should specify the most updated version) and we add a listener that listens on the <code>input</code> event for the input tag. This gets triggered whenever files are uploaded using the input, and stores all files associated with the upload batch (rather than one at a time). </p><p>So we iterate through the target (uploaded) files and we only care about PDF files, all other files will just continue. For PDF files, we use PDF.js to get the first page (you can extend this to all if you would like) for the sake of the preview.  We render the PDF into a canvas which we can then convert to a PNG, encoded as a <code>Blob</code> object through the <code>canvas.toDataURL</code> function.  We then create a new <code>UploadEntry</code> using this <code>Blob</code>, which registers the data to the <code>UploadWriter</code>, doing various things such as assigning a unique ID (<code>ref</code>) to the entry. Since the upload now has a unique ID, we can attach the unique ID to the DOM element which can be used later on during the <code>LivePdfPreview</code> hook.</p><h3 id="livepdfpreview-hook"><code>LivePdfPreview</code> Hook</h3><p>We now define the <code>LivePdfPreview</code> hook which will only be used to preview PDF files. The code here is derivative of the default <a href="https://github.com/phoenixframework/phoenix_live_view/blob/8a3014465d861a08234577023abb932e9ce1bc6c/assets/js/phoenix_live_view/hooks.js?ref=thestackcanary.com#L33" rel="noreferrer"><code>Phoenix.LiveImgPreview</code></a> handler, and only works given the previous hook we discussed. </p><p>Here, we check to see if the PDF preview has already been rendered. If not, we put a placeholder image as the source, knowing that the first hook will replace the placeholder when it&apos;s done rendering. Otherwise we set the element&apos;s <code>src</code> to be the <code>Blob</code> from the previous hook. </p><pre><code class="language-javascript">Hooks.LivePdfPreview = {
  mounted() {
    this.ref = this.el.getAttribute(&quot;data-phx-entry-ref&quot;);
    this.inputEl = document.getElementById(
      this.el.getAttribute(&quot;data-phx-upload-ref&quot;)
    );
    let src = this.inputEl.getAttribute(`pdf-preview-${this.ref}`);
    if (!src) {
      src = &quot;https://poainc.org/wp-content/uploads/2018/06/pdf-placeholder.png&quot;;
    } else {
      this.inputEl.removeAttribute(`pdf-preview-${this.ref}`);
    }
    this.el.src = src;
    this.url = src;
  },
  destroyed() {
    if (this.url) {
      URL.revokeObjectURL(this.url);
    }
  },
};</code></pre><p>We have to add this synchronization since there is no guarantee that the PDF is rendered by the time the preview appears in the DOM. The preview is conditionally rendered in the LiveView when the entries are populated into the assigns.</p><pre><code class="language-elixir">&lt;li :for={entry &lt;- @uploads.demo.entries} class=&quot;relative&quot;&gt;
  &lt;div class=&quot;group aspect-h-7 aspect-w-10 block w-full overflow-hidden rounded-lg bg-gray-100 focus-within:ring-2 focus-within:ring-indigo-500 focus-within:ring-offset-2 focus-within:ring-offset-gray-100&quot;&gt;
    &lt;img
      id={&quot;phx-preview-#{entry.ref}&quot;}
      data-phx-upload-ref={entry.upload_ref}
      data-phx-entry-ref={entry.ref}
      data-phx-hook={
        if entry.client_type == &quot;application/pdf&quot;,
          do: &quot;LivePdfPreview&quot;,
          else: &quot;Phoenix.LiveImgPreview&quot;
      }
      data-phx-update=&quot;ignore&quot;
    /&gt;
...
&lt;/li&gt;</code></pre><h2 id="final-thoughts">Final Thoughts</h2><p>It is worth noting that in the provided GitHub repo, there is some additional functionality to store the previews as a base64-encoded blob to be used later on. I didn&apos;t go over it specifically during this article since it is not core to the task at hand, but I needed it for my use case so I went ahead and included it in the code. The relevant code is the <code>GatherPreviews</code> hook in <code>app.js</code> and the <code>handle_event(&quot;update_preview_srcs&quot;)</code> handler in <code>index.ex</code>.</p><p>I want to emphasize that this very well might not be the best way to achieve this goal, but after reading the docs and source code of Phoenix Live View for quite some time it didn&apos;t seem that there was a clean API or support for customizing this behavior. I&apos;d love to hear about any other methods in the comments below! </p><div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="background-color: #121111; display: none;">
            
            <div class="kg-signup-card-content">
                
                <div class="kg-signup-card-text ">
                    <h2 class="kg-signup-card-heading"><span style="white-space: pre-wrap;">Sign up for The Stack Canary</span></h2>
                    <p class="kg-signup-card-subheading"><span style="white-space: pre-wrap;">If you enjoyed, let me know!</span></p>
                    
        <form class="kg-signup-card-form" data-members-form="signup">
            
            <div class="kg-signup-card-fields">
                <input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
                <button class="kg-signup-card-button " style="background-color: #000000;color: #FFFFFF;" type="submit">
                    <span class="kg-signup-card-button-default">Subscribe</span>
                    <span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
        <g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
            <g class="nc-loop-dots-4-24-icon-o">
                <circle cx="4" cy="12" r="3"/>
                <circle cx="12" cy="12" r="3"/>
                <circle cx="20" cy="12" r="3"/>
            </g>
            <style data-cap="butt">
                .nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
                .nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
                .nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
                .nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
                .nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
                @keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
            </style>
        </g>
    </svg></span>
                </button>
            </div>
            <div class="kg-signup-card-success">
                Email sent! Check your inbox to complete your signup.
            </div>
            <div class="kg-signup-card-error" data-members-error></div>
        </form>
        
                    <p class="kg-signup-card-disclaimer"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
                </div>
            </div>
        </div>]]></content:encoded></item><item><title><![CDATA[Elevate Your Elixir With Sigils]]></title><description><![CDATA[Adding support for real-valued intervals implementing the Enumerable Protocol in Elixir.]]></description><link>https://www.thestackcanary.com/elevate-your-elixir-with-sigils/</link><guid isPermaLink="false">656d44da15f09315c892eee7</guid><category><![CDATA[Elixir]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Sat, 06 Jan 2024 21:25:52 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2024/01/Elevate_Elxiir_With_Sigils.png" medium="image"/><content:encoded><![CDATA[<h2 id="motivation">Motivation</h2><img src="https://www.thestackcanary.com/content/images/2024/01/Elevate_Elxiir_With_Sigils.png" alt="Elevate Your Elixir With Sigils"><p>In a <a href="https://www.thestackcanary.com/elixir-nimble-options/" rel="noreferrer">previous article</a> of mine, I wrote about using <a href="https://github.com/dashbitco/nimble_options?ref=thestackcanary.com" rel="noreferrer">NimbleOptions</a> to add extremely powerful option handling to your Elixir applications.  One of the custom validations I was using was a function  <code>in_range</code> that would check if an option fell within a real-valued interval. This differs from Elixir&apos;s built-in <code>Range</code> in that it needed to be real-valued (rather than discrete integer steps). Additionally, mostly due to aesthetic and personal opinion, I wanted to be able to express the intervals using mathematical notation such as <code>(0,1]</code> to mean &quot;allow any value greater than 0 and less than or equal to 1&quot;. I find Elixir to be such a beautiful language with a unique capacity for extensions that it felt wrong to use a function such as <code>in_range</code> or <code>in_interval</code>. Additionally, some implementations I&apos;ve come across have somewhat unintuitive APIs, such as the following spec:</p><pre><code class="language-elixir">@spec in_range(float, float, float, bool, bool) :: bool
@doc &quot;&quot;&quot;
  * `:value` - Value to test for inclusion
  * `:min` - Minimum value in range
  * `:max` - Maximum value in range
  * `:left` - Whether the left boundary is inclusive (true) or exclusive (false)
  * `:right` - Whether the right boundary is inclusive (true) or exclusive (false)
&quot;&quot;&quot;
def in_range(value, min \\ 0, max \\ 1, left \\ true, right \\ true)</code></pre><p>There&apos;s nothing expressly wrong with this implementation, but with my use cases and as Elixir is being used more in the domain of Machine Learning which deals with these intervals quite often, I wanted a solution that felt a bit more integrated.</p><h2 id="solution">Solution</h2><p>This led me to create a small 1-file library called <a href="https://github.com/acalejos/exterval?ref=thestackcanary.com" rel="noreferrer"><code>Exterval</code></a> which is available on <a href="https://hex.pm/packages/exterval?ref=thestackcanary.com" rel="noreferrer">Hex</a> and can be installed with:</p><pre><code class="language-elixir">def deps do
[
  {:exterval, &quot;~&gt; 0.1.0&quot;}
]
end</code></pre><p>To make the interval feel more native to Elixir, I implemented it as a sigil that implements the<a href="https://hexdocs.pm/elixir/1.12/Enumerable.html?ref=thestackcanary.com" rel="noreferrer"> <code>Enumerable</code> Protocol</a>, which gives you several nice benefits:</p><ul>
<li>Takes advantage of the <code>member?/2</code> function which means we can use the <code>in</code> keyword to check for membership</li>
<li>Allows for checking of sub-interval membership (<a href="https://github.com/acalejos/exterval?tab=readme-ov-file&amp;ref=thestackcanary.com#membership">with some caveats</a>)</li>
<li>Implements an optional <code>step</code> parameter that allows you to iterate/reduce over the interval</li>
<li>Implements a <code>size</code> function (remember, <code>size</code> refers to the ability to count the number of members without reducing over the whole structure, whereas <code>lengths</code> implies a need to reduce).</li>
<li>Allows for <code>:infinity</code> and <code>:neg_infinity</code> to be specified in the interval</li>
</ul>
<p>This lets us write more succinct checks like:</p><pre><code class="language-elixir">iex&gt; import Exterval
iex&gt; ~i&lt;[1, 10)//2&gt;
[1, 10)//2
iex&gt; ~i&lt;[1, 10)//2&gt; |&gt; Enum.to_list()
[1.0, 3.0, 5.0, 7.0, 9.0]
iex&gt; ~i&lt;[1, 10)//2&gt; |&gt; Enum.sum()
25.0
iex&gt; ~i&lt;[-1, 3)//-0.5&gt; |&gt; Enum.to_list()
[2.5, 2.0, 1.5, 1.0, 0.5, 0.0, -0.5, -1.0]
iex&gt; ~i&lt;[1, 10]&gt; |&gt; Enum.count()
:infinity
iex&gt; ~i&lt;[1, 10)//2&gt; |&gt; Enum.count()
4
iex&gt; ~i&lt;[-2,-2]//1.0&gt; |&gt; Enum.count()
1
iex&gt; ~i&lt;[1,2]//0.5&gt; |&gt; Enum.count()
3
iex&gt; ~i&lt;[-2,-1]//0.75&gt; |&gt; Enum.count()
2
iex&gt; 1 in ~i&lt;[1, 10]&gt;
true
iex&gt; 1 in ~i&lt;[1, 10)//2&gt;
true
iex&gt; 3 in ~i&lt;(1, 10)//2&gt;
true
# You can even do variable substitution using string interpolation syntax, since the sigil parameter is just a string
iex&gt; min = 2
iex&gt; 3 in ~i&lt;(#{min + 1}, 10)//2&gt;
false</code></pre><h2 id="design-details">Design Details</h2><p>The decision to implement the interval as a sigil was not as straightforward as it might seem. As I mentioned before, Elixir is an extremely extensible language with superior support for meta-programming, so implementing this as a macro was my first instinct. I considered commandeering the opening brackets <code>(</code> and <code>[</code> to trigger the macro, or something similar with the comma <code>,</code> , but fortunately, I hit a brick wall with that effort. I say fortunately not only because it would have been a bad idea from a design perspective, but it certainly would have been a messier implementation and would have overly complicated it in addition to actually making the code less clear. I appreciate the usage of the sigil <code>~I</code> because it makes it clear that the range that follows is not to be confused with the built-in <code>Range</code>. </p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">You can read more about Elixir sigils <a href="https://hexdocs.pm/elixir/main/sigils.html?ref=thestackcanary.com" rel="noreferrer">here</a> and see their syntax reference <a href="https://hexdocs.pm/elixir/main/syntax-reference.html?ref=thestackcanary.com#sigils" rel="noreferrer">here</a>. Of note, you can use any of the allowed delimiter pairs that it lists to capture your sigil. I chose [ and ] so as to not conflict with the brackets used in the interval. You could also use something like ~i|[0,1)| if you prefer. </div></div><p>Once I decided on the usage of the <code>Enumerable</code> protocol, I knew I wanted to allow some way for an optional step size to be specified so that <code>reduce</code> could be used on the structure. Elixir sigils allow for parameters to be passed after the closing sigil, so initially,  I considered passing in the step size as a parameter since zero or more ASCII letters and digits can be given as a modifier to the sigil, but this would prohibit having floats as step sizes. Another constraint to consider when using sigils is that string interpolation is only allowed within the sigil when using a lowercase sigil. Sigils start with&#xA0;<code>~</code>&#xA0;and are followed by one lowercase letter or by one or more uppercase letters, immediately followed by one of the allowed delimiter pairs. Within the context of our use case, we happen to be able to get by without having string interpolation since we use it within pre-defined parameters that are hardcoded, but the library becomes much more useful if we can have dynamically defined intervals, so this limits how the sigil is named.</p><p>Another major design decision was how to actually parse the sigil. I ultimately landed on the straightforward answer of just using a regex, but I had a decent back-and-forth with my friend <a href="https://twitter.com/polvalente?ref=thestackcanary.com" rel="noreferrer">Paulo</a> from the <a href="https://github.com/elixir-nx/nx/tree/main/nx?ref=thestackcanary.com#readme" rel="noreferrer">Elixir-Nx</a> core team regarding other options. He provided some nice proofs of concept using binary pattern matching as well as <a href="https://github.com/dashbitco/nimble_parsec?ref=thestackcanary.com" rel="noreferrer">NimbleParsec</a>, but I decided on a regex due to my familiarity, its ability to reduce the amount of code, and because I was not too concerned with performance concerns with what will typically be short patterns. </p><p>One of the last design details finalized was how to treat the step size and its effect on item membership. Paulo and I discussed whether it should support ranges where the min and max values did not necessarily have to be in the correct order (e.g. <code>~i&lt;1,-1//0.5&gt;</code>) which would essentially imply that any iteration would start at <code>1</code> in this instance and would work towards <code>-1</code> in steps of <code>0.5</code>. This was discussed since it can be seen in some other implementations throughout other ecosystems.  We decided that the most clear solution, as well as the solution that fit best within the spirit of the library, was to enforce that the first value specified be less than or equal to the second value, and any desire to iterate starting with the max value could be specified using a negative step size. </p><h2 id="implementation-details">Implementation Details</h2><h3 id="creation">Creation</h3><p>An interval is stored as a struct with the following fields:</p><ul>
<li><code>left</code> - the left bracket, either <code>[</code> or <code>(</code>.</li>
<li><code>right</code> - the right bracket, either <code>]</code> or <code>)</code>.</li>
<li><code>min</code> - the lower bound of the interval. Can be <code>:neg_infinity</code> or any number.</li>
<li><code>max</code> - the upper bound of the interval. Can be <code>:infinity</code> or any number.</li>
<li><code>step</code> - the step size of the interval. If <code>nil</code>, the interval is continuous.</li>
</ul>
<p>To define a sigil, you create a function with the name of the sigil prefixed by <code>sigil_</code>, so since I wish to use this sigil using <code>~i</code> I define it as</p><pre><code class="language-elixir">def sigil_i(pattern, []) do
end</code></pre><p>The second parameter are the options to the sigil I mentioned earlier. For now these are unused.</p><p>I parse the input to the sigil using the following <a href="https://regex101.com/r/MJyFE4/1?ref=thestackcanary.com" rel="noreferrer">regex</a>:</p><pre><code class="language-regex">  ^(?P&lt;left&gt;\[|\()\s*(?P&lt;min&gt;[-+]?(?:\d+|\d+\.\d+)(?:[eE][-+]?\d+)?|:neg_infinity)\s*,\s*(?P&lt;max&gt;[-+]?(?:\d+|\d+\.\d+)(?:[eE][-+]?\d+)?|:infinity)\s*(?P&lt;right&gt;]|\))(?:\/\/(?P&lt;step&gt;[-+]?(?:[1-9]+|\d+\.\d+)(?:[eE][-+]?\d+)?))?$</code></pre><p>Using the named capture groups I perform some additional validation such as ensuring that the interval goes from the minimum value to the maximum.</p><h3 id="enumerable-%E2%80%93-size-count">Enumerable &#x2013; Size / Count</h3><p>The first function I need to implement for the protocol is the <code>Enumerable.count/1</code> function. Logically, there are three conditions to account for. First are the instances where the size is either zero or infinity. Since <code>Enumerable.count/1</code> must return a number on success, I choose to return <code>{:error, Infinity}</code> from <code>Enumerable.count/1</code> when I wish to return <code>:infinity</code>. This would normally be used to return a module which can perform a reduction to compute the count, but if we just make a simple helper module </p><pre><code class="language-elixir">defmodule Infinity do
  @moduledoc false
  def reduce(%Exterval{}, _, _), do: {:halt, :infinity}
end</code></pre><p>Now I can get my desired behavior. I implement these cases with the following:</p><pre><code class="language-elixir">def size(interval)
def size(%__MODULE__{step: nil}), do: {:error, Infinity}
def size(%__MODULE__{max: :neg_infinity}), do: 0
def size(%__MODULE__{min: :infinity}), do: 0

def size(%__MODULE__{min: min, max: max})
    when min in [:infinity, :neg_infinity] or max in [:infinity, :neg_infinity],
    do: {:error, Infinity}</code></pre><p>Lastly I separate cases where the step size is negative and where its positive since the logic is different.</p><pre><code class="language-elixir">def size(%__MODULE__{left: left, right: right, min: min, max: max, step: step}) when step &lt; 0 do
  case {left, right} do
    {&quot;[&quot;, &quot;]&quot;} -&gt;
      abs(trunc((max - min) / step)) + 1

    {&quot;(&quot;, &quot;]&quot;} -&gt;
      abs(trunc((max - (min - step)) / step)) + 1

    {&quot;[&quot;, &quot;)&quot;} -&gt;
      abs(trunc((max + step - min) / step)) + 1

    {&quot;(&quot;, &quot;)&quot;} -&gt;
      abs(trunc((max + step - (min - step)) / step)) + 1
  end
end

def size(%__MODULE__{left: left, right: right, min: min, max: max, step: step}) when step &gt; 0 do
  case {left, right} do
    {&quot;[&quot;, &quot;]&quot;} -&gt;
      abs(trunc((max - min) / step)) + 1

    {&quot;(&quot;, &quot;]&quot;} -&gt;
      abs(trunc((max - (min + step)) / step)) + 1

    {&quot;[&quot;, &quot;)&quot;} -&gt;
      abs(trunc((max - step - min) / step)) + 1

    {&quot;(&quot;, &quot;)&quot;} -&gt;
      abs(trunc((max - step - (min + step)) / step)) + 1
  end
end</code></pre><h3 id="enumerable-%E2%80%93-reduce">Enumerable &#x2013; Reduce</h3><p>The implementation for <code>reduce</code> is a great example of how Elixir&apos;s pattern matching in function headers can reduce visual complexity and even the implementation itself. First, we return <code>:infinity</code> if  <code>step</code> is <code>nil</code>.</p><pre><code class="language-elixir">def reduce(%Exterval{step: nil}, acc, _fun) do
  {:done, acc}
end
    </code></pre><p>Next, we again have different clauses depending on if the <code>step</code> is positive or negative, since that dictates which direction with respect to the interval the reduction occur.</p><pre><code class="language-elixir ">def reduce(%Exterval{left: left, right: right, min: min, max: max, step: step}, acc, fun)
    when step &gt; 0 do
  case left do
    &quot;[&quot; -&gt;
      reduce(min, max, right, acc, fun, step)

    &quot;(&quot; -&gt;
      reduce(min + step, max, right, acc, fun, step)
  end
end

def reduce(%Exterval{left: left, right: right, min: min, max: max, step: step}, acc, fun)
    when step &lt; 0 do
  case right do
    &quot;]&quot; -&gt;
      reduce(min, max, left, acc, fun, step)

    &quot;)&quot; -&gt;
      reduce(min, max + step, left, acc, fun, step)
  end
end</code></pre><p>Notice that these clauses to the <code>reduce/3</code> implementation return a different <code>reduce/6</code> function which is specific to our module. </p><p>Next we handle conditions where the reduction is halted or suspended:</p><pre><code class="language-elixir">efp reduce(_min, _max, _closing, {:halt, acc}, _fun, _step) do
  {:halted, acc}
end

defp reduce(min, max, closing, {:suspend, acc}, fun, step) do
  {:suspended, acc, &amp;reduce(min, max, closing, &amp;1, fun, step)}
end</code></pre><p>Next we handle edge cases involving <code>:infinity</code> and <code>:neg_infinity</code> where we have no way to begin the reduction since we cannot move <code>step</code> increments away from either of these when they are our starting point:</p><pre><code class="language-elixir">defp reduce(:neg_infinity, _max, _closing, {:cont, acc}, _fun, step) when step &gt; 0 do
  {:done, acc}
end

defp reduce(_min, :infinity, _closing, {:cont, acc}, _fun, step) when step &lt; 0 do
  {:done, acc}
end</code></pre><p>Interestingly, these are cases where the size of the intervals would be <code>:infinity</code> but we cannot reduce over them at all, as opposed to other infinitely sized intervals where we can begin iteration which will never end, such as <code>~i&lt;[0,:infinity]//1&gt;</code> which would effectively be an infinite stream starting at <code>0</code> and incrementing by <code>1</code>.</p><p>Next we add all of the main logic for the &quot;typical&quot; cases:</p><pre><code class="language-elixir">defp reduce(min, max, &quot;]&quot; = closing, {:cont, acc}, fun, step)
     when min &lt;= max do
  reduce(min + step, max, closing, fun.(min, acc), fun, step)
end

defp reduce(min, max, &quot;)&quot; = closing, {:cont, acc}, fun, step)
     when min &lt; max do
  reduce(min + step, max, closing, fun.(min, acc), fun, step)
end

defp reduce(min, max, &quot;[&quot; = closing, {:cont, acc}, fun, step)
     when min &lt;= max do
  reduce(min, max + step, closing, fun.(max, acc), fun, step)
end

defp reduce(min, max, &quot;(&quot; = closing, {:cont, acc}, fun, step)
     when min &lt; max do
  reduce(min, max + step, closing, fun.(max, acc), fun, step)
end</code></pre><p>And lastly we add the final case where the condition that <code>min &lt; max</code> (or <code>min &lt;= max</code> depending on the brackets) is no longer met, which means the reduction is complete:</p><pre><code class="language-elixir">defp reduce(_, _, _, {:cont, acc}, _fun, _up) do
  {:done, acc}
end</code></pre><p>Just like that the <code>reduce/3</code> implementation is complete! As I mentioned before and notes in more detail, there are some opinions inherit to this implementation having to do with <code>:infinity</code> and <code>:neg_infinity</code> bounds as well as empty intervals, but I tried to keep the behavior consistent throughout.</p><h3 id="enumerable-%E2%80%93-membership">Enumerable &#x2013; Membership</h3><p>Now on to the part that I was most interested in, which is interval membership. First, let&apos;s add support for checking membership between two intervals, which is essentially a check for one interval being a sub-interval of another. </p><p>Sub-interval must satisfy the following to be a subset:</p><ul><li>The minimum value of the subset must belong to the superset.</li><li>The maximum value of the subset must belong to the superset.</li><li>The step size of the subset must be a multiple of the step size of the superset.</li></ul><p>If the superset has no step size, then only the first two conditions must be satisfied.</p><p>if the superset has a step size, and the subset doesn&apos;t then membership is&#xA0;<code>false</code>.</p><pre><code class="language-elixir">def member?(%Exterval{step: nil} = outer, %Exterval{} = inner) do
  res = inner.max in outer &amp;&amp; inner.min in outer
  {:ok, res}
end

def member?(%Exterval{}, %Exterval{step: nil}) do
  {:ok, false}
end

def member?(%Exterval{} = outer, %Exterval{} = inner) do
  res = inner.max in outer &amp;&amp; inner.min in outer &amp;&amp; :math.fmod(inner.step, outer.step) == 0
  {:ok, res}
end</code></pre><p>Then that just leaves the main implementation for membership checks, which is basically just a <code>case</code> statement which changes the output depending on the brackets supplied. Additionally, if the interval contains a <code>step</code> then the value being checked must be a multiple of the <code>step</code>.</p><pre><code class="language-elixir">def member?(%Exterval{} = rang, value) when is_number(value) do
  res =
    if Exterval.size(rang) == 0 do
      {:ok, false}
    else
      case {rang.left, rang.min, rang.max, rang.right} do
        {_, :neg_infinity, :infinity, _} -&gt;
          true

        {_, :neg_inf, max_val, &quot;]&quot;} -&gt;
          value &lt;= max_val

        {_, :neg_infinity, max_val, &quot;)&quot;} -&gt;
          value &lt; max_val

        {&quot;[&quot;, min_val, :infinity, _} -&gt;
          value &gt;= min_val

        {&quot;(&quot;, min_val, :infinity, _} -&gt;
          value &gt; min_val

        {&quot;[&quot;, min_val, max_val, &quot;]&quot;} -&gt;
          value &gt;= min_val and value &lt;= max_val

        {&quot;(&quot;, min_val, max_val, &quot;]&quot;} -&gt;
          value &gt; min_val and value &lt;= max_val

        {&quot;[&quot;, min_val, max_val, &quot;)&quot;} -&gt;
          value &gt;= min_val and value &lt; max_val

        {&quot;(&quot;, min_val, max_val, &quot;)&quot;} -&gt;
          value &gt; min_val and value &lt; max_val

        _ -&gt;
          raise ArgumentError, &quot;Invalid range specification&quot;
      end
    end

  res =
    unless is_nil(rang.step) || rang.min == :neg_infinity || rang.max == :infinity do
      res &amp;&amp; :math.fmod(value - rang.min, rang.step) == 0
    else
      res
    end

  {:ok, res}
end</code></pre><h3 id="inspect">Inspect</h3><p>Lastly, to make the user experience a bit better, it&apos;s not too difficult to implement the <a href="https://hexdocs.pm/elixir/1.16.0/Inspect.html?ref=thestackcanary.com" rel="noreferrer"><code>Inpect</code></a> Protocol to provide a cleaner output:</p><pre><code class="language-elixir">defimpl Inspect do
  import Inspect.Algebra
  import Kernel, except: [inspect: 2]

  def inspect(%Exterval{left: left, right: right, min: min, max: max, step: nil}, opts) do
    concat([string(left), to_doc(min, opts), &quot;,&quot;, to_doc(max, opts), string(right)])
  end

  def inspect(%Exterval{left: left, right: right, min: min, max: max, step: step}, opts) do
    concat([
      string(left),
      to_doc(min, opts),
      &quot;,&quot;,
      to_doc(max, opts),
      string(right),
      &quot;//&quot;,
      to_doc(step, opts)
    ])
  end
end</code></pre><h2 id="future-plans">Future Plans</h2><p>Currently I am weighing the options between adding more functionality to the library or keeping it as thin as it currently is. The main additions could be more robust set operations on the intervals, but I currently do not have a need for it so it will probably not make it into the library in the near future. </p><p>For now, I hope this provided a detailed look at the process of identifying a problem, and subsequently designing and implementing the solution. I found this to be an elegant solution to the problem, but as I mentioned it was not a straight-line path. I would be interested to hear about any other solutions people have seen!</p><div class="kg-card kg-signup-card kg-width-regular " data-lexical-signup-form style="background-color: #F0F0F0; display: none;">
            
            <div class="kg-signup-card-content">
                
                <div class="kg-signup-card-text ">
                    <h2 class="kg-signup-card-heading"><span style="white-space: pre-wrap;">Sign up for The Stack Canary</span></h2>
                    <p class="kg-signup-card-subheading"><span style="white-space: pre-wrap;">If you enjoyed reading, let me know!</span></p>
                    
        <form class="kg-signup-card-form" data-members-form="signup">
            
            <div class="kg-signup-card-fields">
                <input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
                <button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
                    <span class="kg-signup-card-button-default">Subscribe</span>
                    <span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
        <g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
            <g class="nc-loop-dots-4-24-icon-o">
                <circle cx="4" cy="12" r="3"/>
                <circle cx="12" cy="12" r="3"/>
                <circle cx="20" cy="12" r="3"/>
            </g>
            <style data-cap="butt">
                .nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
                .nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
                .nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
                .nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
                .nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
                @keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
            </style>
        </g>
    </svg></span>
                </button>
            </div>
            <div class="kg-signup-card-success">
                Email sent! Check your inbox to complete your signup.
            </div>
            <div class="kg-signup-card-error" data-members-error></div>
        </form>
        
                    <p class="kg-signup-card-disclaimer"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
                </div>
            </div>
        </div>]]></content:encoded></item><item><title><![CDATA[Python NumPy to Elixir-Nx]]></title><description><![CDATA[Learn how to leverage existing codebases from the Python ML ecosystem]]></description><link>https://www.thestackcanary.com/numpy-to-nx/</link><guid isPermaLink="false">6527767e02e0540d32653f28</guid><category><![CDATA[Elixir]]></category><category><![CDATA[Python]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Tue, 05 Dec 2023 01:13:01 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2023/12/numpy_to_nx.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.thestackcanary.com/content/images/2023/12/numpy_to_nx.png" alt="Python NumPy to Elixir-Nx"><p>For my <a href="https://elixirforum.com/t/serving-spam-detection-with-xgboost-and-nx-elixirconfus-2023/58203?ref=thestackcanary.com" rel="noreferrer">ElixirConfUS talk</a>, I wanted to demonstrate training a spam detection model with in Elixir. A pre-processing step I needed to perform was <a href="https://en.wikipedia.org/wiki/Tf%E2%80%93idf?ref=thestackcanary.com" rel="noreferrer">TF-IDF vectorization</a>, but there were no TF-IDF libraries already written which were built for <a href="https://github.com/elixir-nx/nx/tree/main/nx?ref=thestackcanary.com#readme" rel="noreferrer">Elixir-Nx</a>. Seeing as TF-IDF is an extremely common pre-processing step with Decision Trees, since they ingest tabular data, I decided to go ahead and write a full-fledged implementation rather than just writing a minimal implementation that I needed for my example. </p><p>I decided to model my implementation after the <a href="https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html?ref=thestackcanary.com#sklearn.feature_extraction.text.TfidfVectorizer" rel="noreferrer">TF-IDF Vectorizer </a>implementation in the Python scikit-learn, and in writing it I learned many lessons about translating Python NumPy code to Elixir-Nx.  Since Nx is to Elixir as NumPy is to Python, I thought others might find it useful to see how we can leverage existing code from the Python ecosystem to bring it Elixir.</p><p><strong>The sklearn source code can be found <a href="https://github.com/scikit-learn/scikit-learn/blob/d99b728b3/sklearn/feature_extraction/text.py?ref=thestackcanary.com" rel="noreferrer"><strong>here</strong></a>, while the Elixir source code can be found <a href="https://github.com/acalejos/mighty/tree/main/lib/preprocessing?ref=thestackcanary.com" rel="noreferrer"><strong>here</strong></a>. </strong></p><h2 style="text-align: center;">API Overview</h2><p>A primary goal I had while writing my Elixir library was to make the API as similar to the Python API as possible so that it would be easy for people coming from Python, since sklearn is the Machine Learning library that most people likely have experience with.  The Elixir version supports most of the same arguments as the sklearn version. Here are some examples of basic usage of the API </p><pre><code class="language-elixir"># Elixir
TfidfVectorizer.new(
    ngram_range: {1, 3},
    sublinear_tf: true,
    stop_words: english_stop_words,
    max_features: 5000
  )
  |&gt; TfidfVectorizer.fit_transform(X_train)</code></pre><pre><code class="language-python"># Python
TfidfVectorizer(
  sublinear_tf=True, 
  ngram_range=(1, 3), 
  max_features=5000
  ).fit_transform(X_train)</code></pre><h2 id></h2><h2 style="text-align: center;">Design Overview</h2><p>We will start by looking at the Sklearn <code>CountVectorizer</code> class since <code>TfidfFVectorizer</code> is actually implemented as a subclass of <code>CountVectorizer</code> and then using the <code>fit</code> method of the <code>TfidfTransformer</code> class to  transform the output of the <code>CountVectorizer</code> to its TF-IDF representation. As a result, the bulk of the code is implemented in the <code>CountVectorizer</code>. In Elixir, I accomplished this design by having a <code>CountVectorizer</code> module and a <code>TfidfVectorizer</code> module which has a <code>CountVectorizer</code> as a struct member. </p><p>The vectorizer works by building a vocabulary from the given corpus (or using a vocabulary you pass it), counting the number of times each word in the vocabulary is taken, and filtering according to </p><p>The vectorizers work roughly according to these steps:</p>
<ol>
<li>Either builds a vocabulary from the given corpus or uses a vocabulary supplied to it.<br>
a. Performs preprocessing according to a given function<br>
b. Performs tokenization according to a tokenization function<br>
c. Generates requested ngrams<br>
d. Filters stop words</li>
<li>Iterates through each document in the corpus, counting each term in the vocabulary</li>
<li>Limit output features according to parameters<br>
a. max_features - Only consider the top <code>max_features</code> ordered by term frequency across the corpus.<br>
b. min_df - Ignore terms that have a document frequency strictly lower than the given threshold.<br>
c. Ignore terms that have a document frequency strictly higher than the given threshold.</li>
<li>Output <code>CountVectorizer</code></li>
<li><code>TfidfVectorizer</code> uses the <code>CountVectorizer</code> to transform the term-frequency matrix into it TFIDF Matrix.</li>
</ol>
<p>As you can see, the bulk of the work is done in the <code>CountVectorizer</code> module, so that is where we will spend the most of our time going forward. Now that you have a general understanding of how the vectorizers work, we will look at a brief survey of different functions to compare Python and Elixir implementations. </p><h2 style="text-align: center;">Implementation Details</h2><p>Here is how the vectorizer is initialized in Python. It uses keyword args with default parameters and initializes its class attributes accordingly. </p><pre><code class="language-python">class CountVectorizer(_VectorizerMixin, BaseEstimator):
  def __init__(
        self,
        *,
        input=&quot;content&quot;,
        encoding=&quot;utf-8&quot;,
        decode_error=&quot;strict&quot;,
        strip_accents=None,
        lowercase=True,
        preprocessor=None,
        tokenizer=None,
        stop_words=None,
        token_pattern=r&quot;(?u)\b\w\w+\b&quot;,
        ngram_range=(1, 1),
        analyzer=&quot;word&quot;,
        max_df=1.0,
        min_df=1,
        max_features=None,
        vocabulary=None,
        binary=False,
        dtype=np.int64,
    )
    self.input = input
        self.encoding = encoding
        self.decode_error = decode_error
        self.strip_accents = strip_accents
        self.preprocessor = preprocessor
        self.tokenizer = tokenizer
        self.analyzer = analyzer
        self.lowercase = lowercase
        self.token_pattern = token_pattern
        self.stop_words = stop_words
        self.max_df = max_df
        self.min_df = min_df
        self.max_features = max_features
        self.ngram_range = ngram_range
        self.vocabulary = vocabulary
        self.binary = binary
        self.dtype = dtype</code></pre><p>And here is a snippet of the <code>CountVectorizer</code> struct in Elixir as well as the <code>new/1</code> function that is used to initialize the vectorizer. <code>new/1</code> gives a similar behavior to Python&apos;s class <code>init</code> method.  I used <code>NimbleOptions</code> for parameter validation (it&apos;s a great library and you can read more about it <a href="https://www.thestackcanary.com/elixir-nimble-options/" rel="noreferrer">here</a>), and you can refer to the parameters source <a href="https://github.com/acalejos/mighty/blob/main/lib/preprocessing/shared.ex?ref=thestackcanary.com#L3" rel="noreferrer">here</a>.  <code>validate_shared!</code> validates the parameters and assigns default value when none were provided. </p><pre><code class="language-elixir">defmodule Mighty.Preprocessing.CountVectorizer do
  defstruct vocabulary: nil,
            ngram_range: {1, 1},
            max_features: nil,
            min_df: 1,
            max_df: 1.0,
            stop_words: [],
            binary: false,
            preprocessor: nil,
            tokenizer: nil,
            pruned: nil

  def new(opts \\ []) do
    opts = Mighty.Preprocessing.Shared.validate_shared!(opts)
    struct(__MODULE__, opts)
  end
end</code></pre><p>All of the operations in our <code>CountVectorizer</code> module will take a <code>CountVectorizer</code> as its first argument, which allows us to pipe our operations nicely. The Python implementation separates the <code>TfidfTransformer</code> from the <code>TfidfVectorizer</code>, where the <code>TFIDFVectorizer</code> inherits from the <code>CountVectorizer</code>. To achieve similar behavior, our <code>TfidfVectorizer</code> is its own struct that contains a <code>CountVectorizer</code> as one of its member. Creating a new <code>TfidfVectorizer</code> starts with creating a new <code>CountVectorizer</code>:</p><pre><code class="language-elixir">defmodule Mighty.Preprocessing.TfidfVectorizer do
  alias Mighty.Preprocessing.CountVectorizer
  alias Mighty.Preprocessing.Shared

  defstruct [
    :count_vectorizer,
    :norm,
    :idf,
    use_idf: true,
    smooth_idf: true,
    sublinear_tf: false
  ]

  @doc &quot;&quot;&quot;
  Creates a new `TfidfVectorizer` struct with the given options.

  Returns the new vectorizer.
  &quot;&quot;&quot;
  def new(opts \\ []) do
    {general_opts, tfidf_opts} =
      Keyword.split(opts, Shared.get_vectorizer_schema() |&gt; Keyword.keys())

    count_vectorizer = CountVectorizer.new(general_opts)
    tfidf_opts = Shared.validate_tfidf!(tfidf_opts)

    %__MODULE__{count_vectorizer: count_vectorizer}
    |&gt; struct(tfidf_opts)
  end
end</code></pre><p>Now, let&apos;s compare three of the main pieces of functionality between the two implementations: <strong>building the term-frequency matrix</strong> (count matrix), <strong>limiting / pruning features</strong> from the resulting matrix, and performing the <strong>TFIDF transformation</strong> on that resulting matrix.</p><h2 style="text-align: center;">Building Term-Frequency Matrix</h2><div class="code-container">
  <div class="code-snippet">
    <pre><code class="language-elixir">defp _transform(vectorizer = %__MODULE__{}, corpus, n_doc) do
  if is_nil(vectorizer.vocabulary) do
    raise &quot;CountVectorizer must be fit to a corpus before transforming the corpus. Use CountVectorizer.fit/2 or CountVectorizer.fit_transform/2 to fit the CountVectorizer to a corpus.&quot;
  end

  tf = Nx.broadcast(0, {n_doc, Enum.count(vectorizer.vocabulary)})

  corpus
  |&gt; Enum.with_index()
  |&gt; Enum.chunk_every(2000)
  |&gt; Enum.reduce(tf, fn chunk, acc -&gt;
    Task.async_stream(
      chunk,
      fn {doc, doc_idx} -&gt;
        doc
        |&gt; then(&amp;do_process(vectorizer, &amp;1))
        |&gt; Enum.reduce(
          Map.new(vectorizer.vocabulary, fn {k, _} -&gt; {k, 0} end),
          fn token, acc -&gt;
            Map.update(acc, token, 1, &amp;(&amp;1 + 1))
          end
        )
        |&gt; Enum.map(fn {k, v} -&gt;
          case Map.get(vectorizer.vocabulary, k) do
            nil -&gt; nil
            _ when v == 0 -&gt; nil
            idx -&gt; [doc_idx, idx, v]
          end
        end)
      end,
      timeout: :infinity
    )
    |&gt; Enum.reduce({[], []}, fn
      {:ok, iter_result}, acc -&gt;
        Enum.reduce(iter_result, acc, fn
          nil, acc -&gt; acc
          [x, y, z], {idx, upd} -&gt; {[[x, y] | idx], [z | upd]}
        end)
    end)
    |&gt; then(fn {idx, upd} -&gt;
      Nx.indexed_put(acc, Nx.tensor(idx), Nx.tensor(upd))
    end)
  end)
end
    </code></pre>
  </div>
  <div class="code-snippet">
    <pre><code class="language-python">def _count_vocab(self, raw_documents, fixed_vocab):
  &quot;&quot;&quot;Create sparse feature matrix, and vocabulary where fixed_vocab=False&quot;&quot;&quot;
  if fixed_vocab:
      vocabulary = self.vocabulary_
  else:
      # Add a new value when a new vocabulary item is seen
      vocabulary = defaultdict()
      vocabulary.default_factory = vocabulary.__len__

  analyze = self.build_analyzer()
  j_indices = []
  indptr = []

  values = _make_int_array()
  indptr.append(0)
  for doc in raw_documents:
      feature_counter = {}
      for feature in analyze(doc):
          try:
              feature_idx = vocabulary[feature]
              if feature_idx not in feature_counter:
                  feature_counter[feature_idx] = 1
              else:
                  feature_counter[feature_idx] += 1
          except KeyError:
              # Ignore out-of-vocabulary items for fixed_vocab=True
              continue

      j_indices.extend(feature_counter.keys())
      values.extend(feature_counter.values())
      indptr.append(len(j_indices))

  if not fixed_vocab:
      # disable defaultdict behaviour
      vocabulary = dict(vocabulary)
      if not vocabulary:
          raise ValueError(
              &quot;empty vocabulary; perhaps the documents only contain stop words&quot;
          )

  if indptr[-1] &gt; np.iinfo(np.int32).max:  # = 2**31 - 1
      if _IS_32BIT:
          raise ValueError(
              (
                  &quot;sparse CSR array has {} non-zero &quot;
                  &quot;elements and requires 64 bit indexing, &quot;
                  &quot;which is unsupported with 32 bit Python.&quot;
              ).format(indptr[-1])
          )
      indices_dtype = np.int64

  else:
      indices_dtype = np.int32
  j_indices = np.asarray(j_indices, dtype=indices_dtype)
  indptr = np.asarray(indptr, dtype=indices_dtype)
  values = np.frombuffer(values, dtype=np.intc)

  X = sp.csr_matrix(
      (values, j_indices, indptr),
      shape=(len(indptr) - 1, len(vocabulary)),
      dtype=self.dtype,
  )
  X.sort_indices()
  return vocabulary, X
    </code></pre>
  </div>
</div><p>The most evident differences here are that in the Elixir code we are building a dense tensor, while the Python code is building a sparse tensor. A sparse tensor certainly makes much more sense in the context of these vectorizers, but as of now Nx currently does not support sparse tensors.  This is also why we are using <code>Task.async_stream</code> along with <code>Enum.chunk_every</code>, as to reduce the memory consumption since it is dense. </p><p> The way we are constructing the tensor, however, is almost identical.  We start by creating a zero-tensor the size of the final tensor. Then we are creating mappings of indices and their updates during our iteration within the <code>reduce</code>. After we collect these updates, we update the initial zero-tensor using <code>Nx.indexed_put</code>, which requires a list of indices you are updating along with the new values you are putting into those indices. </p><h2 style="text-align: center;">Feature Pruning</h2><div class="code-container">
  <div class="code-snippet">
    <pre><code class="language-elixir"> defp where_columns(condition = %Nx.Tensor{shape: {_cond_len}}) do
    count = Nx.sum(condition) |&gt; Nx.to_number()
    Nx.argsort(condition, direction: :desc) |&gt; Nx.slice_along_axis(0, count, axis: 0)
  end

  defp limit_features(
         vectorizer = %__MODULE__{},
         tf = %Nx.Tensor{},
         df = %Nx.Tensor{shape: {df_len}},
         high,
         low,
         limit
       ) do
    mask = Nx.broadcast(1, {df_len})
    mask = if high, do: Nx.logical_and(mask, Nx.less_equal(df, high)), else: mask
    mask = if low, do: Nx.logical_and(mask, Nx.greater_equal(df, low)), else: mask

    limit =
      case limit do
        0 -&gt;
          limit

        nil -&gt;
          limit

        _ -&gt;
          limit - 1
      end

    mask =
      if limit &amp;&amp; Nx.greater(Nx.sum(mask), limit) do
        tfs = Nx.sum(tf, axes: [0]) |&gt; Nx.flatten()
        orig_mask_inds = where_columns(mask)
        mask_inds = Nx.argsort(Nx.take(tfs, orig_mask_inds) |&gt; Nx.multiply(-1))[0..limit]
        new_mask = Nx.broadcast(0, {df_len})
        new_indices = Nx.take(orig_mask_inds, mask_inds) |&gt; Nx.new_axis(1)
        new_updates = Nx.broadcast(1, {Nx.flat_size(new_indices)})
        new_mask = Nx.indexed_put(new_mask, new_indices, new_updates)

        new_mask
      else
        mask
      end

    new_indices = mask |&gt; Nx.flatten() |&gt; Nx.cumulative_sum() |&gt; Nx.subtract(1)

    {new_vocab, removed_terms} =
      Enum.reduce(vectorizer.vocabulary, {%{}, MapSet.new([])}, fn {term, old_index},
                                                                   {vocab_acc, removed_acc} -&gt;
        case Nx.to_number(mask[old_index]) do
          1 -&gt;
            {Map.put(vocab_acc, term, Nx.to_number(new_indices[old_index])), removed_acc}

          _ -&gt;
            {vocab_acc, MapSet.put(removed_acc, term)}
        end
      end)

    kept_indices = where_columns(mask)

    if Nx.flat_size(kept_indices) == 0 do
      raise &quot;After pruning, no terms remain. Try a lower min_df or a higher max_df.&quot;
    end

    tf = Nx.take(tf, kept_indices, axis: 1)
    {tf, new_vocab, removed_terms}
  end
    </code></pre>
  </div>
  <div class="code-snippet">
    <pre><code class="language-python">def _limit_features(self, X, vocabulary, high=None, low=None, limit=None):
        if high is None and low is None and limit is None:
            return X, set()

        # Calculate a mask based on document frequencies
        dfs = _document_frequency(X)
        mask = np.ones(len(dfs), dtype=bool)
        if high is not None:
            mask &amp;= dfs <= high if low is not none: mask &="dfs">= low
        if limit is not None and mask.sum() &gt; limit:
            tfs = np.asarray(X.sum(axis=0)).ravel()
            mask_inds = (-tfs[mask]).argsort()[:limit]
            new_mask = np.zeros(len(dfs), dtype=bool)
            new_mask[np.where(mask)[0][mask_inds]] = True
            mask = new_mask

        new_indices = np.cumsum(mask) - 1  # maps old indices to new
        removed_terms = set()
        for term, old_index in list(vocabulary.items()):
            if mask[old_index]:
                vocabulary[term] = new_indices[old_index]
            else:
                del vocabulary[term]
                removed_terms.add(term)
        kept_indices = np.where(mask)[0]
        if len(kept_indices) == 0:
            raise ValueError(
                &quot;After pruning, no terms remain. Try a lower min_df or a higher max_df.&quot;
            )
        return X[:, kept_indices], removed_terms
    </=></code></pre>
  </div>
</div><p>These functions show the most stark differences between the capabilities of NumPy versus those of Nx, as well as just the syntactic differences. The syntax of NumPy is much less verbose that that of Nx (especially considering that we are operating outside of a <code>defn</code> here which will inject its own implementation of the <code>Kernel</code> module to add custom operators), and there are just some capabilities in NumPy that are currently not possible in Nx. For example, in Nx you <a href="https://elixirforum.com/t/np-argwhere-operation-equivalent-for-nx-is-this-feature-available-currently-is-there-an-alternative-that-i-m-not-considering/52926/2?u=acalejos&amp;ref=thestackcanary.com" rel="noreferrer">cannot do dynamic shape modifications</a> like are done in the Python code <code>new_mask[np.where(mask)[0][mask_inds]] = True</code>, so I had to come up with other solutions that could achieve the same thing. Looking at the Python version, you realize that <code>np.where(mask)[0]</code> is only concerned with the resulting columns. This makes sense since each column represents a term in the vocabulary and each row represents a document in the corpus, so each item in a column represents the count of that term in that documents. So we are concerned with whole columns because term-frequency is calculated for each term, which again is represented by the whole column.  So we can now use a combination of our function <code>where_columns</code> and Nx functions such as <code>Nx.argsort</code>, <code>Nx.take</code>, and <code>Nx.multiply</code> to rearrange the matrix such that items are sorted by our filter conditions, and then we can just take the number of items we want according to the supplied <code>:limit</code>. </p><p>It would take entirely too long for me to go over every difference between these two functions, but I implore you to look closely at these two implementations to gain a better understanding of how to convert NumPy code to Elixir Nx. </p><h2 style="text-align: center;">TFIDF Transformation</h2><div class="code-container">
  <div class="code-snippet">
    <pre><code class="language-elixir">def fit(%__MODULE__{count_vectorizer: count_vectorizer} = vectorizer, corpus) do
    {cv, tf} = CountVectorizer.fit_transform(count_vectorizer, corpus)
    df = Scholar.Preprocessing.binarize(tf) |&gt; Nx.sum(axes: [0])

    idf =
      if vectorizer.use_idf do
        {n_samples, _n_features} = Nx.shape(tf)
        df = Nx.add(df, if(vectorizer.smooth_idf, do: 1, else: 0))
        n_samples = if vectorizer.smooth_idf, do: n_samples + 1, else: n_samples
        Nx.divide(n_samples, df) |&gt; Nx.log() |&gt; Nx.add(1)
      end

    struct(vectorizer, count_vectorizer: cv, idf: idf)
  end

  def transform(%__MODULE__{count_vectorizer: count_vectorizer} = vectorizer, corpus) do
    tf = CountVectorizer.transform(count_vectorizer, corpus)

    tf =
      if vectorizer.sublinear_tf do
        Nx.select(Nx.equal(tf, 0), 0, Nx.log(tf) |&gt; Nx.add(1))
      else
        tf
      end

    tf =
      if vectorizer.use_idf do
        unless vectorizer.idf do
          raise &quot;Vectorizer has not been fitted yet. Please call `fit_transform` or `fit` first.&quot;
        end

        Nx.multiply(tf, vectorizer.idf)
      else
        tf
      end

    tf =
      case vectorizer.norm do
        nil -&gt; tf
        norm -&gt; Scholar.Preprocessing.normalize(tf, norm: norm)
      end

    tf
  end

  def fit_transform(%__MODULE__{} = vectorizer, corpus) do
    vectorizer = fit(vectorizer, corpus)
    {vectorizer, transform(vectorizer, corpus)}
  end
    </code></pre>
  </div>
  <div class="code-snippet">
    <pre><code class="language-python">class TfidfTransformer(
    OneToOneFeatureMixin, TransformerMixin, BaseEstimator, auto_wrap_output_keys=None
):
    def __init__(self, *, norm=&quot;l2&quot;, use_idf=True, smooth_idf=True, sublinear_tf=False):
        self.norm = norm
        self.use_idf = use_idf
        self.smooth_idf = smooth_idf
        self.sublinear_tf = sublinear_tf

    def fit(self, X, y=None):
        X = self._validate_data(
            X, accept_sparse=(&quot;csr&quot;, &quot;csc&quot;), accept_large_sparse=not _IS_32BIT
        )
        if not sp.issparse(X):
            X = sp.csr_matrix(X)
        dtype = X.dtype if X.dtype in FLOAT_DTYPES else np.float64

        if self.use_idf:
            n_samples, n_features = X.shape
            df = _document_frequency(X)
            df = df.astype(dtype, copy=False)

            # perform idf smoothing if required
            df += int(self.smooth_idf)
            n_samples += int(self.smooth_idf)

            # log+1 instead of log makes sure terms with zero idf don&apos;t get
            # suppressed entirely.
            idf = np.log(n_samples / df) + 1
            self._idf_diag = sp.diags(
                idf,
                offsets=0,
                shape=(n_features, n_features),
                format=&quot;csr&quot;,
                dtype=dtype,
            )

        return self

    def transform(self, X, copy=True):
        X = self._validate_data(
            X, accept_sparse=&quot;csr&quot;, dtype=FLOAT_DTYPES, copy=copy, reset=False
        )
        if not sp.issparse(X):
            X = sp.csr_matrix(X, dtype=np.float64)

        if self.sublinear_tf:
            np.log(X.data, X.data)
            X.data += 1

        if self.use_idf:
            # idf_ being a property, the automatic attributes detection
            # does not work as usual and we need to specify the attribute
            # name:
            check_is_fitted(self, attributes=[&quot;idf_&quot;], msg=&quot;idf vector is not fitted&quot;)

            # *= doesn&apos;t work
            X = X * self._idf_diag

        if self.norm is not None:
            X = normalize(X, norm=self.norm, copy=False)

        return X

    @property
    def idf_(self):
        # if _idf_diag is not set, this will raise an attribute error,
        # which means hasattr(self, &quot;idf_&quot;) is False
        return np.ravel(self._idf_diag.sum(axis=0))

    @idf_.setter
    def idf_(self, value):
        value = np.asarray(value, dtype=np.float64)
        n_features = value.shape[0]
        self._idf_diag = sp.spdiags(
            value, diags=0, m=n_features, n=n_features, format=&quot;csr&quot;
        )

  class TfidfVectorizer(CountVectorizer):
      def fit(self, raw_documents, y=None):
        self._check_params()
        self._warn_for_unused_params()
        self._tfidf = TfidfTransformer(
            norm=self.norm,
            use_idf=self.use_idf,
            smooth_idf=self.smooth_idf,
            sublinear_tf=self.sublinear_tf,
        )
        X = super().fit_transform(raw_documents)
        self._tfidf.fit(X)
        return self

    def fit_transform(self, raw_documents, y=None):
        self._check_params()
        self._tfidf = TfidfTransformer(
            norm=self.norm,
            use_idf=self.use_idf,
            smooth_idf=self.smooth_idf,
            sublinear_tf=self.sublinear_tf,
        )
        X = super().fit_transform(raw_documents)
        self._tfidf.fit(X)
        # X is already a transformed view of raw_documents so
        # we set copy to False
        return self._tfidf.transform(X, copy=False)

    def transform(self, raw_documents):
        check_is_fitted(self, msg=&quot;The TF-IDF vectorizer is not fitted&quot;)

        X = super().transform(raw_documents)
        return self._tfidf.transform(X, copy=False)
    </code></pre>
  </div>
</div><p>I would consider this the most straight-forward translation example between the two implementations. One noticeable difference is that <code>Nx.log</code> doesn&apos;t handle zero values the same way NumPy does. While NumPy essentially ignores zeroes, <code>Nx.log</code> will throw a divide by zero error, so I use <code>Nx.select</code> to selectively ignore zero values, and only apply <code>Nx.log</code> to non-zero values.  Additionally, I use <code>Nx.multiply(tf, vectorizer.idf)</code> to achieve the same thing as <code>X = X * self._idf_diag</code> as there is no need to construct a diagonal matrix since <code>Nx.multiply</code> broadcasts. </p><h2 id="conclusion">Conclusion</h2><p>I would have liked to go into more detail for each example, but I think the code does a good job by itself showing the differences and steps required to translate a NumPy implementation to Nx. I think these examples illustrate how NumPy can obscure what operations are happening in an effort to make a more concise syntax, whereas some might consider Nx overly verbose in comparison. The more you familiarize yourself with both APIs, the better you will be able to identify places where you can do direct translation and places where you might have to be more creative. </p><p>Comment below with your own examples or if you have any other Python snippets you want to see converted to Elixir Nx!</p>]]></content:encoded></item><item><title><![CDATA[Shining Light on Glassware]]></title><description><![CDATA[<h2 id="background">Background</h2>
<p>The blend of the physical and digital world is fascinating. As useful as crunching numbers on a desktop PC or AWS cloud instance can be, nothing elicits the &quot;wow&quot; factor more than when something unexpected happens in the physical world. Embedded systems are as close to magic</p>]]></description><link>https://www.thestackcanary.com/arduino-led-display-bar/</link><guid isPermaLink="false">6527767e02e0540d32653f24</guid><dc:creator><![CDATA[Samuel Miller]]></dc:creator><pubDate>Tue, 26 Sep 2023 11:00:57 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2023/09/Neon-Pink-Arduino.png" medium="image"/><content:encoded><![CDATA[<h2 id="background">Background</h2>
<img src="https://www.thestackcanary.com/content/images/2023/09/Neon-Pink-Arduino.png" alt="Shining Light on Glassware"><p>The blend of the physical and digital world is fascinating. As useful as crunching numbers on a desktop PC or AWS cloud instance can be, nothing elicits the &quot;wow&quot; factor more than when something unexpected happens in the physical world. Embedded systems are as close to magic and superpowers as people are going to get. In this project, I am going to wield my electronic superpowers to play with the crossover between digital and physical by visually fingerprinting glassware on my home bar.</p>
<p>Inspiration for the project stemmed from two key sources. My intrigue with fingerprinting algorithms started after my solve of the <a href="https://github.com/dicegang/dicectf-2022-challenges/tree/master/misc/sober-bishop?ref=thestackcanary.com">2022 Dice CTF &quot;Sober Bishop&quot; Challenge</a>. Sources for light emitting diode (LED) strip circuit integrations number in the hundreds, but the specific post of <a href="https://www.reddit.com/r/BarBattlestations/comments/jrp9ew/a_while_back_i_showed_you_guys_my_ikea_fjallbo/?utm_source=share&amp;utm_medium=web2x&amp;context=3">an Ikea Fjallbo shelf on r/barbattlestations</a> further fueled my creativity. I thought to myself earlier this year &quot;Why stop at static recessed lighting?&quot; and decided to fuse my two sources of inspiration together and create a lighting system that would convert the weight of a glass to a fingerprinted light show. Time to get to work.</p>
<h2 id="hardware-implementation">Hardware Implementation</h2>
<p>My Fjallbo bar was already assembled, so I will not cover its assembly or the source of each of the items on the bar. If you would like to know more, please leave a comment on this post. Instead, I am going to focus on the three subsystems that bring the bar to life: the weight sensing system, the compute system, and the LED driving system. Rather than start by picking a compute system, I decided to start with finding the LED driving system and weight sensing system since I knew the range of glass weights as well as the type of LED strip I wanted to work with.</p>
<p><img src="https://www.thestackcanary.com/content/images/2023/08/high-level-diagram.png" alt="Shining Light on Glassware" loading="lazy"></p>
<p>For the LEDs, I picked up a box of <a href="https://www.costco.com/feit-electric-wi-fi-smart-16&apos;-led-strip-light.product.100825588.html?ref=thestackcanary.com">Feit Electric Wi-Fi Smart 16&apos; LED Strip Lights</a> from Costco for a fair price. The lights came with a module to enable control over WiFi, but I want to save those electronics for a potential reverse engineering or repurposing effort at a later point in time. If I were to do things again, I would pick up an individually addressable <a href="https://www.adafruit.com/category/183?ref=thestackcanary.com">Neopixel LED strip from Adafruit</a>. The ability to individually address each LED adds some fun options in software. For the Feit Electric LED strip I own, you can individually address each 1ft segment but this adds some complexity because the multiplexing circuitry would be DIY. Instead of doing this, I decided to cut into three main segments that I would put on different parts of the bar. <strong>WARNING</strong>: the design you are about to see is a highly technical piece of design tooling that took me countless hours to master. The only thing worse than my drawing ability in this project was my soldering job - if I could make that picture NSFW I would, but hey - it works.</p>
<p><img src="https://www.thestackcanary.com/content/images/2023/08/solder-job.jpg" alt="Shining Light on Glassware" loading="lazy"></p>
<p><img src="https://www.thestackcanary.com/content/images/2023/08/led-strip_cut-line.jpg" alt="Shining Light on Glassware" loading="lazy"></p>
<p>Controlling the LED color is fairly straightforward and uses the concept of pulse width modulation (PWM). In the most basic sense, PWM enables analog output with a digital system. PWM achieves this by varying the frequency of the &quot;ON&quot; and &quot;OFF&quot; pulses. A higher ratio of &quot;ON&quot; to &quot;OFF&quot; yields an analog signal closer to 5V while a higher ratio of &quot;OFF&quot; to &quot;ON&quot; yields an analog signal close to 0V.</p>
<p>Let&apos;s start by applying PWM to the white LED. A 24V differential between the power line and the ground line with no additional resistance (there are some resistors in the LED strip) would make the white light shine bright. On the contrary, an open circuit between the power and ground would make the white LED as dim as possible. These two concepts are at opposite ends of the spectrum; to achieve 50% brightness, we can use PWM to vary the amount of time that the white LEDs are turned on. If the LEDs are connected to ground 50% of the time and to power the other 50%, they should appear 50% as bright as long as we are <a href="https://www.ccohs.ca/oshanswers/ergonomics/lighting_flicker.html?ref=thestackcanary.com">switching fast enough</a>. Thankfully, the Arduino&apos;s 500Hz PWM frequency far exceeds the 120Hz rate that humans can perceive flickering. We can use this same effect to achieve any amount of brightness between 0 and 100% by altering the duty cycle of a pulse with PWM.</p>
<p>If PWM controls brightness, how can we control color? Well, using the same concept that was applied to the white led, we can dim/brighten the red, green, and blue LEDs in a similar way. Dimming/brightening the red, green, or blue LED individually does us no good, but combining different brightness values for each LED produces different colors. This is kind of like mixing paint, but the best way to think about this is to <a href="https://g.co/kgs/UZ4RPU?ref=thestackcanary.com">visualize it with Google&apos;s color picker</a>. Think of the brightness values of 0% - 100% as being mapped as values from 0-255. Change the R, G, and B values at the link provided to produce different colors. For example 52, 235, 107 produces a weird mint green. This corresponds to 52/255 (~20%) red brightness, ~90% green brightness, and ~40% blue brightness.</p>
<p>For the weight sensors, I wasn&apos;t sure where to start. I did not have experience in using weight sensors in the past so I looked to learn by disassembling an old <a href="https://a.co/d/3RdV0FT?ref=thestackcanary.com">Greater Goods Brand</a> digital kitchen scale. Inside was some fairly simple circuitry: a LED screen to display information, 4 unknown metal chips that I could only assume were the weight sensors, and a chip-on-board. Unfortunately, the chip-on-board prevented me from the usual Google search of the integrated circuit markings to reverse-engineer the logic of the controller. As a backup I Google reverse-image searched the metallic devices that appeared in the corner of the scale. The result returned search options for &quot;Aluminum Alloy Half Bridge Weight Sensor.&quot; My findings took me to <a href="https://www.sparkfun.com/products/13879?ref=thestackcanary.com">SparkFun&apos;s HX711</a> website where I was able to learn everything I needed to on the topic of load cells. See the references for the links I found most helpful to include a hookup guide and the different types of load cells. Rather than purchase the SparkFun HX711, I opted for <a href="https://a.co/d/7PnAYvC?ref=thestackcanary.com">4pcs 110lbs Half-Bridge Body Load Cell Weight Strain Sensor Resistance with HX711 module</a> from Amazon - it was both less expensive and came with some extra weight sensors for a future project, so it was a win-win to me. Sorry SparkFun! The HX711 uses DATA and CLK lines which will add an input and output requirement, respectively, to the decision of the processor.</p>
<p><img src="https://www.thestackcanary.com/content/images/2023/09/strain_cell_comparison.jpg" alt="Shining Light on Glassware" loading="lazy"></p>
<blockquote>
<p>A comparison of 4 types of strain cells. From top to bottom, left to right: straight bar, s-type, disc, and strain gauge.</p>
</blockquote>
<p>The last part of the design is choosing the processor that will sense weight data and drive the LED strips. From our earlier design decisions we have a total of one input and four outputs. The singular input from the weight sensor will be an analog voltage that maps 0V to 5V to a weight value. The 4 outputs of PWM to each red, blue, green, and white LEDs will drive the intensity of each of those respective colors. Even though each of the three LED light strips can be individually addressed, in this version of the system, I chose to not implement a multiplexing output. Given the hardware that I had on hand, the Arduino Uno made the most sense here. The Arduino Uno supports 6 analog inputs and 6 PWM pins so it will be sufficient to drive our outputs and sense the input. There are also 2 spare PWM outputs and 5 spare inputs for future expansion if necessary. The Arduino should also have sufficient memory and processing capability to handle the fingerprinting algorithm.</p>
<p>Before we get into details about the software implementation, the last major hardware hurdle is power management. The Arduino and HX711 do not add a significant power draw beyond what the 24W (24V, 1A) power supply provided with the LED strip can accommodate; however, there will be two main operating voltages: 24V for the LEDs and 5V for the HX711 and Arduino. Nothing a buck converter can&apos;t solve - the <a href="https://www.ti.com/lit/gpn/LM2596?ref=thestackcanary.com">LM2596 Buck Converter from Texas Instruments</a> was sufficient for my application. <a href="https://a.co/d/bLSqPYq?ref=thestackcanary.com">Amazon had an inexpensive module</a> that integrated the LM2596 into a circuit that was easy to incorporate into my design. Now that there are two operating voltage buses, the last power issue to solve is driving the LEDs with the low current Arduino. This is a classic application of a power metal oxide semiconducter field-effect transistor (MOSFET) driver. I won&apos;t dive into the details of MOSFET drivers here, but let me know if that is a topic you would be interested in. Assembling all of these components together yields the following schematic.</p>
<p><img src="https://www.thestackcanary.com/content/images/2023/09/schematic.png" alt="Shining Light on Glassware" loading="lazy"></p>
<h2 id="software-implementation">Software Implementation</h2>
<p>Please refer to the <a href="https://github.com/irongiant33/getting-lit-with-the-drunk-bishop?ref=thestackcanary.com">&quot;Getting Lit with the Drunk Bishop&quot; GitHub page</a> for all software used in this project. The software for this project largely complements the hardware implementation. It leverages <a href="https://www.arduino.cc/reference/en/libraries/hx711-arduino-library/?ref=thestackcanary.com">Arduino&apos;s HX711 library</a> for interfacing with the weight sensor, custom code for the Drunk Bishop implementation, and the <a href="https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/?ref=thestackcanary.com"><code>analogWrite()</code> function for PWM control of the LEDs</a>. I&apos;ll let my code speak for itself, but I do want to spend some time digging into the Drunk Bishop algorithm that is responsible for the visual fingerprinting.</p>
<p>As I mentioned in the beginning of the article, part of the inspiration was my solve of a CTF challenge that involved the ability to <a href="http://aarontoponce.org/drunken_bishop.pdf?ref=thestackcanary.com">analyze the Drunk Bishop algorithm</a>. For those of you Elixir lovers that are reading this, I found an Elixir implementation here: <a href="https://github.com/tangstad/bishop?ref=thestackcanary.com">https://github.com/tangstad/bishop</a>. The challenge gave two 9x17 OpenSSH fingerprints: one was the flag, and the other was the md5 hash of the flag - it required you to depth-first search the flags that could generate the first fingerprint and check the flag with its md5 hash fingerprint. I liked the concept that the fingerprints served as a visual way of checking the authenticity of an SSH key by taking advantage of human pattern-recognition ability. It would be much harder to tell the difference between two keys in ASCII form than two keys in fingerprint form. Thus, the idea to visually fingerprint with LEDs was born.</p>
<p><img src="https://www.thestackcanary.com/content/images/2023/09/Screen-Shot-2023-09-01-at-11.17.56-AM.png" alt="Shining Light on Glassware" loading="lazy"></p>
<p>The TL;DR implementation of Drunk Bishop is a 8x8 chess board with a bishop starting at any square. The bishop can move like a normal bishop in chess, but its moves are governed by a binary string. Every pair of bits in the string determines the direction in which the bishop will move; <code>11</code> will move the bishop up and to the right, <code>10</code> up and to the left, <code>01</code> down and to the right, <code>00</code> down and to the left. The bishop can&apos;t move through walls but will slide along the wall based off of the direction of the move.</p>
<p><img src="https://www.thestackcanary.com/content/images/2023/09/Screen-Shot-2023-09-01-at-11.24.17-AM.png" alt="Shining Light on Glassware" loading="lazy"></p>
<p>The challenge in implementing Drunk Bishop with LEDs was that I had 4 dimensions to work with: red, blue, green, and white. To avoid overcomplicating things, I decided to stick with 3 dimensions (red, green, blue) and leave the white LED for a &quot;flourish&quot; finale that will be addressed later. The bishop still moves along the diagonals in my implementation but now has three dimensional coordinates which require three dimensional moves. Therefore, an extra bit is needed from the binary string in order to govern direction. The first bit determines movement in the &quot;Red&quot; dimension, the second bit in the &quot;Green&quot; dimension, and the third bit in the &quot;Blue&quot; dimension. As mentioned in the previous section, the overlapping red, green, and blue colors will create a custom color based off of the binary input string. In this application, the input string is a binary representation of the glass weight, so each weight should have a unique color sequence.</p>
<p><img src="https://www.thestackcanary.com/content/images/2023/09/step_size_comparison.jpg" alt="Shining Light on Glassware" loading="lazy"></p>
<blockquote>
<p>A comparison of a step size of 1 (top plot) and a step size of 16 (bottom plot). Each color line represents its respective LED output color.</p>
</blockquote>
<p>I quickly ran into an issue after implementing the algorithm. I observed the colors tend toward a local minima which meant they didn&apos;t change as often as I would have liked. You can visualize this local minima below. I hypothesized a couple of causes and solutions for the problem</p>
<table>
<thead>
<tr>
<th>Problem</th>
<th>Solution</th>
</tr>
</thead>
<tbody>
<tr>
<td>Binary similarity between weight values</td>
<td>hashed weight values</td>
</tr>
<tr>
<td>Repeating moves after the binary string loops</td>
<td>increase step size and add offset to artificially lengthen binary string</td>
</tr>
</tbody>
</table>
<p>Regarding the binary similarity between weight values, you can see the result of the XOR between two adjacent weight values yields a large string of similar digits, so our visual fingerprinting would start to look very similar for glasses that weigh close to each other.</p>
<pre><code class="language-bash">4.56 =&gt; 01000000100100011110101110000101
4.57 =&gt; 01000000100100100011110101110001
XOR  =&gt; 00000000000000111101011011110100
</code></pre>
<p>The fix was to just hash the weight value using a preexisting Arduino library: <a href="https://reference.arduino.cc/reference/en/libraries/xxhash_arduino/?ref=thestackcanary.com">https://reference.arduino.cc/reference/en/libraries/xxhash_arduino/</a>.</p>
<p>My rationale for the repeating moves was that if I have a binary string that is evenly divisible by 3 (i.e. the number of bits needed to govern the direction of the Drunk Bishop), any directional favor will win out in the long run. For example, consider the shorter binary string <code>11 00 11 10</code> which is NE, SW, NE, NW. In this case, the bishop will get stuck at the top of the matrix due to the fact that it moves up 3/4 of the time and the E/W moves cancel each other out. The hashing helped solve part of this problem by randomizing the binary input, but implementing a loop offset also helped artificially lengthen the number of unique instructions from 10 to 32. Rather than cut off the last 2 bits of the sequence and loop back from the start, I stitched the binary string together 3 times to create a 96 bit long input. Since 3 does not divide evenly into 32, we can do stitch the 32 bit string at most 3 times before the sequence begins to repeat itself.</p>
<p>Below are the results of the LED cube evolution before and after the implementation of these features. Both plots use the same binary input string.</p>
<p><img src="https://www.thestackcanary.com/content/images/2023/09/hash_comparison.jpg" alt="Shining Light on Glassware" loading="lazy"></p>
<blockquote>
<p>A comparison of the un-hashed input (top plot) and hashed input (bottom plot). There is not a significant difference in these two plots.</p>
</blockquote>
<p>The bigger difference in hashing was observed to be in the long-run. The two plots below are the LED values after 30 seconds of display time.</p>
<p><img src="https://www.thestackcanary.com/content/images/2023/09/steady_state_comparison.jpg" alt="Shining Light on Glassware" loading="lazy"></p>
<blockquote>
<p>The un-hashed steady-state display (top plot) and the hashed steady-state display (bottom plot). We can see the hashed display has slightly more variability than the unhashed display.</p>
</blockquote>
<p>Now that there was a way to control the RGB LEDs, it is time to code the &quot;flourish&quot; finale for the white light that I mentioned earlier. My idea for the white light was that it could &quot;pulse&quot; while the user fills up their glass. As the weight sensor detects a steady increase in weight, the white LED brightness increases exponentially until it is 100% bright and starts over. Once the user removes the glass and the weight sensor detects an abrupt drop in weight, the RGB LEDs stop and the white light flashes 3 times quickly to signal the show is over.</p>
<h2 id="wrap-up-moving-forward">Wrap-up &amp; Moving Forward</h2>
<p>The moment you&apos;ve all been waiting for! The white flash is buggy right now as you&apos;ll see at the beginning and end of the video, but I am fairly happy with how things turned out.</p>
<figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/Z1zEJhVeFfM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen title="Getting Lit with the Drunk Bishop - Demo"></iframe></figure><p>Overall, I enjoyed building this project and thought it was a fun way to work with both software and hardware. Like I said in the beginning of the article, the reward of the light show the second I set down my glass was enough to justify all the work that was put int. I learned a lot about weight sensing and found the <a href="https://en.wikipedia.org/wiki/Wheatstone_bridge?ref=thestackcanary.com">Wheatstone Bridge</a> to be quite fascinating - I never would have expected such an elegant concept in something that seems as simple as detecting weight.</p>
<p>Over time, my cats have really found a lot of enjoyment in the project as well...</p>
<p><img src="https://www.thestackcanary.com/content/images/2023/08/cat-disassembly.jpg" alt="Shining Light on Glassware" loading="lazy"></p>
<p>Now that my hand has been forced to rebuild, I have some thoughts for improving version 2:</p>
<ul>
<li>Create a PCB of the circuit rather than doing everything on a breadboard. The PCB should include an ATMEGA328</li>
<li>3D print of coaster for open source hardware functionality. As of now everything is haphazardly glued to an old coaster...</li>
<li>Buy Neopixel LED strips to enable individual addressing</li>
<li>Implement circuitry to enable individual addressing of each strip</li>
<li>Small debugging for functionality
<ul>
<li>Make the light show very distinct; the visual fingerprinting doesn&apos;t matter if our eyes can&apos;t actually distinguish with our eyes how they&apos;re different because it just looks random.</li>
<li>Moving average filtering so the lighting smoothly turns on and off &amp; transitions between colors.</li>
</ul>
</li>
</ul>
<p>What would you like to see in version 2?</p>
<p><img src="https://www.thestackcanary.com/content/images/2023/08/coaster-underside.jpg" alt="Shining Light on Glassware" loading="lazy"></p>
<blockquote>
<p>As much as I was happy with the quality of my software and design, the elegance of the final assembled form could use improvement</p>
</blockquote>
<h4 id="other-resources">Other Resources</h4>
<ul>
<li><a href="https://learn.sparkfun.com/tutorials/getting-started-with-load-cells?_gl=1*yfrrt3*_ga*Mzk5MzU0OTU5LjE2OTI0NzYwNzk.*_ga_T369JS7J9N*MTY5MjQ3NjA3OC4xLjEuMTY5MjQ3NzgxNy42MC4wLjA.&amp;_ga=2.250248710.1435746813.1692476080-399354959.1692476079&amp;ref=thestackcanary.com">Getting started with load cells - sparkfun</a></li>
<li><a href="https://learn.sparkfun.com/tutorials/load-cell-amplifier-hx711-breakout-hookup-guide?_gl=1*pirsfj*_ga*Mzk5MzU0OTU5LjE2OTI0NzYwNzk.*_ga_T369JS7J9N*MTY5MjQ3NjA3OC4xLjEuMTY5MjQ3ODExOC4xOC4wLjA.&amp;_ga=2.220755480.1435746813.1692476080-399354959.1692476079&amp;ref=thestackcanary.com">hx711 hookup guide - sparkfun</a></li>
<li><a href="https://www.jfurness.uk/the-drunken-bishop-algorithm/?ref=thestackcanary.com">Barely Functional Theories Blog - The Drunk Bishop Algorithm</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Leveling Up Your Elixir Option Handling]]></title><description><![CDATA[With the NimbleOptions library, you can define powerful and flexible argument validation schemas. ]]></description><link>https://www.thestackcanary.com/elixir-nimble-options/</link><guid isPermaLink="false">6527767e02e0540d32653f25</guid><category><![CDATA[Elixir]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Sun, 17 Sep 2023 21:55:08 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2023/09/nimble_options_banner.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.thestackcanary.com/content/images/2023/09/nimble_options_banner.png" alt="Leveling Up Your Elixir Option Handling"><p>When writing libraries in any programming language, it is helpful to do as much validation of function arguments as possible up front to avoid spending time doing work that will eventually fail. This is a significant advantage to having type systems since many of the argument validations you might want to do have to do with ensuring that the correct types are passed to your function. With Elixir being dynamically typed (for now), there are other language idioms used to achieve argument validation. For example, you might use the combination of multiclause functions, pattern matching, and function guards to achieve a similar outcome to static type checks. </p><pre><code class="language-elixir">def negate(int) when is_integer(int) do
  -num
end

def negate(bool) when is_boolean(bool) do
  not bool
end

def negate(_) do
  raise &quot;Type must be &quot;int&quot; or &quot;bool&quot;
end</code></pre><p>This is the example that Jos&#xE9; Valim uses in his recent ElixirConfUS talk entitled <a href="https://youtu.be/giYbq4HmfGA?si=1eO_LZlwu2cbSOVG&amp;ref=thestackcanary.com" rel="noreferrer">The Foundations of the Elixir Type System</a>. As you can see, you can use multiclause functions to separate concerns for each type that the function accepts, and you can include the last clause that matches every other type and <code>raise</code> an error with the appropriate message.  This is a perfectly fine solution for rudimentary argument validation, but once you start needing to validate on properties not captured in guards or validating keyword arguments, it can get a bit messier.</p><p> You can always elect to do manual keyword validation using <code>Keyword.validate</code>, but if you have multiple functions that share similar validation then you might find it repetitive, in which case you might extract those validations into a function. Then you might start realizing that you want more powerful validations, and soon enough, you decide to extract that logic into its own module. Well, as it turns out, the folks over at Dashbit have already done that with the <a href="https://github.com/dashbitco/nimble_options?ref=thestackcanary.com" rel="noreferrer">Nimble Options</a> package!</p><h2 id="intro-to-nimbleoptions">Intro to NimbleOptions</h2><p>NimbleOptions is described as &quot;a tiny library for validating and documenting high-level options.&quot;  It allows you to define schemas in which to validate your keyword options and raises the appropriate error when a validation errors. It includes many built-in types to define schemas, or you can provide custom definitions. It also allows you to pair the documentation about an option with the option itself, and then can conveniently generate your documentation for all of your options. You can reuse schema definitions and compose them as you would any keyword list (since schemas are defined as Keyword Lists), and even compile your schemas ahead of time (assuming you have no runtime-only terms in your definitions).</p><p> The API is very easy to learn, and the library is small enough that you can feel good incorporating it into your code base.  One other benefit of the library is that it allows you to perform transformations on the parameters while also validating, which was a real benefit to me when writing binding to an external API. If I didn&apos;t like a particular API parameter, or if some did not make sense in the context of Elixir, then I could change the Elixir-facing API and use NimbleOptions to transform the parameter to the required field to pass to the external API.  Let&apos;s dive deeper into that real-world use case.</p><h2 id="leveling-up-your-validations">Leveling Up Your Validations</h2><p>As I was writing <a href="https://github.com/acalejos/exgboost?ref=thestackcanary.com" rel="noreferrer"><code>EXGBoost</code></a>, I found that one of the pain points was finding a good way to do the bevy of parameter validation needed for the library. XGBoost itself has <a href="https://xgboost.readthedocs.io/en/stable/parameter.html?ref=thestackcanary.com" rel="noreferrer">many different parameters</a> that it may accept, and the way in which some parameters act can be dependent on other parameters.  </p><p>There were several unique considerations I had when writing my parameter validations. I will explain the problem and show how <code>NimbleOptions</code> helped me solve it. </p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">The code that I will be referencing is available in its totality <a href="https://github.com/acalejos/exgboost/blob/main/lib/exgboost/parameters.ex?ref=thestackcanary.com" rel="noreferrer">here</a>, and you can find the documentation that was generated (including that which was generated with NimbleOptions) <a href="https://hexdocs.pm/exgboost/EXGBoost.Parameters.html?ref=thestackcanary.com" rel="noreferrer">here</a>.</div></div><h3 id="custom-validations">Custom Validations</h3><p>As with many machine learning models, there are parameters that must be validated within a real-number range (not an Elixir <code>Range</code>), so I knew those would also need repeated custom validation.  Think parameters such as regularization terms (<code>alpha</code>,<code>beta</code>), learning rates (<code>eta</code>), etc. One interesting case for XGBoost is the <code>colsample_by*</code> family of parameters. The XGBoost C API treats each one as a separate parameter, but each shares the same validation. Also, these parameters work cumulatively since they control the tree sampling according to different characteristics, so a valid option could be <code>{&apos;colsample_bytree&apos;:0.5, &apos;colsample_bylevel&apos;:0.5, &apos;colsample_bynode&apos;:0.5}</code>, which would reduce 64 features to 8 features at each split. I wanted to simplify this API a bit to</p><pre><code class="language-elixir">colsample_by: [tree: 0.8, node: 0.8, level: 0.8]</code></pre><p>We can do this by taking advantage of a custom <code>type</code> in the definition schema. First, let&apos;s write the definition for this parameter:</p><pre><code class="language-elixir">colsample_by: [
    type: {:custom, EXGBoost.Parameters, :validate_colsample, []},
    doc: &quot;&quot;&quot;
    This is a family of parameters for subsampling of columns.
    All `colsample_by` parameters have a range of `(0, 1]`, the default value of `1`, and specify the fraction of columns to be subsampled.
    `colsample_by` parameters work cumulatively. For instance, the combination
    `col_sampleby: [tree: 0.5, level: 0.5, node: 0.5]` with `64` features will leave `8`.
      * `:tree` - The subsample ratio of columns when constructing each tree. Subsampling occurs once for every tree constructed. Valid range is (0, 1]. The default value is `1`.
      * `:level` - The subsample ratio of columns for each level. Subsampling occurs once for every new depth level reached in a tree. Columns are subsampled from the set of columns chosen for the current tree. Valid range is (0, 1]. The default value is `1`.
      * `:node` - The subsample ratio of columns for each node (split). Subsampling occurs once every time a new split is evaluated. Columns are subsampled from the set of columns chosen for the current level. Valid range is (0, 1]. The default value is `1`.
    &quot;&quot;&quot;
  ]</code></pre><p>Next, we write the validator. With custom type in <code>NimbleOptions</code>, your validator must return <code>{:error, reason}</code> or <code>{:ok, options}</code>, where <code>options</code> are the outputted validated options. </p><pre><code class="language-elixir">def validate_colsample(x) do
  unless is_list(x) do
    {:error, &quot;Parameter `colsample` must be a list, got #{inspect(x)}&quot;}
  else
    Enum.reduce_while(x, {:ok, []}, fn x, {_status, acc} -&gt;
      case x do
        {key, value} when key in [:tree, :level, :node] and is_number(value) -&gt;
          if in_range(value, &quot;(0,1]&quot;) do
            {:cont, {:ok, [{String.to_atom(&quot;colsample_by#{key}&quot;), value} | acc]}}
          else
            {:halt,
             {:error, &quot;Parameter `colsample: #{key}` must be in (0,1], got #{inspect(value)}&quot;}}
          end

        {key, _value} -&gt;
          {:halt,
           {:error,
            &quot;Parameter `colsample` must be in [:tree, :level, :node], got #{inspect(key)}&quot;}}

        _ -&gt;
          {:halt, {:error, &quot;Parameter `colsample` must be a keyword list, got #{inspect(x)}&quot;}}
      end
    end)
  end
end</code></pre><p>And just like that, we can now have all three possible <code>colsample_by*</code> options succinctly under one key, while still adhering to the XGBoost C API. We will touch more on other transformations later. </p><h3 id="overridable-configuration-defaults">Overridable Configuration Defaults</h3><p>There are certain parameters that <strong>must</strong> be passed to the XGBoost API, but we don&apos;t necessarily want the user to have to define them on each API call. So instead we can define a default value that the user can either globally override or override on each call. One case of this is with the parameter <code>nthread</code> for <code>EXGBoost.train</code> and <code>EXGBoost.predict</code>.  It would be tedious for the user to have to pass the <code>nthread</code> option for each invocation to these high-level APIs, so instead we use <code>Application.compile_env/3</code>  function to set a default in our <code>NimbleOptions</code> schema definitions. </p><pre><code class="language-elixir"> nthread: [
      type: :non_neg_integer,
      default: Application.compile_env(:exgboost, :nthread, 0),
      doc: &quot;&quot;&quot;
      Number of threads to use for training and prediction. If `0`, then the
      number of threads is set to the number of cores.  This can be set globally
      using the `:exgboost` application environment variable `:nthread`
      or on a per booster basis.  If set globally, the value will be used for
      all boosters unless overridden by a specific booster.
      To set the number of threads globally, add the following to your `config.exs`:
      `config :exgboost, nthread: n`.
      &quot;&quot;&quot;
    ]</code></pre><p>With this definition, the highest precedence is when a user passes the <code>nthread</code> option to the API call. If they do not provide that option, then it falls back to the value the user set under the same key in their <code>config.exs</code> file. If the user did not set the key, then the default of <code>0</code> is used, which in this case refers to using all available cores. Additionally, since we used <code>Application.compile_env/3</code>, then this schema still has no runtime-only terms and can thus be compiled (which means that any runtime changes to the environment will not be reflected).</p><h3 id="parameter-transformation">Parameter Transformation</h3><p>The XGBoost C API requires that all parameters be JSON string encoded, which means that many parameter names they use are not valid atoms. For example, all of the <a href="https://xgboost.readthedocs.io/en/stable/parameter.html?ref=thestackcanary.com#learning-task-parameters" rel="noreferrer">Learning Task Parameters</a> objectives use colons (<code>:</code>) to separate parameters used for different types of models (<code>&quot;reg:squarederror&quot;</code>,<code>&quot;binary:logistic&quot;</code>, <code>&quot;multi:softmax&quot;</code>). We could just use those directly, but that does not feel very &quot;Elixir&quot; to me. So instead I opted to use atoms and just replace the colons with an underscore (<code>:reg_squarederror</code>,<code>&quot;:binary_logistic&quot;</code>, <code>:multi_softmax</code>), which just looks much cleaner within a keyword list. <strong>Atoms convey to the user that there is a limited enumeration of valid options, whereas a string conveys a user-defined option. </strong></p><p>So to achieve this we can define the definition with a custom validation:</p><pre><code class="language-elixir">objective: [
      type: {:custom, EXGBoost.Parameters, :validate_objective, []},
      default: :reg_squarederror,
      doc: ~S&quot;&quot;&quot;
      Specify the learning task and the corresponding learning objective. The objective options are:
        * `:reg_squarederror` - regression with squared loss.
        * `:reg_squaredlogerror` - regression with squared log loss $\frac{1}{2}[\log (pred + 1) - \log (label + 1)]^2$. All input labels are required to be greater than `-1`. Also, see metric rmsle for possible issue with this objective.
        * `:reg_logistic` - logistic regression.
        * `:reg_pseudohubererror` - regression with Pseudo Huber loss, a twice differentiable alternative to absolute loss.
        * `:reg_absoluteerror` - Regression with `L1` error. When tree model is used, leaf value is refreshed after tree construction. If used in distributed training, the leaf value is calculated as the mean value from all workers, which is not guaranteed to be optimal.
        * `:reg_quantileerror` - Quantile loss, also known as pinball loss. See later sections for its parameter and Quantile Regression for a worked example.
        * `:binary_logistic` - logistic regression for binary classification, output probability
        * `:binary_logitraw` - logistic regression for binary classification, output score before logistic transformation
        * `:binary_hinge` - hinge loss for binary classification. This makes predictions of `0` or `1`, rather than producing probabilities.
        * `:count_poisson` - Poisson regression for count data, output mean of Poisson distribution.
            * `max_delta_step` is set to `0.7` by default in Poisson regression (used to safeguard optimization)
        * `:survival_cox` - Cox regression for right censored survival time data (negative values are considered right censored). Note that predictions are returned on the hazard ratio scale (i.e., as `HR = exp(marginal_prediction)` in the proportional hazard function `h(t) = h0(t) * HR`).
        * `:survival_aft` - Accelerated failure time model for censored survival time data. See [Survival Analysis with Accelerated Failure Time](https://xgboost.readthedocs.io/en/latest/tutorials/aft_survival_analysis.html) for details.
        * `:multi_softmax` - set XGBoost to do multiclass classification using the softmax objective, you also need to set num_class(number of classes)
        * `:multi_softprob` - same as softmax, but output a vector of ndata * nclass, which can be further reshaped to ndata * nclass matrix. The result contains predicted probability of each data point belonging to each class.
        * `:rank_ndcg` - Use LambdaMART to perform pair-wise ranking where Normalized Discounted Cumulative Gain (NDCG) is maximized. This objective supports position debiasing for click data.
        * `:rank_map` - Use LambdaMART to perform pair-wise ranking where Mean Average Precision (MAP) is maximized
        * `:rank_pairwise` - Use LambdaRank to perform pair-wise ranking using the ranknet objective.
        * `:reg_gamma` - gamma regression with log-link. Output is a mean of gamma distribution. It might be useful, e.g., for modeling insurance claims severity, or for any outcome that might be gamma-distributed.
        * `:reg_tweedie` - Tweedie regression with log-link. It might be useful, e.g., for modeling total loss in insurance, or for any outcome that might be Tweedie-distributed.
      &quot;&quot;&quot;
    ]</code></pre><p>Then define the validation function itself:</p><pre><code class="language-elixir">def validate_objective(x) do
  if(
    x in [
      :reg_squarederror,
      :reg_squaredlogerror,
      :reg_logistic,
      :reg_pseudohubererror,
      :reg_absoluteerror,
      :reg_quantileerror,
      :binary_logistic,
      :binary_logitraw,
      :binary_hinge,
      :count_poisson,
      :survival_cox,
      :survival_aft,
      :multi_softmax,
      :multi_softprob,
      :rank_ndcg,
      :rank_map,
      :rank_pairwise,
      :reg_gamma,
      :reg_tweedie
    ],
    do: {:ok, Atom.to_string(x) |&gt; String.replace(&quot;_&quot;, &quot;:&quot;)},
    else:
      {:error,
       &quot;Parameter `objective` must be in [:reg_squarederror, :reg_squaredlogerror, :reg_logistic, :reg_pseudohubererror, :reg_absoluteerror, :reg_quantileerror, :binary_logistic, :binary_logitraw, :binary_hinge, :count_poisson, :survival_cox, :survival_aft, :multi_softmax, :multi_softprob, :rank_ndcg, :rank_map, :rank_pairwise, :reg_gamma, :reg_tweedie], got #{inspect(x)}&quot;}
  )
end</code></pre><p>Another situation where I found the use of these transformations to lead to a much cleaner, &quot;Elixir&quot; styled API is with certain evaluation metrics. Again, these were defined in the XGBoost API as strings and certain options could be appended with a <code>-</code> to indicate an inversion of sorts (<code>ndcg</code> vs <code>ndcg-</code>), while other options could be parameterized to indicate a cut-off value (<code>ndcg</code> vs <code>ndcg@n</code> where <code>n</code> is an integer), and you could even combine these two modifiers (such as <code>ndcg@n-</code>). While it would be perfectly serviceable to just use strings in these situations, again it felt like it would stand out as inelegant compared to the usual elegance of the language. So, as a way of keeping the options as atoms while allowing these modifications, I changed the API to prepend <code>inv</code> in the atom names for those which would otherwise append <code>-</code> in their string, and use a 2-Tuple for those options which would be parametrized, as opposed to the <code>@</code> used in their string counterparts. This would lead to an API such as <code>:ndcg</code>,<code>:inv_ndcg</code>, <code>{:inv_ndcg, n}</code></p><pre><code class="language-elixir">def validate_eval_metric(x) do
    x = if is_list(x), do: x, else: [x]

    metrics =
      Enum.map(x, fn y -&gt;
        case y do
          {task, n} when task in [:error, :ndcg, :map, :tweedie_nloglik] and is_number(n) -&gt;
            task = Atom.to_string(task) |&gt; String.replace(&quot;_&quot;, &quot;-&quot;)
            &quot;#{task}@#{n}&quot;

          {task, n} when task in [:inv_ndcg, :inv_map] and is_number(n) -&gt;
            [task | _tail] = task |&gt; Atom.to_string() |&gt; String.split(&quot;_&quot;) |&gt; Enum.reverse()
            &quot;#{task}@#{n}-&quot;

          task when task in [:inv_ndcg, :inv_map] -&gt;
            [task | _tail] = task |&gt; Atom.to_string() |&gt; String.split(&quot;_&quot;) |&gt; Enum.reverse()
            &quot;#{task}-&quot;

          task
          when task in [
                 :rmse,
                 :rmsle,
                 :mae,
                 :mape,
                 :mphe,
                 :logloss,
                 :error,
                 :merror,
                 :mlogloss,
                 :auc,
                 :aucpr,
                 :ndcg,
                 :map,
                 :tweedie_nloglik,
                 :poisson_nloglik,
                 :gamma_nloglik,
                 :cox_nloglik,
                 :gamma_deviance,
                 :aft_nloglik,
                 :interval_regression_accuracy
               ] -&gt;
            Atom.to_string(task) |&gt; String.replace(&quot;_&quot;, &quot;-&quot;)

          _ -&gt;
            raise ArgumentError,
                  &quot;Parameter `eval_metric` must be in [:rmse, :mae, :logloss, :error, :error, :merror, :mlogloss, :auc, :aucpr, :ndcg, :map, :ndcg, :map, :ndcg, :map, :poisson_nloglik, :gamma_nloglik, :gamma_deviance, :tweedie_nloglik, :tweedie_deviance], got #{inspect(y)}&quot;
        end
      end)

    {:ok, metrics}
  end</code></pre><h3 id="composability">Composability</h3><p>Since definition schemas are just normal Keyword Lists, we can compose definitions like you would any other Keyword List. For example, with XGBoost, there is a class of booster called a Dart Booster, which is just Tree Booster with dropout. So assuming we have our tree booster schema defined as <code>@tree_booster_params</code>, we can define our Dart Booster as:</p><pre><code class="language-elixir">@dart_booster_params @tree_booster_params ++
   [
     sample_type: [
       type: {:in, [:uniform, :weighted]},
       default: :uniform,
       doc: &quot;&quot;&quot;
       Type of sampling algorithm.
          * `:uniform` - Dropped trees are selected uniformly.
          * `:weighted` - Dropped trees are selected in proportion to weight.
       &quot;&quot;&quot;
     ],
     normalize_type: [
       type: {:in, [:tree, :forest]},
       default: :tree,
       doc: &quot;&quot;&quot;
       Type of normalization algorithm.
          * `:tree` - New trees have the same weight of each of dropped trees.
              * Weight of new trees are `1 / (k + learning_rate)`.
              * Dropped trees are scaled by a factor of `k / (k + learning_rate)`.
          * `:forest` - New trees have the same weight of sum of dropped trees (forest).
              * Weight of new trees are 1 / (1 + learning_rate).
              * Dropped trees are scaled by a factor of 1 / (1 + learning_rate).
       &quot;&quot;&quot;
     ],
     rate_drop: [
       type: {:custom, EXGBoost.Parameters, :in_range, [&quot;[0,1]&quot;]},
       default: 0.0,
       doc: &quot;&quot;&quot;
       Dropout rate (a fraction of previous trees to drop during the dropout). Valid range is [0, 1].
       &quot;&quot;&quot;
     ],
     one_drop: [
       type: {:in, [0, 1]},
       default: 0,
       doc: &quot;&quot;&quot;
       When this flag is enabled, at least one tree is always dropped during the dropout (allows Binomial-plus-one or epsilon-dropout from the original DART paper).
       &quot;&quot;&quot;
     ],
     skip_drop: [
       type: {:custom, EXGBoost.Parameters, :in_range, [&quot;[0,1]&quot;]},
       default: 0.0,
       doc: &quot;&quot;&quot;
       Probability of skipping the dropout procedure during a boosting iteration. Valid range is [0, 1].
          * If a dropout is skipped, new trees are added in the same manner as gbtree.
          * **Note** that non-zero skip_drop has higher priority than rate_drop or one_drop.
       &quot;&quot;&quot;
     ]
   ]</code></pre><h3 id="putting-it-all-together">Putting It All Together</h3><p>XGBoost separates its training and prediction options into four classes of options: </p><blockquote>
<p><strong>General parameters</strong> relate to which booster we are using to do boosting, commonly tree or linear model<br>
<strong>Booster parameters</strong> depend on which booster you have chosen<br>
<strong>Learning task parameters</strong> decide on the learning scenario. For example, regression tasks may use different parameters with ranking tasks.<br>
<strong>Command line parameters</strong> relate to behavior of CLI version of XGBoost.</p>
</blockquote>
<p><strong>A</strong>dditionally, there are global parameters, so we will treat them as <code>Application</code> level parameters. We can ignore the last class since they don&apos;t apply to our use case. Since certain <strong>Learning Task Parameters</strong> are only valid for certain objectives, we must separate those concerns similarly to how <strong>Booster Parameters </strong>depend on options from <strong>General Parameters. </strong></p><p>Our final validation flow will look like this:</p><div class="mermaid"> 
stateDiagram-v2
  G: General Parameters
  Dart: Dart Parameters
  Tree: Tree Booster Parameters
  Linear: Linear Booster Parameters
  Learning: Learning Task Parameters
  Survival: Survival Parameters
  Rank: Rank Parameters
  Reg: Reg Parameters
  Multi: Multi Parameters
  [*] --&gt; G
  G --&gt; Dart: if Booster == dart
  G --&gt; Tree : if Booster == gbtree
  G --&gt; Linear : if Booster == gblinear
  Dart --&gt; Learning
  Tree --&gt; Learning
  Linear --&gt; Learning
  Learning --&gt; Survival: if task == &quot;survival&quot;
  Learning --&gt; Rank: if task == &quot;rank&quot;
  Learning --&gt; Reg: if task == &quot;reg&quot;
  Learning --&gt; Multi: if task == &quot;multi&quot;
  Survival --&gt; [*]
  Rank --&gt; [*]
  Reg --&gt; [*]
  Multi --&gt; [*]
  Learning --&gt; [*]: else
</div><p>We define a separate <code>validate!/1</code> function which we will invoke to validate this flow when our API is used. So let&apos;s first stub out our function:</p><pre><code class="language-elixir">def validate!(params) when is_list(params) do
end</code></pre><p>Now we get and validate <strong>only</strong> the general parameters from all of the options passed:</p><pre><code class="language-elixir">def validate!(params) when is_list(params) do
  general_params =
        Keyword.take(params, Keyword.keys(@general_params))
        |&gt; NimbleOptions.validate!(@general_schema)
end
</code></pre><p>Now, as a way of giving the user an escape hatch in case they want to directly pass through to the XGBoost C API, forgoing the niceties we&apos;re providing, we also add a <code>:validate_parameters</code> boolean option, which defaults to <code>true</code>, but the user can set to <code>false</code>:</p><pre><code class="language-elixir">  if general_params[:validate_parameters] do
    ...
  else
    params
  end</code></pre><p>Now, within the <code>true</code> branch, we gather and validate the booster params:</p><pre><code class="language-elixir">booster_params =
  case general_params[:booster] do
    :gbtree -&gt;
      Keyword.take(params, Keyword.keys(@tree_booster_params))
      |&gt; NimbleOptions.validate!(@tree_booster_schema)

    :gblinear -&gt;
      Keyword.take(params, Keyword.keys(@linear_booster_params))
      |&gt; NimbleOptions.validate!(@linear_booster_schema)

    :dart -&gt;
      Keyword.take(params, Keyword.keys(@dart_booster_params))
      |&gt; NimbleOptions.validate!(@dart_booster_schema)
  end</code></pre><p>Next we gather the Learning Task params:</p><pre><code class="language-elixir">learning_task_params =
    Keyword.take(params, Keyword.keys(@learning_task_params))
    |&gt; NimbleOptions.validate!(@learning_task_schema)</code></pre><p>Now we use the selected <code>:objective</code> option from the <code>learning_task_params</code> to validate the parameters which are objective-dependent:</p><pre><code class="language-elixir">extra_params =
    case learning_task_params[:objective] do
      &quot;reg:tweedie&quot; -&gt;
        Keyword.take(params, Keyword.keys(@tweedie_params))
        |&gt; NimbleOptions.validate!(@tweedie_schema)

      &quot;reg:pseudohubererror&quot; -&gt;
        Keyword.take(params, Keyword.keys(@pseudohubererror_params))
        |&gt; NimbleOptions.validate!(@pseudohubererror_schema)

      &quot;reg:quantileerror&quot; -&gt;
        Keyword.take(params, Keyword.keys(@quantileerror_params))
        |&gt; NimbleOptions.validate!(@quantileerror_schema)

      &quot;survival:aft&quot; -&gt;
        Keyword.take(params, Keyword.keys(@survival_params))
        |&gt; NimbleOptions.validate!(@survival_schema)

      &quot;rank:ndcg&quot; -&gt;
        Keyword.take(params, Keyword.keys(@ranking_params))
        |&gt; NimbleOptions.validate!(@ranking_schema)

      &quot;rank:map&quot; -&gt;
        Keyword.take(params, Keyword.keys(@ranking_params))
        |&gt; NimbleOptions.validate!(@ranking_schema)

      &quot;rank:pairwise&quot; -&gt;
        Keyword.take(params, Keyword.keys(@ranking_params))
        |&gt; NimbleOptions.validate!(@ranking_schema)

      &quot;multi:softmax&quot; -&gt;
        Keyword.take(params, Keyword.keys(@multi_soft_params))
        |&gt; NimbleOptions.validate!(@multi_soft_schema)

      &quot;multi:softprob&quot; -&gt;
        Keyword.take(params, Keyword.keys(@multi_soft_params))
        |&gt; NimbleOptions.validate!(@multi_soft_schema)

      _ -&gt;
        []
    end</code></pre><p>Finally, we return all of the params we gathered:</p><pre><code class="language-elixir">general_params ++ booster_params ++ learning_task_params ++ extra_params</code></pre><p>The final validation function looks like this:</p><pre><code class="language-elixir">@doc &quot;&quot;&quot;
  Validates the EXGBoost parameters and returns a keyword list of the validated parameters.
  &quot;&quot;&quot;
@spec validate!(keyword()) :: keyword()
def validate!(params) when is_list(params) do
  # Get some of the params that other params depend on
  general_params =
    Keyword.take(params, Keyword.keys(@general_params))
    |&gt; NimbleOptions.validate!(@general_schema)
  
  if general_params[:validate_parameters] do
    booster_params =
      case general_params[:booster] do
        :gbtree -&gt;
          Keyword.take(params, Keyword.keys(@tree_booster_params))
          |&gt; NimbleOptions.validate!(@tree_booster_schema)
  
        :gblinear -&gt;
          Keyword.take(params, Keyword.keys(@linear_booster_params))
          |&gt; NimbleOptions.validate!(@linear_booster_schema)
  
        :dart -&gt;
          Keyword.take(params, Keyword.keys(@dart_booster_params))
          |&gt; NimbleOptions.validate!(@dart_booster_schema)
      end
  
    learning_task_params =
      Keyword.take(params, Keyword.keys(@learning_task_params))
      |&gt; NimbleOptions.validate!(@learning_task_schema)
  
    extra_params =
      case learning_task_params[:objective] do
        &quot;reg:tweedie&quot; -&gt;
          Keyword.take(params, Keyword.keys(@tweedie_params))
          |&gt; NimbleOptions.validate!(@tweedie_schema)
  
        &quot;reg:pseudohubererror&quot; -&gt;
          Keyword.take(params, Keyword.keys(@pseudohubererror_params))
          |&gt; NimbleOptions.validate!(@pseudohubererror_schema)
  
        &quot;reg:quantileerror&quot; -&gt;
          Keyword.take(params, Keyword.keys(@quantileerror_params))
          |&gt; NimbleOptions.validate!(@quantileerror_schema)
  
        &quot;survival:aft&quot; -&gt;
          Keyword.take(params, Keyword.keys(@survival_params))
          |&gt; NimbleOptions.validate!(@survival_schema)
  
        &quot;rank:ndcg&quot; -&gt;
          Keyword.take(params, Keyword.keys(@ranking_params))
          |&gt; NimbleOptions.validate!(@ranking_schema)
  
        &quot;rank:map&quot; -&gt;
          Keyword.take(params, Keyword.keys(@ranking_params))
          |&gt; NimbleOptions.validate!(@ranking_schema)
  
        &quot;rank:pairwise&quot; -&gt;
          Keyword.take(params, Keyword.keys(@ranking_params))
          |&gt; NimbleOptions.validate!(@ranking_schema)
  
        &quot;multi:softmax&quot; -&gt;
          Keyword.take(params, Keyword.keys(@multi_soft_params))
          |&gt; NimbleOptions.validate!(@multi_soft_schema)
  
        &quot;multi:softprob&quot; -&gt;
          Keyword.take(params, Keyword.keys(@multi_soft_params))
          |&gt; NimbleOptions.validate!(@multi_soft_schema)
  
        _ -&gt;
          []
      end
  
    general_params ++ booster_params ++ learning_task_params ++ extra_params
  else
    params
  end
end</code></pre><h2 id="conclusion">Conclusion</h2><p>I hope I demonstrated how <code>NimbleOptions</code> can make some fairly complex validation logic into very manageable and intuitive code. I wanted to share my thoughts on the library since it really worked wonders for my particular use case, which I believe showed a wide range of validation techniques. With this validation flow, I can have complex sets of parameters such as the following:</p><pre><code class="language-elixir">params = [
      num_boost_rounds: num_boost_round,
      tree_method: :hist,
      obj: :multi_softprob,
      num_class: num_class,
      eval_metric: [
        :rmse,
        :rmsle,
        :mae,
        :mape,
        :logloss,
        :error,
        :auc,
        :merror,
        :mlogloss,
        :gamma_nloglik,
        :inv_map,
        {:tweedie_nloglik, 1.5},
        {:error, 0.2},
        {:ndcg, 3},
        {:map, 2},
        {:inv_ndcg, 3}
      ],
      max_depth: 3,
      eta: 0.3,
      gamma: 0.1,
      min_child_weight: 1,
      subsample: 0.8,
      colsample_by: [tree: 0.8, node: 0.8, level: 0.8],
      lambda: 1,
      alpha: 0,
      grow_policy: :lossguide,
      max_leaves: 0,
      max_bin: 128,
      predictor: :cpu_predictor,
      num_parallel_tree: 1,
      monotone_constraints: [],
      interaction_constraints: []
    ]</code></pre><p>and completely validate it within Elixir (although the XGBoost C API performs its own validation as well).</p><p>Finally, when you need to produce documentation for your modules, <code>NimbleOptions</code> makes it incredibly easy. Since all of my documentation was paired with the parameters themselves, my final module documentation just looks like this:</p><pre><code class="language-elixir">@moduledoc &quot;&quot;&quot;
  Parameters are used to configure the training process and the booster.

  ## Global Parameters

  You can set the following params either using a global application config (preferred)
  or using the `EXGBoost.set_config/1` function. The global config is set using the `:exgboost` key.
  Note that using the `EXGBoost.set_config/1` function will override the global config for the
  current instance of the application.

  ```elixir
  config :exgboost,
    verbosity: :info,
    use_rmm: true,
  ```
  #{NimbleOptions.docs(@global_schema)}

  ## General Parameters
  #{NimbleOptions.docs(@general_schema)}

  ## Tree Booster Parameters
  #{NimbleOptions.docs(@tree_booster_schema)}

  ## Linear Booster Parameters
  #{NimbleOptions.docs(@linear_booster_schema)}

  ## Dart Booster Parameters
  #{NimbleOptions.docs(@dart_booster_schema)}

  ## Learning Task Parameters
  #{NimbleOptions.docs(@learning_task_schema)}

  ## Objective-Specific Parameters

  ### Tweedie Regression Parameters
  #{NimbleOptions.docs(@tweedie_schema)}

  ### Pseudo-Huber Error Parameters
  #{NimbleOptions.docs(@pseudohubererror_schema)}

  ### Quantile Error Parameters
  #{NimbleOptions.docs(@quantileerror_schema)}

  ### Survival Analysis Parameters
  #{NimbleOptions.docs(@survival_schema)}

  ### Ranking Parameters
  #{NimbleOptions.docs(@ranking_schema)}

  ### Multi-Class Classification Parameters
  #{NimbleOptions.docs(@multi_soft_schema)}
  &quot;&quot;&quot;</code></pre><p>Not only does it produce great documentation for users of the library, but it is nw logically organized and would be easy to navigate for any future developers or contributors. The use of <code>NimbleOptions</code> makes my code much more self-documenting, which is a great quality to strive for in a code base. I hope I convinced you to try the library out for yourself. Let me know how it goes!</p><div class="kg-card kg-signup-card kg-width-wide " data-lexical-signup-form style="background-color: #F0F0F0; display: none;">
            
            <div class="kg-signup-card-content">
                
                <div class="kg-signup-card-text ">
                    <h2 class="kg-signup-card-heading" style="color: #000000;"><span style="white-space: pre-wrap;">Did you enjoy this article?</span></h2>
                    <p class="kg-signup-card-subheading" style="color: #000000;"><span style="white-space: pre-wrap;">Sign up for The Stack Canary!</span></p>
                    
        <form class="kg-signup-card-form" data-members-form="signup">
            
            <div class="kg-signup-card-fields">
                <input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
                <button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
                    <span class="kg-signup-card-button-default">Subscribe</span>
                    <span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
        <g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
            <g class="nc-loop-dots-4-24-icon-o">
                <circle cx="4" cy="12" r="3"/>
                <circle cx="12" cy="12" r="3"/>
                <circle cx="20" cy="12" r="3"/>
            </g>
            <style data-cap="butt">
                .nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
                .nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
                .nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
                .nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
                .nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
                @keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
            </style>
        </g>
    </svg></span>
                </button>
            </div>
            <div class="kg-signup-card-success" style="color: #000000;">
                Email sent! Check your inbox to complete your signup.
            </div>
            <div class="kg-signup-card-error" style="color: #000000;" data-members-error></div>
        </form>
        
                    <p class="kg-signup-card-disclaimer" style="color: #000000;"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
                </div>
            </div>
        </div>]]></content:encoded></item><item><title><![CDATA[Serving Spam Detection With XGBoost and Elixir]]></title><description><![CDATA[Learn how to detect spam with XGBoost and Elixir and serve the model for production use. ]]></description><link>https://www.thestackcanary.com/serving-spam-detection-with-xgboost-and-elixir/</link><guid isPermaLink="false">6527767e02e0540d32653f26</guid><category><![CDATA[Elixir]]></category><category><![CDATA[Machine Learning]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Sat, 09 Sep 2023 21:36:59 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2023/09/spam_detection_post_image-4.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.thestackcanary.com/content/images/2023/09/spam_detection_post_image-4.png" alt="Serving Spam Detection With XGBoost and Elixir"><p></p><!-- livebook:{"app_settings":{"slug":"spam-prediction"}} -->
<p><a href="https://livebook.dev/run?url=https%3A%2F%2Fgist.github.com%2Facalejos%2F4598e5e2b2b91e420a4cf609bc2ffc03&amp;ref=thestackcanary.com"><img src="https://livebook.dev/badge/v1/black.svg" alt="Serving Spam Detection With XGBoost and Elixir" loading="lazy"></a></p>
<h1 id="nx-powered-decision-trees">Nx-Powered Decision Trees</h1>
<pre><code class="language-elixir">Mix.install(
  [
    {:exgboost, &quot;~&gt; 0.3.1&quot;, override: true},
    {:nx, &quot;~&gt; 0.6&quot;},
    {:exla, &quot;~&gt; 0.5&quot;},
    {:kino, &quot;~&gt; 0.10.0&quot;},
    {:kino_explorer, &quot;~&gt; 0.1.4&quot;},
    {:scidata, &quot;~&gt; 0.1&quot;},
    {:scholar, &quot;~&gt; 0.1&quot;},
    {:tokenizers, &quot;~&gt; 0.3.0&quot;},
    {:explorer, &quot;~&gt; 0.7.0&quot;},
    {:mighty, git: &quot;https://github.com/acalejos/mighty.git&quot;},
    {:mockingjay,
     git: &quot;https://github.com/acalejos/mockingjay.git&quot;, branch: &quot;make_tree_travs_jit_compilable&quot;}
  ],
  config: [nx: [default_defn_options: [compiler: EXLA], default_backend: {EXLA.Backend, []}]]
)

alias Mighty.Preprocessing.TfidfVectorizer
data_path = &quot;/{path_to_your_dataset}/Phishing_Email.csv&quot;
</code></pre>
<h2 id="intro">Intro</h2>
<!-- livebook:{"break_markdown":true} -->
<p>This notebook was made to accompany my ElixirConfUS 2023 talk entitled <a href="https://speakerdeck.com/acalejos/nx-powered-decision-trees?ref=thestackcanary.com"><em>Nx-Powered Decision Trees</em></a>. For the best experience, you should launch this in <a href="https://livebook.dev/?ref=thestackcanary.com">Livebook</a> by clicking the button above.</p>
<p>Additionally, the TF-IDF library used was made for this talk, but I decided to release it as I plan to continue working on an NLTK-like library for Elixir. Consider it a work in progess still.</p>
<p>You can find all of the libraries that I wrote that are used in this notebook at my GitHub at <a href="https://github.com/acalejos?ref=thestackcanary.com">https://github.com/acalejos</a>.  If you want to follow my projects you can find me at <a href="https://twitter.com/ac_alejos?ref=thestackcanary.com">https://twitter.com/ac_alejos</a>.</p>
<h2 id="problem-statement">Problem Statement</h2>
<p>In this notebook we will be using the <a href="https://www.kaggle.com/datasets/subhajournal/phishingemails?ref=thestackcanary.com">Phishing Email Dataset</a> to create a Decision Tree Classifier to determine if an email is fake / a phishing attempt or legitimate.</p>
<p>This is a binary classification task, meaning that there are only 2 possible outputs from the model: legitimate email or fake email. The dataset we are using includes pairs of email text to the classification label, so we will have to perform preprocessing on the text to generate features conducive to Decision Tree Learning.</p>
<p>Once we are satisfied with our trained model, we will try it out against some examples from the test set and some user-generated examples.</p>
<p>This notebook is based on the work done at <a href="https://www.kaggle.com/code/vutronghoa/phishing-email-classification?ref=thestackcanary.com">https://www.kaggle.com/code/vutronghoa/phishing-email-classification</a>.  This was not meant to show the best fine-tuning practices for XGBoost, but rather to introduce <code>EXGBoost</code> + <code>Mockingjay</code> and how they can be used with <code>Nx.Serving</code> to serve a decision tree model in Elixir.</p>
<p><strong>By the end, you will have processed a text dataset using TF-IDF, trained an <code>EXGBoost</code> decision tree model, compiled the model into an <code>Nx</code> function, and serve the model using <code>Nx.Serving</code>.</strong></p>
<h2 id="explore-the-dataset">Explore the Dataset</h2>
<pre><code class="language-elixir">alias Explorer.DataFrame, as: DF
require Explorer.DataFrame
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code>Explorer.DataFrame
</code></pre>
<pre><code class="language-elixir">df = Explorer.DataFrame.from_csv!(data_path, columns: [&quot;Email Text&quot;, &quot;Email Type&quot;])
</code></pre>
<p>Let&apos;s start by seeing how many <code>nil</code> values there are in this dataset.</p>
<pre><code class="language-elixir">DF.nil_count(df)
</code></pre>
<p>Only 16 <code>nil</code> values out of 18650 samples is not bad. We will now go ahead and drop any row that contains a <code>nil</code> value. If these were numerical features or a substantial portion of the dataset were <code>nil</code> there might be ways that we could fill in for the <code>nil</code> values, but we will just drop in this instance.</p>
<pre><code class="language-elixir">df = Explorer.DataFrame.drop_nil(df)
nil
</code></pre>
<p>Now we need to transform the labels from their current text representation to a binary representation. We will map &quot;Safe Email&quot; to <code>0</code> and <code>Phishing Email</code> to <code>1</code>, and any other values we will map to <code>2</code> and filter later if needed. We will also add a column to represent te text length of each row.</p>
<pre><code class="language-elixir">text_length = Explorer.Series.transform(df[&quot;Email Text&quot;], &amp;String.length/1)

text_label =
  Explorer.Series.transform(df[&quot;Email Type&quot;], fn
    &quot;Safe Email&quot; -&gt;
      0

    &quot;Phishing Email&quot; -&gt;
      1

    _ -&gt;
      2
  end)

df = Explorer.DataFrame.put(df, &quot;Text Length&quot;, text_length)
df = Explorer.DataFrame.put(df, &quot;Email Type&quot;, text_label)
nil
</code></pre>
<p>Now that we have some numerical columns we can use <code>Explorer.DataFrame.describe</code> to get some initial metrics such as <code>mean</code>, <code>count</code>, <code>max</code>, <code>min</code>, and <code>std</code>. For the sake of demonstration, here we will use a Kino Explorer Smart Data Transformation cell to showcase some of its features but do note that you could get a similar output using</p>
<!-- livebook:{"force_markdown":true} -->
<pre><code class="language-elixir">DF.describe(df) |&gt; DF.discard(&quot;Email Text&quot;)
</code></pre>
<!-- livebook:{"attrs":{"assign_to":null,"collect":true,"data_frame":"df","data_frame_alias":"Elixir.DF","is_data_frame":true,"missing_require":null,"operations":[{"active":true,"columns":["Text Length"],"data_options":{"Email Text":"string","Email Type":"integer","Text Length":"integer"},"operation_type":"summarise","query":"min"},{"active":true,"columns":["Text Length"],"data_options":{"Email Text":"string","Email Type":"integer","Text Length":"integer"},"operation_type":"summarise","query":"max"},{"active":true,"columns":["Text Length"],"data_options":{"Email Text":"string","Email Type":"integer","Text Length":"integer"},"operation_type":"summarise","query":"mean"},{"active":true,"columns":["Text Length"],"data_options":{"Email Text":"string","Email Type":"integer","Text Length":"integer"},"operation_type":"summarise","query":"variance"},{"active":true,"columns":["Text Length"],"data_options":{"Email Text":"string","Email Type":"integer","Text Length":"integer"},"operation_type":"summarise","query":"standard_deviation"}]},"chunks":null,"kind":"Elixir.KinoExplorer.DataTransformCell","livebook_object":"smart_cell"} -->
<pre><code class="language-elixir">df
|&gt; DF.to_lazy()
|&gt; DF.summarise(
  &quot;Text Length_min&quot;: min(col(&quot;Text Length&quot;)),
  &quot;Text Length_max&quot;: max(col(&quot;Text Length&quot;)),
  &quot;Text Length_mean&quot;: mean(col(&quot;Text Length&quot;)),
  &quot;Text Length_variance&quot;: variance(col(&quot;Text Length&quot;)),
  &quot;Text Length_standard_deviation&quot;: standard_deviation(col(&quot;Text Length&quot;))
)
|&gt; DF.collect()
</code></pre>
<p>The max <code>Email Type</code> value is <code>1</code>, meaning that we don&apos;t have to filter out any that were assigned <code>2</code> in the previous transform. The max <code>Text Length</code> value seems like an extreme outlier compared to the other percentiles available. Let&apos;s take a look to see how much of the overall corpus the max value makes up.</p>
<pre><code class="language-elixir">Explorer.Series.max(df[&quot;Text Length&quot;]) / Explorer.Series.sum(df[&quot;Text Length&quot;])
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code>0.3317832761107029
</code></pre>
<p>As you can see, the text row with the max length has a length that is ~33% the length of the entire 18,000 count corpus, so we are going to remove it. In fact, for the sake of speed and memory efficiency during TFIDF vectorization, let&apos;s just remove any entry whose length is in the top 5% of the corpus.</p>
<pre><code class="language-elixir">df =
  Explorer.DataFrame.filter_with(
    df,
    &amp;Explorer.Series.less(&amp;1[&quot;Text Length&quot;], Explorer.Series.quantile(&amp;1[&quot;Text Length&quot;], 0.95))
  )

nil
</code></pre>
<p>Now we have a bit of a trimmed down dataset as well as encoded labels, so we can now convert this <code>DataFrame</code> to tensors to use in the TFIDF Vectorization step.</p>
<pre><code class="language-elixir">x = Explorer.Series.to_list(df[&quot;Email Text&quot;])
y = Explorer.Series.to_tensor(df[&quot;Email Type&quot;])
nil
</code></pre>
<h2 id="perform-tf-idf-vectorization">Perform TF-IDF Vectorization</h2>
<p>With Natural Language Processing (NLP) tasks such as this, the overall text dataset is usually referred to as a corpus, where each entry in the dataset is referred to as a document. So in this case, the overall dataset of emails is the corpus, and an individual email is a document. Since Decision Trees work on numerical tabular data, we must convert the corpus of emails into a numerical format.</p>
<!-- livebook:{"break_markdown":true} -->
<p><strong>Count Vectorization</strong> refers to counting the number of times each token occurs in each document. The vectorization encodes each row as a <code>length(vocabulary)</code> tensor where each entry corresponds to the count of that token in the given document.</p>
<p>For example, given the following corpus:</p>
<!-- livebook:{"force_markdown":true} -->
<pre><code class="language-elixir">corpus = [
   &quot;This is the first document&quot;,
   &quot;This document is the second document&quot;,
   &quot;And this is the third one&quot;,
   &quot;Is this the first document&quot;
 ]
</code></pre>
<p>The Count vectorization would look like (assume downcasing and whitespace splitting):</p>
<table>
<thead>
<tr>
<th>this</th>
<th>is</th>
<th>the</th>
<th>first</th>
<th>document</th>
<th>second</th>
<th>and</th>
<th>third</th>
<th>one</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>2</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>
<!-- livebook:{"break_markdown":true} -->
<p><strong>Term Frequency - Inverse Document Frequency (TF-IDF)</strong> is a vectorization technique that encodes the importance of tokens with respect to their documents and the overall corpus, acocunting for words that might occur more often but have less impact to the meaning of the document (e.g. articles in the English language).</p>
<p><strong>Term Frequency</strong> refers to the count of each token with respect to each document, which can be represented using the aforementioned <strong>CountVectorizer</strong>.</p>
<p><strong>Document Frequency</strong> refers to how many documents in the corpus each token occurs in. Given the example from above, the Document Frequency matrix would look like:</p>
<table>
<thead>
<tr>
<th>this</th>
<th>is</th>
<th>the</th>
<th>first</th>
<th>document</th>
<th>second</th>
<th>and</th>
<th>third</th>
<th>one</th>
</tr>
</thead>
<tbody>
<tr>
<td>1.0</td>
<td>1.0</td>
<td>1.0</td>
<td>0.5</td>
<td>0.75</td>
<td>0.25</td>
<td>0.25</td>
<td>0.25</td>
<td>0.25</td>
</tr>
</tbody>
</table>
<p>So to get a TFIDF reprsentation we can get a perform a count vectorization and then multiply by the inverse document frequency.</p>
<!-- livebook:{"break_markdown":true} -->
<p>The TFIDF Vectorizer we will be using allow you to pass a list of <strong>stop words</strong> which are words that you want to be filtered out before they get encoded. Here we will use a list from SKLearn. It is also worth noting that you can also determine what words should be filtered by setting the <code>:min_df</code> and <code>:max_df</code> options in the vectorizer to clamp the output to only using words whose document frequency is within the specified range.</p>
<pre><code class="language-elixir"># From https://github.com/scikit-learn/scikit-learn/blob/7f9bad99d6e0a3e8ddf92a7e5561245224dab102/sklearn/feature_extraction/_stop_words.py
english_stop_words =
  ~w(a about above across after afterwards again against all almost alone along already also although always am among amongst amoungst amount an and another any anyhow anyone anything anyway anywhere are around as at back be became because become becomes becoming been before beforehand behind being below beside besides between beyond bill both bottom but by call can cannot cant co con could couldnt cry de describe detail do done down due during each eg eight either eleven else elsewhere empty enough etc even ever every everyone everything everywhere except few fifteen fifty fill find fire first five for former formerly forty found four from front full further get give go had has hasnt have he hence her here hereafter hereby herein hereupon hers herself him himself his how however hundred i ie if in inc indeed interest into is it its itself keep last latter latterly least less ltd made many may me meanwhile might mill mine more moreover most mostly move much must my myself name namely neither never nevertheless next nine no nobody none noone nor not nothing now nowhere of off often on once one only onto or other others otherwise our ours ourselves out over own part per perhaps please put rather re same see seem seemed seeming seems serious several she should show side since sincere six sixty so some somehow someone something sometime sometimes somewhere still such system take ten than that the their them themselves then thence there thereafter thereby therefore therein thereupon these they thick thin third this those though three through throughout thru thus to together too top toward towards twelve twenty two un under until up upon us very via was we well were what whatever when whence whenever where whereafter whereas whereby wherein whereupon wherever whether which while whither who whoever whole whom whose why will with within without would yet you your yours yourself yourselves)

nil
</code></pre>
<p>We can pass a custom Tokenizer the the <code>TFIDFVectorizer</code>. The tokenizer must be passed in Module-Function-Arguments (MFA) format, so we will make our own module to wrap the wonderful <code>Tokenizers</code> library, which itself is a wrapper around the HuggingFace <code>Tokenizers</code> library. We will be using the <code>bert-base-uncased</code> tokenizer since we will normalize the corpus by downcasing beforehand. We will also pass in the <code>bert</code> vocabulary to the <code>TfidfVectorizer</code> so we don&apos;t have to build it ourselves.</p>
<pre><code class="language-elixir">defmodule MyEncoder do
  alias Tokenizers.Tokenizer

  def encode!(text, tokenizer) do
    {:ok, encoding} = Tokenizers.Tokenizer.encode(tokenizer, text)
    Tokenizers.Encoding.get_tokens(encoding)
  end

  def vocab(tokenizer) do
    Tokenizer.get_vocab(tokenizer)
  end
end
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code>{:module, MyEncoder, &lt;&lt;70, 79, 82, 49, 0, 0, 7, ...&gt;&gt;, {:vocab, 1}}
</code></pre>
<p>Now we are creating our vectorizer, passing in the above tokenizer and vocab, and stop words. We also specify <code>max_feature: 5000</code> to limit the vocabulary to only the top 5000 tokens according to the total count. We&apos;re using the default <code>ngram_range</code> to specify we only want unigrams, meaning the context window is only a single token. If we wanted unigrams and bigrams we could specify <code>{1,2}</code> for the range and it would also include each combination of 2 consecutive words as a separate token.</p>
<pre><code class="language-elixir">{:ok, tokenizer} = Tokenizers.Tokenizer.from_pretrained(&quot;bert-base-uncased&quot;)

{tfidf, tfidf_matrix} =
  TfidfVectorizer.new(
    tokenizer: {MyEncoder, :encode!, [tokenizer]},
    vocabulary: MyEncoder.vocab(tokenizer),
    ngram_range: {1, 1},
    sublinear_tf: true,
    stop_words: english_stop_words,
    max_features: 5000
  )
  |&gt; TfidfVectorizer.fit_transform(x)

container = %{x: tfidf_matrix, y: y}
serialized_container = Nx.serialize(container)
File.write!(&quot;#{Path.dirname(__ENV__.file)}/processed_data&quot;, serialized_container)
</code></pre>
<p>Now we will go ahead and serialize this matrix to disk so we don&apos;t have to recompute it in the future.</p>
<h2 id="load-processed-data">Load Processed Data</h2>
<p>Now we&apos;re going to set up our train and test sets to use for training.</p>
<pre><code class="language-elixir">processed_data = File.read!(&quot;#{Path.dirname(__ENV__.file)}/processed_data&quot;)
%{x: x, y: y} = Nx.deserialize(processed_data)
key = Nx.Random.key(System.system_time())

{idx, _k} = Nx.Random.shuffle(key, Nx.iota({Nx.axis_size(x, 0)}))

{train_idx, test_idx} = Nx.split(idx, 0.8)

x_train = Nx.take(x, train_idx)
x_test = Nx.take(x, test_idx)
y_train = Nx.take(y, train_idx)
y_test = Nx.take(y, test_idx)
nil
</code></pre>
<!-- livebook:{"branch_parent_index":4} -->
<h2 id="training-an-exgboost-model">Training an EXGBoost Model</h2>
<p>Finally we are at the point where we can work with <code>EXGBoost</code>. Its high-level API is quite straight-forward, with options to have finer-grained control by using the <code>EXGBoost.Training</code> API.</p>
<!-- livebook:{"break_markdown":true} -->
<p>The high-level API mainly consists of <code>EXGBoost.train/3</code>, <code>EXGBoost.predict/3</code>, and several serialization functions. There are many parameters that control the training process that may be passed into <code>EXGBoost.train/3</code>. Here we will demonstrate some of the most common.</p>
<!-- livebook:{"break_markdown":true} -->
<p>You must first decide what type of booster you want to use. EXGBoost offers 3 booster: <code>:gbtree</code>, <code>:gblinear</code>, and <code>:dart</code> Boosters. <code>gbtree</code> is the default and is what we want so we don&apos;t have to specify it.  Next you must decide the objective function you want to use. Our problem is a binary classification problem, so we will use the <code>:binary_logistic</code> objective.</p>
<pre><code class="language-elixir">Nx.default_backend(Nx.BinaryBackend)
x_train_bin = Nx.backend_copy(x_train)
x_test_bin = Nx.backend_copy(x_test)
y_train_bin = Nx.backend_copy(y_train)
y_test_bin = Nx.backend_copy(y_test)
nil
</code></pre>
<pre><code class="language-elixir">model =
  EXGBoost.train(x_train_bin, y_train_bin,
    objective: :binary_logistic,
    num_boost_rounds: 50,
    n_estimators: 800,
    learning_rate: 0.1,
    max_depth: 4,
    colsample_by: [tree: 0.2]
  )

preds = EXGBoost.predict(model, x_test_bin) |&gt; Scholar.Preprocessing.binarize(threshold: 0.5)
Scholar.Metrics.Classification.accuracy(y_test_bin, preds)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code>#Nx.Tensor&lt;
  f32
  EXLA.Backend&lt;host:0, 0.918574545.2734293006.109602&gt;
  0.9480226039886475
&gt;
</code></pre>
<p>We can achieve similar results using a different objective function, <code>:multi_softprob</code>, where the result contains predicted probability of each data point belonging to each class.</p>
<p>Since each output will be of shape <code>{num_samples, num_classes}</code>, where dimension <code>1</code> contains probabilities which add to <code>1</code>, we will need to perform an <code>argmax</code> which tells us the index of the largest value in the tensor. That index will correspond to the class label.</p>
<pre><code class="language-elixir">model =
  EXGBoost.train(x_train_bin, y_train_bin,
    num_class: 2,
    objective: :multi_softprob,
    num_boost_rounds: 50,
    n_estimators: 800,
    learning_rate: 0.1,
    max_depth: 4,
    colsample_by: [tree: 0.2]
  )

preds = EXGBoost.predict(model, x_test_bin) |&gt; Nx.argmax(axis: -1)
Scholar.Metrics.Classification.accuracy(y_test_bin, preds)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code>#Nx.Tensor&lt;
  f32
  EXLA.Backend&lt;host:0, 0.918574545.2734293006.109603&gt;
  0.9548022747039795
&gt;
</code></pre>
<p>Here, we achieved an accuracy of 95%, slightly outperforming the previous model.</p>
<p>We could continue tuning the model further using techniques such as parameter grid search, but for now we can be happy with these results and move forward.</p>
<!-- livebook:{"break_markdown":true} -->
<p>Now, let&apos;s serialize the model so that it persists and we can reuse it in the future. Note that this serialized format is common for all XGBoost APIs, meaning that you can use <code>EXGBoost</code> to read models that were trained from other APIs, and vice-versa.</p>
<pre><code class="language-elixir">EXGBoost.Booster.save(model, path: &quot;#{Path.dirname(__ENV__.file)}/model&quot;, overwrite: true)
</code></pre>
<!-- livebook:{"branch_parent_index":4} -->
<h2 id="compiling-the-exgboost-model">Compiling the EXGBoost Model</h2>
<p>Now we will use the trained model and compile it to a series of tensor operations using Mockingjay. Mockingjay works with any data type that implements the <code>Mockingjay.DecisionTree</code> Protocol.</p>
<!-- livebook:{"break_markdown":true} -->
<p>The API for Mockingjay consists of a single function, <code>convert/2</code>, which takes a data source and a list of options. The data source in this case is the <code>model</code> which is an <code>EXGBoost.Booster</code>.</p>
<!-- livebook:{"break_markdown":true} -->
<p>Now we are going to load the <code>EXGBoost</code> model itself.</p>
<pre><code class="language-elixir">model = EXGBoost.read_model(&quot;#{Path.dirname(__ENV__.file)}/model.json&quot;)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code>%EXGBoost.Booster{
  ref: #Reference&lt;0.918574545.2734293006.108420&gt;,
  best_iteration: nil,
  best_score: nil
}
</code></pre>
<p>We can use <code>Mockingjay.convert/2</code> by just passing the data source and letting a heurstic decide the compilation strategy, or we can specify the strategy as an option.</p>
<p>The heuristic used is:</p>
<ul>
<li>GEMM: Shallow Trees (&lt;=3)</li>
<li>PerfectTreeTraversal: Tall trees where depth &lt;= 10</li>
<li>TreeTraversal: Tall trees unfit for PTT (depth &gt; 10)</li>
</ul>
<p>Here for demonstration purposes we will show all strategies.</p>
<pre><code class="language-elixir">auto_exla = Mockingjay.convert(model)
gemm_exla = Mockingjay.convert(model, strategy: :gemm)
tree_trav_exla = Mockingjay.convert(model, strategy: :tree_traversal)
ptt_exla = Mockingjay.convert(model, strategy: :perfect_tree_traversal)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code>#Function&lt;0.112117313/1 in Mockingjay.convert/2&gt;
</code></pre>
<p>The output of <code>convert/2</code> is an arity-1 function that accepts an input tensor and outputs a prediction. It converts the whole decision tree model into an anonymous function that simply performs predictions.</p>
<!-- livebook:{"break_markdown":true} -->
<p>We can invoke the prediction function using normal Elixir <code>func.()</code> notation for calling anonymous functions.</p>
<p>Then we have to perform any post-prediction transformations (in this case an <code>argmax</code>) just as we did with the <code>EXGBoost.Booster</code> predictions.</p>
<pre><code class="language-elixir">for func &lt;- [auto_exla, gemm_exla, tree_trav_exla, ptt_exla] do
  preds = func.(x_test) |&gt; Nx.argmax(axis: -1)
  Scholar.Metrics.Classification.accuracy(y_test, preds) |&gt; Nx.to_number()
end
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code>[0.9579096436500549, 0.9579096436500549, 0.9579096436500549, 0.9579096436500549]
</code></pre>
<p>As you can see, each strategy performs the same in terms of accuracy. The difference in strategies has to do with speed of operation and memory consumption, which is dependent on the maximum depth of the tree.</p>
<!-- livebook:{"break_markdown":true} -->
<h3 id="predict-on-new-data">Predict on New Data</h3>
<!-- livebook:{"break_markdown":true} -->
<p>Now that we have a trained model, it&apos;s time to train on new data that was not in the original dataset. Bear in mind that the performance of the model is extremely dependent on the generality of the dataset, meaning how well the dataset represents inputs outside of the dataset.</p>
<!-- livebook:{"break_markdown":true} -->
<p>As you saw from looking at the samples from the original dataset, the training data had many instances of emails that seemed obviously like phishing attempts. With the advent of LLMs and new phishing techniques, there are certainly emails that will escape this detection mechanism, but if you look at your email Spam folder, you might be suprised at what you find.</p>
<!-- livebook:{"break_markdown":true} -->
<p>Keep in mind that production spam filters have much more data to use to predict spam, including more than just the email data itself. Here are some examples that I collected from my spam folder.</p>
<pre><code class="language-elixir">spam_emails = [
  &quot;Valued user,

We would like to inform you that it has been almost a year since you registered on our platform for automatic cloud Bitcoin mining. We appreciate your participation and trust in our services.

Even though you have been not actively using the platform, we want to assure you that the cryptocurrency mining process has been running smoothly on your devices connected to our platform through their IP addresses. Even in your absence, our system has continued to accumulate cryptocurrency.

We are pleased to inform you that during this period of inactivity, you have earned a total of 1.3426 Bitcoins, which is equivalent to 40644.53 USD, through our cloud mining service. This impressive earning demonstrates the potential and profitability of our platform.

Go to personal account &gt;&gt;&gt; https://lookerstudio.google.com/s/lN6__PIoTnU

We understand that you may have been busy or unable to actively engage with our platform, but we wanted to highlight the positive outcome of your participation. Rest assured that we have been diligently working to improve the mining process and increase your earnings.

As a highly appreciated member of our platform, we encourage you to take advantage of the opportunity to further explore the potential benefits of cloud mining. By actively participating and keeping an eye on your account, you can further enhance your earnings.

If you have any questions, concerns, or require assistance with your account, please do not hesitate to reach out to our support team. We are here to assist you navigate and optimize your mining experience.

Once again, we thank your continued support and anticipate serving you in the future.&quot;,
  &quot;Are you concerned about what&#x2019;s going to happen in the next few months?

We are.

Every morning when you wake up, the news headlines get worse and worse.

LISTEN: Don&#x2019;t be caught unprepared by food shortages when the SHTF!

ACT NOW and get a 3-Month Emergency Food Kit &#x2013; and SAVE $200 per kit!

None of us will get an &#x201C;advance warning.&#x201D; You probably won&#x2019;t see the food shortages coming until it&#x2019;s too late to do anything about it.

That&#x2019;s why NOW is the time to make food security your #1 TOP priority.

Pretty soon, you won&#x2019;t have the luxury of &#x201C;waiting&#x201D; any longer.

A wise man once said this about emergency food&#x2026;

&#x201C;It&#x2019;s better to HAVE IT and NOT NEED IT &#x2013; than need it and not have it.&#x201D;

We couldn&#x2019;t agree more.

The ultimate solution to &#x201C;food security&#x201D; comes from having the 3-Month Emergency Food Kit from My Patriot Supply &#x2013; the nation&#x2019;s leader in self-reliance and preparedness.

Right now, My Patriot Supply is knocking $200 OFF the regular price of their must-have food kit.

3-Month Emergency Food Supply Save $200
This is the lowest price EVER on this vital kit!

Hurry &#x2013; this is a limited-time offer.

Your 3-Month Kit comes packed with a wide variety of delicious meals. Together, they provide the 2,000+-calorie-per-day minimum requirement most people need.

And with this $200 discount&#x2026;

Emergency Food is now
more affordable than ever!

You can get your 3-Month Emergency Food Kits shipped discreetly to your door in a matter of days.

Simply go to MyPatriotSupply.com right now.

Don&#x2019;t wait! This special discount EXPIRES SOON.

Grab your food while supplies lasts. Order by 3:00 PM (Mountain Time) during the week, and your entire order ships SAME DAY.

The time may come when you&#x2019;ll wish you had acted right now.

It will be far too late to order if you wait for a crisis to hit!

That&#x2019;s for sure.

Click here to go straight to our secure order page.

Do it now. You won&#x2019;t regret it.&quot;,
  &quot;&#x1F3E6; Valued customer-1123454,

We&apos;re delighted to see you back on our platform!

&#x1F4A5; https://lookerstudio.google.com/s/kLmRuAstB0o

Just a friendly reminder that it&apos;s been 364 days since you joined our automatic cloud Bitcoin mining service, allowing your device to contribute to the mining process using its IP address.

Despite not actively accessing your personal account, rest assured that the collection of cryptocurrency has been growing automatically on your device.

We are excited to welcome you back, and we want to reiterate the potential profits your device has been generating over the course of the past year. If you wish to access your account and explore the accumulated earnings, simply log in to your personal account.

Thank you for your continued participation in our Bitcoin mining service, and we look forward to providing you with an effortless and rewarding experience.

Best regards,
Your friends at Bitcoin Mining Platform&quot;,
  &quot;Customer Support: Issue in Money Transfer to Your Card

We are reaching out to you on behalf of our customer support with important notice regarding a funds transfer that was intended for you. Unfortunately, due to a glitch, a transfer of 1500$ was mistakenly sent to the wrong address.

&#x231B; https://lookerstudio.google.com/s/kRBuk8BT3vs

We sincerely apologize for any inconvenience this may have caused. In order to ensure that you receive the transfer as quickly, we kindly ask you to reply to this message and provide us with the information of your current card to which the funds were supposed to be transferred. We will send you further instructions on how to resolve this matter.

Once again, we apologize for the inaccuracy that occurred, and we are committed to fixing the situation as quickly as possible. We appreciate your patience and cooperation in this matter.

&#x1F4B7; https://lookerstudio.google.com/s/kRBuk8BT3vs

Best regards,
Assistance Team&quot;
]

nil
</code></pre>
<pre><code class="language-elixir">TfidfVectorizer.transform(tfidf, spam_emails) |&gt; tree_trav_exla.() |&gt; Nx.argmax(axis: -1)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code>#Nx.Tensor&lt;
  s64[8]
  EXLA.Backend&lt;host:0, 0.918574545.2734293003.109950&gt;
  [1, 0, 0, 1, 1, 1, 1, 1]
&gt;
</code></pre>
<pre><code class="language-elixir">edgar_allen_poe = [
  &quot;FOR the most wild, yet most homely narrative which I am about to pen, I neither expect nor solicit belief. Mad indeed would I be to expect it, in a case where my very senses reject their own evidence. Yet, mad am I not -- and very surely do I not dream. But to-morrow I die, and to-day I would unburthen my soul. My immediate purpose is to place before the world, plainly, succinctly, and without comment, a series of mere household events. In their consequences, these events have terrified -- have tortured -- have destroyed me. Yet I will not attempt to expound them. To me, they have presented little but Horror -- to many they will seem less terrible than barroques. Hereafter, perhaps, some intellect may be found which will reduce my phantasm to the common-place -- some intellect more calm, more logical, and far less excitable than my own, which will perceive, in the circumstances I detail with awe, nothing more than an ordinary succession of very natural causes and effects.&quot;,
  &quot;Our friendship lasted, in this manner, for several years, during which my general temperament and character -- through the instrumentality of the Fiend Intemperance -- had (I blush to confess it) experienced a radical alteration for the worse. I grew, day by day, more moody, more irritable, more regardless of the feelings of others. I suffered myself to use intemperate language to my wife. At length, I even offered her personal violence. My pets, of course, were made to feel the change in my disposition. I not only neglected, but ill-used them. For Pluto, however, I still retained sufficient regard to restrain me from maltreating him, as I made no scruple of maltreating the rabbits, the monkey, or even the dog, when by accident, or through affection, they came in my way. But my disease grew upon me -- for what disease is like Alcohol ! -- and at length even Pluto, who was now becoming old, and consequently somewhat peevish -- even Pluto began to experience the effects of my ill temper.&quot;,
  &quot;What ho! what ho! this fellow is dancing mad!
He hath been bitten by the Tarantula.
All in the Wrong.

MANY years ago, I contracted an intimacy with a Mr. William Legrand. He was of an ancient Huguenot family, and had once been wealthy; but a series of misfortunes had reduced him to want. To avoid the mortification consequent upon his disasters, he left New Orleans, the city of his forefathers, and took up his residence at Sullivan&apos;s Island, near Charleston, South Carolina.
&quot;,
  &quot;And have I not told you that what you mistake for madness is but over acuteness of the senses? --now, I say, there came to my ears a low, dull, quick sound, such as a watch makes when enveloped in cotton. I knew that sound well, too. It was the beating of the old man&apos;s heart. It increased my fury, as the beating of a drum stimulates the soldier into courage.
&quot;
]

nil
</code></pre>
<pre><code class="language-elixir">TfidfVectorizer.transform(tfidf, edgar_allen_poe) |&gt; tree_trav_exla.() |&gt; Nx.argmax(axis: -1)
</code></pre>
<!-- livebook:{"output":true} -->
<pre><code>#Nx.Tensor&lt;
  s64[4]
  EXLA.Backend&lt;host:0, 0.918574545.2734293007.110162&gt;
  [0, 0, 1, 1]
&gt;
</code></pre>
<h3 id="serving-a-compiled-decision-tree-model">Serving a Compiled Decision Tree Model</h3>
<!-- livebook:{"break_markdown":true} -->
<p>Now we will make an interactive applet and use our newly compiled model within an <code>Nx.Serving</code> to serve our model. This supports distributed serving out of the box!</p>
<p>You can use this same technique within a Phoenix app.</p>
<p>Let&apos;s start by setting up our <code>Nx.Serving</code>, which is in charge of distributed serving of the model.</p>
<pre><code class="language-elixir">Nx.Defn.default_options(compiler: Nx.Defn.Evaluator)
Nx.default_backend(Nx.BinaryBackend)
gemm_predict = Mockingjay.convert(model, strategy: :gemm)

serving =
  Nx.Serving.new(fn opts -&gt; EXLA.jit(gemm_predict, opts) end)
  |&gt; Nx.Serving.client_preprocessing(fn input -&gt; {Nx.Batch.concatenate(input), :client_info} end)

nil
</code></pre>
<p>Now we will setup a <code>Kino</code> frame. This is where our applet&apos;s output will appear.</p>
<p>Then we setup the form, which is where we can provide interactive inputs.</p>
<pre><code class="language-elixir">frame = Kino.Frame.new()
</code></pre>
<pre><code class="language-elixir">inputs =
  [prompt: Kino.Input.text(&quot;Check for spam / phishing&quot;)]

form = Kino.Control.form(inputs, submit: &quot;Check&quot;, reset_on_submit: [:message])
</code></pre>
<p>Lasly, we setup our stateful <code>Kino</code> listener. This listens for the button press from the above form, then processes the text using our fitted <code>TFIDFVectorizer</code> and performs a prediction using our compiled model. Finally, it then updates a <code>Kino.DataTable</code> that will be rendered in the frame above.</p>
<pre><code class="language-elixir">Kino.listen(form, [], fn %{data: %{prompt: prompt}, origin: origin}, entries -&gt;
  if prompt != &quot;&quot; do
    predictions =
      Nx.Serving.run(serving, [TfidfVectorizer.transform(tfidf, [prompt])])
      |&gt; Nx.argmax(axis: -1)
      |&gt; Nx.to_list()

    [prediction] = predictions

    new_entries =
      [
        %{
          &quot;Input&quot; =&gt; prompt,
          &quot;Prediction&quot; =&gt; if(prediction == 1, do: &quot;Spam / Phishing&quot;, else: &quot;Legitimate.&quot;)
        }
        | entries
      ]
      |&gt; Enum.reverse()

    Kino.Frame.render(frame, Kino.DataTable.new(new_entries))
    {:cont, new_entries}
  else
    content = Kino.Markdown.new(&quot;_ERROR! The text you are checking must not be blank.&quot;)
    Kino.Frame.append(frame, content, to: origin)
  end
end)
</code></pre>
<p>Now you can interact with the prompt as is, or you can deploy this notebook as a Livebook app! All you have to do is use the <strong>Deploy</strong> button on the left side of the Livebook navigation menu. This will run through an instance of the notebook and if it succeeds it will deploy it to the slug you specify. And just like that, you can now connect to that URL from any number of browsers and get the benefits of the <code>Nx.Serving</code> to distributedly serve your model!</p>
]]></content:encoded></item><item><title><![CDATA[Understanding the Elixir Machine Learning Ecosystem]]></title><description><![CDATA[An introduction to Machine Learning in Elixir through a glossary of libraries. ]]></description><link>https://www.thestackcanary.com/understanding-the-elixir-machine-learning-ecosystem/</link><guid isPermaLink="false">6527767e02e0540d32653f23</guid><category><![CDATA[Elixir]]></category><category><![CDATA[Machine Learning]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Fri, 18 Aug 2023 00:02:22 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2023/08/Elixir_ML_Explained_Banner.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.thestackcanary.com/content/images/2023/08/Elixir_ML_Explained_Banner.png" alt="Understanding the Elixir Machine Learning Ecosystem"><p><strong>Edit (March 23, 2024): Added sections about the </strong><a href="https://github.com/thmsmlr/instructor_ex?ref=thestackcanary.com" rel="noreferrer"><strong><code>instructor_ex</code></strong></a><strong> and </strong><a href="https://github.com/brainlid/langchain?ref=thestackcanary.com" rel="noreferrer"><strong><code>langchain</code></strong></a><strong> libraries</strong></p><p>In my <a href="https://thestackcanary.com/from-python-pytorch-to-elixir-nx/?ref=thestackcanary.com" rel="noreferrer">previous article</a> I wrote about the process of transitioning into the Elixir Machine Learning ecosystem and included some arguments as to why I believe now is a good time to make that move. That article generated some buzz, even reaching the <a href="https://news.ycombinator.com/item?id=36859785&amp;ref=thestackcanary.com" rel="noreferrer">#2 spot on Hacker News</a> for a brief time.  This prompted some lively discussion about the benefits or drawbacks about using Elixir for you machine learning applications, and I believe that much of the discussion was driven from a lack of understanding of the state of the Elixir machine learning ecosystem, possibly due to a lack of open educational materials on the subject.  I also did a poor job setting the stage with that article for having readers outside of the Elixir community, evidenced by the fact that some people were confused at to what Nx was. </p><figure class="kg-card kg-image-card"><img src="https://www.thestackcanary.com/content/images/2023/08/Screenshot-2023-08-16-at-8.44.30-PM.png" class="kg-image" alt="Understanding the Elixir Machine Learning Ecosystem" loading="lazy" width="1574" height="128" srcset="https://www.thestackcanary.com/content/images/size/w600/2023/08/Screenshot-2023-08-16-at-8.44.30-PM.png 600w, https://www.thestackcanary.com/content/images/size/w1000/2023/08/Screenshot-2023-08-16-at-8.44.30-PM.png 1000w, https://www.thestackcanary.com/content/images/2023/08/Screenshot-2023-08-16-at-8.44.30-PM.png 1574w" sizes="(min-width: 720px) 720px"></figure><p>Others commented on some libraries that I had not mentioned in my previous article, and seeing the feedback it became obvious that there is certainly an appetite for an centralized resource where people can be introduced to these libraries. </p><figure class="kg-card kg-image-card"><img src="https://www.thestackcanary.com/content/images/2023/08/Screenshot-2023-08-16-at-8.42.51-PM.png" class="kg-image" alt="Understanding the Elixir Machine Learning Ecosystem" loading="lazy" width="2000" height="105" srcset="https://www.thestackcanary.com/content/images/size/w600/2023/08/Screenshot-2023-08-16-at-8.42.51-PM.png 600w, https://www.thestackcanary.com/content/images/size/w1000/2023/08/Screenshot-2023-08-16-at-8.42.51-PM.png 1000w, https://www.thestackcanary.com/content/images/size/w1600/2023/08/Screenshot-2023-08-16-at-8.42.51-PM.png 1600w, https://www.thestackcanary.com/content/images/size/w2400/2023/08/Screenshot-2023-08-16-at-8.42.51-PM.png 2400w" sizes="(min-width: 720px) 720px"></figure><p>With Elixir ML moving at such a rapid pace it is very likely that many articles or resources are out of date, so I will attempt to keep this updated to the best of my ability.  In this article, I will attempt to bridge the gap and offer a glossary of machine learning libraries as well as explain the core technologies that undergird the stack. </p><p>This article is NOT meant to be a tutorial on any specific techniques or libraries. For a great (the best?) resource on Machine Learning in Elixir, check out <a href="https://twitter.com/sean_moriarity?s=20&amp;ref=thestackcanary.com" rel="noreferrer">Sean Moriarity&apos;s</a> book of the same name <a href="https://pragprog.com/titles/smelixir/machine-learning-in-elixir/?ref=thestackcanary.com" rel="noreferrer">published by PragProg</a>. </p><figure class="kg-card kg-image-card"><img src="https://www.thestackcanary.com/content/images/2023/08/Screenshot-2023-08-16-at-8.43.13-PM.png" class="kg-image" alt="Understanding the Elixir Machine Learning Ecosystem" loading="lazy" width="1990" height="242" srcset="https://www.thestackcanary.com/content/images/size/w600/2023/08/Screenshot-2023-08-16-at-8.43.13-PM.png 600w, https://www.thestackcanary.com/content/images/size/w1000/2023/08/Screenshot-2023-08-16-at-8.43.13-PM.png 1000w, https://www.thestackcanary.com/content/images/size/w1600/2023/08/Screenshot-2023-08-16-at-8.43.13-PM.png 1600w, https://www.thestackcanary.com/content/images/2023/08/Screenshot-2023-08-16-at-8.43.13-PM.png 1990w" sizes="(min-width: 720px) 720px"></figure><h1 id="elixir-nx">Elixir-Nx</h1><p><a href="https://github.com/elixir-nx?ref=thestackcanary.com" rel="noreferrer">Elixir-Nx</a> is an organization that houses most of the Elixir core machine learning libraries. It started after Jos&#xE9; Valim (creator of Elixir) came across Sean Moriarity&apos;s first book <a href="https://pragprog.com/titles/smgaelixir/genetic-algorithms-in-elixir/?ref=thestackcanary.com" rel="noreferrer"><em>Genetic Algorithms in Elixir</em></a><em>. </em>Valim explained in a podcast that prior to that book he had not considered using Elixir for machine learning.  Valim admitted that he did not actually read the book, but that the title alone drew enough intrigue from him that he reached out to Moriarity about exploring development of a machine learning ecosystem. After putting together a core team, they decided that the the first step would be implementing a numerical computing library which would serve as the foundational library for the rest of the ecosystem, after which they could build higher level libraries such as Axon and Scholar, which we will discuss later.  </p><div class="kg-card kg-signup-card kg-width-wide " data-lexical-signup-form style="background-color: #F0F0F0; display: none;">
            
            <div class="kg-signup-card-content">
                
                <div class="kg-signup-card-text kg-align-center">
                    <h2 class="kg-signup-card-heading"><span style="white-space: pre-wrap;">Enjoying the article?</span></h2>
                    <p class="kg-signup-card-subheading"><span style="white-space: pre-wrap;">Consider subscribing to be notified when new articles are published!</span></p>
                    
        <form class="kg-signup-card-form" data-members-form="signup">
            <input data-members-label type="hidden" value="CTA- Glossary">
            <div class="kg-signup-card-fields">
                <input class="kg-signup-card-input" id="email" data-members-email type="email" required="true" placeholder="Your email">
                <button class="kg-signup-card-button kg-style-accent" style="color: #FFFFFF;" type="submit">
                    <span class="kg-signup-card-button-default">Subscribe</span>
                    <span class="kg-signup-card-button-loading"><svg xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewbox="0 0 24 24">
        <g stroke-linecap="round" stroke-width="2" fill="currentColor" stroke="none" stroke-linejoin="round" class="nc-icon-wrapper">
            <g class="nc-loop-dots-4-24-icon-o">
                <circle cx="4" cy="12" r="3"/>
                <circle cx="12" cy="12" r="3"/>
                <circle cx="20" cy="12" r="3"/>
            </g>
            <style data-cap="butt">
                .nc-loop-dots-4-24-icon-o{--animation-duration:0.8s}
                .nc-loop-dots-4-24-icon-o *{opacity:.4;transform:scale(.75);animation:nc-loop-dots-4-anim var(--animation-duration) infinite}
                .nc-loop-dots-4-24-icon-o :nth-child(1){transform-origin:4px 12px;animation-delay:-.3s;animation-delay:calc(var(--animation-duration)/-2.666)}
                .nc-loop-dots-4-24-icon-o :nth-child(2){transform-origin:12px 12px;animation-delay:-.15s;animation-delay:calc(var(--animation-duration)/-5.333)}
                .nc-loop-dots-4-24-icon-o :nth-child(3){transform-origin:20px 12px}
                @keyframes nc-loop-dots-4-anim{0%,100%{opacity:.4;transform:scale(.75)}50%{opacity:1;transform:scale(1)}}
            </style>
        </g>
    </svg></span>
                </button>
            </div>
            <div class="kg-signup-card-success">
                Email sent! Check your inbox to complete your signup.
            </div>
            <div class="kg-signup-card-error" data-members-error></div>
        </form>
        
                    <p class="kg-signup-card-disclaimer"><span style="white-space: pre-wrap;">No spam. Unsubscribe anytime.</span></p>
                </div>
            </div>
        </div><h2 id="nx">Nx</h2><p><a href="https://github.com/elixir-nx/nx?ref=thestackcanary.com" rel="noreferrer">Nx</a> is the foundational numerical computing library in Elixir. It can be compared to NumPy in Python. Simply put, it is a tensor creation and manipulation library that offers mainly granular linear algebraic operations that can be performed on the tensors. Nx&apos;s primary data structure is the <code>Tensor</code> struct. <code>Nx.Container</code>&apos;s are any module that implements said protocol to manipulate and operate on <code>Tensor</code>&apos;s, and by default Nx implements the <code>Container</code> protocol for <code>Tuple</code>, <code>Map</code>, <code>Integer</code>, <code>Float</code>, <code>Complex</code> and <code>Tensor</code>, while also providing an <code>Any</code> implementation that you can derive from using the <code>@derive</code> attribute. </p><p>Nx currently ships with three backends: the Elixir binary backend, <a href="https://github.com/elixir-nx/nx/tree/main/exla?ref=thestackcanary.com#readme" rel="noreferrer">EXLA</a>, and <a href="https://github.com/elixir-nx/nx/tree/main/torchx?ref=thestackcanary.com#readme" rel="noreferrer">Torchx</a>.  The binary backend uses Elixir/Erlang binaries for its underlying storage, while EXLA uses Google&apos;s XLA and Torchx uses Facebook&apos;s PyTorch / LibTorch.  EXLA and Torchx are both supported using <a href="https://thestackcanary.com/supercharge-your-elixir-with-nifs/?ref=thestackcanary.com" rel="noreferrer">Native Implemented Functions (NIFs)</a>, enabling GPU support for the tensor operations.  With the recent release of <a href="https://huggingface.co/?ref=thestackcanary.com" rel="noreferrer">Huggingface&apos;s</a> <a href="https://github.com/huggingface/candle?ref=thestackcanary.com" rel="noreferrer">Candle</a> library ML framework in Rust, there very well might be another addition to this list in the future.  Nx will use the binary backend by default, so be sure to include the additional library as well as setting it as your backend if you wish to take advantage of the native libraries. </p><p>When compiling for one of the native backends, there is a concept of a &quot;numerical definition&quot; which are implemented using <code>defn</code> and <code>deftransform</code> (as well as their private counterparts <code>defnp</code> and <code>deftransformp</code>. Any functions written within these definitions will be added to the compiler&apos;s evaluation graph and will impose certain restrictions on the functions you write. You can use functions from Nx on tensors outside of these definitions, but they will not be compiled to the evaluation graph and as such will not get the added performance benefits. </p><p>Nx also provides very nice abstractions such as <code>Nx.Serving</code> and <code>Nx.Batch</code> which can be used for conveniently serving models in a distributed manner as is expected of Elixir applications. </p><h2 id="axon">Axon</h2><p><a href="https://github.com/elixir-nx/axon?ref=thestackcanary.com" rel="noreferrer">Axon</a> is the deep-learning (DL) neural network library written by Sean Moriarity which just adds DL-specific abstractions on top of Nx. The design of Axon is largely inspired by PyTorch, with the <code>Axon.Loop</code> construct stemming from PyTorch Ignite. The three high-level APIs exposed by Axon are its Functional API, Model Creation API, and Training API. Axon also includes APIs for model evaluation, execution and serialization. Axon ships with pre-made layers, loss functions, metrics, etc., but also gives the user the ability to add custom implementations as well. Hooks are included in the training cycle to allow custom behavior during training. </p><h2 id="bumblebee">Bumblebee</h2><p><a href="https://github.com/elixir-nx/bumblebee?ref=thestackcanary.com" rel="noreferrer">Bumblebee</a> is a library of pre-trained transformer models akin to Python&apos;s Huggingface Transformers library. All models in Bumblebee are built on top of Axon, and as such, can be manipulated in the same way you would an Axon model. You can perform inference using the default pre-trained model or you can boost the model by training your own data for improved performance in a specific domain. You can see the list of all models included in Bumblebee on the sidebar of the <a href="https://hexdocs.pm/bumblebee/Bumblebee.html?ref=thestackcanary.com" rel="noreferrer">documentation</a>, but here is a sample just to name a few: Bart, Bert, Whisper, GPT2, ResNet, and StableDiffusion. </p><h2 id="scholar">Scholar</h2><p><a href="https://github.com/elixir-nx/scholar?ref=thestackcanary.com" rel="noreferrer">Scholar</a> is a traditional machine learning library for Elixir, comparable to much of the functionality found in Python&apos;s SKLearn. In the words of its <a href="https://hexdocs.pm/scholar/Scholar.html?ref=thestackcanary.com" rel="noreferrer">documentation</a>, &quot;Scholar implements several algorithms for classification, regression, clustering, dimensionality reduction, metrics, and preprocessing.&quot; Scholar is divided into its Model modules and its Utility modules. It includes models for linear/logistic regression, liner/bezier/cubic interpolation, PCA, Gaussian/Multinomial Naive-Bayes, and more. Some of its utilities includes: distance/similarity/clustering metrics as well as preprocessing functions such as normalization and encoding. </p><h2 id="explorer">Explorer</h2><p><a href="https://github.com/elixir-explorer/explorer?ref=thestackcanary.com" rel="noreferrer">Explorer</a> is a 1-D series and N-D tabular dataframe exploration and manipulation library built on top of the Rust <a href="https://www.pola.rs/?ref=thestackcanary.com" rel="noreferrer">Polars</a> library.  According to its <a href="https://github.com/elixir-explorer/explorer?ref=thestackcanary.com#features-and-design" rel="noreferrer">README</a>, &quot;The API is heavily influenced by <a href="https://vita.had.co.nz/papers/tidy-data.pdf?ref=thestackcanary.com" rel="nofollow">Tidy Data</a> and borrows much of its design from <a href="https://dplyr.tidyverse.org/?ref=thestackcanary.com" rel="nofollow">dplyr</a>.&quot; In Explorer, <code>Series</code> are one dimensional and are similar to an Elixir <code>List</code> but they can only contain items of a single type. A <code>Dataframe</code> is simply a way to work on mutiple <code>Series</code> whose lengths are the same. Oftentimes this will be as a 2-D tabular dataframe similar to a CSV or a spreadsheet. </p><blockquote>
<p>Explorer high-level features are:</p>
<ul>
<li>Simply typed series: :binary, :boolean, :category, :date, :datetime, :float, :integer, :string, and :time.</li>
<li>A powerful but constrained and opinionated API, so you spend less time looking for the right function and more time doing data manipulation.</li>
<li>Pluggable backends, providing a uniform API whether you&apos;re working in-memory or (forthcoming) on remote databases or even Spark dataframes.</li>
</ul>
</blockquote>
<h2 id="scidata">Scidata</h2><p><a href="https://github.com/elixir-nx/scidata?ref=thestackcanary.com" rel="noreferrer">Scidata</a> houses sample datasets that enables easy training and testing of models on industry-standard datasets such as MNIST, CIFAR, IMDB Reviews, Iris, Wine, and more. In Python, many machine learning libraries have their own datasets API such as SKLearn&apos;s <a href="https://scikit-learn.org/stable/datasets/toy_dataset.html?ref=thestackcanary.com" rel="noreferrer">Toy Datasets</a>, <a href="https://keras.io/api/datasets/?ref=thestackcanary.com" rel="noreferrer">Keras Datasets</a>, and <a href="https://pytorch.org/vision/main/datasets.html?ref=thestackcanary.com" rel="noreferrer">PyTorch Datasets</a>. Scidata has a very simple API that can be loaded into Nx Tensors after download. Scidata separates each dataset into its own module and has separate <code>download_test</code> functions to download a test set as opposed to downloading the whole set. Scidata also provides utilities to allow you to use the Scidata API to download custom datasets. </p><h2 id="exgboost">EXGBoost</h2><p><a href="https://github.com/acalejos/exgboost?ref=thestackcanary.com" rel="noreferrer">EXGBoost</a> is the library I wrote to provide Elixir bindings to the XGBoost API.  EXGBoost implements NIF bindings to the C++ API that XGBoost supplies. XGBoost is a C++ gradient-boosted decision tree library. The official XGBoost project provides APIs for the following languages / technologies: Python, JVM, R, Ruby, Swift, Julia, C, C++, and a CLI. Gradient Boosted Decision Trees are a form of ensemble learning mostly used for classification or regression tasks on tabular data. Moriarity wrote an introductory article on the library <a href="https://dockyard.com/blog/2023/07/18/introducing-exgboost-gradient-boosting-in-elixir?ref=thestackcanary.com" rel="noreferrer">here</a>, and I wrote a bit about the process of writing the library <a href="https://www.thestackcanary.com/supercharge-your-elixir-with-nifs/" rel="noreferrer">here</a>.</p><p>EXGBoost consumes <code>Nx.Tensor</code>&apos;s for training, but the model that is outputted from the training uses the <code>Booster</code> struct to represent the model and cannot be used with constructs such as <code>Nx.Serving</code> unless you compile the model into tensor operations using the accompanying <a href="https://github.com/acalejos/mockingjay?ref=thestackcanary.com" rel="noreferrer">Mockingjay</a> library I wrote.  Once the models are compiled to tensor operations they can only be used for inference operations. </p><h2 id="ortex">Ortex</h2><p>The Ortex README summarizes it quite succinctly:</p><blockquote>
<p><a href="https://github.com/elixir-nx/ortex?ref=thestackcanary.com">Ortex</a> is a wrapper around <a href="https://onnxruntime.ai/?ref=thestackcanary.com">ONNX Runtime</a> (implemented as bindings to <a href="https://github.com/pykeio/ort?ref=thestackcanary.com"><code>ort</code></a>). Ortex leverages <a href="https://hexdocs.pm/nx/Nx.Serving.html?ref=thestackcanary.com">Nx.Serving</a> to easily deploy ONNX models that run concurrently and distributed in a cluster. Ortex also provides a storage-only tensor implementation for ease of use.</p>
</blockquote>
<blockquote>
<p>ONNX models are a standard machine learning model format that can be exported from most ML libraries like PyTorch and TensorFlow. Ortex allows for easy loading and fast inference of ONNX models using different backends available to ONNX Runtime such as CUDA, TensorRT, Core ML, and ARM Compute Library.</p>
</blockquote>
<h2 id="livebook">Livebook</h2><p><a href="https://github.com/livebook-dev/livebook.dev?ref=thestackcanary.com" rel="noreferrer">Livebook</a> is Elixir/Erlang&apos;s interactive notebook solution. Livebook is comparable to Jupyter Notebooks, although the Livebook project has certainly not confined itself to the same design decisions as Jupyter. Livebook embraces the functional nature of Elixir by allowing Forks within a Livebook, where a new section is derived from a previous section and starts with the same state as the forked section. </p><p>Livebook also has the concept of Smart Cells which allow you to write templates for interactive cells that can be reused.  Smart Cells are powered by a companion library to Livebook called Kino. As explained in the Livebook tutorial:</p><blockquote>
<p>In a nutshell, Kino is a library that you install as part of your notebooks to make your notebooks interactive. Kino comes from the Greek prefix &quot;kino-&quot; and it stands for &quot;motion&quot;. As you learn the library, it will become clear that this is precisely what it brings to our notebooks.</p>
</blockquote>
<blockquote>
<p>Kino can render Markdown, animate frames, display tables, manage inputs, and more. It also provides the building blocks for extending Livebook with charts, smart cells, and much more.</p>
</blockquote>
<p>Livebook also allows you to configure your runtime and even hook into a running instance of IEx. Lastly, one of my favorite design decisions of Livebook is that they save as normal markdown files, enabling very easy sharing. You can write entire blog posts in markdown which can be run as Livebooks (refer to the EXGBoost article I linked above for an example)!</p><h2 id="instructorex">Instructor_ex</h2><p><a href="https://github.com/thmsmlr/instructor_ex?ref=thestackcanary.com" rel="noreferrer">Instructor_ex</a> is a self-described &quot;spiritual port&quot; of the Python <a href="https://github.com/jxnl/instructor?ref=thestackcanary.com" rel="noreferrer">instructor library</a>  It implements the simple yet extremely powerful idea of coercing Large Language Models (LLMs) such as OpenAIs GPT-4 to output answers according to a defined <a href="https://hexdocs.pm/ecto/Ecto.Schema.html?ref=thestackcanary.com" rel="noreferrer">Ecto Schema</a>. You provide the structure of the desired output, including types and a description, and it will help coerce the LLM&apos;s response to conform to that schema, providing validation and auto-retrying when an answer deviates from the schema.</p><p>The documentation showcases many examples of how you can use this, such as to perform <a href="https://hexdocs.pm/instructor/text-classification.html?ref=thestackcanary.com" rel="noreferrer">Text Classification</a>, <a href="https://hexdocs.pm/instructor/qa-citations.html?ref=thestackcanary.com" rel="noreferrer">Question &amp; Answering (with citations)</a>, and even <a href="https://hexdocs.pm/instructor/gpt4-vision.html?ref=thestackcanary.com" rel="noreferrer">Extracting Text from Images using GPT-4 Vision</a>. As you can see from these examples, <code>instructor_ex</code> makes using LLMs for much more approachable for programmatic tasks.</p><p><a href="https://twitter.com/jxnlco?ref=thestackcanary.com" rel="noreferrer">Jason Liu</a>, the author of the original <a href="https://github.com/jxnl/instructor/?ref=thestackcanary.com" rel="noreferrer">Python Instructor library</a>, has a bevy of writings about the underlying motivation and concepts behind instructor which you can read about <a href="https://python.useinstructor.com/concepts/models/?ref=thestackcanary.com" rel="noreferrer">here.</a> </p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">You can see an example of instructor_ex in action at this Livebook App hosted on HuggingFace Spaces<br><br><a href="https://huggingface.co/spaces/acalejos/livebook-apps?ref=thestackcanary.com">https://huggingface.co/spaces/acalejos/livebook-apps</a></div></div><h2 id="elixir-langchain">Elixir Langchain</h2><p><a href="https://github.com/brainlid/langchain?ref=thestackcanary.com" rel="noreferrer">Elixir Langchain</a> is a port of the <strong><em>very popular </em></strong><a href="https://github.com/langchain-ai?ref=thestackcanary.com" rel="noreferrer">LangChain</a> libraries (Python / TS), which are libraries that aim to provide a modular abstraction to many common Large Language Model (LLM) tasks and features. </p><p>The Elixir-LangChain project describes itself as follows:</p><blockquote>
<p><strong>LangChain</strong> is a framework for developing applications powered by language models. It enables applications that are:</p>
<ul>
<li><strong>Data-aware:</strong> connect a language model to other sources of data</li>
<li><strong>Agentic:</strong> allow a language model to interact with its environment</li>
</ul>
<p>The main value props of LangChain are:</p>
<ol>
<li><strong>Components:</strong> abstractions for working with language models, along with a collection of implementations for each abstraction. Components are modular and easy-to-use, whether you are using the rest of the LangChain framework or not</li>
<li><strong>Off-the-shelf chains:</strong> a structured assembly of components for accomplishing specific higher-level tasks</li>
</ol>
<p>Off-the-shelf chains make it easy to get started. For more complex applications and nuanced use-cases, components make it easy to customize existing chains or build new ones.</p>
</blockquote><p>LangChain offers off-the-shelf chains for typical tasks with LLMs, but also allows building custom chains with the library primitives, as well as allows for having LLMs invoke custom Elixir functions using its function calling feature.</p><p>This makes it much easier to programmatically interact with LLMs by providing a data structure to represent the conversation from the client-side, allowing you to compose interactions with the LLM.</p><p><a href="https://twitter.com/brainlid?ref=thestackcanary.com" rel="noreferrer">Mark Ericksen</a>, the author of Elixir LangChain, posted a <a href="https://fly.io/phoenix-files/created-my-personal-ai-fitness-trainer-in-2-days/?ref=thestackcanary.com" rel="noreferrer">writeup</a> for an example project using the library, so I suggest you read that if you&apos;re interested. </p><hr><h1 id="summary">Summary</h1><table>
<thead>
<tr>
<th>Python Library</th>
<th>Elixir Library</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>NumPy</td>
<td><a href="https://github.com/elixir-nx/nx/tree/main/nx?ref=thestackcanary.com#readme">Nx</a></td>
<td>Numerical definitions, tensors and tensor operations</td>
</tr>
<tr>
<td>TensorFlow / PyTorch</td>
<td><a href="https://github.com/elixir-nx/axon?ref=thestackcanary.com">Axon</a></td>
<td>Deep Learning / Neural Networks</td>
</tr>
<tr>
<td>Transformers</td>
<td><a href="https://github.com/elixir-nx/bumblebee?ref=thestackcanary.com">Bumblebee</a></td>
<td>Pretrained transformer models</td>
</tr>
<tr>
<td>SKLearn</td>
<td><a href="https://github.com/elixir-nx/scholar?ref=thestackcanary.com">Scholar</a></td>
<td>Traditional Machine Learning</td>
</tr>
<tr>
<td>Pandas</td>
<td><a href="https://github.com/elixir-explorer/explorer?ref=thestackcanary.com">Explorer</a></td>
<td>Tabular dataframe manipulation</td>
</tr>
<tr>
<td>SKLearn Datasets</td>
<td><a href="https://github.com/elixir-nx/scidata?ref=thestackcanary.com">Scidata</a></td>
<td>Sample datasets</td>
</tr>
<tr>
<td>XGBoost</td>
<td><a href="https://github.com/acalejos/exgboost?ref=thestackcanary.com">EXGBoost</a></td>
<td>Gradient-Boosted Decision Trees</td>
</tr>
<tr>
<td>Jupyter Notebooks</td>
<td><a href="https://github.com/livebook-dev/livebook.dev?ref=thestackcanary.com">Livebook</a></td>
<td>Interactive Notebooks</td>
</tr>
<tr>
<td>ONNX Runtime</td>
<td><a href="https://github.com/elixir-nx/ortex?ref=thestackcanary.com">Ortex</a></td>
<td>ONNX Runtime</td>
</tr>
<tr>
<td>Instructor</td>
<td><a href="https://github.com/thmsmlr/instructor_ex?ref=thestackcanary.com">instructor_ex</a></td>
<td>Structured, Ecto outputs with OpenAI (and OSS LLMs)</td>
</tr>
<tr>
<td>LangChain</td>
<td><a href="https://github.com/brainlid/langchain?ref=thestackcanary.com">Elixir Langchain</a></td>
<td>Framework for developing applications powered by language models</td>
</tr>
</tbody>
</table>
<hr><h1 id="conclusion">Conclusion</h1><p>This was by no means an exhaustive list of all libraries in Elixir that are useful during machine learning tasks, but I did try to cover all of the most prominent libraries that are currently available. The Elixir ML ecosystem is alive and well, albeit still quite young. It has made great strides the past few years but still has much room to grow, so you should be encouraged to contribute yourself! I did not have much experience in Elixir before beginning to contribute to the ML ecosystem, and I would implore anyone who is looking for ways to get started with open-source contributions to look no further than Elixir. If you&apos;re new to Elixir and have made it this far, then you will probably pick it up quickly, but nonetheless you should check out my previous article about <a href="https://www.thestackcanary.com/5-tips-for-elixir-beginner/" rel="noreferrer">5 Tips for Elixir Beginners</a>.  That&apos;s all I have for now. Thanks for reading, and consider subscribing to this website if you like this kind of content. </p>]]></content:encoded></item><item><title><![CDATA[From Python to Elixir Machine Learning]]></title><description><![CDATA[Moving on from Python Machine Learning might seem impossible. Let me break down why and how you can do it. ]]></description><link>https://www.thestackcanary.com/from-python-pytorch-to-elixir-nx/</link><guid isPermaLink="false">6527767e02e0540d32653f21</guid><category><![CDATA[Elixir]]></category><category><![CDATA[Python]]></category><category><![CDATA[Machine Learning]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Tue, 25 Jul 2023 02:54:25 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2023/07/Dark-Blue-Simple-Modern-Virtual-Technology-Banner-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.thestackcanary.com/content/images/2023/07/Dark-Blue-Simple-Modern-Virtual-Technology-Banner-1.png" alt="From Python to Elixir Machine Learning"><p>As Elixir&apos;s Machine Learning (ML) ecosystem grows, many Elixir enthusiasts who wish to adopt the new machine learning libraries in their projects are stuck at a crossroads of wanting to move away from their existing ML stack (typically Python) while not having a clear path of how to do so. I would like to take some time to talk to WHY I believe now is a good time to start porting over Machine Learning code into Elixir, and HOW I went about doing just this for two libraries I wrote: <a href="https://github.com/acalejos/exgboost?ref=thestackcanary.com" rel="noreferrer">EXGBoost</a> (from Python XGBoost) and <a href="https://github.com/acalejos/mockingjay?ref=thestackcanary.com" rel="noreferrer">Mockingjay</a> (from Python Hummingbird).</p><h2 id="why-is-python-not-sufficient">Why is Python not Sufficient?</h2><p>There&apos;s a common saying in programming languages that no language is perfect, but that different languages are suited for different jobs. Languages such as C, Rust, and now even Zig are known for their targeting systems development, while languages such as C++, C#, and Java are more commonly used for application development, and obviously there are the web languages such as JavaScript/TypeScript, PHP, Ruby (on Rails), and more. There are gradations to these rules of course, but more often than not there are good reasons that languages tend to exist within the confines of particular use cases. </p><p> Languages such as Elixir and Go tend to be used in large distributed systems because they place an emphasis on having great support for common concurrency patterns, which can come at the cost of supporting other domains. Go, for example, has barely (if any?) support for machine learning libraries, but it&apos;s also not trying to cater to that as a target domain. For a long time, the same could have been said about Elixir, but over the past two or so years, there has been a massive concerted push from the Elixir community to not only have support for machine learning, but to push the envelope with the maintaining state of the art libraries that are beginning to compete with the other dominant machine learning languages - namely Python. </p><p>Python has long been the gold standard in the realm of machine learning. The breadth of libraries and the low entry barrier makes Python a great language to work with, but it does create a bit of a bottleneck. Any application that wishes to integrate machine learning has historically had only a couple of options: have a Python component or reach into the underlying libraries that power much of the Python libraries directly. Despite all the good parts of Python I mentioned before, speed and support for concurrency are not on that list. Elixir-Nx is striving to give another option - an option that can take advantage of the native distributed support that Elixir and the BEAM VM have to offer. Nx&apos;s <code>Nx.Serving</code> construct is a drop-in solution for serving distributed machine-learning models. </p><h2 id="how-to-proceed">How to Proceed</h2><p>Sean Moriarity, the co-creator of <a href="https://github.com/elixir-nx/nx?ref=thestackcanary.com" rel="noreferrer">Nx</a>, creator of <a href="https://github.com/elixir-nx/axon?ref=thestackcanary.com" rel="noreferrer">Axon</a>, and author of <a href="https://pragprog.com/titles/smelixir/machine-learning-in-elixir/?ref=thestackcanary.com" rel="noreferrer">Machine Learning in Elixir</a>, has talked many times about how the initial creation of Nx and Axon involved hours upon hours of reading source code from reference implementations of libraries in Python and C++, namely the TensorFlow source code. While I was writing <a href="https://github.com/acalejos/exgboost?ref=thestackcanary.com" rel="noreferrer">EXGBoost</a> and <a href="https://github.com/acalejos/mockingjay?ref=thestackcanary.com" rel="noreferrer">Mockingjay</a>, much of my time, especially towards the beginning, was spent referencing the Python and C++ implementations of the original libraries.  This builds a great fundamental understanding of the libraries as well as taught me how to identify patterns in Python and C++ and identify the Elixir pattern that could express the same ideas. This skill is invaluable, and the better I got at it the faster I could write. Below is a summary and key takeaways from my process of porting Python / PyTorch to Elixir / Nx. </p><h2 id="workflow-overview">Workflow Overview</h2><p>Before I get to the examples from the code bases, I would like to briefly explain the high-level cyclical workflow I established while working on this effort, and what I would recommend to anyone pursuing a similar endeavor. </p><h3 id="understand-the-macro-system">Understand the Macro System</h3><p> Much like how there&apos;s a common strategy to reading comprehension which involves reading through the entire document once to get a high-level understanding and then doing subsequent shorter reads to gain more in-depth understanding with the added context of the entire piece, you can consider doing the same when reading code. My first step was to follow the logical flow from the call of <code>hummingbird.ml.convert</code> to the final result. You can use tools such as function tracers and callgraph generators to accelerate this part of the process, or manually trace depending on the extent of the codebase. I felt in my case that it was manageable to trace myself. </p><h3 id="read-the-documentation">Read the Documentation</h3><p>Once you have a general understanding of the flow and process of the original system, you can start referring to the documentation for some additional context. In my case, this lead me to the academic paper <a href="https://scnakandala.github.io/papers/TR_2020_Hummingbird.pdf?ref=thestackcanary.com" rel="noreferrer"><em>Taming Model Serving Complexity, Performance and Cost: A Compilation to Tensor Computations Approach</em></a><em>, </em>which was the underlying ground work and basis for their implementation. I could write a whole other blog post about the process of transcribing algorithms and code from academic papers and pseudocode, but for now just know that these are some of the most important pieces you can refer to while re-implementing or porting over a piece of source code. </p><h3 id="read-the-source-code-in-detail">Read the Source Code in Detail</h3><p>This is the point in which you want to disambiguate the higher-level ideas from the first step and really gain a fine, high-resolution understanding of what is happening. There might even be some points in which you need to deconflict the source code with its documentation and/or paper reference. In those cases, the source code almost always wins, and if not, then you likely have a bug report you can file. If you see things you don&apos;t fully understand, you don&apos;t necessarily need to address it here, but you should make note of it and keep it in mind while working in case new details help resolve it. </p><h3 id="implement-the-new-code">Implement the New Code</h3><p>At this point, you should feel comfortable enough to start implementing the code. I found this to be a very iterative process, meaning I would think I had a grasp on something, then would start working on implementing it, then would realize I did not understand it as well as I had thought and would work my way back through the previous steps. </p><h2 id="example">Example</h2><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">In case you would like to follow along going forward, the Python code I will be referencing is the <a href="https://github.com/microsoft/hummingbird/blob/main/hummingbird/ml/operator_converters/_tree_implementations.py?ref=thestackcanary.com" rel="noreferrer">Microsoft Hummingbird source code</a> (specifically their implementation of Decision Tree Compilation), and the Elixir code is from the <a href="https://github.com/acalejos/mockingjay/tree/main/lib/mockingjay/strategies?ref=thestackcanary.com" rel="noreferrer">Mockingjay source code</a>.</div></div><h2 id="class-vs-behaviour">Class vs. Behaviour</h2><p>As a result of the reading and comprehension I did of the Hummingbird code base, I realized fairly early on that my library was going to have some key differences. One of the main reasons for these differences was the fact that the Hummingbird code base was built as a retroactive library that needed to cater to existing APIs that existed throughout the Python ecosystem. They chose to only add support for converting decision trees according to the SKLearn API. I, conversely, chose to write Mockingjay in such a way that it would be incumbent upon the authors of decision tree libraries to implement a protocol to interface with Mockingjay&apos;s <code>convert</code> function. This difference meant that I could establish a <code>Mockingjay.Tree</code> data structure that I would use throughout my library, rather than having to reconstruct tree features from various other APIs as is done in Hummingbird. </p><p>Next, Hummingbird approaches its pipeline in a very-object oriented manner, as makes sense when using Python. Here&apos; we are focusing on the implementation of the three decision tree conversion strategies: GEMM, Tree Traversal, and PErfect Tree Traversal.  It implements the following base class for tree conversions as well as PyTorch networks. </p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Since they&apos;re inheriting from torch.nn.model they must also implement the forward method.</div></div><pre><code class="language-python">class AbstracTreeImpl(PhysicalOperator):
    &quot;&quot;&quot;
    Abstract class definig the basic structure for tree-base models.
    &quot;&quot;&quot;

    def __init__(self, logical_operator, **kwargs):
        super().__init__(logical_operator, **kwargs)

    @abstractmethod
    def aggregation(self, x):
        &quot;&quot;&quot;
        Method defining the aggregation operation to execute after the model is evaluated.

        Args:
            x: An input tensor

        Returns:
            The tensor result of the aggregation
        &quot;&quot;&quot;
        pass

class AbstractPyTorchTreeImpl(AbstracTreeImpl, torch.nn.Module):
    &quot;&quot;&quot;
    Abstract class definig the basic structure for tree-base models implemented in PyTorch.
    &quot;&quot;&quot;

    def __init__(
        self, logical_operator, tree_parameters, n_features, classes, n_classes, decision_cond=&quot;&lt;=&quot;, extra_config={}, **kwargs
    ):
        &quot;&quot;&quot;
        Args:
            tree_parameters: The parameters defining the tree structure
            n_features: The number of features input to the model
            classes: The classes used for classification. None if implementing a regression model
            n_classes: The total number of used classes
            decision_cond: The condition of the decision nodes in the x &lt;cond&gt; threshold order. Default &apos;&lt;=&apos;. Values can be &lt;=, &lt;, &gt;=, &gt;
        &quot;&quot;&quot;
        super(AbstractPyTorchTreeImpl, self).__init__(logical_operator, **kwargs)</code></pre><p>They then proceed to inherit from these base classes and have different classes for each of the three decision tree strategies as well as their gradient-boosted counterparts, leaving them with three classes for each strategies (1 base class per strategy, 1 for ensemble implementations, and 1 for normal implementations) and nine total classes. </p><p>I chose to approach this using a <code>behaviour</code></p><pre><code class="language-elixir">defmodule Mockingjay.Strategy do
  @moduledoc false
  @type t :: Nx.Container.t()

  @callback init(data :: any(), opts :: Keyword.t()) :: term()
  @callback forward(x :: Nx.Container.t(), term()) :: Nx.Tensor.t()
  ...
end</code></pre><p><code>init</code> will perform setup functionality depending on the strategy and return the parameters that will need to be passed to <code>forward</code> later on. This allows for a very simple top-level api. The whole top-level <code>mockingjay.ex</code> file can fit here:</p><pre><code class="language-elixir">  def convert(data, opts \\ []) do
    {strategy, opts} = Keyword.pop(opts, :strategy, :auto)

    strategy =
      case strategy do
        :gemm -&gt;
          Mockingjay.Strategies.GEMM

        :tree_traversal -&gt;
          Mockingjay.Strategies.TreeTraversal

        :perfect_tree_traversal -&gt;
          Mockingjay.Strategies.PerfectTreeTraversal

        :auto -&gt;
          Mockingjay.Strategy.get_strategy(data, opts)

        _ -&gt;
          raise ArgumentError,
                &quot;strategy must be one of :gemm, :tree_traversal, :perfect_tree_traversal, or :auto&quot;
      end

    {post_transform, opts} = Keyword.pop(opts, :post_transform, nil)
    state = strategy.init(data, opts)

    fn data -&gt;
      result = strategy.forward(data, state)
      {_, n_trees, n_classes} = Nx.shape(result)

      result
      |&gt; aggregate(n_trees, n_classes)
      |&gt; post_transform(post_transform, n_classes)
    end
  end  </code></pre><p>As you can see, the use of a behaviour here allows a strategy-agnostic approach to generating a prediction pipeline. In the object-oriented implementation, each class implements <code>init</code>, <code>forward</code>, <code>aggregate</code>, and <code>post_transform</code>. We get the same result from a functional pipeline approach, where each step generates the needed information as input parameters for the next step. So, instead of storing intermediate results as object properties or values in an object&apos;s <strong><code>__dict__</code></strong>, we just pass them along in the pipeline. I would argue this creates a much simpler and easier to follow implementation (but I am also quite biased).</p><h2 id="pytorch-to-nx">PyTorch to Nx </h2><p>For these examples, we will be looking at porting the implementations of the <code>forward</code> function for the three conversion strategies from Python to Nx.</p><h4 id="gemm">GEMM</h4><p>Next, let&apos;s look at the <code>forward</code> function implementation for GEMM, one of the three conversion strategies. In Hummingbird, they implemented the <code>forward</code> step in the base class for each strategy. So given three GEMM classes with the signatures of <code>GEMMTreeImpl(AbstractPyTorchTreeImpl)</code>, <code>GEMMDecisionTreeImpl(GEMMTreeImpl)</code>, and <code>GEMMGBDTImpl(GEMMTreeImpl)</code>, the <code>forward</code> function is defined in the <code>GEMMTreeImpl</code> class, since both ensemble and non-ensemble decision tree models share the same forward step. </p><pre><code class="language-python">def forward(self, x):
      x = x.t()
      x = self.decision_cond(torch.mm(self.weight_1, x), self.bias_1)
      x = x.view(self.n_trees, self.hidden_one_size, -1)
      x = x.float()

      x = torch.matmul(self.weight_2, x)

      x = x.view(self.n_trees * self.hidden_two_size, -1) == self.bias_2
      x = x.view(self.n_trees, self.hidden_two_size, -1)
      if self.tree_op_precision_dtype == &quot;float32&quot;:
          x = x.float()
      else:
          x = x.double()

      x = torch.matmul(self.weight_3, x)
      x = x.view(self.n_trees, self.hidden_three_size, -1)</code></pre><p>Now, here is the Nx implementation:</p><pre><code class="language-elixir">@impl true
  deftransform forward(x, {arg, opts}) do
    opts =
      Keyword.validate!(opts, [
        :condition,
        :n_trees,
        :n_classes,
        :max_decision_nodes,
        :max_leaf_nodes,
        :n_weak_learner_classes,
        :custom_forward
      ])

    _forward(x, arg, opts)
  end

  defnp _forward(x, arg, opts \\ []) do
    %{mat_A: mat_A, mat_B: mat_B, mat_C: mat_C, mat_D: mat_D, mat_E: mat_E} = arg

    condition = opts[:condition]
    n_trees = opts[:n_trees]
    n_classes = opts[:n_classes]
    max_decision_nodes = opts[:max_decision_nodes]
    max_leaf_nodes = opts[:max_leaf_nodes]
    n_weak_learner_classes = opts[:n_weak_learner_classes]

    mat_A
    |&gt; Nx.dot([1], x, [1])
    |&gt; condition.(mat_B)
    |&gt; Nx.reshape({n_trees, max_decision_nodes, :auto})
    |&gt; then(&amp;Nx.dot(mat_C, [2], [0], &amp;1, [1], [0]))
    |&gt; Nx.reshape({n_trees * max_leaf_nodes, :auto})
    |&gt; Nx.equal(mat_D)
    |&gt; Nx.reshape({n_trees, max_leaf_nodes, :auto})
    |&gt; then(&amp;Nx.dot(mat_E, [2], [0], &amp;1, [1], [0]))
    |&gt; Nx.reshape({n_trees, n_weak_learner_classes, :auto})
    |&gt; Nx.transpose()
    |&gt; Nx.reshape({:auto, n_trees, n_classes})
  end
</code></pre><p>Do not be distracted by the length of this code snippet, as much of the lines are taken up by validating arguments. Let&apos;s look at a more stripped-down version without that:</p><pre><code class="language-elixir">@impl true
  deftransform forward(x, {arg, opts}) do
    _forward(x, arg, opts)
  end

  defnp _forward(x, arg, opts \\ []) do
    mat_A
    |&gt; Nx.dot([1], x, [1])
    |&gt; condition.(mat_B)
    |&gt; Nx.reshape({n_trees, max_decision_nodes, :auto})
    |&gt; then(&amp;Nx.dot(mat_C, [2], [0], &amp;1, [1], [0]))
    |&gt; Nx.reshape({n_trees * max_leaf_nodes, :auto})
    |&gt; Nx.equal(mat_D)
    |&gt; Nx.reshape({n_trees, max_leaf_nodes, :auto})
    |&gt; then(&amp;Nx.dot(mat_E, [2], [0], &amp;1, [1], [0]))
    |&gt; Nx.reshape({n_trees, n_weak_learner_classes, :auto})
    |&gt; Nx.transpose()
    |&gt; Nx.reshape({:auto, n_trees, n_classes})
  end
</code></pre><p>Let&apos;s take a look at some obvious difference:</p>
<ul>
<li>The <code>Nx</code> code does not have to transpose in the first step since <code>Nx.dot/4</code> allows you to specify the contracting axes.</li>
<li>You can use <code>Nx.dot/6</code> to get the same behavior as <code>torch.matmul</code>
<ul>
<li><code>torch.matmul</code> does a lot of wizardry with broadcasting to make this instance work</li>
</ul>
</li>
<li>We use functions such as <code>Nx.equal</code> to fit into the pipeline rather than using the <code>==</code> oeprator (which would work outside of a pipeline)</li>
<li><code>torch.view</code> is equivalent to <code>Nx.reshape</code></li>
<li><code>Nx</code> uses the <code>:auto</code> atom to where <code>torch</code> uses <code>-1</code> to reference infering the sie of an axis</li>
</ul>
<p>Outside of these differences, the code translates fairly easily. Let&apos;s take a look at a bit of a more complex instance.</p><h4 id="tree-traversal">Tree Traversal</h4><p>Here is the Python implementation:</p><pre><code class="language-python">def _expand_indexes(self, batch_size):
        indexes = self.nodes_offset
        indexes = indexes.expand(batch_size, self.num_trees)
        return indexes.reshape(-1)

def forward(self, x):
        indexes = self.nodes_offset
        indexes = indexes.expand(batch_size, self.num_trees).reshape(-1)

        for _ in range(self.max_tree_depth):
            tree_nodes = indexes
            feature_nodes = torch.index_select(self.features, 0, tree_nodes).view(-1, self.num_trees)
            feature_values = torch.gather(x, 1, feature_nodes)

            thresholds = torch.index_select(self.thresholds, 0, indexes).view(-1, self.num_trees)
            lefts = torch.index_select(self.lefts, 0, indexes).view(-1, self.num_trees)
            rights = torch.index_select(self.rights, 0, indexes).view(-1, self.num_trees)

            indexes = torch.where(self.decision_cond(feature_values, thresholds), lefts, rights).long()
            indexes = indexes + self.nodes_offset
            indexes = indexes.view(-1)

        output = torch.index_select(self.values, 0, indexes).view(-1, self.num_trees, self.n_classes)</code></pre><p>And here is the Nx implementation:</p><pre><code class="language-elixir">defn _forward(x, features, lefts, rights, thresholds, nodes_offset, values, opts \\ []) do
    max_tree_depth = opts[:max_tree_depth]
    num_trees = opts[:num_trees]
    n_classes = opts[:n_classes]
    condition = opts[:condition]
    unroll = opts[:unroll]

    batch_size = Nx.axis_size(x, 0)

    indices =
      nodes_offset
      |&gt; Nx.broadcast({batch_size, num_trees})
      |&gt; Nx.reshape({:auto})

    {indices, _} =
      while {tree_nodes = indices, {features, lefts, rights, thresholds, nodes_offset, x}},
            _ &lt;- 1..max_tree_depth,
            unroll: unroll do
        feature_nodes = Nx.take(features, tree_nodes) |&gt; Nx.reshape({:auto, num_trees})
        feature_values = Nx.take_along_axis(x, feature_nodes, axis: 1)
        local_thresholds = Nx.take(thresholds, tree_nodes) |&gt; Nx.reshape({:auto, num_trees})
        local_lefts = Nx.take(lefts, tree_nodes) |&gt; Nx.reshape({:auto, num_trees})
        local_rights = Nx.take(rights, tree_nodes) |&gt; Nx.reshape({:auto, num_trees})

        result =
          Nx.select(
            condition.(feature_values, local_thresholds),
            local_lefts,
            local_rights
          )
          |&gt; Nx.add(nodes_offset)
          |&gt; Nx.reshape({:auto})

        {result, {features, lefts, rights, thresholds, nodes_offset, x}}
      end

    values
    |&gt; Nx.take(indices)
    |&gt; Nx.reshape({:auto, num_trees, n_classes})
  end</code></pre><p>Here there are some much more striking differences, namely the use of <code>Nx</code>&apos;s <code>while</code> expression compared to a <code>for</code> loop in Python. We use <code>while</code> in this case since it can achieve the same purpose as the Python <code>for</code> loop and it is supported by <code>Nx</code> within a <code>defn</code> expression. Otherwise, we might have to perform some of the calculations within a <code>deftransform</code>, as we will see in the next example.  Another obvious difference is that in the Nx implementation, we have to pass the required variables around throughout these operation, whereas Python can use stored class attributes. </p><p>Still, the conversion is quite straightforward. I hope you are beginning to see that this is not an impossible effort, and can be accomplished given you have a firm understanding of the source material.</p><h4 id="perfect-tree-traversal">Perfect Tree Traversal</h4><p>Lastly, let&apos;s look at the last conversion strategy. Yet again, this conversion is even slightly more complex, but hopefully seeing this example will help you in your case:</p><pre><code class="language-python">def forward(self, x):
        prev_indices = (self.decision_cond(torch.index_select(x, 1, self.root_nodes), self.root_biases)).long()
        prev_indices = prev_indices + self.tree_indices
        prev_indices = prev_indices.view(-1)

        factor = 2
        for nodes, biases in zip(self.nodes, self.biases):
            gather_indices = torch.index_select(nodes, 0, prev_indices).view(-1, self.num_trees)
            features = torch.gather(x, 1, gather_indices).view(-1)
            prev_indices = (
                factor * prev_indices + self.decision_cond(features, torch.index_select(biases, 0, prev_indices)).long()
            )

        output = torch.index_select(self.leaf_nodes, 0, prev_indices).view(-1, self.num_trees, self.n_classes)
</code></pre><p>And the Elixir implementation:</p><pre><code class="language-elixir">defnp _forward(
          x,
          root_features,
          root_thresholds,
          features,
          thresholds,
          values,
          indices,
          opts \\ []
        ) do
    prev_indices =
      x
      |&gt; Nx.take(root_features, axis: 1)
      |&gt; opts[:condition].(root_thresholds)
      |&gt; Nx.add(indices)
      |&gt; Nx.reshape({:auto})
      |&gt; forward_reduce_features(x, features, thresholds, opts)

    Nx.take(values, prev_indices)
    |&gt; Nx.reshape({:auto, opts[:num_trees], opts[:n_classes]})
  end

  deftransformp forward_reduce_features(prev_indices, x, features, thresholds, opts \\ []) do
    Enum.zip_reduce(
      Tuple.to_list(features),
      Tuple.to_list(thresholds),
      prev_indices,
      fn nodes, biases, acc -&gt;
        gather_indices = nodes |&gt; Nx.take(acc) |&gt; Nx.reshape({:auto, opts[:num_trees]})
        features = Nx.take_along_axis(x, gather_indices, axis: 1) |&gt; Nx.reshape({:auto})

        acc
        |&gt; Nx.multiply(@factor)
        |&gt; Nx.add(opts[:condition].(features, Nx.take(biases, acc)))
      end
    )
  end</code></pre><p>You can see that in this case, we have a function defined in a <code>deftransform</code> within our <code>forward</code> pipeline. Why is this so? Well, when writing definitions within <code>defn</code> you forfeit the use of the default Elixir kernel for the <code>Nx.Kernel</code> module. If you want full access to all of the normal Elixir modules, you need to use a <code>deftransform</code>. We needed to use <code>Enum.zip_reduce</code> in this instance (rather than <code>Nx</code>&apos;s <code>while</code> like before) since the <code>features</code> and <code>thresholds</code> lists are not of uniform shape. Their shape represents the length of a given depth of a binary tree, so they will be a nested list of lengths <code>[1,2,4,8...]</code>. This is an optimization as opposed to normal <code>TreeTraversal</code>, but required a bit of a different approach as opposed to the Python implementation which took advantage of <code>torch.nn.ParameterList</code> to build out the same lists. You might also notice the use of <code>Tuple.to_list</code> on lines 25 and 26. This was required since we needed <code>features</code> and <code>thresholds</code> to be stored in <code>Nx.container</code>&apos;s when passed into the <code>deftransform</code>, and <code>Tuple</code> implements the <code>Nx.Container</code> protocol, while lists do not. Even still, given that knowledge of the intricacies of <code>defn</code> and <code>deftransform</code>, the final ported solution is very similar to the reference solution.</p><h1 id="conclusion">Conclusion</h1><p>In this post, I tried to accomplish several things at once, and perhaps that lead to a cluttered article, but I felt the need to address all of these points at once. I do not mean to suggest that Machine Learning has no place in Python or that Python will not continue to be the most dominant player in Machine Learning, but that I think some healthy competition is a good thing, and that perhaps Python does have some shortcomings that might give other languages valid reasons to coexist in the space. </p><p>Next, I wanted to address some specifics as to what Elixir has to offer to the machine learning space. I think it is uniquely positioned to be quite competitive considering the large community push to support more and more libraries, as well as the large application development community that can benefit from an in-house solution.</p><p>Lastly, I wanted to share some practical tips for those looking to move on from Python to Elixir, but feeling somewhat helpless in the process. I think that Sean Moriarity&apos;s book that I mentioned at the beginning of this article is an invaluable resource and great step in the education of machine learning for Elixir developers, but it can nonetheless feel daunting to seemingly throw out existing working solutions for new-fangled, perhaps not as well respected solutions. I hope I showed how anybody can approach this problem, and any existing Elixir developer can be a machine learning developer going forward. The ground work has been laid, and the tools are available. Thank you for reading (especially if you made it to the end)!</p>]]></content:encoded></item><item><title><![CDATA[Elixir Weekly Tips #1 (Tips 1-5)]]></title><description><![CDATA[5 byte-sized tips for Elixir ]]></description><link>https://www.thestackcanary.com/elixir-tips-of-the-week-1/</link><guid isPermaLink="false">6527767e02e0540d32653f1d</guid><category><![CDATA[Elixir Tips]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Sat, 22 Jul 2023 16:14:14 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2023/07/Purple-Modern-Digital-Marketing-Banner.png" medium="image"/><content:encoded><![CDATA[<h2 id="1-iex-helpers-in-livebook">#1. IEx Helpers in Livebook</h2><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><img src="https://www.thestackcanary.com/content/images/2023/07/Purple-Modern-Digital-Marketing-Banner.png" alt="Elixir Weekly Tips #1 (Tips 1-5)"><p lang="en" dir="ltr"><a href="https://twitter.com/hashtag/Elixir?src=hash&amp;ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">#Elixir</a> Tip of the Day #1: IEx Helpers can help ease the transition from Jupyter to <a href="https://twitter.com/livebookdev?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">@livebookdev</a> and you might not even be aware of them. Pair them with Smart Cells and you can get very similar functionality to Jupyter Magics<a href="https://twitter.com/hashtag/MyElixirStatus?src=hash&amp;ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">#MyElixirStatus</a> <a href="https://t.co/F7ApHH2LR0?ref=thestackcanary.com">pic.twitter.com/F7ApHH2LR0</a></p>&#x2014; Andr&#xE9;s C Alejos (@ac_alejos) <a href="https://twitter.com/ac_alejos/status/1681115754442178561?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">July 18, 2023</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><h2 id="2-mixrecompile0-function">#2. <strong><code>mix_recompile</code><code>?/0</code></strong> Function</h2><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Elixir Tip of the Day #2: Use `__mix_recompile__?/0` to control when a module will be recompiled by Mix beyond its normal dependency tracking. <br><br>Here is an example from the docs which shows tracking when the contents of a directory changes. <a href="https://twitter.com/hashtag/MyElixirStatus?src=hash&amp;ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">#MyElixirStatus</a> <a href="https://t.co/GjwcRGhRmM?ref=thestackcanary.com">pic.twitter.com/GjwcRGhRmM</a></p>&#x2014; Andr&#xE9;s C Alejos (@ac_alejos) <a href="https://twitter.com/ac_alejos/status/1681455512011911168?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">July 19, 2023</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><h2 id="3-match2-macro">#3. <code>match?/2</code> Macro</h2><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Elixir Tip of the Day #3: You can use the `match?/2` macro to perform guarded matches. This can be a more concise way to perform filtering during enumerations.  Combine with `defguard/1` macro to create complex and powerful matches.<a href="https://t.co/Wgc4w1i11L?ref=thestackcanary.com">https://t.co/Wgc4w1i11L</a><a href="https://twitter.com/hashtag/MyElixirStatus?src=hash&amp;ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">#MyElixirStatus</a> <a href="https://t.co/EIKjGpTZEg?ref=thestackcanary.com">pic.twitter.com/EIKjGpTZEg</a></p>&#x2014; Andr&#xE9;s C Alejos (@ac_alejos) <a href="https://twitter.com/ac_alejos/status/1681799287900971008?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">July 19, 2023</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><h2 id="4-the-binding1-macro">#4. The <code>__<strong>binding</strong>__/1</code> Macro</h2><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Elixir Tip of the Day #4: The `binding/1` macro returns all bound variables from the given context as a keyword list. This is especially useful when combined with the bind_quoted option of quote to bind all variables within the quoted block.<a href="https://twitter.com/hashtag/MyElixirStatus?src=hash&amp;ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">#MyElixirStatus</a> <a href="https://t.co/l9ngw7PSwX?ref=thestackcanary.com">pic.twitter.com/l9ngw7PSwX</a></p>&#x2014; Andr&#xE9;s C Alejos (@ac_alejos) <a href="https://twitter.com/ac_alejos/status/1682516314584145924?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">July 21, 2023</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><h2 id="5-the-deriving3-macro">#5. The <code>__<strong>deriving</strong>__/3</code> Macro</h2><h2 id></h2><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Elixir Tip of the Day #5: Within an Any implementation of a protocol, define the `__deriving__/3` macro to accept options. This allows configurable fallback behaviors rather than just one implementation.  Modules like Jason and Inspect use this in great ways<a href="https://twitter.com/hashtag/MyElixirStatus?src=hash&amp;ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">#MyElixirStatus</a> <a href="https://t.co/0pxKsF858j?ref=thestackcanary.com">pic.twitter.com/0pxKsF858j</a></p>&#x2014; Andr&#xE9;s C Alejos (@ac_alejos) <a href="https://twitter.com/ac_alejos/status/1682165183416860672?ref_src=twsrc%5Etfw&amp;ref=thestackcanary.com">July 20, 2023</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure>]]></content:encoded></item><item><title><![CDATA[Calling 'import' in Python Does More Than You Think]]></title><description><![CDATA[<p>When writing Python code, there are many reserved words such as <code>None</code>, <code>del</code>, <code>if</code>, <code>else</code>, etc. These are words that carry special meaning to the Python interpreter and as such should not be used as variable names. The keyword <code>import</code> is a reserved word used to bring outside Python code</p>]]></description><link>https://www.thestackcanary.com/calling-import-in-python/</link><guid isPermaLink="false">6527767e02e0540d32653f17</guid><category><![CDATA[Python]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Sun, 16 Jul 2023 22:36:15 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2023/06/61MtBT9XDdL._AC_UF894-1000_QL80_.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://www.thestackcanary.com/content/images/2023/06/61MtBT9XDdL._AC_UF894-1000_QL80_.jpg" alt="Calling &apos;import&apos; in Python Does More Than You Think"><p>When writing Python code, there are many reserved words such as <code>None</code>, <code>del</code>, <code>if</code>, <code>else</code>, etc. These are words that carry special meaning to the Python interpreter and as such should not be used as variable names. The keyword <code>import</code> is a reserved word used to bring outside Python code into the current scope within a file &#x2013; or at least that is what it is most commonly used for. Did you know, &#xA0;however, that you can <code>import</code> anything you want into Python?</p><p>Imagine you have a <code>.json</code> file of recipes that you want to use inside a Python file. How would you load it? Maybe your first instinct would be to do the following:</p><pre><code class="language-python">import json

if __name__ == &apos;__main__&apos;:
	with open(&quot;recipes.json&quot;) as f:
    	recipes = json.load(f)</code></pre><p>Now you have the recipes as a Python <code>dict</code> to use how you want. &#xA0;Now imagine that you could write it as the following instead:</p><pre><code class="language-python">import recipes</code></pre><p>How can this be? As it turns out, the Python <code>import</code> system is built so that you can modify the behavior of the <code>import</code> statement to choose what you want to do when <code>import</code> is called. </p><p>If you want to know some examples of what is possible using the methods described in this post you can check out a project a wrote called <a href="https://github.com/acalejos/toadstool?ref=thestackcanary.com">Toadstool</a> that implements many of these techniques. There I show how you can load GraphQL queries, JSON files, config files, CSV files, and more directly from an <code>import</code> statement. </p><p>Now, let&apos;s take a deeper dive into the Python import system.</p><h1 id="the-python-import-system">The Python Import System</h1><p>The full detail of the import system is described <a href="https://docs.python.org/3/reference/import.html?ref=thestackcanary.com#the-import-system">here</a>, but for now I will give a high-level overview. As the docs state:</p><!--kg-card-begin: markdown--><blockquote>
<p>The import statement combines two operations; it searches for the named module, then it binds the results of that search to a name in the local scope</p>
</blockquote>
<!--kg-card-end: markdown--><p>So, you have two different points in which you can modify the behavior of the <code>import</code> statement. </p><!--kg-card-begin: markdown--><ol>
<li>You can can modify its search function, or how it maps the value after the import statement to an action, and you can modify how it maps the.</li>
<li>You can modify the binding function, or what action to take once the &quot;module&quot; is found .</li>
</ol>
<!--kg-card-end: markdown--><h2 id="finders-and-loaders">Finders and Loaders</h2><p>The first step is know as <strong>Searching</strong> while the second step is know as <strong>Loading</strong>. Without modifying the <code>import</code> system, the default finders (modules that perform the searching operation) and loaders are used. As with all things in Python, the searcher and loaders are just objects. You can even inspect them for yourself. <br></p><pre><code class="language-bash">&#x276F; python3
&gt;&gt;&gt; import sys
&gt;&gt;&gt; sys.meta_path
[&lt;class &apos;_frozen_importlib.BuiltinImporter&apos;&gt;, &lt;class &apos;_frozen_importlib.FrozenImporter&apos;&gt;, &lt;class &apos;_frozen_importlib_external.PathFinder&apos;&gt;]
</code></pre><p>All loaded modules will be cached in a <code>dict</code> called <code>sys.modules</code> which maps module names to all of the variables exported from the module. When importing a module with <code>import X</code>, Python will check if <code>X</code> is already in <code>sys.modules</code> and only resort to using its finders and loaders if <code>X</code> is not already present. </p><p>Here is a brief flowchart of what I described above.</p><h1 id="customizing-the-import-system">Customizing the Import System</h1><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">There are two <code>import</code> hooks that can be used to extend the import system behavior: <em>meta hooks</em> and <em>import path hooks</em>. We will only be focusing on <em>meta path hooks</em> in this post but you can <a href="https://docs.python.org/3/reference/import.html?ref=thestackcanary.com#import-hooks">read more about import hooks here</a>.</div></div><h2 id="the-meta-path">The Meta Path</h2><p>As you saw from the snippet above, finders and loaders are stored in <code>sys.meta_path</code>. When <code>import X</code> is called, if <code>X</code> is not found in <code>sys.modules</code>, then Python will iterate over all of the objects stored in <code>sys.meta_path</code> and check if they implement the <code>find_spec</code> method which can be used to find <code>X</code>. If the finder returns a spec, then Python will invoke the <code>exec_module</code> function to invoke the loading step. &#xA0;Python&#x2019;s default <a href="https://docs.python.org/3/library/sys.html?ref=thestackcanary.com#sys.meta_path"><code>sys.meta_path</code></a> has three meta path finders, one that knows how to import built-in modules, one that knows how to import frozen modules, and one that knows how to import modules from an <a href="https://docs.python.org/3/glossary.html?ref=thestackcanary.com#term-import-path">import path</a> (i.e. the <a href="https://docs.python.org/3/glossary.html?ref=thestackcanary.com#term-path-based-finder">path based finder</a>).</p><p>So to modify how <code>import</code> works you can simply modify the contents of <code>sys.meta_path</code> to include finders and loaders that work the way you want. That means that you must create an object that implements the <code>find_spec</code> and <code>exec_module</code> methods and add it to <code>sys.meta_path</code>. Please note that if you wish to supersede default module loading behavior (typically modules that end in <code>.py</code>), then you will either have to delete the default modules from <code>sys.meta_path</code> or prepend your custom modules such that they will be invoked before the default finders. </p><div class="kg-card kg-callout-card kg-callout-card-grey"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Within the <code>sys.meta_path</code> you can implement a single object to perform both searching and loading, but it is important to understand that the operations are separate and constitute two different steps of the import process.</div></div><h2 id="custom-searching">Custom Searching</h2><p>To implement custom search behavior, we must have a class that implements the <code>find_spec</code> method. The full signature of the method is <code><strong>find_spec</strong>(<em>fullname</em>, <em>path</em>, <em>target=None</em>)</code>. Here, <code>path</code> refers to the path that of the parent module, so if path is <code>None</code> then it is a top-level import, otherwise <code>path</code> will contain the name of the parent module. <code>fullname</code> is the name passed to the <code>import</code> statement, so for <code>import A.B.C</code>, <code>fullname</code> would be <code>&quot;A.B.C&quot;</code>. <code>target</code> is a module object that the finder may use to make a more educated guess about what spec to return. <code>find_spec</code> should either return <code>None</code> if the finder could not find the module, or a <code>ModuleSpec</code> if it is found. What it means to &quot;find the module&quot; is up to your implementation. </p><p>So let&apos;s say we want to implement a finder for <code>.json</code> files. It might look something like</p><pre><code class="language-python">class JsonLoader():
    &quot;&quot;&quot;
    Used to import Json files into a Python dict
    &quot;&quot;&quot;
    @classmethod
    def find_spec(cls, name, path, target=None):
        &quot;&quot;&quot;Look for Json file&quot;&quot;&quot;
        package, _, module_name = name.rpartition(&quot;.&quot;)
        filename = f&quot;{module_name}.json&quot;
        directories = sys.path if path is None else path
        for directory in directories:
            path = pathlib.Path(directory) / filename
            if path.exists():
                return ModuleSpec(name, cls(path))</code></pre><div class="kg-card kg-callout-card kg-callout-card-yellow"><div class="kg-callout-emoji">&#x26A0;&#xFE0F;</div><div class="kg-callout-text">Note that we use the <code>@classmethod</code> property here. This is necessary so that Python does not have to instatiate a new <code>JSONLoader</code> object to invoke <code>find_spec</code> since the class <code>JsonLoader</code> itself is what is stored in <code>sys.meta_path</code>.</div></div><p>Line 8 simply extracts the part of the fullname that we care about (everything after the last <code>.</code> in the name). Line 9 is where we specify that we&apos;re only looking for files of the given name that end in <code>.json</code>. Line 10 is where we specify which directories to search over. This is either the <code>sys.path</code> is no <code>path</code> is passed to <code>find_spec</code> or it&apos;s the <code>path</code>. Again, this is just the behavior we are choosing to implement here &#x2013; you can use these parameters that are passed to <code>find_spec</code> however you see fit. Lastly, lines 11-14 are checking for the existance of the <code>.json</code> file, and if found, returning a new <code>ModuleSpec</code> with the name and the path and a new instance of the <code>JsonLoader</code> class initialized with the path (we will use this with the nex step). &#xA0;This does no action regarding even opening the file, let alone binding new variables. That is what will be done by the loader. Because of how we are constructing this class, <code>JsonLoader</code> will also serve as the loader, which is why we passed <code>cls(path</code> to <code>ModuleSpec</code> on line 14, but you could also pass any other class that implements the <code>exec_module</code> method. </p><h2 id="custom-loading">Custom Loading</h2><p>Now that we have identified the <code>.json</code> file we have to determine what to do with it. For that, we will use the same class as before and just implement a new method: <code>exec_module</code> since our finder deferred to <code>JsonLoader</code> again with its call to <code>ModuleSpec</code>. </p><pre><code class="language-python">class JsonLoader():
    &quot;&quot;&quot;
    Used to import Json files into a Python dict
    &quot;&quot;&quot;
    def __init__(self, path):
        &quot;&quot;&quot;Store path to Json file&quot;&quot;&quot;
        self.path = path

    @classmethod
    def find_spec(cls, name, path, target=None):
        &quot;&quot;&quot;Look for Json file&quot;&quot;&quot;
        package, _, module_name = name.rpartition(&quot;.&quot;)
        filename = f&quot;{module_name}.json&quot;
        directories = sys.path if path is None else path
        for directory in directories:
            path = pathlib.Path(directory) / filename
            if path.exists():
                return ModuleSpec(name, cls(path))

    def create_module(self, spec):
        &quot;&quot;&quot;Returning None uses the standard machinery for creating modules&quot;&quot;&quot;
        return None

    def exec_module(self, module):
        &quot;&quot;&quot;Executing the module means reading the JSON file&quot;&quot;&quot;
        with self.path.open() as f:
            data = json.load(f)
        fieldnames = tuple(_identifier(key) for key in data.keys())
        fields = dict(zip(fieldnames, [to_namespace(value) for value in data.values()]))
        module.__dict__.update(fields)
        module.__dict__[&quot;json&quot;] = data
        module.__file__ = str(self.path)</code></pre><p>On line 5 we implement the class&apos; <code>__init__</code> method to save the path that was passed to the <code>find_spec</code> method. The path is not passed to <code>exec_module</code> by default, so this is a way of maintaining that information. &#xA0;On line 24 we define the <code>exec_module</code> method which is where we perform any bindings. Here we read the json file, identify all keys from the JSON file, convert those names to valid Python variable names if needed, and update the calling module&apos;s <code>__dict__</code> (which stores all variables in scope) to now contain the values from the JSON file. &#xA0;</p><h2 id="customized-result">Customized Result</h2><p>Now append <code>JsonLoader</code> to <code>sys.meta_path</code> and assume you have the following <code>employees.json</code> file:</p><pre><code class="language-json">{
    &quot;employee&quot;: {
        &quot;name&quot;:       &quot;sonoo&quot;,
        &quot;salary&quot;:      56000,
        &quot;married&quot;:    true
    },
    &quot;menu&quot;: {
        &quot;id&quot;: &quot;file&quot;,
        &quot;value&quot;: &quot;File&quot;,
        &quot;popup&quot;: {
          &quot;menuitem&quot;: [
            {&quot;value&quot;: &quot;New&quot;, &quot;onclick&quot;: &quot;CreateDoc()&quot;},
            {&quot;value&quot;: &quot;Open&quot;, &quot;onclick&quot;: &quot;OpenDoc()&quot;},
            {&quot;value&quot;: &quot;Save&quot;, &quot;onclick&quot;: &quot;SaveDoc()&quot;}
          ]
        }
      }
}</code></pre><p>Now you can load <code>employees.json</code> and use it as follows:</p><pre><code class="language-bash">import employees

&gt;&gt;&gt; employees.
employees.employee  employees.json      employee.menu
print(employee.menu)
&gt; {&apos;id&apos;: &apos;file&apos;, &apos;value&apos;: &apos;File&apos;, &apos;popup&apos;: {&apos;menuitem&apos;: [{&apos;value&apos;: &apos;New&apos;, &apos;onclick&apos;: &apos;CreateDoc()&apos;}, {&apos;value&apos;: &apos;Open&apos;, &apos;onclick&apos;: &apos;OpenDoc()&apos;}, {&apos;value&apos;: &apos;Save&apos;, &apos;onclick&apos;: &apos;SaveDoc()&apos;}]}}</code></pre><p>You can even specify only importing certain keys from the file.</p><pre><code class="language-python">from employees import employee</code></pre><p>This will only load <code>employee</code> from <code>employees.json</code> and NOT load the <code>menu</code> key. </p><h1 id="conclusion">Conclusion</h1><p>This was just a sample of what can be done by using Python&apos;s import hooks (and remember, it only covered one of the two available hooks). &#xA0;You can customize this behavior to your heart&apos;s desire. If you want to see a more generalized approach you can check out my project I mentioned at the top at <a href="https://github.com/acalejos/toadstool/?ref=thestackcanary.com">https://github.com/acalejos/toadstool/</a>. The package is able to be installed via <code>pip install toadstool</code> if you want to try out some of the loaders. </p><p>If you need more dynamic import behavior within you code, you can also look to <code><a href="https://docs.python.org/3/library/importlib.html?ref=thestackcanary.com">importlib</a></code>, which is described as having three main purposes<br></p><!--kg-card-begin: markdown--><ol>
<li>Provide the implementation of the import statement (and thus, by extension, the <strong>import</strong>() function) in Python source code.</li>
<li>Expose the components to implement <code>import</code> and thus giving users the ability to create their own <code>importers</code></li>
<li>Contains modules exposing additional functionality for managing aspects of Python packages</li>
</ol>
<!--kg-card-end: markdown--><p>As you can see, the topic of the Python import system goes very deep, so I would encourage you to explore it further and gain a better understanding of it. </p>]]></content:encoded></item><item><title><![CDATA[5 Tips for Elixir Beginners]]></title><description><![CDATA[<p>I first started looking into Elixir upon the recommendation of a friend of mine about the wonders of the language. My first foray into the language was over a year ago as I dipped my toe into the Phoenix Framework to see how it compared to something like ReactJS, the</p>]]></description><link>https://www.thestackcanary.com/5-tips-for-elixir-beginner/</link><guid isPermaLink="false">6527767e02e0540d32653f19</guid><category><![CDATA[Elixir]]></category><dc:creator><![CDATA[Andrés Alejos]]></dc:creator><pubDate>Sun, 09 Jul 2023 18:33:00 GMT</pubDate><media:content url="https://www.thestackcanary.com/content/images/2023/07/5-Elixir-Tips-for-Beginners-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.thestackcanary.com/content/images/2023/07/5-Elixir-Tips-for-Beginners-1.png" alt="5 Tips for Elixir Beginners"><p>I first started looking into Elixir upon the recommendation of a friend of mine about the wonders of the language. My first foray into the language was over a year ago as I dipped my toe into the Phoenix Framework to see how it compared to something like ReactJS, the web development framework I was familiar with. At the time, I was using it just to learn the language but was not truly dedicated to any particular project, so I soon fizzled out of learning it. </p><p>In December 2022 I decided that I wanted to start contributing more to the open-source community, so once again I reached out to my friend to see what open-source Elixir efforts were ongoing that I could turn my attention to. &#xA0;He recommended that I look into <a href="https://github.com/elixir-nx/scholar?ref=thestackcanary.com">Scholar</a> since I have a background in Machine Learning and it was a library that needed some attention. I contributed a very minor feature to the library. Despite how small the feature was, it exposed me to enough of the language to draw me into the point that I knew I wanted to find a way to contribute meaningfully. Since then, I have published two libraries in ML space (<a href="https://github.com/acalejos/exgboost?ref=thestackcanary.com">EXGBoost</a> &amp; <a href="https://github.com/acalejos/exgboost?ref=thestackcanary.com">Mockingjay</a>) and am as excited as ever to see what the future holds for the language, and wanted to take some time to reflect on some of the most valuable lessons I have learned about Elixir.</p><h1 id="1-take-time-to-understand-the-basics">1. Take Time to Understand the Basics</h1><p>Although I like jumping head-first into new technologies, it is not always beneficial to do so. I have previously worked with languages that include functional features(mostly Scala), but never a truly functional language. &#xA0;Much of my initial confusion could have been avoided if I had taken more time to understand some of the foundational constructs of Elixir &#x2013; namely the match operator (<code>=</code>) (and pattern matching more generally), the capture operator (<code>&amp;</code>), the pin operator (<code>^</code>), behaviours, and protocols. Not only will having a better understanding of these help you write better and more idiomatic Elixir, but it will also allow you to more easily read Elixir code, which is invaluable as you learn and explore the Elixir ecosystem. </p><p>I still remember my first &quot;a-ha&quot; moment with pattern matching, when I needed to take the first item out of a list of nested dictionaries. Instead of many calls or to a dictionary access followed by checks for a valid key, you can capture those three or four calls in a single pattern match. Similarly, pattern matches in function heads allow you to decompose complex control flow and make it much more readable. Rather than having a single function head for a function where the body does different things depending on the input, it makes more sense to separate those different behaviors into different function heads using pattern matching and guards. These features allow the code itself to be much more expressive. As the saying goes, it is better to have expressive codes than to have to add comments or documentation to explain what should be plainly obvious from the code alone. &#xA0;</p><p>Elixir provides comprehensive documentation and <a href="https://elixir-lang.org/getting-started/introduction.html?ref=thestackcanary.com">getting-started guides</a> that will gently introduce you to the language, but also serve as great references as you get more advanced and need to refresh on the concepts. I recommend you read over the getting started guide once completely before doing much else in the language, and as you begin to write more Elixir and need to use more and more features of the language, then go back and reference the particular sections. For example, reading through the section on <a href="https://elixir-lang.org/getting-started/sigils.html?ref=thestackcanary.com">sigils</a> will help when you are reading Elixir code and encounter the funky <code>~r</code> that you have never seen in any other language, and then when you find yourself wanting to implement your own sigil, you will remember that there is a nice section about them in the getting started guide. </p><h1 id="2-embrace-the-amazing-community">2. Embrace the Amazing Community</h1><p>If you still find yourself struggling to understand some of the aforementioned concepts, fear not! The Elixir community is very active across many different platforms such as Twitter, Slack (e.g. the <a href="https://erlef.org/?ref=thestackcanary.com">EEF Slack</a>), and the <a href="https://elixirforum.com/?ref=thestackcanary.com">Elixir Forum</a>. If you find issues on a particular repo, its contributors and maintainers are usually quick to respond and welcome Pull Requests from people outside of the project. &#xA0;</p><p>Many conferences such as <a href="https://www.youtube.com/@ElixirConf?ref=thestackcanary.com">ElixirConf</a> and <a href="https://www.youtube.com/@CodeSync?ref=thestackcanary.com">Code Beam</a> make their talks available online for free, so even if you are unable to attend the events you can take full advantage of all of the educational material they provide. Many of the speakers at these conferences are authors of Elixir libraries or books that contribute valuable educational material for the language. Some of the most common books to refer to a new Elixir Developer are <a href="https://www.manning.com/books/elixir-in-action?ref=thestackcanary.com">Elixir in Action</a> by Sa&#x161;a Juri&#x107; and <a href="https://pragprog.com/titles/elixir16/programming-elixir-1-6/?ref=thestackcanary.com">Programming Elixir 1.6</a> by Dave Thomas. An upcoming book by Stephen Bussey entitled <a href="https://pragprog.com/titles/sbelixir/from-ruby-to-elixir/?ref=thestackcanary.com">From Ruby to Elixir</a> is catered towards people coming from an object-oriented background to Elixir. Some notable Elixir podcasts are <a href="https://podcast.thinkingelixir.com/?ref=thestackcanary.com">Thinking Elixir</a>, <a href="https://www.feedspot.com/infiniterss.php?_src=feed_title&amp;followfeedid=5278306&amp;q=site%3Ahttps%3A%2F%2Ffeeds.fireside.fm%2Fsmartlogic%2Frss&amp;ref=thestackcanary.com">Elixir Wizards</a>, and <a href="https://www.beamrad.io/?ref=thestackcanary.com">Beam Radio</a>.</p><p>In addition to consuming material from the Elixir community, it is important to also give back to the community, which is one of the best ways to learn. The more you engage with others the more you get to cross-pollinate ideas. &#xA0;When you put code out into the world you get a chance to have someone review your code. Each time someone takes time out of their day to review your code you will feel the satisfaction and vindication that will make you want to continue. </p><h1 id="3-treat-elixir-as-a-functional-language">3. Treat Elixir as a Functional Language</h1><p>Some of the features of Elixir can be likened to parts of object-oriented languages, but it is best to NOT try to shoehorn object-oriented design patterns into Elixir. I found myself doing this quite frequently as I was porting the Python binding of XGBoost into Elixir because I would read the Python code and not take time to step back to see what it was trying to accomplish and instead tried to find line-by-line analogs to Elixir. For example, in Python when you see an accumulator initialized before a loop, then perform an operation on it within the loop, and return the accumulator, thus mutating the accumulator each loop, you should be able to tell that you can just use <code>Enum.reduce</code> to achieve the same outcome (in a matter of fact, the sooner you can start seeing most looping operations as forms of <code>Enum.reduce</code> or <code>Enum.reduce_while</code> the better). </p><p>Although behaviours and protocols exist in the language and are great tools to achieve similar characteristics that object orientation attempts to achieve, you should not always reach for those tools for the same tasks that you might reach for a new class in an object-oriented language. You should always attempt to solve your problem using functions, and only then reach for the other features of the language when functions alone cannot solve your problem (or using only functions greatly increases the complexity of your solution).</p><h1 id="4-learn-idiomatic-elixir">4. Learn Idiomatic Elixir</h1><p>If you&apos;ve ever written Python for an extended period of time or had to work with others in a Python project, it is likely that you&apos;ve heard the term &quot;writing Pythonic code.&quot; This refers to the fact that there can be various equally valid ways to write certain code, but one convention or standard is generally accepted by the community as being more correct, oftentimes due to taking advantage of more features specific to the language. Well Elixir is not immune to this same effect, with certain conventions being universally adopted by the Elixir community. I would argue that Elixir is even more prone to this over other languages due to the reliance on established Erlang packages and libraries (namely OTP) that predate Elixir itself. </p><p>The easiest way to learn idiomatic Elixir is to read implementation of standard libraries. If you&apos;re struggling to know the most idiomatic way to implement protocols in your application, perhaps look to the <code>Enumerable</code> protocol from the standard library. If you&apos;re familiar with <code>kwargs</code> from Python and wondering how you can implement similar behavior in Elixir, you can look at Elixir libraries and notice the use of keyword lists with a default empty list in the function signature. Although it is always best to understand <strong>why</strong> a convention is the way it is, sometimes it is best when starting to adopt the convention first and learn the why later, since it is likely that there are very valid reasons for it to be accepted that you might just not be aware of yet. Once you become more advanced at the language then you can more safely navigate when to deviate from the convention. </p><p>Certain practices are more concrete than other. For example, it is convention that any function named <code>is_*</code> returns a boolean and can be used as a guard, whereas function names ending in <code>?</code> also return a boolean but cannot be used in guards. This is not enforced by the language itself but once you learn that rule it makes it easier to both read Elixir as well as write Elixir where others can share similar vocabularies. </p><p>Another pattern that you will see are function pairs where one return a 2-Tuple as a return type where it takes the form of <code>{:ok | :error, value::string.t()}</code>, and the other returns the raw value. For example this convention is used throughout the <a href="https://hexdocs.pm/jason/Jason.html?ref=thestackcanary.com#encode!/2">Jason</a> module such as with <code>decode</code> and <code>decode!</code>. The former allows the user to match on the first element of the tuple to handle success or error how they want, while the latter will &quot;unwrap&quot; the raw value and either succeed or throw its own error. &#xA0;The more Elixir you read and write, the more of these conventions you will begin to notice and adopt for yourself.</p><h1 id="5-get-familiar-with-elixirs-rich-tooling-ecosystem">5. Get Familiar With Elixir&apos;s Rich Tooling Ecosystem </h1><p>One of the best things about Elixir is that you also get all of the rich tools built for Erlang which long preexisted Elixir itself. During every step of development, there is likely a tool that can improve your efficiency and quality of life. Start by learning the build system <a href="https://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html?ref=thestackcanary.com">Mix</a> to create and compile your application, linting and static analysis can be done with tools such as <a href="https://github.com/rrrene/credo?ref=thestackcanary.com">Credo</a> and <a href="https://www.erlang.org/doc/man/dialyzer.html?ref=thestackcanary.com">Dialyzer</a>, testing can be done via <a href="https://hexdocs.pm/ex_unit/main/ExUnit.html?ref=thestackcanary.com">ExUnit</a>, documentation is covered by <a href="https://github.com/elixir-lang/ex_doc?ref=thestackcanary.com">ExDoc</a>, and finally, you can publish your projects to <a href="https://hex.pm/?ref=thestackcanary.com">Hex</a>. Learning the technologies that make up the Elixir development stack is a great way to become more familiar with the language overall and each one is demonstrative of why developers find Elixir such a joy to work with.</p><p>The seamless integration between Hex and its documentation domain HexDocs along with ExDoc makes is intoxicatingly easy to publish packages in Elixir. Mix Tasks give way for developers to write (and distribute) their own modules for the Mix build system, which means that for nonstandard libraries there are often Mix tasks available that assist in your deployment, or you can even write your own to share with anybody else who might find it useful.</p><p>For example, Erlang has the NIF (Native Implemented Functions) library that allows code that is run on top of the BEAM (the Erlang/Elixir Virtual Machine) to call native code. When writing Elixir NIFs, you will need to have an accompanying shared library written in native code (such as a <code>.dll</code>, <code>.so</code>, or <code>.dylib</code>) to link your NIF against. When publishing to Hex, it would be convenient for the end users of the library to not have to necessarily recompile those libraries every time they pull from Hex, so you might wish to have precompiled distributions of the libraries available for the most common architectures. &#xA0;Well, I had this exact case when writing EXGBoost, and I took advantage of the <a href="https://github.com/elixir-lang/elixir_make?ref=thestackcanary.com">ElixirMake</a> and <a href="https://github.com/cocoa-xu/cc_precompiler_example?ref=thestackcanary.com">CCPrecompiler</a> libraries to precompile my NIFs and include them in my Hex distribution (the guide I followed to do this is <a href="https://github.com/cocoa-xu/cc_precompiler_example?ref=thestackcanary.com">here</a> for those who are curious).</p><h1 id="conclusion">Conclusion</h1><p>As with all things, our mileage may vary when beginning your Elixir journey, but I have found the whole language, from its developer ecosystem to the thriving community, to continue to draw me in and make me excited to be a part of it. Even more exciting is that the language itself and its surrounding communities are still quite young and technologically diverse! I have planted myself firmly in the Machine Learning camp of Elixir, but web development with the Phoenix Framework is one of the most beloved frameworks there is, and there is even open development on an embedded Elixir system from the Nerves project. There is vast opportunity across all of these domains for meaningful contributions even from beginner Elixir developers, so I would encourage everyone to find their niche and put code out in the world.</p>]]></content:encoded></item></channel></rss>