{ "cells": [ { "cell_type": "markdown", "id": "0df6dbb6-e9fa-4ee7-ab8e-1434ff781c54", "metadata": {}, "source": "# RSML architecture" }, { "metadata": {}, "cell_type": "markdown", "source": "Read architecture from RSML file and run a simulation to illustrate how to use the RSML format (http://rootsystemml.github.io/). The architecture is the arabidopsis-simple example from http://rootsystemml.github.io/images/examples/arabidopsis-simple.rsml.", "id": "7531336b2959087c" }, { "cell_type": "markdown", "id": "afe12073-742c-4d01-9c6c-9f869a6ee55a", "metadata": {}, "source": [ "Point to the source files if the notebook is run locally, from a git repository clone for example, without openalea.hydroroot installation, but only the dependencies installed." ] }, { "cell_type": "code", "id": "0c1cd238-190a-4305-9798-1eaa9d712a09", "metadata": { "ExecuteTime": { "end_time": "2026-02-26T09:12:00.282431Z", "start_time": "2026-02-26T09:12:00.279517Z" } }, "source": [ "from openalea.plantgl.algo.view import view # 2D view\n", "from openalea.widgets.plantgl import PlantGL # 3D viewer\n", "\n", "# Import HydroRoot modules\n", "from openalea import hydroroot\n", "from openalea.hydroroot import (\n", " main,\n", " hydro_io,\n", " radius,\n", " display,\n", ")" ], "outputs": [], "execution_count": 20 }, { "metadata": {}, "cell_type": "markdown", "source": "## RSML to MTG", "id": "7e510298c50f7939" }, { "metadata": {}, "cell_type": "markdown", "source": " Read the rsml file *arabidopsis.rsml* and convert it to a MTG *g* of segments of 0.1 mm", "id": "a1e32f2755a1b916" }, { "cell_type": "code", "id": "3216455d-1cc9-43de-8508-4cdb5c03222b", "metadata": { "ExecuteTime": { "end_time": "2026-02-26T09:09:27.196337Z", "start_time": "2026-02-26T09:09:27.187438Z" } }, "source": "g = hydroroot.hydro_io.read_rsml('data/arabidopsis-simple.rsml', segment_length=1.0e-4)", "outputs": [], "execution_count": 12 }, { "metadata": {}, "cell_type": "markdown", "source": "## Run calculation", "id": "998cf09649f99f83" }, { "cell_type": "markdown", "id": "890efb37-ff73-4b96-b790-9e1a5c756ce0", "metadata": {}, "source": [ "### Set the root radii\n", " The radius setting follows the Arabidopsis model describeded in Boursiac et al. 2022. The root radius is set according to the radius of the primary root $r_{ref}$ and the order of the lateral as follows: $r_{lat} = \\beta^{order} r_{ref}$. $\\beta$ is the radius decreasing facteur between root orders." ] }, { "cell_type": "code", "id": "e050dd37-395c-4ecb-a051-0ff93cef029b", "metadata": { "ExecuteTime": { "end_time": "2026-02-26T09:09:56.142623Z", "start_time": "2026-02-26T09:09:56.133993Z" } }, "source": [ "# primary root radius 7.0e-5 m, beta = 0.7\n", "g = hydroroot.radius.ordered_radius(g,\n", " ref_radius=7.0e-5,\n", " order_decrease_factor=0.7)\n", "\n", "# Compute the position of each segment relative to the axis bearing it\n", "g = hydroroot.radius.compute_relative_position(g)" ], "outputs": [], "execution_count": 13 }, { "cell_type": "markdown", "id": "67b5a06f-be28-47f0-8d4e-4463cd7c263b", "metadata": {}, "source": "### Set hydraulic properties" }, { "cell_type": "code", "id": "6bf369fc-df46-4b34-af88-19dbc33f529f", "metadata": { "ExecuteTime": { "end_time": "2026-02-26T09:10:28.167676Z", "start_time": "2026-02-26T09:10:28.165077Z" } }, "source": [ "# radial conductivity profile: distance to tip (m) vs kr (10-9 m.s-1.MPa-1)\n", "k_radial_data=([0, 0.2],[30.0,30.0])\n", "\n", "# axial conductance profile: distance to tip (m) vs Kx (10-9 m4.s-1.MPa-1)\n", "K_axial_data=([0, 0.2],[3.0e-7,4.0e-4])" ], "outputs": [], "execution_count": 14 }, { "cell_type": "markdown", "id": "2e7ba80d-715e-48fa-b8fe-5371a21208eb", "metadata": {}, "source": [ "### Flux and equivalent conductance calculation\n", "Eor a root in an external hydroponic medium at 0.4 MPa, its base at 0.1 MPa, and with the conductances set above." ] }, { "cell_type": "code", "id": "7029e8d6-b10b-4c2f-ad78-0672b2d5cb1c", "metadata": { "ExecuteTime": { "end_time": "2026-02-26T09:10:29.870487Z", "start_time": "2026-02-26T09:10:29.849283Z" } }, "source": "g, keq, jv = hydroroot.main.hydroroot_flow(g, psi_e = 0.4, psi_base = 0.1, axial_conductivity_data = K_axial_data, radial_conductivity_data = k_radial_data)", "outputs": [], "execution_count": 15 }, { "metadata": {}, "cell_type": "markdown", "source": "Print results", "id": "b1ae6574eff8e9d1" }, { "cell_type": "code", "id": "952edaca-690a-4012-9a2c-0e4a9fa68830", "metadata": { "ExecuteTime": { "end_time": "2026-02-26T09:11:00.988570Z", "start_time": "2026-02-26T09:11:00.986080Z" } }, "source": "print(f'equivalent root conductance (10-9 m3/s/MPa): {keq} sap flux (microL/s): {jv}')", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "equivalent root conductance (10-9 m3/s/MPa): 0.0014303117762878164 sap flux (microL/s): 0.000429093532886345\n" ] } ], "execution_count": 17 }, { "cell_type": "markdown", "id": "642c80f3-4570-4683-a645-dd024906fe16", "metadata": {}, "source": [ "## Display the local water uptake heatmap\n", "\n", "to reduce notebook size we use here a 2D view but you can use the openalea.widgets `PlantGL(s)` to display an interactive 3D view" ] }, { "cell_type": "code", "id": "5125a231-f685-4ae3-8de0-880d8edf4446", "metadata": { "ExecuteTime": { "end_time": "2026-02-26T09:11:23.147221Z", "start_time": "2026-02-26T09:11:22.952693Z" } }, "source": [ "# create a scene from the mtg with the property j is the radial flux in ul/s\n", "s = hydroroot.display.mtg_scene(g, prop_cmap = 'j')\n", "\n", "view(s) # use PlantGL(s) to display in 3D" ], "outputs": [ { "data": { "text/plain": [ "
" ], "image/png": "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" }, "metadata": {}, "output_type": "display_data", "jetTransient": { "display_id": null } } ], "execution_count": 18 }, { "cell_type": "markdown", "id": "8347bcef-0598-4a0f-9c41-ff5b7d149a03", "metadata": {}, "source": "## Export the MTG to RSML" }, { "cell_type": "markdown", "id": "3e225ee6-77e4-4987-a53e-c76ee823919a", "metadata": {}, "source": [ "At this stage (2022-08-22) only the root length and the branching position are used to simulate architecture in hydroponic solution. The exact position in 3D is not stored in the discrete MTG form and so not exported to RMSL." ] }, { "cell_type": "code", "id": "0b325e5f-99c8-4228-855b-500c7b8e9194", "metadata": { "ExecuteTime": { "end_time": "2026-02-26T09:11:28.030907Z", "start_time": "2026-02-26T09:11:27.864435Z" } }, "source": "hydroroot.hydro_io.export_mtg_to_rsml(g, \"test.rsml\", segment_length = 1.0e-4)", "outputs": [], "execution_count": 19 }, { "cell_type": "markdown", "id": "0b67dbed-8476-40dd-a178-edf49ac9ebac", "metadata": {}, "source": [ "The resolution of the RSML data is 1.0e-4 and the unit is meter." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.11" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }