<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN" "http://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="other" dtd-version="1.2" xml:lang="en">
    <front>
        <journal-meta>
            <journal-id journal-id-type="pmc">F1000Research</journal-id>
            <journal-title-group>
                <journal-title>F1000Research</journal-title>
            </journal-title-group>
            <issn pub-type="epub">2046-1402</issn>
            <publisher>
                <publisher-name>F1000 Research Limited</publisher-name>
                <publisher-loc>London, UK</publisher-loc>
            </publisher>
        </journal-meta>
        <article-meta>
            <article-id pub-id-type="doi">10.12688/f1000research.5292.2</article-id>
            <article-categories>
                <subj-group subj-group-type="heading">
                    <subject>Software Tool Article</subject>
                </subj-group>
                <subj-group>
                    <subject>Articles</subject>
                    <subj-group>
                        <subject>Theory &amp; Simulation</subject>
                    </subj-group>
                </subj-group>
            </article-categories>
            <title-group>
                <article-title>An object oriented implementation of the Yeadon human inertia model</article-title>
                <fn-group content-type="pub-status">
                    <fn>
                        <p>[version 2; peer review: 2 approved]</p>
                    </fn>
                </fn-group>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author" corresp="yes">
                    <name>
                        <surname>Dembia</surname>
                        <given-names>Christopher</given-names>
                    </name>
                    <xref ref-type="corresp" rid="c1">a</xref>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Moore</surname>
                        <given-names>Jason K.</given-names>
                    </name>
                    <xref ref-type="aff" rid="a2">2</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Hubbard</surname>
                        <given-names>Mont</given-names>
                    </name>
                    <xref ref-type="aff" rid="a3">3</xref>
                </contrib>
                <aff id="a1">
                    <label>1</label>Mechanical Engineering, Stanford University, Stanford, CA, 94305, USA</aff>
                <aff id="a2">
                    <label>2</label>Mechanical Engineering, Cleveland State University, Cleveland, OH, 44115, USA</aff>
                <aff id="a3">
                    <label>3</label>Mechanical and Aerospace Engineering, University of California, Davis, CA, 95616, USA</aff>
            </contrib-group>
            <author-notes>
                <corresp id="c1">
                    <label>a</label>
                    <email xlink:href="mailto:cld72@cornell.edu">cld72@cornell.edu</email>
                </corresp>
                <fn fn-type="con">
                    <p>J.K.M and M.H. conceived of the software tool. C.D. was the primary developer of the software and primary author of the documentation and the paper. J.K.M contributed to the development of the software and authorship of the documentation and the paper. M.H. advised the project and contributed to the writing of the paper. C.D and J.K.M prepared the first draft of the manuscript. All authors were involved in the revision of the draft manuscript and have agreed to the final content.</p>
                </fn>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>The authors have no financial, personal, or professional competing interests that could be construed to unduly influence the content of this article.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>7</day>
                <month>4</month>
                <year>2015</year>
            </pub-date>
            <pub-date pub-type="collection">
                <year>2014</year>
            </pub-date>
            <volume>3</volume>
            <elocation-id>223</elocation-id>
            <history>
                <date date-type="accepted">
                    <day>12</day>
                    <month>3</month>
                    <year>2015</year>
                </date>
            </history>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2015 Dembia C et al.</copyright-statement>
                <copyright-year>2015</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access article distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <self-uri content-type="pdf" xlink:href="https://f1000research.com/articles/3-223/pdf"/>
            <abstract>
                <p>We present an open source software implementation of a popular mathematical method developed by M.R. Yeadon for calculating the body and segment inertia parameters of a human body. The software is written in a high level open source language and provides three interfaces for manipulating the data and the model: a Python API, a command-line user interface, and a graphical user interface. Thus the software can fit into various data processing pipelines and requires only simple geometrical measures as input.</p>
            </abstract>
            <kwd-group kwd-group-type="author">
                <kwd>segmental inertia</kwd>
                <kwd>open source software</kwd>
                <kwd>human movement</kwd>
                <kwd>aerial movement</kwd>
            </kwd-group>
            <funding-group>
                <funding-statement>This material is partially based upon work supported by the National Science Foundation under Grant No. 0928339. The recipients of this grant are Mont Hubbard and Ronald Hess. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation.</funding-statement>
            </funding-group>
        </article-meta>
        <notes>
            <sec sec-type="version-changes">
                <label>Revised</label>
                <title>Amendments from Version 1</title>
                <p>The second version of this paper primarily addresses the reviewers' first round of comments. We have clarified some design decisions, ensured precise software dependency specifications, released a minor update to the software package, and adjusted some of the formatting. The responses to the reviewers and the 
                    <ext-link ext-link-type="uri" xlink:href="https://github.com/chrisdembia/python-yeadon-paper">paper repository</ext-link> provide the full details of the changes.</p>
            </sec>
        </notes>
    </front>
    <body>
        <sec sec-type="intro">
            <title>Introduction</title>
            <p>For dynamic analyses, it is typical to treat the human body as a collection of linked rigid bodies. For accurate simulation and analysis, the inertial properties (mass, center of mass location, and moments of inertia) of each of the body segments must be estimated. Human inertial properties have been measured and estimated in a number of ways. Bjornstrup
                <sup>
                    <xref ref-type="bibr" rid="ref-1">1</xref>
                </sup> gives a detailed overview of mostly invasive methods up to 1995. Many other methods exist, including cadaver measurements
                <sup>
                    <xref ref-type="bibr" rid="ref-2">2</xref>&#x2013;
                    <xref ref-type="bibr" rid="ref-4">4</xref>
                </sup>, photogrammetry
                <sup>
                    <xref ref-type="bibr" rid="ref-5">5</xref>
                </sup>, ray scanning techniques
                <sup>
                    <xref ref-type="bibr" rid="ref-6">6</xref>,
                    <xref ref-type="bibr" rid="ref-7">7</xref>
                </sup>, water displacement
                <sup>
                    <xref ref-type="bibr" rid="ref-8">8</xref>
                </sup>, rotating platforms
                <sup>
                    <xref ref-type="bibr" rid="ref-9">9</xref>
                </sup>, and geometrical estimation of the body segments
                <sup>
                    <xref ref-type="bibr" rid="ref-10">10</xref>
                </sup>.</p>
            <p>Yeadon&#x2019;s mathematical method
                <sup>
                    <xref ref-type="bibr" rid="ref-10">10</xref>
                </sup> is attractive because it requires only a set of simple geometric measurements from a human and provides reasonably accurate estimates of an individual&#x2019;s body segment parameters using simple, straightforward computations. Yeadon himself developed a Fortran program called ISEG in his doctoral work
                <sup>
                    <xref ref-type="bibr" rid="ref-11">11</xref>
                </sup>, to efficiently compute the inertial parameters. The original source code is available in his dissertation but is not adaptable for inclusion in modern software packages, is not copyrighted under a liberal reuse license (i.e., Creative Commons Attribution-NonCommercial-NoDerivs 2.5), and is not very user friendly.</p>
            <p>Because we often make use of Yeadon&#x2019;s model in our research, we developed a modern object oriented program under a permissive license that allows for incorporation into other software packages and includes a graphical user interface for ease of use.</p>
        </sec>
        <sec>
            <title>Yeadon&#x2019;s model</title>
            <p>In 1990 Yeadon published a four-paper series based on his dissertation work concerning simulating human aerial movement, particularly twisting somersaults. His first paper
                <sup>
                    <xref ref-type="bibr" rid="ref-10">10</xref>
                </sup> describes a method for obtaining joint angles from film data, and accordingly develops a scheme to define the orientation of the whole body and the relative orientation of its parts. The second paper
                <sup>
                    <xref ref-type="bibr" rid="ref-12">12</xref>
                </sup> describes in detail the geometry of the human model. The description of the model configuration is contained in the third paper
                <sup>
                    <xref ref-type="bibr" rid="ref-13">13</xref>
                </sup>, which also details the analytical calculation of the angular momentum. The last paper in the series
                <sup>
                    <xref ref-type="bibr" rid="ref-14">14</xref>
                </sup> compares a film recording of the trajectory of an aerial flight to a computer simulation using the model developed in the first three papers.</p>
            <p>Yeadon provides a lucid explanation of the human inertia model in the series described above. In this section, we merely seek to summarize his work. Note that we are not concerned with the angular momentum of the model; rather we are solely interested in the model&#x2019;s inertial properties.</p>
            <p>The model is defined in terms of 
                <italic toggle="yes">segments</italic>, 
                <italic toggle="yes">levels</italic>, and 
                <italic toggle="yes">solids</italic>. These three elements of the model are all shown in 
                <xref ref-type="fig" rid="f1">Figure 1</xref>.</p>
            <fig fig-type="figure" id="f1" orientation="portrait" position="float">
                <label>Figure 1. </label>
                <caption>
                    <title>Measurements required for the human inertia model.</title>
                    <p>The human is defined in terms of segments, levels, and solids. Segments are distinguished by alternating colors, and are denoted as P, A1, etc. Levels are denoted as &#x201c;L&lt;s&gt;#&#x201d;, where &lt;s&gt; denotes a segment of the body (e.g. j for the left leg) and # denotes the index of the level in that segment. The solid that is proximal to level L&lt;s&gt;# is denoted as &#x201c;&lt;s&gt;#&#x201d;. The letter &#x201c;s&#x201d; is used for levels and solids in segments P, T, and C, as is done in Yeadon&#x2019;s original work
                        <sup>
                            <xref ref-type="bibr" rid="ref-12">12</xref>
                        </sup>. The model is personalized via 95 measurements of 4 types: lengths L along the longitudinal axis of the segments, perimeters p about the segments, mediolateral widths w, and anteroposterior depths d. Black dots denote joint centers
                        <sup>
                            <xref ref-type="bibr" rid="ref-10">10</xref>
                        </sup>.</p>
                </caption>
                <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/6668/c8c265fc-6c00-44b2-b261-d9c0ca01309f_figure1.gif"/>
            </fig>
            <list list-type="bullet">
                <list-item>
                    <label/>
                    <p>
                        <bold>Segments</bold>&#x00a0;&#x00a0;&#x00a0;The human is assumed to be composed of eleven rigid segments. Each of the four limbs has two segments, and the remainder (head and torso) consist of three more. Each of these segments is a rigid body, and has at least one rotational degree of freedom with respect to the adjacent segment to which it is attached. The segments are labeled 
                        <bold>C</bold>, 
                        <bold>A1</bold>, etc.</p>
                </list-item>
            </list>
            <list list-type="bullet">
                <list-item>
                    <label/>
                    <p>
                        <bold>Levels</bold>&#x00a0;&#x00a0;&#x00a0;Each segment is defined by a series of parallel transverse cross sections, referred to as levels, both in Yeadon&#x2019;s work and in ours. The model contains a total of 45 levels, labeled 
                        <bold>Ls0</bold>, 
                        <bold>La0</bold>, etc. Each level has the shape of a 
                        <italic toggle="yes">stadium</italic> (see 
                        <xref ref-type="fig" rid="f2">Figure 2</xref>). A stadium can be defined by any two of the following five attributes: its perimeter 
                        <italic toggle="yes">p</italic>, radius 
                        <italic toggle="yes">r</italic>, thickness 
                        <italic toggle="yes">t</italic>, width 
                        <italic toggle="yes">w</italic>, and depth 
                        <italic toggle="yes">d</italic>. However, there are a few situations in which the stadium degenerates into a circle. The choice of which two attributes are used to define a given stadium depends on its location in the body. For example, it is difficult to measure a perimeter around the shoulders (
                        <bold>Ls4</bold>), so a depth is used instead.</p>
                </list-item>
            </list>
            <list list-type="bullet">
                <list-item>
                    <label/>
                    <p>
                        <bold>Solids</bold>&#x00a0;&#x00a0;&#x00a0;The inertial properties of each segment are computed by viewing each segment as a solid lofted through all the levels in the segment. This defines 
                        <italic toggle="yes">N &#x2212;</italic> 1 solids in a segment with 
                        <italic toggle="yes">N</italic> levels. The solids are labeled 
                        <bold>s0</bold>, 
                        <bold>a0</bold>, etc. All solids in a segment share the same longitudinal axis. The shape of a given solid is defined by its two bounding stadia and the longitudinal distance between them (the solid&#x2019;s height). These are termed 
                        <italic toggle="yes">stadium solids</italic>. The only exception is 
                        <bold>s7</bold>, the solid above the ear, which is a semi-ellipsoid. The model contains a total of 40 solids. Note that in this formulation we begin numbering the solids from 0, while Yeadon numbers the solids from 1. This is simply to match Python&#x2019;s 0-based indexing.</p>
                </list-item>
            </list>
            <fig fig-type="figure" id="f2" orientation="portrait" position="float">
                <label>Figure 2. </label>
                <caption>
                    <title>General stadium cross section shape.</title>
                    <p>The levels that define the segments are all in the shape of a stadium, with one exception. A stadium is defined by any two of its attributes: perimeter 
                        <italic toggle="yes">p</italic>, radius 
                        <italic toggle="yes">r</italic>, thickness 
                        <italic toggle="yes">t</italic>, width 
                        <italic toggle="yes">w</italic>, and depth 
                        <italic toggle="yes">d</italic>.</p>
                </caption>
                <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/6668/c8c265fc-6c00-44b2-b261-d9c0ca01309f_figure2.gif"/>
            </fig>
            <p>A key feature of this inertia model is that it can be personalized to a given individual (it is subject specific). The model is personalized via 95 anthropometric measurements. These serve to define each stadium, and to specify the distances between the stadia (the heights of the stadium solids).</p>
            <p>In addition, much of the model&#x2019;s utility comes from the ability to specify the configuration of the human in which the inertial properties are desired. The configuration is specified using 21 joint angles between the various segments; these are described in 
                <xref ref-type="fig" rid="f3">Figure 3</xref>.</p>
            <fig fig-type="figure" id="f3" orientation="portrait" position="float">
                <label>Figure 3. </label>
                <caption>
                    <title>Configuration variables for the human inertia model.</title>
                    <p>The configuration of the human is defined using 21 joint angles, represented by green vectors. Green crosses and circles represent vectors into and out of the page, respectively. The direction of rotation for a joint angle is given by the right-hand rule about its vector. Labels beside the vectors are the names of the configuration variables in the code. The black dot on each segment denote its joint center. The origin of the fixed coordinate frame is at the bottom center of the pelvis segment. The local coordinate frame of each segment is specified by the pair of perpendicular black vectors in or next to the segments. Despite the locations of these black vectors, the origin of a segment&#x2019;s local coordinate system is always at its joint center
                        <sup>
                            <xref ref-type="bibr" rid="ref-13">13</xref>
                        </sup>.</p>
                </caption>
                <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/6668/c8c265fc-6c00-44b2-b261-d9c0ca01309f_figure3.gif"/>
            </fig>
            <p>Thus, Yeadon&#x2019;s model is defined via segments, levels, solids, and configuration angles. One can personalize the model to an individual using measurements, and obtain inertial parameters for this individual in any desired configuration. The only additional data needed are the densities of the solids. We use Dempster&#x2019;s segmental densities
                <sup>
                    <xref ref-type="bibr" rid="ref-2">2</xref>
                </sup> by default, as does Yeadon. But the user has the option to reassign these to alternative values if desired. The model is then completed with analytical expressions for a stadium solid&#x2019;s and semiellipsoid&#x2019;s center of mass location and moments of inertia, using the parallel axis theorem to combine the inertial properties of multiple stadium solids. Yeadon provides these explicit formulae in
                <sup>
                    <xref ref-type="bibr" rid="ref-12">12</xref>
                </sup>. In the next section, we describe in more detail the measurements required for the model and the way the configuration is defined.</p>
        </sec>
        <sec>
            <title>Implementation of Yeadon&#x2019;s model</title>
            <p>The previous section makes no departures from Yeadon&#x2019;s work. However, we will now make some changes that are important for computational implementation and that serve to generalize his work. These are summarized at the end of this section.</p>
            <p>The experimentalist provides all of the measurements, and optionally the configuration angles, in two human readable 
                <ext-link ext-link-type="uri" xlink:href="http://yaml.org/">YAML</ext-link> formatted text files. The details of these inputs follow.</p>
            <sec>
                <title>Measurements</title>
                <p>Measurements are of four types: lengths (
                    <bold>L</bold>), perimeters (
                    <bold>p</bold>), widths (
                    <bold>w</bold>), and depths (
                    <bold>d</bold>) and are always tied to a level. For example, the symbol 
                    <bold>La1p</bold> denotes the perimeter at the 
                    <bold>La1</bold> level.</p>
                <p>Although we require the heights of the individual stadium solids, the experimentalist does not measure these independently. Instead, measurements are made of the longitudinal distance across multiple stadium solids. For example, the 
                    <bold>Ls2L</bold> measurement is not the distance between the 
                    <bold>Ls1</bold> and 
                    <bold>Ls2</bold> levels. Instead, 
                    <bold>Ls2L</bold> is measured as a distance from 
                    <bold>Ls0</bold>. To learn the levels from which one measures the various lengths, see 
                    <xref ref-type="table" rid="T1">Table 1</xref>.</p>
                <table-wrap id="T1" orientation="portrait" position="anchor">
                    <label>Table 1. </label>
                    <caption>
                        <title>Length measurements.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="center" colspan="1" rowspan="1">length for these levels</th>
                                <th align="center" colspan="1" rowspan="1">are measured
                                    <break/>from this level</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="center" colspan="1" rowspan="1">Ls1 - Ls5</td>
                                <td align="center" colspan="1" rowspan="1">Ls0</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1">Ls6 - Ls8</td>
                                <td align="center" colspan="1" rowspan="1">Ls5</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1">La2 - La4</td>
                                <td align="center" colspan="1" rowspan="1">La0</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1">La5 - La7</td>
                                <td align="center" colspan="1" rowspan="1">La4</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1">Lb2 - Lb4</td>
                                <td align="center" colspan="1" rowspan="1">Lb0</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1">Lb5 - Lb7</td>
                                <td align="center" colspan="1" rowspan="1">Lb4</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1">Lj1, Lj3 - Lj5</td>
                                <td align="center" colspan="1" rowspan="1">Lj0</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1">Lj8 - Lj9</td>
                                <td align="center" colspan="1" rowspan="1">Lj5</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1">Lk1, Lk3 - Lk5</td>
                                <td align="center" colspan="1" rowspan="1">Lk0</td>
                            </tr>
                            <tr>
                                <td align="center" colspan="1" rowspan="1">Lk8 - Lk9</td>
                                <td align="center" colspan="1" rowspan="1">Lk5</td>
                            </tr>
                        </tbody>
                    </table>
                    <table-wrap-foot>
                        <fn>
                            <p>The length measurements are not simply the heights of the stadium solids. They are defined relative to a certain
preceding level in their segment.</p>
                        </fn>
                    </table-wrap-foot>
                </table-wrap>
                <p>There are a few exceptions to the general measurement scheme we have described thus far. While most of the lengths are measured directly, some are determined by other lengths. For example, we set 
                    <bold>La1L</bold> to be half of 
                    <bold>La2L</bold>, and so the experimentalist does not measure 
                    <bold>La1L</bold> directly. This means, however, that 
                    <bold>La1p</bold> must be measured halfway down segment 
                    <bold>A1</bold>. This scenario arises in each limb.</p>
                <p>All stadia are oriented mediolaterally except the heels (levels 
                    <bold>Lj6</bold> and 
                    <bold>Lk6</bold>) which are oriented anteroposteriorily. Note from 
                    <xref ref-type="fig" rid="f1">Figure 1</xref> that one measures a depth at these levels instead of a width. This depth is in fact the width of a stadium that is rotated through 90 degrees. Other necessary information about exceptions in the measurement scheme is contained in the notes of 
                    <xref ref-type="fig" rid="f1">Figure 1</xref>.</p>
                <p>Since the densities for the model are provided, one can readily estimate the human&#x2019;s total mass. However, if the experimentalist measures the mass of the subject, that mass can be used to proportionally scale all densities in the model so that the model&#x2019;s total mass matches the subject&#x2019;s measured mass. Be aware that scaling the densities by the total mass is not a guarantee that errors in all the inertial estimates are reduced.</p>
            </sec>
            <sec>
                <title>Configuration</title>
                <p>In this section we describe, relying heavily on 
                    <xref ref-type="fig" rid="f3">Figure 3</xref>, how the configuration of the model is implemented. The joint center of each segment is located with a black dot: it is always located at the center of the base stadium of the segment. The black arrows on each segment indicate its local coordinate frame, whose origin is always at the joint center of the segment. For each segment, the local 
                    <italic toggle="yes">z</italic>-axis is the longitudinal axis of the segment. Each of the green arrows represents a degree of freedom, and indicates the direction and sign of the corresponding joint angle via the right-hand rule. Configuration variables are labeled with the names of the two segments at the joint, and a physiological description of the joint angle. Thus, 
                    <monospace>K1K2flexion</monospace> is the right knee flexion angle, and 
                    <monospace>PK1abduction</monospace> is the right hip abduction angle (positive for abduction, negative for adduction), etc. The exceptions to this naming convention are 
                    <monospace>somersault</monospace>, 
                    <monospace>tilt</monospace>, and 
                    <monospace>twist</monospace>, which specify the orientation of the 
                    <bold>P</bold> segment with respect to the fixed coordinate frame.</p>
                <p>Most joints enable more than one degree of freedom, but only four have all three rotational degrees of freedom. Since rotations are not commutative, we must specify the order of rotations at multi-degree of freedom joints. Each child segment is rotated relative to its parent segment using Euler X-Y-Z angles in a body fixed fashion. Any joints with fewer than three angles follow this same order, e.g. X-Y.</p>
                <p>The default configuration is that in which all configuration variables have a value of zero. In the default configuration, the local coordinate basis vectors of all segments align with the global fixed coordinate basis vectors. This means that for each segment, in the default configuration, the local 
                    <italic toggle="yes">x</italic>-axis lies in a coronal plane and the local 
                    <italic toggle="yes">y</italic>-axis is directed posteriorly. Furthermore, it is assumed that in this configuration, the palms of the hands face anteriorly. We now provide the locations of joint centers in our implementation of Yeadon&#x2019;s model; this information is not in his original papers. The location of the joint centers of segments 
                    <bold>A1</bold> and 
                    <bold>B1</bold> are at the most distal points of level 
                    <bold>Ls4</bold> on the respective sides of the body. Joint center locations for segments 
                    <bold>J1</bold> and 
                    <bold>K1</bold>, respectively denoted as 
                    <bold>p
                        <sub>J</sub>
                    </bold> and 
                    <bold>p
                        <sub>K</sub>
                    </bold>, lie within level 
                    <bold>Ls0</bold> and can be expressed in the local coordinate frame of the pelvis 
                    <bold>P</bold>:</p>
                <p>
                    <disp-formula id="e1">
                        <mml:math display="block" id="math1">
                            <mml:mrow>
                                <mml:msub>
                                    <mml:mo mathvariant="bold">p</mml:mo>
                                    <mml:mo mathvariant="bold">J</mml:mo>
                                </mml:msub>
                                <mml:mo>=</mml:mo>
                            </mml:mrow>
                            <mml:mfrac>
                                <mml:mn>1</mml:mn>
                                <mml:mn>2</mml:mn>
                            </mml:mfrac>
                            <mml:mrow>
                                <mml:mo>(</mml:mo>
                                <mml:msub>
                                    <mml:mi>t</mml:mi>
                                    <mml:mtext>Ls0</mml:mtext>
                                </mml:msub>
                                <mml:mo>+</mml:mo>
                                <mml:msub>
                                    <mml:mi>r</mml:mi>
                                    <mml:mtext>Ls0</mml:mtext>
                                </mml:msub>
                                <mml:mo>)</mml:mo>
                            </mml:mrow>
                            <mml:mover accent="true">
                                <mml:mo mathvariant="bold">i</mml:mo>
                                <mml:mo>&#x02c6;</mml:mo>
                            </mml:mover>
                            <mml:mo>&#x2009;</mml:mo>
                            <mml:mo>&#x2009;</mml:mo>
                            <mml:mo>&#x2009;</mml:mo>
                            <mml:mo>&#x2009;</mml:mo>
                            <mml:mo>&#x2009;</mml:mo>
                            <mml:mo>&#x2009;</mml:mo>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mn>1</mml:mn>
                            <mml:mo stretchy="false">)</mml:mo>
                        </mml:math>
                    </disp-formula>
                </p>
                <p>
                    <disp-formula id="e2">
                        <mml:math display="block" id="math2">
                            <mml:mrow>
                                <mml:msub>
                                    <mml:mo mathvariant="bold">p</mml:mo>
                                    <mml:mo mathvariant="bold">K</mml:mo>
                                </mml:msub>
                                <mml:mo>=</mml:mo>
                            </mml:mrow>
                            <mml:mo>&#x2013;</mml:mo>
                            <mml:mfrac>
                                <mml:mn>1</mml:mn>
                                <mml:mn>2</mml:mn>
                            </mml:mfrac>
                            <mml:mrow>
                                <mml:mo>(</mml:mo>
                                <mml:msub>
                                    <mml:mi>t</mml:mi>
                                    <mml:mtext>Ls0</mml:mtext>
                                </mml:msub>
                                <mml:mo>+</mml:mo>
                                <mml:msub>
                                    <mml:mi>r</mml:mi>
                                    <mml:mtext>Ls0</mml:mtext>
                                </mml:msub>
                                <mml:mo>)</mml:mo>
                            </mml:mrow>
                            <mml:mover accent="true">
                                <mml:mo mathvariant="bold">i</mml:mo>
                                <mml:mo>&#x02c6;</mml:mo>
                            </mml:mover>
                            <mml:mo>,</mml:mo>
                            <mml:mo>&#x2009;</mml:mo>
                            <mml:mo>&#x2009;</mml:mo>
                            <mml:mo>&#x2009;</mml:mo>
                            <mml:mo>&#x2009;</mml:mo>
                            <mml:mo>&#x2009;</mml:mo>
                            <mml:mo>&#x2009;</mml:mo>
                            <mml:mo stretchy="false">(</mml:mo>
                            <mml:mn>2</mml:mn>
                            <mml:mo stretchy="false">)</mml:mo>
                        </mml:math>
                    </disp-formula>
                </p>
                <p>where 
                    <mml:math id="math6">
                        <mml:mover accent="true">
                            <mml:mo mathvariant="bold">i</mml:mo>
                            <mml:mo>&#x02c6;</mml:mo>
                        </mml:mover>
                    </mml:math> is a unit vector along the 
                    <italic toggle="yes">x</italic>-axis of the pelvis, 
                    <italic toggle="yes">t</italic>
                    <sub>Ls0</sub> is the thickness of the stadium at level 
                    <bold>Ls0</bold> and 
                    <italic toggle="yes">r</italic>
                    <sub>Ls0</sub> is its radius. This choice is informed by calculations present in the ISEG code published in Yeadon's thesis
                    <sup>
                        <xref ref-type="bibr" rid="ref-11">11</xref>
                    </sup>; in fact, Yeadon defines the origin of the model (and of level 
                    <bold>Ls0</bold>) as the midpoint of the two hip joint centers. Joint center locations in all other segments are at the center of the last stadium in the preceding segment.</p>
                <p>The model does not contain joints at the wrist or ankle, which is consistent with Yeadon&#x2019;s model
                    <sup>
                        <xref ref-type="bibr" rid="ref-13">13</xref>
                    </sup>. Since these joints have a small effect on the inertial properties of the whole body, the exclusion of these joints should be fine for many use cases. However, the modular structure of the software allows one to easily modify the software to create these joints, if necessary.</p>
            </sec>
            <sec>
                <title>Departures from Yeadon&#x2019;s work</title>
                <p>There are a few ways in which our implementation of the human inertia model differs from that presented in Yeadon's papers
                    <sup>
                        <xref ref-type="bibr" rid="ref-10">10</xref>,
                        <xref ref-type="bibr" rid="ref-12">12</xref>&#x2013;
                        <xref ref-type="bibr" rid="ref-14">14</xref>
                    </sup>. Some of these differences arise from the fact that his work was tailored for aerial movement, more specifically for twisting somersaults. We expect, however, that our implementation of the model can be used in a more general set of investigations.</p>
                <list list-type="bullet">
                    <list-item>
                        <label/>
                        <p>
                            <bold>Symmetry of limbs</bold>&#x00a0;&#x00a0;&#x00a0;Yeadon averages the measurements for the left and right limbs so that the model is symmetric. We provide the user with the option of imposing this symmetry, but the averaging is not performed by default.</p>
                    </list-item>
                </list>
                <list list-type="bullet">
                    <list-item>
                        <label/>
                        <p>
                            <bold>Acromion stadia</bold>&#x00a0;&#x00a0;&#x00a0;One can see that there are actually two different cross sections at the acromion level 
                            <bold>Ls5</bold>: we use the wider one for solid 
                            <bold>s4</bold> in the chest and the thinner one (actually, a circle) for solid 
                            <bold>s5</bold> in the head. The perimeter measurement at 
                            <bold>Ls5</bold> is used for the bottom of 
                            <bold>s5</bold>. In our implementation, the stadium at the top of 
                            <bold>s4</bold> is determined internally by the 
                            <bold>Ls4</bold> stadium by:</p>
                    </list-item>
                </list>
                <p>
                    <disp-formula id="e3">
                        <mml:math display="block" id="math3">
                            <mml:mrow>
                                <mml:msub>
                                    <mml:mi>r</mml:mi>
                                    <mml:mrow>
                                        <mml:mtext>Ls5</mml:mtext>
                                    </mml:mrow>
                                </mml:msub>
                                <mml:mo>=</mml:mo>
                                <mml:mn>0.57</mml:mn>
                                <mml:msub>
                                    <mml:mi>r</mml:mi>
                                    <mml:mrow>
                                        <mml:mtext>Ls4</mml:mtext>
                                    </mml:mrow>
                                </mml:msub>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo stretchy="false">(</mml:mo>
                                <mml:mn>3</mml:mn>
                                <mml:mo stretchy="false">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
                    </disp-formula>
                </p>
                <p>
                    <disp-formula id="e4">
                        <mml:math display="block" id="math4">
                            <mml:mrow>
                                <mml:msub>
                                    <mml:mi>t</mml:mi>
                                    <mml:mrow>
                                        <mml:mtext>Ls5</mml:mtext>
                                    </mml:mrow>
                                </mml:msub>
                                <mml:mo>=</mml:mo>
                                <mml:mfrac>
                                    <mml:mn>1</mml:mn>
                                    <mml:mn>2</mml:mn>
                                </mml:mfrac>
                                <mml:msub>
                                    <mml:mi>w</mml:mi>
                                    <mml:mrow>
                                        <mml:mtext>Ls4</mml:mtext>
                                    </mml:mrow>
                                </mml:msub>
                                <mml:mo>&#x2212;</mml:mo>
                                <mml:mtext>&#x200b;</mml:mtext>
                                <mml:msub>
                                    <mml:mi>r</mml:mi>
                                    <mml:mrow>
                                        <mml:mtext>Ls5</mml:mtext>
                                    </mml:mrow>
                                </mml:msub>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo stretchy="false">(</mml:mo>
                                <mml:mn>4</mml:mn>
                                <mml:mo stretchy="false">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
                    </disp-formula>
                </p>
                <list list-type="bullet">
                    <list-item>
                        <label/>
                        <p>where 
                            <italic toggle="yes">r</italic>
                            <sub>Ls5</sub> and 
                            <italic toggle="yes">t</italic>
                            <sub>Ls5</sub> are the radius and thickness for the top stadium of 
                            <bold>s4</bold>, respectively, and 
                            <italic toggle="yes">r</italic>
                            <sub>Ls4</sub> and 
                            <italic toggle="yes">w</italic>
                            <sub>Ls4</sub> are the radius and width of the stadium at level 
                            <bold>Ls4</bold>, respectively. This issue is not addressed in Yeadon's papers
                            <sup>
                                <xref ref-type="bibr" rid="ref-10">10</xref>,
                                <xref ref-type="bibr" rid="ref-12">12</xref>&#x2013;
                                <xref ref-type="bibr" rid="ref-14">14</xref>
                            </sup>, and our implementation disagrees with the ISEG code found in Yeadon's thesis
                            <sup>
                                <xref ref-type="bibr" rid="ref-11">11</xref>
                            </sup> (see page 358 line 251). The justification for our choice is to agree with a more recent version of Yeadon&#x2019;s code, provided to us in a personal communication.</p>
                    </list-item>
                </list>
                <list list-type="bullet">
                    <list-item>
                        <label/>
                        <p>
                            <bold>Hip joint center stadia in the thigh</bold>&#x00a0;&#x00a0;&#x00a0;The experimentalist makes no measurements at the 
                            <bold>Lj0</bold> or 
                            <bold>Lk0</bold> stadia, though these stadia must be defined in order for solids 
                            <bold>j0</bold> and 
                            <bold>k0</bold> to be defined. In our implementation, these stadia are circles with the same radius:</p>
                    </list-item>
                </list>
                <p>
                    <disp-formula id="e5">
                        <mml:math display="block" id="math5">
                            <mml:mrow>
                                <mml:msub>
                                    <mml:mi>r</mml:mi>
                                    <mml:mrow>
                                        <mml:mtext>Lj0</mml:mtext>
                                    </mml:mrow>
                                </mml:msub>
                                <mml:mo>=</mml:mo>
                                <mml:msub>
                                    <mml:mi>r</mml:mi>
                                    <mml:mrow>
                                        <mml:mtext>Lk0</mml:mtext>
                                    </mml:mrow>
                                </mml:msub>
                                <mml:mo>=</mml:mo>
                                <mml:mfrac>
                                    <mml:mn>1</mml:mn>
                                    <mml:mn>2</mml:mn>
                                </mml:mfrac>
                                <mml:msqrt>
                                    <mml:mrow>
                                        <mml:msub>
                                            <mml:mi>r</mml:mi>
                                            <mml:mrow>
                                                <mml:mtext>Ls0</mml:mtext>
                                            </mml:mrow>
                                        </mml:msub>
                                        <mml:msub>
                                            <mml:mi>w</mml:mi>
                                            <mml:mrow>
                                                <mml:mtext>Ls0</mml:mtext>
                                            </mml:mrow>
                                        </mml:msub>
                                    </mml:mrow>
                                </mml:msqrt>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo>&#x2009;</mml:mo>
                                <mml:mo stretchy="false">(</mml:mo>
                                <mml:mn>5</mml:mn>
                                <mml:mo stretchy="false">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
                    </disp-formula>
                </p>
                <list list-type="bullet">
                    <list-item>
                        <label/>
                        <p>where 
                            <italic toggle="yes">r</italic>
                            <sub>Ls0</sub> and 
                            <italic toggle="yes">w</italic>
                            <sub>Ls0</sub> are the radius and width of the 
                            <bold>Ls0</bold> stadium, respectively. As with the acromion stadia mentioned above, the justification is that this has been implemented in the more recent version of the code shared with us.</p>
                    </list-item>
                </list>
                <list list-type="bullet">
                    <list-item>
                        <label/>
                        <p>
                            <bold>Relationships between configuration variables</bold>&#x00a0;&#x00a0;&#x00a0;Yeadon enforced relationships between certain configuration variables, such as symmetric movement of the legs with respect to the pelvis. We neither assume nor impose any relationships between the 21 joint angle configuration variables; all are independent. As a result our model allows the body to assume any geometrically feasible configuration with physiological bounds.</p>
                    </list-item>
                </list>
                <list list-type="bullet">
                    <list-item>
                        <label/>
                        <p>
                            <bold>Inconsistent measurements</bold>&#x00a0;&#x00a0;&#x00a0;The ratio of a stadium&#x2019;s perimeter to its width must be greater than 2 and less than 
                            <italic toggle="yes">&#x03c0;</italic>. If the measurements do not satisfy these constraints, then the stadium is assumed to be a circle. This scenario is not discussed by Yeadon.</p>
                    </list-item>
                </list>
                <list list-type="bullet">
                    <list-item>
                        <label/>
                        <p>
                            <bold>Degenerate stadia</bold>&#x00a0;&#x00a0;&#x00a0;In the case where a stadium has zero thickness (a circle), the stadium is degenerate and some equations have a zero in the denominator; however, the resulting shape is still valid. In this scenario, Yeadon still employs the formulae for stadium solids but sets the thickness to be very small
                            <sup>
                                <xref ref-type="bibr" rid="ref-12">12</xref>
                            </sup>. Instead, we manipulate the equations so that the approximation is not necessary. In the case that only one of the stadia for a solid has zero thickness, the divide-by-zero issue is removed by computing the mass properties for the stadium solid in which the two stadia are swapped. However, this manipulation does not work if both stadia have zero thickness; for this case, we compute the inertial properties of a truncated cone; see code for details.</p>
                    </list-item>
                </list>
                <list list-type="bullet">
                    <list-item>
                        <label/>
                        <p>
                            <bold>Joint center of chest-head segment</bold>&#x00a0;&#x00a0;&#x00a0;We locate the joint center between the torso 
                            <bold>T</bold> and the chest-head 
                            <bold>C</bold> at the center of level 
                            <bold>Ls3</bold>. This is in accordance with 
                            <xref ref-type="fig" rid="f1">Figure 1</xref> of Yeadon's 3rd 1990 paper
                            <sup>
                                <xref ref-type="bibr" rid="ref-13">13</xref>
                            </sup>. However, this is a departure from the code in Yeadon's thesis
                            <sup>
                                <xref ref-type="bibr" rid="ref-11">11</xref>
                            </sup>, in which the joint center of the chest-head is placed at the midpoint of the shoulder joint centers.</p>
                    </list-item>
                </list>
            </sec>
        </sec>
        <sec>
            <title>Software design</title>
            <p>We implemented the inertia model in the Python programming language
                <sup>
                    <xref ref-type="bibr" rid="ref-15">15</xref>
                </sup> as a package named 
                <monospace>yeadon</monospace> (yeadon only supports Python 2.7). Python was chosen due to its ease of use, wide adoption, its stable infrastructure for distributing open source software, and its strong scientific community (
                <ext-link ext-link-type="uri" xlink:href="http://www.scipy.org/">SciPy</ext-link>).</p>
            <p>The input to 
                <monospace>yeadon</monospace> consists of (1) geometric measurements of a subject, and (2) joint configuration angles. Using these two inputs, the inertial properties of the subject in this configuration can be calculated.</p>
            <p>The 
                <monospace>yeadon</monospace> package contains 5 modules: 
                <monospace>human</monospace>, 
                <monospace>segment</monospace>, 
                <monospace>solid</monospace>, 
                <monospace>ui</monospace>, and 
                <monospace>gui</monospace>. The 
                <monospace>human</monospace> module contains the public interface of the package, and the 
                <monospace>segment</monospace> and 
                <monospace>solid</monospace> modules are used internally to construct objects available in the 
                <monospace>human</monospace> module. The user interacts either directly with the 
                <monospace>human</monospace> module, or via the 
                <monospace>ui</monospace> or 
                <monospace>gui</monospace> modules, both of which are clients to the 
                <monospace>human</monospace> module. The 
                <monospace>human</monospace> module contains only the 
                <monospace>Human</monospace> class, the 
                <monospace>segment</monospace> module contains only the 
                <monospace>Segment</monospace> class, and the 
                <monospace>solid</monospace> module contains the 
                <monospace>Stadium</monospace>, 
                <monospace>Solid</monospace>, 
                <monospace>StadiumSolid</monospace>, and 
                <monospace>Semiellipsoid</monospace> classes. The package relies heavily on composition. The 
                <monospace>Human</monospace> constructor constructs all 
                <monospace>Stadium</monospace>&#x2019;s, 
                <monospace>Solid</monospace>&#x2019;s, and 
                <monospace>Segment</monospace>&#x2019;s, and ties together these objects appropriately. A visual description of the class hierarchy is shown in the UML diagram in 
                <xref ref-type="fig" rid="f4">Figure 4</xref>. The GUI is built using Mayavi
                <sup>
                    <xref ref-type="bibr" rid="ref-16">16</xref>
                </sup> which is both a high level Python interface to the Visualization Tool Kit
                <sup>
                    <xref ref-type="bibr" rid="ref-17">17</xref>
                </sup> and a lightweight application framework. We utilized Mayavi&#x2019;s ability to rapidly create cross platform graphical interfaces to expose the underlying 
                <monospace>yeadon</monospace> classes through interactive widgets. The graphical user interface shown in 
                <xref ref-type="fig" rid="f5">Figure 5</xref> allows the user to load measurement data files, adjust configuration variables interactively, view the human body&#x2019;s mass center location, visualize its inertia ellipsoid, and view the resulting whole-body inertial properties.</p>
            <fig fig-type="figure" id="f4" orientation="portrait" position="float">
                <label>Figure 4. </label>
                <caption>
                    <title>UML diagram of Yeadon package.</title>
                    <p>The Human class constructs all 
                        <monospace>Segment</monospace>&#x2019;s, 
                        <monospace>Solid</monospace>&#x2019;s, and 
                        <monospace>Stadium</monospace>&#x2019;s, and assembles them appropriately. The classes 
                        <monospace>StadiumSolid</monospace> and 
                        <monospace>Semiellipsoid</monospace> inherit from 
                        <monospace>Solid</monospace>. The user interacts with the software through the attributes or methods of the 
                        <monospace>Human</monospace> class, or via the 
                        <monospace>ui</monospace> or 
                        <monospace>gui</monospace> modules. This diagram does not reveal the entire public interface of the classes shown. The mass properties 
                        <monospace>center_of_mass</monospace> and 
                        <monospace>inertia</monospace> (tensor) are expressed in the global frame; quantities prefixed with 
                        <monospace>rel</monospace> are expressed in the Segment or Solid frame. The attribute 
                        <monospace>CFG</monospace> contains the configuration of the Human. See 
                        <monospace>yeadon&#x2019;s</monospace> documentation for more information.</p>
                </caption>
                <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/6668/c8c265fc-6c00-44b2-b261-d9c0ca01309f_figure4.gif"/>
            </fig>
            <fig fig-type="figure" id="f5" orientation="portrait" position="float">
                <label>Figure 5. </label>
                <caption>
                    <title>Screenshot of the GUI application.</title>
                    <p>A screenshot of the Mayavi GUI application (QT backend) running on Ubuntu 14.04 is shown. The user can supply the path to measurement YAML files to obtain inertial properties for a specific subject. The graphics window on the left shows a 3D view of the model. The viewing angle, camera perspective, and other details can be manipulated with a mouse or from the toolbar above the window. Tabs on the right provide sliders and text inputs for all 21 configuration variables and allow the user to interactively set the configuration. The configuration limits attempt to prevent unphysiological configurations and do not necessarily reflect the range of motion of the subject. The &#x201c;Reset Configuration&#x201d; button sets all the configuration variables to zero. The mass center and inertia ellipsoid for the entire body can be toggled with the checkboxes. Finally, the whole-body mass, center of mass coordinates, and inertia tensor are displayed in the bottom right and are updated interactively as the configuration is altered.</p>
                </caption>
                <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/6668/c8c265fc-6c00-44b2-b261-d9c0ca01309f_figure5.gif"/>
            </fig>
            <p>The primary outputs of the software include: 
                <list list-type="bullet">
                    <list-item>
                        <p>Whole-body inertial properties of the model in any given configuration with respect to any point and reference frame.</p>
                    </list-item>
                    <list-item>
                        <p>Segment-fixed inertial properties for any single solid or any combination of solids.</p>
                    </list-item>
                    <list-item>
                        <p>Visual depiction of the model in a given configuration. These can be exported to bitmap files.</p>
                    </list-item>
                </list>
				</p>
            <p>The software provides inertial properties (mass, center of mass location, and moments of inertia) for the whole human, for an individual segment, for an individual solid, or for any combination of segments and solids. In the first case of the whole human, center of mass locations and moments of inertia are expressed in the global coordinate frame. This frame has its origin at the bottom center of solid 
                <bold>s0</bold>, and is aligned with the local frame of segment 
                <bold>P</bold> when 
                <monospace>somersault</monospace>, 
                <monospace>tilt</monospace>, and 
                <monospace>twist</monospace> are zero. In the cases of individual segments or solids, inertial properties are expressed in either the local frame of the particular segment or in the fixed frame. Inertial properties for any other combination are expressed in the fixed frame.</p>
        </sec>
        <sec>
            <title>Usage</title>
            <p>We begin our description of how one uses 
                <monospace>yeadon</monospace> with an example of an ice skater performing a spin. As is commonly taught in high school physics, an ice skater can change his angular velocity by altering their moment of inertia due to conservation of angular momentum. By what factor can an ice skater increase his angular velocity by bringing in his arms? The commands in 
                <xref ref-type="other" rid="L1">Listing 1</xref> perform this calculation.</p>
            <p>The subject represented by the measurements in 
                <monospace>male1.txt</monospace> can increase his angular velocity (about the vertical axis) by a factor of 2.9 by bringing the arms in toward the body from an extended position. 
                <xref ref-type="fig" rid="f6">Figure 6</xref> shows a rendering of a human in a more complicated and asymmetrical ice skating spin pose to demonstrate that the model is capable of complex configurations. We can also obtain the mass and center of mass location of the whole human with the code presented in 
                <xref ref-type="other" rid="L2">Listing 2</xref>.</p>
            <fig fig-type="figure" id="f6" orientation="portrait" position="float">
                <label>Figure 6. </label>
                <caption>
                    <title>View of the ice skater model in an asymmetrical spin pose.</title>
                    <p>An ice skater can increase the axial moment of inertia by extending their limbs away from the spin axis. The right image shows both the center of mass sphere and the inertia ellipsoid for this pose. Note that the center of mass is actually outside of the body for the gravitational force resultant to be directed through the ground contact point.</p>
                </caption>
                <graphic orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/6668/c8c265fc-6c00-44b2-b261-d9c0ca01309f_figure6.gif"/>
            </fig>
            <p>With a measurement of the subject&#x2019;s actual mass, we can scale all the segmental densities so that 
                <monospace>h.mass</monospace> is the same as our experimentally measured mass; see 
                <xref ref-type="other" rid="L3">Listing 3</xref>.</p>
            <p>It is also possible to calculate the combined inertia properties of various segments and/or solids. For example, we can obtain the mass, center of mass location, and inertia tensor of the entire right arm via the code in 
                <xref ref-type="other" rid="L4">Listing 4</xref>.</p>
            <p>All of the methods have rich docstrings accessible via the Python 
                <monospace>help()</monospace> function. For example, the previous method&#x2019;s docstring shows the three returned values in 
                <xref ref-type="other" rid="L5">Listing 5</xref>.</p>
            <p>
                <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#008000;">import</styled-content> 
                    <styled-content style="font-size:15px;color:#0000FF;">yeadon</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;">pi</styled-content> 
                    <styled-content style="font-size:15px;color:#666666;">= 3.14159</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#408080;"># Load a prepared measurements file.</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;">h</styled-content> 
                    <styled-content style="font-size:15px;color:#666666;">=</styled-content> yeadon
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">Human(</styled-content>
                    <styled-content style="font-size:15px;color:#BA2121;">&#x2019;male1.txt&#x2019;</styled-content>
                    <styled-content style="font-size:15px;">)</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#408080;"># Create a 3D rendering of the model.</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;">h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">draw()</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#408080;"># Print the moment inertia about the global Z axis.</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#008000;">print</styled-content>
                    <styled-content style="font-size:15px;">(</styled-content>
                    <styled-content style="font-size:15px;color:#BA2121;">&#x2019;Arms down: {:.2f} kg-m^2&#x2019;</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">format(h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">inertia[</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">2</styled-content>
                    <styled-content style="font-size:15px;">,</styled-content> 
                    <styled-content style="font-size:15px;color:#666666;">2</styled-content>
                    <styled-content style="font-size:15px;">])</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#666666;">Arms down: 0.55 kg-m^2</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#408080;"># Set the configuration of the shoulder angle.</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;">h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">set_CFG(</styled-content>
                    <styled-content style="font-size:15px;color:#BA2121;">&#x2019;CA1adduction&#x2019;</styled-content>
                    <styled-content style="font-size:15px;">,</styled-content> 
                    <styled-content style="font-size:15px;color:#666666;">-0.5 *</styled-content> 
                    <styled-content style="font-size:15px;">pi)</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;">h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">set_CFG(</styled-content>
                    <styled-content style="font-size:15px;color:#BA2121;">&#x2019;CB1abduction&#x2019;</styled-content>
                    <styled-content style="font-size:15px;">,</styled-content> 
                    <styled-content style="font-size:15px;color:#666666;">0.5 *</styled-content> 
                    <styled-content style="font-size:15px;">pi)</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#408080;"># Print the updated moment inertia about the global Z axis.</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#008000;">print</styled-content>
                    <styled-content style="font-size:15px;">(</styled-content>
                    <styled-content style="font-size:15px;color:#BA2121;">&#x2019;Arms out: {:.2f} kg-m^2&#x2019;</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">format(h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">inertia[</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">2</styled-content>
                    <styled-content style="font-size:15px;">,</styled-content> 
                    <styled-content style="font-size:15px;color:#666666;">2</styled-content>
                    <styled-content style="font-size:15px;">]))</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#666666;">Arms out: 1.58 kg-m^2</styled-content>
                </preformat>
            </p>
            <p id="L1">
                <bold>
                    <styled-content style="#CA6538" style-type="color">Listing 1.</styled-content> Python interpreter session showing how one could compute the spin moment of inertia of an ice skater in two configurations.</bold>
            </p>
            <p>
                <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;">h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">mass</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#666666;">58.200488588422544</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;">h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">center_of_mass</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#666666;">array([[ -9.53791842e-19],
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;[ &#x00a0;0.00000000e+00],
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;[ &#x00a0;3.77172308e-02]])</styled-content>
                </preformat>
            </p>
            <p id="L2">
                <bold>
                    <styled-content style="#CA6538" style-type="color">Listing 2.</styled-content> Python interpreter session demonstrating accessing the attributes for mass and center of mass.</bold>
            </p>
            <p>
                <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#408080;"># Print the mass of the left leg.</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;">h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">K1</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">mass</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#666666;">8.5047753220376521</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#408080;"># Scale the density values based on the measured mass.</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;">h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">scale_human_by_mass(</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">60.0</styled-content>
                    <styled-content style="font-size:15px;">)</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#408080;"># The overall mass is updated.</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;">h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">mass</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#666666;">60.0</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#408080;"># A slight increase in the segment mass can be seen.</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;">h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">K1</styled-content>.
                    <styled-content style="font-size:15px;">mass</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#666666;">8.767736005291324</styled-content>
                </preformat>
            </p>
            <p id="L3">
                <bold>
                    <styled-content style="#CA6538" style-type="color">Listing 3.</styled-content> Python interpreter session which demonstrates segment density scaling.</bold>
            </p>
            <p>
                <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;color:#408080;"># Generate the mass, center of mass, and inertia tensor for the right arm.</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content> 
                    <styled-content style="font-size:15px;">h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">combine_inertia([</styled-content>
                    <styled-content style="font-size:15px;color:#BA2121;">&#x2019;B1&#x2019;</styled-content>
                    <styled-content style="font-size:15px;">,</styled-content> 
                    <styled-content style="font-size:15px;color:#BA2121;">&#x2019;B2&#x2019;</styled-content>
                    <styled-content style="font-size:15px;">])</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#666666;">Combining segments/solids [&#x2019;B1&#x2019;, &#x2019;B2&#x2019;].
