diff muspinsim_config.xml @ 0:c70012022f0f draft

planemo upload for repository https://github.com/muon-spectroscopy-computational-project/muon-galaxy-tools/main/muspinsim_config commit d130cf2c46d933fa9d0214ddbd5ddf860f322dc4
author muon-spectroscopy-computational-project
date Thu, 25 Aug 2022 16:16:47 +0000
parents
children 844b73d2f40c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/muspinsim_config.xml	Thu Aug 25 16:16:47 2022 +0000
@@ -0,0 +1,493 @@
+<tool id="muspinsim_config" name="MuSpinSim Configure" version="@TOOL_VERSION@+galaxy@WRAPPER_VERSION@" python_template_version="3.5" profile="22.01">
+    <description>define simulation parameters</description>
+       <macros>
+        <!-- version of underlying tool (PEP 440) -->
+        <token name="@TOOL_VERSION@">1.1.0</token>
+        <!-- version of this tool wrapper (integer) -->
+        <token name="@WRAPPER_VERSION@">0</token>
+        <!-- citation should be updated with every underlying tool version -->
+        <!-- typical fields to update are version, month, year, and doi -->
+        <token name="@TOOL_CITATION@">
+            @software{muspinsim,
+                author = {Sturniolo, Simone and Liborio, Leandro and Owen, Josh and Mudaraddi, Anish and {Muon Spectroscopy Computational Project}},
+                license = {MIT},
+                title = {{muspinsim}},
+                url = {https://github.com/muon-spectroscopy-computational-project/muspinsim},
+                version = {v1.1.0},
+                month = {5},
+                year = {2022},
+                doi = {10.5281/zenodo.6563074}
+            }
+        </token>
+    </macros>
+    <creator>
+        <person givenName="Anish" familyName="Mudaraddi" identifier="https://orcid.org/0000-0002-2135-2705"/>
+        <person givenName="Eli" familyName="Chadwick" url="https://github.com/elichad" identifier="https://orcid.org/0000-0002-0035-6475"/>
+        <organization url="https://muon-spectroscopy-computational-project.github.io/index.html" name="The Muon Spectroscopy Computational Project"/>
+    </creator>
+    <requirements>
+        <requirement type="package" version="@TOOL_VERSION@">muspinsim</requirement>
+    </requirements>
+    <command detect_errors="exit_code"><![CDATA[
+        cp ${__tool_directory__}/sample_fitting_data.dat ./fitting_data.dat &&
+        python ${__tool_directory__}/build_file.py inputs.json
+    ]]></command>
+    <configfiles>
+        <inputs name="inputs" filename="inputs.json" />
+    </configfiles>
+    <inputs>
+        <param type="text" name="out_file_prefix" label="Name" help="A name with which to label this configuration" optional="true" value="muspinsim" />
+        <section name="spins" expanded="true" title="Spins">
+            <repeat name="spins" title="Spins to simulate" min="1" help="Specify the spins to be used in the system. This should include a muon (mu) and one or more electrons (e)">
+                <conditional name="spin_options">
+                    <param name="spin_preset" type="select" value="mu" label="Species" help="Select 'custom' to define own">
+                        <option selected="true" value="mu">mu</option>
+                        <option value="e">e</option>
+                        <option value="custom">custom</option>
+                    </param>
+                    <when value="custom">
+                        <param name="spin" optional="false" type="text" label="Species name"/>
+                        <param name="atomic_mass" optional="true" type="integer" min="0" value="" label="Atomic mass" help="Leave blank to use default mass - whole numbers only"/>
+                    </when>
+                    <when value="mu"/>
+                    <when value="e"/>
+                </conditional>
+            </repeat>
+        </section>
+        <section name="interaction_params" expanded="true" title="Spin Interactions" help="">
+            <repeat name="interactions" title="Interactions to simulate" help="Add couplings between spins, and/or dissipation terms. Interaction terms available: Zeeman, hyperfine, dipolar, quadrupolar or dissipation. See muspinsim docs for more info">
+                <conditional name="interaction_options">
+                    <param name="interaction" type="select" label="Choose interaction type">
+                        <option value="zeeman">Zeeman</option>
+                        <option value="hyperfine">hyperfine</option>
+                        <option value="dipolar">dipolar</option>
+                        <option value="quadrupolar">quadrupolar</option>
+                        <option value="dissipation">dissipation</option>
+                    </param>
+                    <when value="zeeman">
+                        <param name="zeeman_index" type="integer" value="" label="Index of coupled spin" min="1"
+                               help="Index refers to the order of the spins listed in 'spins' section.  The first spin in the list has index 1, the second has index 2, and so on."/>
+                        <param name="zeeman_vector" type="text" value="" label="Zeeman coupling vector"
+                            help="Define 1X3 vector for local magnetic field coupling (T).
+                            Allows default expressions, constants and functions (see help)"/>
+                    </when>
+                    <when value="hyperfine">
+                        <param name="hfine_index" type="integer" value="" label="Index of nuclear coupled spin" min="1"
+                               help="Non-electronic spin - muon or otherwise.
+                               Index refers to the order of the spins listed in 'spins' section.  The first spin in the list has index 1, the second has index 2, and so on."/>
+                        <param name="hfine_e_index" type="integer" value="" optional="true" min="1" label="Index of electronic coupled spin"
+                               help="Optional, will use first defined electronic spin if unspecified"/>
+                        <param name="hfine_matrix" area="true" type="text" value="" label="Hyperfine coupling tensor"
+                               help="Define 3X3 tensor for coupling between electron and non-electron spins (in MHz).
+                               Allows default expressions, constants and functions (see help)">
+                            <sanitizer>
+                                <valid initial="string.printable">
+                                </valid>
+                            </sanitizer>
+                        </param>
+                    </when>
+                    <when value="dipolar">
+                        <param name="di_index" type="integer" value="" min="1" label="Index of 1st coupled spin"
+                               help="Index refers to the order of the spins listed in 'spins' section.  The first spin in the list has index 1, the second has index 2, and so on."/>
+                        <param name="di_index_2" type="integer" value="" label="Index of 2nd coupled spin"
+                               help="Index refers to the order of the spins listed in 'spins' section.  The first spin in the list has index 1, the second has index 2, and so on."/>
+                        <param name="di_vector" type="text" value="" label="Dipole coupling vector"
+                               help="Define 1X3 vector for coupling between two spins (Angstrom).
+                               Allows default expressions, constants and functions (see help)"/>
+                    </when>
+                    <when value="quadrupolar">
+                        <param name="quad_index" type="integer" value="" label="Index of coupled spin"
+                               help="Index refers to the order of the spins listed in 'spins' section.  The first spin in the list has index 1, the second has index 2, and so on."/>
+                        <param name="quad_matrix" area="true" type="text" value="" label="Electric Field Gradient tensor"
+                               help="Define 3X3 tensor (in atomic units) for quadrupolar coupling.
+                               Allows default expressions, constants and functions (see help).
+                               Warning: spins with zero quadrupole moment will have zero coupling regardless of the input">
+                            <sanitizer>
+                                <valid initial="string.printable">
+                                </valid>
+                            </sanitizer>
+                        </param>
+                    </when>
+                    <when value="dissipation">
+                        <param name="dis_index" type="integer" value="" label="Index of spin with dissipation"
+                               help="Index refers to the order of the spins listed in 'spins' section.  The first spin in the list has index 1, the second has index 2, and so on."/>
+                        <param name="dis_val" type="text" value="" label="Dissipation"
+                               help="Define dissipation term (MHz).
+                               Allows default expressions, constants and functions (see help)"/>
+                    </when>
+                </conditional>
+            </repeat>
+        </section>
+        <section name="experiment_params" expanded="true" title="Experiment Parameters">
+            <conditional name="experiment">
+                <param name="experiment_preset" type="select" value='custom' display="radio" label="Experiment type"
+                       help="Experiment preset to use. Avoided Level Crossing (ALC): sets polarization to longitudinal, x-axis to field and y-axis to integral.
+                             Zero field: sets polarization to transverse and field to 0. Choose custom for no preset">
+                    <option value="alc">Avoided Level Crossing (ALC)</option>
+                    <option value="zero_field">Zero Field</option>
+                    <option selected="true" value="custom">Custom</option>
+                </param>
+                <when value="alc">
+                    <repeat name="fields" title="Fields" help="Magnetic fields">
+                        <param name="field" type="text" value="0" label="Field"
+                            optional="true" help="Optional, (default is 0).
+                            Accepts 1X3 vector, or scalar value. Scalar value means field is assumed to be aligned with z axis.
+                            Allows default expressions, constants and functions, plus MHz, muon_gyr constants and special 'range()' function (see help section)"/>
+                    </repeat>
+                </when>
+                <when value="zero_field">
+                    <param name="x_axis" type="select" value="time" display="radio" label="X axis"
+                           help="Range to use as X axis for output file(s)">
+                        <option selected="true" value="time">time</option>
+                        <option value="field">field</option>
+                    </param>
+                    <param name="y_axis" type="select" value="asymmetry" display="radio" label="Y axis"
+                           help="Range to use as y axis for output file(s)
+                                Asymmetry: use muon's polarization.
+                                Integral: use muon's polarization integral over time.
+                                WARNING: if integral chosen, 'time' parameter is ignored, and cannot be used as x-axis parameter ">
+                        <option value="integral">integral</option>
+                        <option selected="true" value="asymmetry">asymmetry</option>
+                    </param>
+                </when>
+                <when value="custom">
+                    <param name="x_axis" type="select" value="time" display="radio" label="X axis"
+                           help="Range to use as X axis for output file(s)">
+                        <option selected="true" value="time">time</option>
+                        <option value="field">field</option>
+                    </param>
+                    <param name="y_axis" type="select" value="asymmetry" display="radio" label="Y axis"
+                           help="Range to use as y axis for output file(s)
+                                Asymmetry: use muon's polarization.
+                                Integral: use muon's polarization integral over time.
+                                WARNING: if integral chosen, 'time' parameter is ignored, and cannot be used as x-axis parameter ">
+                        <option value="integral">integral</option>
+                        <option selected="true" value="asymmetry">asymmetry</option>
+                    </param>
+                    <repeat name="fields" title="Fields" help="Magnetic fields">
+                         <param name="field" type="text" value="0" label="Field (T)"
+                            optional="true" help="Optional, (default is 0).
+                            Accepts 1X3 vector, or scalar value. Scalar value means field is assumed to be aligned with z axis.
+                            Allows default expressions, constants and functions, plus MHz, muon_gyr constants and special 'range()' function (see help section)"/>
+                    </repeat>
+                    <repeat name="polarizations" title="Polarizations" help="The direction along which the muon
+                    should be polarized when starting, as well as the one in which it will be measured.
+                    Each entry will generate a separate calculation when muspinsim is run">
+                        <conditional name="polarization_options">
+                            <param name="polarization_preset" value="custom" type="select" display="radio" label="Polarization"
+                                   help="transverse: along x-axis, longitudinal: along z-axis, custom: define vector">
+                                <option value="longitudinal">longditudinal</option>
+                                <option value="transverse">transverse</option>
+                                <option selected="true" value="custom">custom</option>
+                            </param>
+                            <when value="custom">
+                                <param name="polarization" type="text" value="" label="Enter custom vector for polarization"
+                                       help="Accepts 1X3 vector.
+                                       Allows default expressions, constants and functions (see help section)"/>
+                            </when>
+                            <when value="longitudinal" />
+                            <when value="transverse" />
+                        </conditional>
+                    </repeat>
+                </when>
+            </conditional>
+            <param name="average_axes" type="select" display="checkboxes" multiple="true" optional="true" value="orientation" label="Average axes"
+                   help="Keywords that should have an average carried out over them. Each keyword ticked should have a range specified.
+                   Keywords not ticked or set as X axis, but which have a range set, will generate separate calculations for each value in the range when muspinsim is run.">
+                <option selected="true" value="orientation">orientation</option>
+                <option value="polarization">polarization</option>
+                <option value="field">field</option>
+                <option value="time">time</option>
+                <option value="temperature">temperature</option>
+            </param>
+            <repeat name="orientations" title="Orientations" help="Orientations to use for crystallites - (define powder averages)">
+                <conditional name="orientation_options">
+                    <param name="orientation_preset" type="select" display="radio" label="Orientation" optional="false"
+                           help="Polar angles: Define two polar angles θ and ϕ, defining only the direction of the z-axis (recommended for powder averages).
+                                Euler angles: Define 3 Euler angles defining a new frame, convention used is ZYZ by default.
+                                Euler angles with weight: define 3 Euler angles and a weight (will be normalized automatically).
+                                Euler angles helper function: eulrange(n).
+                                Zaremba-Conroy-Wolfsberg helper function: zcw(n)">
+                        <option value="2_polar">Polar angles</option>
+                        <option value="3_euler">Euler angles</option>
+                        <option value="4_euler">Euler angles with weight</option>
+                        <option value="eulrange">Euler angles helper function (eulrange(n))</option>
+                        <option selected="true" value="zcw">Zaremba-Conroy-Wolfsberg helper function (zcw(n))</option>
+                    </param>
+                    <when value="eulrange">
+                        <param name="eul_n" type="text" value="0" label="n"
+                               help="value for n for eulrange(n),
+                               Allows default expressions, constants and functions.
+                               WARNING: large values are more computationally expensive."
+                        />
+                    </when>
+                    <when value="zcw">
+                        <param name="zcw_n" type="text" value="0" label="n"
+                               help="value for n for zcw(n)
+                               Allows default expressions, constants and functions.
+                               WARNING: large values are more computationally expensive."
+                        />
+                    </when>
+                    <when value="2_polar">
+                        <param name="theta" type="text" value="" label="θ (theta/inclination) angle"
+                               help="All polar angle entries allow default expressions, constants and functions"/>
+                        <param name="phi" type="text" value="" label="ϕ (phi/azimuth) angle"
+                               help="All polar angle entries allow default expressions, constants and functions"/>
+                    </when>
+                    <when value="3_euler">
+                        <param name="eul_1" type="text" value="" label="Euler angle 1"
+                               help="All Euler angle entries allow default expressions, constants and functions"/>
+                        <param name="eul_2" type="text" value="" label="Euler angle 2"
+                               help="All Euler angle entries allow default expressions, constants and functions"/>
+                        <param name="eul_3" type="text" value="" label="Euler angle 3"
+                               help="All Euler angle entries allow default expressions, constants and functions"/>
+
+                    </when>
+                    <when value="4_euler">
+                        <param name="eul_1" type="text" value="" label="Euler angle 1"
+                               help="All Euler angle entries allow default expressions and constants"/>
+                        <param name="eul_2" type="text" value="" label="Euler angle 2"
+                               help="All Euler angle entries allow default expressions and constants"/>
+                        <param name="eul_3" type="text" value="" label="Euler angle 3"
+                               help="All Euler angle entries allow default expressions and constants"/>
+                        <param name="weight" type="float" value="0" label="Weight"
+                               help="Allows only floating point value, weights will automatically be normalised"/>
+                    </when>
+                </conditional>
+            </repeat>
+            <param name="euler_convention" type="select" display="radio" label="Euler Convention"
+                   help="Euler angle convention to use for orientation definitions (ignored if Euler angles not defined)">
+                <option selected="true" value="zyz">ZYZ</option>
+                <option value="zxz">ZXZ</option>
+            </param>
+            <repeat name="times" title="Time" help="A time or range of times (μs)">
+                <param name="time" type="text" label="Time"
+                       help="Either a single time value or `range` function
+                       Allows default expressions, default constants, and special 'range()' function (see help section)"
+                       optional="true" value="range(0, 10, 101)"/>
+            </repeat>
+            <repeat name="temperatures" title="Temperature" help="Temperature or range of temperatures (K)">
+                <param name="temperature" type="text"
+                       help="Either single value or 'range()' function
+                       Allows default expressions, default constants, and special 'range()' function (see help section).
+                       Warning: both density matrices and dissipative couplings for finite temperatures are only calculated approximatively, see muspinsim docs."
+                       optional="true" value="inf"/>
+            </repeat>
+        </section>
+        <section name="fitting_params" expanded="true" title="Fitting Parameters">
+            <conditional name="fitting_options">
+                <param name="fitting" type="select" display="radio" optional="false" value="" label="Fit experimental data with simulations"
+                       help="Fitting requires a file with data to fit. File must be given in muspinsim tool, or by manually setting filepath for keyword 'fitting_data' if running muspinsim externally">
+                    <option value="true">Yes</option>
+                    <option selected="true" value="">No</option>
+                </param>
+                <when value="true">
+                    <param name="fitting_method" type="select" display="radio" optional="false" value="nelder-mead" label="Method to use to fit the data"
+                           help="See the help section for a description of each method">
+                        <option selected="true" value="nelder-mead">Nelder-Mead</option>
+                        <option value="lbfgs">L-BFGS</option>
+                    </param>
+                    <repeat name="fitting_variables" title="Variable to fit to the experimental data">
+                        <param name="var_name" type="text" optional="false" label="Name of the variable"/>
+                        <param name="start_val" type="text" value="0" label="Starting value"
+                               help="Allows default expressions, constants and functions, plus MHz, muon_gyr constants. Cannot contain names of other variables"/>
+                        <param name="min_bound" type="text" value="-inf" label="minimum bound"
+                               help="Allows default expressions, constants and functions, plus MHz, muon_gyr constants"/>
+                        <param name="max_bound" type="text" value="inf" label="maximum bound"
+                               help="Allows default expressions, constants and functions, plus MHz, muon_gyr constants"/>
+                    </repeat>
+                    <param name="fitting_tolerance" type="float" optional='true' value="" label="Fitting Tolerance"
+                           help="Used as the tol parameter in Scipy's scipy.optimize.minimize method. Will use scipy defaults if left blank.
+                           Does not accept expressions/functions/constants"
+                    />
+                </when>
+                <when value=""/>
+            </conditional>
+        </section>
+    </inputs>
+    <outputs>
+        <data format="txt" label="muspinsim input file $out_file_prefix" name="out_file" from_work_dir="outfile.in" />
+    </outputs>
+    <tests>
+        <test>
+            <param name="out_file_prefix" value="test_1"/>
+            <param name="spin_preset" value="custom"/>
+            <param name="spin" value="H"/>
+            <param name="spin_preset" value="mu"/>
+            <param name="interaction" value="zeeman"/>
+            <param name="zeeman_index" value="1" />
+            <param name="zeeman_vector" value="1 0 0" />
+            <param name="zeeman_index" value="2" />
+            <param name="zeeman_vector" value="2 0 0" />
+            <output name="out_file" file="test_1.in" ftype="txt" compare="diff" />
+        </test>
+        <test>
+            <param name="out_file_prefix" value="test_2"/>
+            <param name="spin_preset" value="e"/>
+            <param name="spin_preset" value="mu"/>
+            <param name="interaction" value="hyperfine"/>
+            <param name="hfine_index" value="1" />
+            <param name="hfine_matrix" value="[1 0 0 sin(10) (5*2) 0 10*pi 5 cos(20)]"/>
+            <param name="time" value="range(0, 0.1)" />
+            <param name="y_axis" value="asymmetry" />
+            <param name="field" value="1.0" />
+            <param name="temperature" value="1.0" />
+            <output name="out_file" file="test_2.in" ftype="txt" compare="diff" />
+        </test>
+        <test>
+            <param name="out_file_prefix" value="test_3"/>
+            <param name="spin_preset" value="custom"/>
+            <param name="spin" value="H"/>
+            <param name="spin_preset" value="mu"/>
+            <param name="spin_preset" value="e"/>
+            <param name="interaction" value="hyperfine"/>
+            <param name="hfine_index" value="2" />
+            <param name="hfine_matrix" value="[580 5  10 5   580 9 10  9   580]"/>
+            <param name="interaction" value="hyperfine"/>
+            <param name="hfine_index" value="3" />
+            <param name="hfine_matrix" value="[(300/2)  3   4*10 ], [3  15*10 6-3+2]  ,[4  5   15 ]"/>
+            <param name="average_axes" value="polarization,temperature" />
+            <param name="experiment_preset" value="alc" />
+            <param name="field" value="range(1.8, 2.6, 100)" />
+            <param name="orientation_preset" value="zcw" />
+            <param name="zcw_n" value="20" />
+            <output name="out_file" file="test_3.in" ftype="txt" compare="diff" />
+        </test>
+        <test>
+            <param name="out_file_prefix" value="test_4"/>
+            <param name="spin_preset" value="custom"/>
+            <param name="spin" value="F"/>
+            <param name="spin_preset" value="custom"/>
+            <param name="spin" value="F"/>
+            <param name="spin_preset" value="mu"/>
+            <param name="interaction" value="dipolar"/>
+            <param name="di_index" value="1"/>
+            <param name="di_index_2" value="2"/>
+            <param name="di_vector" value="0.9 0.9 0"/>
+            <param name="interaction" value="dipolar"/>
+            <param name="di_index" value="1"/>
+            <param name="di_index_2" value="3"/>
+            <param name="di_vector" value="-0.9 -0.9 0"/>
+            <param name="interaction" value="dissipation"/>
+            <param name="dis_index" value="1"/>
+            <param name="dis_val" value="0.5"/>
+            <param name="average_axes" value="" />
+            <param name="experiment_preset" value="custom" />
+            <param name="field" value="1.5e-2 1.0e-2 1.0e-2"/>
+            <param name="field" value="0.01"/>
+            <param name="polarization_preset" value="custom"/>
+            <param name="polarization" value="1 0 0"/>
+            <param name="time" value="range(0,8.0,1000)"/>
+            <param name="time" value="range(0,1.0)"/>
+            <param name="orientation_preset" value="eulrange"/>
+            <param name="eul_n" value="10"/>
+            <output name="out_file" file="test_4.in" ftype="txt" compare="diff" />
+        </test>
+        <test>
+            <param name="out_file_prefix" value="test_5"/>
+            <param name="spin_preset" value="mu"/>
+            <param name="interaction" value="dissipation"/>
+            <param name="dis_index" value="1"/>
+            <param name="dis_val" value="g"/>
+            <param name="experiment_preset" value="custom" />
+            <param name="field" value="1.0/muon_gyr" />
+            <param name="fitting" value="true"/>
+            <param name="var_name" value="g" />
+            <param name="min_bound" value="0.0" />
+            <param name="fitting_tolerance" value="1.0" />
+            <output name="out_file" file="test_5.in" ftype="txt" compare="diff" />
+        </test>
+    </tests>
+    <help><![CDATA[
+    Tool to create input parameter file for Muspinsim.
+
+
+    This tool creates a structured text file with keywords and values which describe the system to model for Muspinsim.
+    See muspinsim docs for more information https://muon-spectroscopy-computational-project.github.io/muspinsim/input/.
+
+
+    Muspinsim allows expressions and special functions to be used when defining certain keywords. This tool also allows this.
+    Check the hint at the bottom of each input to see what, if any, special function or expressions can be used.
+
+
+    Default expressions include the use of the operators :code:`+ - * /` and :code:`^` for exponentiation. Expressions
+    should not contain whitespace. For example, use :code:`1+2` not :code:`1 + 2`.
+
+
+    Default constants include:
+        - :code:`pi`: ratio of a circle and its diameter
+        - :code:`e`: base of the natural logarithm
+        - :code:`deg`: conversion factor between radians and degrees, equivalent to 180/pi
+        - :code:`inf`: infinity
+
+    Special constants include:
+        - :code:`muon_gyr`: gyromagnetic ratio of muon (135.5388 MHz/T)
+        - :code:`MHz`: :code:`1/(2*muon_gyr)`
+
+
+    Default functions include:
+        - :code:`sin(x)`: sine
+        - :code:`cos(x)`: cosine
+        - :code:`tan(x)`: tangent
+        - :code:`arcsin(x)`: inverse of the sine
+        - :code:`arccos(x)`: inverse of the cosine
+        - :code:`arctan(x)`: inverse of the tangent
+        - :code:`arctan2(y, x)`: inverse of the tangent taking two arguments as (sine, cosine) to resolve the quadrant
+        - :code:`exp(x)`: exponential with base e
+        - :code:`log(x)`: natural logarithm
+        - :code:`sqrt(x)`: square root
+
+    Special functions include:
+        - :code:`range(x, y, z)`: get z equally spaced values between x and y
+        - :code:`zcw(n)`: Zaremba-Conroy-Wolfsberg helper function
+        - :code:`eulrange(n)`: helper function to create regular grid of n × n × n Euler angles with appropriate weights.
+
+
+    To enter vectors or matrices the following formats are accepted:
+        - :code:`[[1, 2, 3], [4, 5, 6], [7, 8, 9]]`
+        - :code:`1 2 3 4 5 6 7 8 9`
+        - :code:`[1 2 3] [4 5 6] [7 8 9]`
+
+
+    The fitting (function minimization) algorithms available are:
+
+
+    Nelder-Mead
+        - A direct search method.
+        - Starting with a 'simplex' of candidates, the algorithm will iteratively move the position of the worst candidate towards the optimum until all candidates converge (have values within a predefined tolerance level).
+        - Scipy default tolerance is :code:`1e-4`
+
+
+    L-BFGS
+        - Limited Memory Broyden–Fletcher–Goldfarb–Shanno algorithm.
+        - A second-order Quasi-Newton optimization algorithm
+        - Makes use of second-order derivative (Hessian Matrix) to converge on optimum.
+        - Scipy default tolerance is :code:`1e-5`
+    ]]></help>
+    <citations>
+        <citation type="bibtex">
+            @article{nelder_mead_1965,
+                title={A Simplex Method for Function Minimization},
+                volume={7},
+                doi={10.1093/comjnl/7.4.308},
+                number={4},
+                journal={The Computer Journal},
+                author={Nelder, J. A. and Mead, R.},
+                year={1965},
+                pages={308-313}
+            }
+        </citation>
+        <citation type="bibtex">
+            @book{nocedal_wright_2006,
+                place={New York (NY)},
+                title={Numerical Optimization},
+                publisher={Springer},
+                author={Nocedal, Jorge and Wright, Stephen J},
+                year={2006}
+            }
+        </citation>
+        <citation type="bibtex">
+            @TOOL_CITATION@
+        </citation>
+    </citations>
+</tool>
\ No newline at end of file