&#x00a0;&#x00a0;&#x00a0;&#x00a0;(2.8193675676892624,
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;array([[-0.1515&#x00a0;&#x00a0;&#x00a0;&#x00a0;],
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;[ 0.&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;],
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;[ 0.19831659]]),
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;matrix([[ 0.09098096,&#x00a0;&#x00a0;0.&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;,&#x00a0; 0.&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;],
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;[ 0.&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;,&#x00a0;&#x00a0;0.09110269,&#x00a0; 0.&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;],
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;[ 0.&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;,&#x00a0;&#x00a0;0.&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;,&#x00a0; 0.00194811]]))</styled-content>
                </preformat>
            </p>
            <p id="L4">
                <bold>
                    <styled-content style="#CA6538" style-type="color">Listing 4.</styled-content> Python interpreter sessions which demonstrates collecting inertial properties of multiple segments.</bold>
            </p>
            <p>
                <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#000080;">&gt;&gt;&gt;</styled-content>&#x00a0;
                    <styled-content style="font-size:15px;">help(h</styled-content>
                    <styled-content style="font-size:15px;color:#666666;">.</styled-content>
                    <styled-content style="font-size:15px;">combine_inertia)</styled-content>
&#x00a0;&#x00a0;&#x00a0;&#x00a0;
                    <styled-content style="font-size:15px;color:#666666;">Returns the inertia properties of a combination of solids
&#x00a0;&#x00a0;&#x00a0;&#x00a0;and/or segments of the human, using the fixed human frame (or the
&#x00a0;&#x00a0;&#x00a0;&#x00a0;modified fixed frame as given by the user). Be careful with inputs:
&#x00a0;&#x00a0;&#x00a0;&#x00a0;do not specify a solid that is part of a segment that you have also
&#x00a0;&#x00a0;&#x00a0;&#x00a0;specified. This method does not assign anything to any object
&#x00a0;&#x00a0;&#x00a0;&#x00a0;attributes (it is &#x2019;const&#x2019;), it simply returns the desired quantities.

&#x00a0;&#x00a0;&#x00a0;&#x00a0;See documentation for description of the global frame.

&#x00a0;&#x00a0;&#x00a0;&#x00a0;Parameters
&#x00a0;&#x00a0;&#x00a0;&#x00a0;----------
&#x00a0;&#x00a0;&#x00a0;&#x00a0;objlist : tuple
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;Tuple of strings that identify a solid or segment. The
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;strings can be any of the following:

&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;* solids: &#x2019;s0&#x2019; through &#x2019;s7&#x2019;, &#x2019;a0&#x2019; through &#x2019;a6&#x2019;, &#x2019;b0&#x2019; through &#x2019;b6&#x2019;,
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x2019;j0&#x2019; through &#x2019;j8&#x2019;, &#x2019;k0&#x2019; through &#x2019;k8&#x2019;
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;* segments: &#x2019;P&#x2019;, &#x2019;T&#x2019;, &#x2019;C&#x2019;, &#x2019;A1&#x2019;, &#x2019;A2&#x2019;, &#x2019;B1&#x2019;, &#x2019;B2&#x2019;, &#x2019;J1&#x2019;, &#x2019;J2&#x2019;,
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x2019;K1&#x2019;, &#x2019;K2&#x2019;

&#x00a0;&#x00a0;&#x00a0;&#x00a0;Returns
&#x00a0;&#x00a0;&#x00a0;&#x00a0;-------
&#x00a0;&#x00a0;&#x00a0;&#x00a0;combined_mass : float
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;Sum of the masses of the input solids and/or segments.
&#x00a0;&#x00a0;&#x00a0;&#x00a0;combined_COM : np.array (3,1)
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;Position of the center of mass of the input solids and/or segments,
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;expressed in the global frame .
&#x00a0;&#x00a0;&#x00a0;&#x00a0;combined_inertia : np.matrix (3,3)
&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;Inertia tensor about the combined_COM, expressed in the global frame.</styled-content>
                </preformat>
            </p>
            <p id="L5">
                <bold>
                    <styled-content style="#CA6538" style-type="color">Listing 5.</styled-content> An example docstring for a method in the 
                    <monospace>Human</monospace> class.</bold>
            </p>
        </sec>
        <sec>
            <title>Advanced example</title>
            <p>This software was originally developed as part of an effort to easily compute the inertial properties of a human rider seated on a bicycle. A common way to model the bicycle/rider dynamics is to assume that the rider is rigid and fixed to the bicycle rear frame
                <sup>
                    <xref ref-type="bibr" rid="ref-18">18</xref>
                </sup>. Our studies
                <sup>
                    <xref ref-type="bibr" rid="ref-19">19</xref>
                </sup> included a variety of bicycles and riders, for which various combinations of the inertial properties of the bicycle rear frame and rider were required.</p>
            <p>As an advanced example, we will configure the model using the 
                <monospace>yeadon</monospace> software such that the human is seated on the bicycle, feet at the bottom bracket axis, and hands on the handlebars with arms hanging down. The inertia of the human will be computed first with respect to its center of mass and then combined with that of the bicycle rear frame using the parallel axis theorem to give the total inertia of the human rigidly affixed to the bicycle rear frame in the bicycle&#x2019;s reference frame.</p>
            <p>We use the definitions and parameters of the benchmark bicycle model
                <sup>
                    <xref ref-type="bibr" rid="ref-18">18</xref>
                </sup> defined using the standard SAE vehicle coordinate system (which is different from Yeadon&#x2019;s coordinate system). In addition to the geometrical parameters in the benchmark bicycle, the bicycle rear frame and handlebar location are defined by several geometric and inertial parameters. Furthermore, a single measurement of the rider&#x2019;s forward lean angle relative to the bicycle frame was made.</p>
            <p>An interactive IPython
                <sup>
                    <xref ref-type="bibr" rid="ref-20">20</xref>
                </sup> notebook in the supplementary materials provides a detailed walk through this advanced example. This example is also included in the Yeadon 1.2.1 software source files and a 
                <ext-link ext-link-type="uri" xlink:href="http://nbviewer.ipython.org/github/chrisdembia/yeadon/blob/v1.2.1/examples/bicyclerider/bicycle_example.ipynb">rendered version is viewable with NBViewer</ext-link>. The following briefly summarizes the steps involved in the computation and further illustrates use of the 
                <monospace>yeadon</monospace> software.</p>
            <list list-type="bullet">
                <list-item>
                    <label>1.</label>
                    <p>Geometric and inertial properties of the bicycle were estimated with an independent method
                        <sup>
                            <xref ref-type="bibr" rid="ref-19">19</xref>
                        </sup>. Inertial properties of the rear frame of the bicycle were expressed in the SAE coordinate system described above.</p>
                </list-item>
                <list-item>
                    <label>2.</label>
                    <p>We solve for a configuration of the human that enforces the human rider to be seated properly on the bicycle, for any bicycle. The SymPy Mechanics package
                        <sup>
                            <xref ref-type="bibr" rid="ref-21">21</xref>
                        </sup> is used for these computations.</p>
                </list-item>
                <list-item>
                    <label>3.</label>
                    <p>The 
                        <monospace>Human.inertia_transformed</monospace> method is used to express the human&#x2019;s inertia in the bicycle&#x2019;s reference frame.</p>
                </list-item>
                <list-item>
                    <label>4.</label>
                    <p>The combined mass and center of mass location of the human and the rear frame of the bicycle are computed and the parallel axis theorem is employed to express the moments of inertia of each body about the combined center of mass, where they are then summed to get the combined moments of inertia.</p>
                </list-item>
            </list>
            <p>The example shows how to set a complex configuration of the Yeadon model and extract the geometric and inertial properties expressed in arbitrary reference frames and relative to arbitrary points as well as how to visualize the configuration.</p>
        </sec>
        <sec sec-type="conclusions">
            <title>Conclusion</title>
            <p>We have presented an open source software package that implements a widely used inertial model of a human. This package is available in public repositories under a permissive copyright license. The software provides an API for use as a library, and also has both a command-line user interface and a graphical user interface for interactive high level use as a standalone application. The structural design of the software is presented as an introduction to the source code which is available in a public repository that is open for contributions and modifications. Finally, we have described both simple and advanced use cases for the API, one in the text of the paper and one in the supplementary IPython notebook.</p>
        </sec>
        <sec>
            <title>Software availability</title>
            <sec>
                <title>Software access</title>
                <p>
                    <ext-link ext-link-type="uri" xlink:href="http://pypi.python.org/pypi/yeadon/">http://pypi.python.org/pypi/yeadon/</ext-link>
                </p>
            </sec>
            <sec>
                <title>Latest source code</title>
                <p>
                    <ext-link ext-link-type="uri" xlink:href="https://github.com/chrisdembia/yeadon/tree/v1.2.1">https://github.com/chrisdembia/yeadon/tree/v1.2.1</ext-link>
                </p>
            </sec>
            <sec>
                <title>Source code as at the time of publication</title>
                <p>
                    <ext-link ext-link-type="uri" xlink:href="https://github.com/F1000Research/yeadon/releases/tag/V1.2.1">https://github.com/F1000Research/yeadon/releases/tag/V1.2.1</ext-link>
                </p>
            </sec>
            <sec>
                <title>Archived source code as at the time of publication</title>
                <p>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.5281/zenodo.15770">http://dx.doi.org/10.5281/zenodo.15770</ext-link>
                    <sup>
                        <xref ref-type="bibr" rid="ref-22">22</xref>
                    </sup>
                </p>
            </sec>
            <sec>
                <title>Software license</title>
                <p>
                    <monospace>yeadon</monospace> is licensed under the 
                    <ext-link ext-link-type="uri" xlink:href="http://opensource.org/licenses/BSD-3-Clause">3 clause BSD license</ext-link> which permits both non-commercial and commercial use.</p>
            </sec>
            <sec>
                <title>Software versions</title>
                <p>All of the computations in the paper were executed with the following software versions:</p>
                <list list-type="bullet">
                    <list-item>
                        <p>Python 2.7.9</p>
                    </list-item>
                    <list-item>
                        <p>IPython 2.3.1</p>
                    </list-item>
                    <list-item>
                        <p>yeadon 1.2.1</p>
                    </list-item>
                    <list-item>
                        <p>NumPy 1.9.1</p>
                    </list-item>
                    <list-item>
                        <p>pyyaml 3.11</p>
                    </list-item>
                    <list-item>
                        <p>Mayavi 4.3.1</p>
                    </list-item>
                    <list-item>
                        <p>SciPy 0.15.1</p>
                    </list-item>
                    <list-item>
                        <p>SymPy 0.7.6</p>
                    </list-item>
                </list>
            </sec>
        </sec>
    </body>
    <back>
        <ack>
            <title>Acknowledgements</title>
            <p>We thank M.R. Yeadon for sharing his source code and measurement methodologies. His generosity has greatly improved the quality of our software. In addition, Ziqi Yin contributed a patch to the software.</p>
        </ack>
        <ref-list>
            <ref id="ref-1">
                <label>1</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Bj&#x00f8;rnstrup</surname>
                            <given-names>J</given-names>
                        </name>
					</person-group>:
                    <article-title>Estimation of Human Body Segment Parameters Historical - Background</article-title>. Technical report,<year>1995</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://kcd.nipes.cn:105/Download/{B0E014E5-E95C-4947-A527-AB1A0CE950F6}.Body.Seg.History.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-2">
                <label>2</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Dempster</surname>
                            <given-names>WT</given-names>
                        </name>
					</person-group>:
                    <article-title>Space requirements of the seated operator</article-title>. Technical report, Wright-Patterson Air Force Base, Dayton, OH.<year>1955</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.dtic.mil/dtic/tr/fulltext/u2/087892.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-3">
                <label>3</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Clauser</surname>
                            <given-names>CE</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>McConville</surname>
                            <given-names>JT</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Young</surname>
                            <given-names>JW</given-names>
                        </name>
					</person-group>:
                    <article-title>Weight, volume and center of mass of segments of the human body</article-title>. Technical Report AMRL TR 69&#x2013;70, Wright-Patterson Air Force Base, Ohio.<year>1969</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.dtic.mil/dtic/tr/fulltext/u2/710622.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-4">
                <label>4</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Chandler</surname>
                            <given-names>RF</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Clauser</surname>
                            <given-names>CE</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>McConville</surname>
                            <given-names>JT</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>Investigation of inertial properties of the human body</article-title>. Technical Report AMRL TR 74&#x2013;137, Wright-Patterson Air Force Base, Ohio,<year>1975</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.dtic.mil/get-tr-doc/pdf?AD=ADA016485">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-5">
                <label>5</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Jensen</surname>
                            <given-names>RK</given-names>
                        </name>
					</person-group>:
                    <article-title>Estimation of the biomechanical properties of three body types using a photogrammetric method.</article-title>
                    <source>
						
                        <italic toggle="yes">J Biomech.</italic>
					</source>
                    <year>1978</year>;<volume>11</volume>(<issue>8&#x2013;9</issue>):<fpage>349</fpage>&#x2013;<lpage>358</lpage>.
                    <pub-id pub-id-type="pmid">711783</pub-id>
                    <pub-id pub-id-type="doi">10.1016/0021-9290(78)90069-6</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-6">
                <label>6</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Zatsiorsky</surname>
                            <given-names>V</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Seluyanov</surname>
                            <given-names>V</given-names>
                        </name>
					</person-group>:
                    <article-title>The mass and inertia characteristics of the main segments of the human body</article-title>. In H Matsui and K Kobayashi, editors,
                    <italic toggle="yes">Biomechanics VIII-B</italic>, Illinois, Human Kinetic,<year>1983</year>;<fpage>1152</fpage>&#x2013;<lpage>1159</lpage>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.dh.aist.go.jp/bodyDB/m/e-k-05.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-7">
                <label>7</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Zatsiorsky</surname>
                            <given-names>V</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Seluyanov</surname>
                            <given-names>V</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Chugunova</surname>
                            <given-names>L</given-names>
                        </name>
					</person-group>:
                    <article-title>
                        <italic toggle="yes">In vivo</italic> body segment inertial parameters determination using a gamma-scanner method</article-title>. In N Berme and A Cappozzo, editors,
                    <italic toggle="yes">Biomechanics of Human Movement: Applications in Rehabilitation, Sports and Ergonomics</italic>, Ohio, Bertec.<year>1990</year>;<fpage>186</fpage>&#x2013;<lpage>202</lpage>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.citeulike.org/user/jlake1971/article/7814375">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-8">
                <label>8</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Park</surname>
                            <given-names>SJ</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Kim</surname>
                            <given-names>CB</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Park</surname>
                            <given-names>SC</given-names>
                        </name>
					</person-group>:
                    <article-title>Anthropometric and biomechanical characteristics on body segments of Koreans.</article-title>
                    <source>
						
                        <italic toggle="yes">Appl Human Sci.</italic>
					</source>
                    <year>1999</year>;<volume>18</volume>(<issue>3</issue>):<fpage>91</fpage>&#x2013;<lpage>99</lpage>.
                    <pub-id pub-id-type="pmid">10462840</pub-id>
                    <pub-id pub-id-type="doi">10.2114/jpa.18.91</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-9">
                <label>9</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Griffiths</surname>
                            <given-names>IW</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Watkins</surname>
                            <given-names>J</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Sharpe</surname>
                            <given-names>D</given-names>
                        </name>
					</person-group>:
                    <article-title>Measuring the moment of inertia of the human body by a rotating platform method.</article-title>
                    <source>
						
                        <italic toggle="yes">Am J Phys.</italic>
					</source>
                    <year>2005</year>;<volume>73</volume>(<issue>1</issue>):<fpage>85</fpage>&#x2013;<lpage>92</lpage>.
                    <pub-id pub-id-type="doi">10.1119/1.1648688</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-10">
                <label>10</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Yeadon</surname>
                            <given-names>MR</given-names>
                        </name>
					</person-group>:
                    <article-title>The simulation of aerial movement--I. The determination of orientation angles from film data.</article-title>
                    <source>
						
                        <italic toggle="yes">J Biomech.</italic>
					</source>
                    <year>1990</year>;<volume>23</volume>(<issue>1</issue>):<fpage>59</fpage>&#x2013;<lpage>66</lpage>.
                    <pub-id pub-id-type="pmid">2307692</pub-id>
                    <pub-id pub-id-type="doi">10.1016/0021-9290(90)90369-E</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-11">
                <label>11</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Yeadon</surname>
                            <given-names>MR</given-names>
                        </name>
					</person-group>:
                    <article-title>The mechanics of twisting somersaults</article-title>. Doctoral, Loughborough University of Technology, Thesis,<year>1984</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://dspace.lboro.ac.uk/dspace-jspui/handle/2134/7502">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-12">
                <label>12</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Yeadon</surname>
                            <given-names>MR</given-names>
                        </name>
					</person-group>:
                    <article-title>The simulation of aerial movement--II. A mathematical inertia model of the human body.</article-title>
                    <source>
						
                        <italic toggle="yes">J Biomech.</italic>
					</source>
                    <year>1990</year>;<volume>23</volume>(<issue>1</issue>):<fpage>67</fpage>&#x2013;<lpage>74</lpage>.
                    <pub-id pub-id-type="pmid">2307693</pub-id>
                    <pub-id pub-id-type="doi">10.1016/0021-9290(90)90370-I</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-13">
                <label>13</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Yeadon</surname>
                            <given-names>MR</given-names>
                        </name>
					</person-group>:
                    <article-title>The simulation of aerial movement--III. The determination of the angular momentum of the human body.</article-title>
                    <source>
						
                        <italic toggle="yes">J Biomech.</italic>
					</source>
                    <year>1990</year>;<volume>23</volume>(<issue>1</issue>):<fpage>75</fpage>&#x2013;<lpage>83</lpage>.
                    <pub-id pub-id-type="pmid">2307694</pub-id>
                    <pub-id pub-id-type="doi">10.1016/0021-9290(90)90371-9</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-14">
                <label>14</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Yeadon</surname>
                            <given-names>MR</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Atha</surname>
                            <given-names>J</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Hales</surname>
                            <given-names>FD</given-names>
                        </name>
					</person-group>:
                    <article-title>The simulation of aerial movement--IV. A computer simulation model.</article-title>
                    <source>
						
                        <italic toggle="yes">J Biomech.</italic>
					</source>
                    <year>1990</year>;<volume>23</volume>(<issue>1</issue>):<fpage>85</fpage>&#x2013;<lpage>9</lpage>.
                    <pub-id pub-id-type="pmid">2307695</pub-id>
                    <pub-id pub-id-type="doi">10.1016/0021-9290(90)90372-A</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-15">
                <label>15</label>
                <mixed-citation publication-type="book">
                    <collab>Python Software Foundation.</collab>
                    <article-title> Python language reference,</article-title>version 2.7,<year>2014</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.python.org">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-16">
                <label>16</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Ramachandran</surname>
                            <given-names>P</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Varoquaux</surname>
                            <given-names>G</given-names>
                        </name>
					</person-group>:
                    <article-title>Mayavi: 3D Visualization of Scientific Data.</article-title>
                    <source>
						
                        <italic toggle="yes">Comput Sci Eng.</italic>
					</source>
                    <year>2011</year>;<volume>13</volume>(<issue>2</issue>):<fpage>40</fpage>&#x2013;<lpage>51</lpage>.
                    <pub-id pub-id-type="doi">10.1109/MCSE.2011.35</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-17">
                <label>17</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Schroeder</surname>
                            <given-names>W</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Martin</surname>
                            <given-names>K</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Lorensen</surname>
                            <given-names>B</given-names>
                        </name>
					</person-group>:
                    <article-title>Visualization Toolkit: An Object-Oriented Approach to 3D Graphics, 4th Edition</article-title>.<year>2006</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.abebooks.com/Visualization-Toolkit-Object-Oriented-Approach-Graphics-4th/11937347757/bd">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-18">
                <label>18</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Meijaard</surname>
                            <given-names>JP</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Papadopoulos</surname>
                            <given-names>JM</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Ruina</surname>
                            <given-names>A</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>Linearized dynamics equations for the balance and steer of a bicycle: a benchmark and review.</article-title>
                    <source>
						
                        <italic toggle="yes">Proc R Soc A: Math Phys Eng Sci.</italic>
					</source>
                    <year>2007</year>;<volume>463</volume>(<issue>2084</issue>):<fpage>1955</fpage>&#x2013;<lpage>1982</lpage>.
                    <pub-id pub-id-type="doi">10.1098/rspa.2007.1857</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-19">
                <label>19</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Moore</surname>
                            <given-names>JK</given-names>
                        </name>
					</person-group>:
                    <article-title>Human Control of a Bicycle</article-title>. Doctor of Philosophy, University of California, Davis, Davis, CA,<year>2012</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://gradworks.umi.com/35/44/3544791.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-20">
                <label>20</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>P&#x00e9;rez</surname>
                            <given-names>F</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Granger</surname>
                            <given-names>BE</given-names>
                        </name>
					</person-group>:
                    <article-title>IPython: A system for interactive scientific computing.</article-title>
                    <source>
						
                        <italic toggle="yes">Comput Sci Eng.</italic>
					</source>
                    <year>2007</year>;<volume>9</volume>(<issue>3</issue>):<fpage>21</fpage>&#x2013;<lpage>29</lpage>.
                    <pub-id pub-id-type="doi">10.1109/MCSE.2007.53</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-21">
                <label>21</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Gede</surname>
                            <given-names>G</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Peterson</surname>
                            <given-names>DL</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Nanjangud</surname>
                            <given-names>AS</given-names>
                        </name>
						
                        <etal/>
					</person-group>:
                    <article-title>Constrained multibody dynamics with Python: From symbolic equation generation to publication</article-title>. In
                    <italic toggle="yes">Volume 7B: 9th International Conference on Multibody Systems, Nonlinear Dynamics, and Control</italic>, Portland, Oregon, USA,<year>2013</year>;<fpage>DETC2013-13470</fpage>.
                    <pub-id pub-id-type="doi">10.1115/DETC2013-13470</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-22">
                <label>22</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
						
                        <name name-style="western">
                            <surname>Dembia</surname>
                            <given-names>C</given-names>
                        </name>
						
                        <name name-style="western">
                            <surname>Moore</surname>
                            <given-names>JK</given-names>
                        </name>
					</person-group>:
                    <article-title>yeadon-1.2.1</article-title>.<year>2014</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.5281/zenodo.15770">Data Source</ext-link>
                </mixed-citation>
            </ref>
        </ref-list>
    </back>
    <sub-article article-type="reviewer-report" id="report6948">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.5643.r6948</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Barr&#x00e9;</surname>
                        <given-names>Arnaud</given-names>
                    </name>
                    <xref ref-type="aff" rid="r6948a1">1</xref>
                    <role>Referee</role>
                </contrib>
                <aff id="r6948a1">
                    <label>1</label>D&#x00e9;partement de g&#x00e9;nie de la production automatis&#x00e9;e, Ecole de Technologie Superieure, Montr&#x00e9;al, QC, Canada</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>2</day>
                <month>2</month>
                <year>2015</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2015 Barr&#x00e9; A</copyright-statement>
                <copyright-year>2015</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport6948" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.5292.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>
                <bold>General comments</bold>
            </p>
            <p>The aim of this manuscript is to present a software tool used to:</p>
            <p>&#x00a0;1. facilitate the computation of the body segment inertial parameters proposed by M.R. Yeadon;</p>
            <p>&#x00a0;2. visualize in three dimensions the posture of an avatar;</p>
            <p>&#x00a0;3. request/compute some body segment inertial parameters related to the posture set.</p>
            <p>The description of the Yeadon's model is very well detailed as well as all the modifications realized. The illustrations and examples presented shows also the possibilities of the software.</p>
            <p>However, it would be interesting to have a better comparison of the different methods proposed to compute body segment inertial parameters using direct and indirect methods. For example, the authors mentions the facility of Yeadon's method compared to other studies, but the number of measurements is large compared to others studies not cited, like 
                <ext-link ext-link-type="uri" xlink:href="http://www.ncbi.nlm.nih.gov/pubmed/8872282">de Leva (1996)</ext-link> or 
                <ext-link ext-link-type="uri" xlink:href="http://www.ncbi.nlm.nih.gov/pubmed/16616757">Dumas 
                    <italic>et al.</italic> (2007)</ext-link>. These indirect methods have also error as explained in 
                <ext-link ext-link-type="uri" xlink:href="http://www.ncbi.nlm.nih.gov/pubmed/24421737">Rossi 
                    <italic>et al.</italic> (2013)</ext-link>. What is the advantage of Yeadon's method compared to others? A discussion on the limitations of the model proposed (joint center accuracy, joint range, mass estimation, density scaling, etc.) would be also of interest. The authors modified some parts of the original model, why did they not add joint centers for ankles and wrists? This would give a better general behavior to the avatar.</p>
            <p>
                <bold>Specific comments</bold>
            </p>
            <p>I would suggest to the authors to clarify the points listed below:</p>
            <p>Figure 1: The authors should give the abbreviations of the body parts. It is not obvious why all the levels for the torso does not use the P,T,C letters, but 's' instead. I understand this is the original nomenclature used by M.R. Yeadon, but this should be detailed. Moreover, as explained later in the manuscript, some segments have two levels at the same location (for example, shoulder and neck levels are abbreviated by Ls5), they would be distinguished for clarity. Thus, this would help to better understand the departures proposed (like in Acromion stadia).</p>
            <p>Figure 1: In the legend "segments, label, solids", the segment A2 is defined between a2 and s6. I assume it is a6 and not s6.</p>
            <p>"Measurements": fifth paragraph: The authors should mention the potential accuracy issue related to the scaling of the densities (homogeneous scaling over the body, possibly increasing the error with the body segment inertial parameters). This could be in the discussion.</p>
            <p>"Configuration" paragraph 1: The authors wrote "somersalt" instead of "somersault". (Also in page 7).</p>
            <p>Formulas 1 and 2: These formulas give only the x coordinates of the hip center joint. What about the y and z coordinates?</p>
            <p>Formulas 3, 4, 5: The authors should use a suffix to the computed parameters to clarify the associated level.&#x00a0;</p>
            <p>"Relationships between configuration variables": The authors wrote "21 configuration variables;". Please modify to "21 joint angle configuration variables to clarify".</p>
            <p>"Degenerate Stadia": What are the manipulations? Please detail.</p>
            <p>"Software design": Please add a reference for "Python" as this is the only one tool that does not have one (compared to Mayavi or VTK). The authors should also indicate that the library is implemented with Python 2.7. Their code could not be compatible with Python 3.</p>
            <p>Figure 5: How did the authors fix the joint angular range? This seems to be empirical but it should be at least mentioned in the manuscript.</p>
            <p>Reviewer Expertise:</p>
            <p>NA</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard.</p>
        </body>
    </sub-article>
    <sub-article article-type="reviewer-report" id="report6185">
        <front-stub>
            <article-id pub-id-type="doi">10.5256/f1000research.5643.r6185</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Sheets</surname>
                        <given-names>Alison L.</given-names>
                    </name>
                    <xref ref-type="aff" rid="r6185a1">1</xref>
                    <role>Referee</role>
                </contrib>
                <aff id="r6185a1">
                    <label>1</label>Nike Sports Research Lab, Beaverton, OR, USA</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>30</day>
                <month>10</month>
                <year>2014</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2014 Sheets AL</copyright-statement>
                <copyright-year>2014</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport6185" related-article-type="peer-reviewed-article" xlink:href="10.12688/f1000research.5292.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>The aim of this manuscript is to describe a software tool that was developed to calculate the inertia properties of the human body and segments of the body using the method developed by M. R. Yeadon. Yeadon's method represents the body as a series of solid shapes, and is frequently used in biomechanical analyses. The software described in this paper makes the method developed by Yeadon faster and easier to implement. &#x00a0;</p>
            <p>The manuscript is very well written, includes numerous examples that highlight the software flexibility and capabilities, and the host site for the software is well documented. Additionally, the detailed description of the inertia model clarifies a few ambiguities from Yeadon&#x2019;s original text, and modifications were made to enable the model to answer more general questions. The figures are detailed and descriptive.</p>
            <p>My only minor suggestion is for the authors to add definitions for terms in Figure 4 that are not self-descriptive. For example, it is not clear what rel_center_of_mass and rel_inertia are defined relative to.</p>
            <p>Reviewer Expertise:</p>
            <p>NA</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard.</p>
        </body>
        <sub-article article-type="response" id="comment1062-6185">
            <front-stub>
                <contrib-group>
                    <contrib contrib-type="author">
                        <name>
                            <surname>Moore</surname>
                            <given-names>Jason</given-names>
                        </name>
                        <aff>Cleveland State University, USA</aff>
                    </contrib>
                </contrib-group>
                <author-notes>
                    <fn fn-type="conflict">
                        <p>
                            <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                    </fn>
                </author-notes>
                <pub-date pub-type="epub">
                    <day>5</day>
                    <month>11</month>
                    <year>2014</year>
                </pub-date>
            </front-stub>
            <body>
                <p>Thank you for the review and the approval. As far as the method/attribute names are concerned in the UML diagram (Fig 4), we specifically didn't include great detail, trying to focus on the object hierarchy and the the most important methods/attributes of the objects. All of the methods and attributes are explained in the online software documentation, for example:</p>
                <p>
                    <ext-link ext-link-type="uri" xlink:href="http://yeadon.readthedocs.org/en/latest/segment.html">http://yeadon.readthedocs.org/en/latest/segment.html</ext-link>
                </p>
                <p>We can add some of those details in the paper if you think it will clear up things, or maybe link to the online documentation. I will discuss with the co-authors.</p>
            </body>
        </sub-article>
    </sub-article>
</article>
