changeset 9:e5cf7698a2af draft

"planemo upload for repository https://github.com/mesocentre-clermont-auvergne/aubi_piaf commit 434f3e872798e786f0c6a88939455692f711496c"
author agpetit
date Wed, 01 Jun 2022 10:10:27 +0000
parents d45cecb7cfd0
children afd0260e676f
files cut_trajectory.py estimate_nb_sub_trajectories.py run_installed_tests.html test-data/.PIP2.1_test.xtc_offsets.npz test-data/.XIP3.1_5_frames.xtc_offsets.npz test-data/Distance_distribution_by_aquaporin.png test-data/Distance_distribution_by_protomer.png test-data/Distance_distribution_on_all_protomers.png test-data/all_graphics_distribution.pdf visualize_pore_diameter_aqp.R
diffstat 10 files changed, 10 insertions(+), 932 deletions(-) [+]
line wrap: on
line diff
--- a/cut_trajectory.py	Mon May 30 15:56:59 2022 +0000
+++ b/cut_trajectory.py	Wed Jun 01 10:10:27 2022 +0000
@@ -265,7 +265,7 @@
                         + "_" + str(k) + ".log")
         try:
             os.makedirs(log_directory, exist_ok=True)
-        except OSError as error:
+        except OSError:
             print("Directory '%s' can not be created")
         f_log = open(logging_file, "w")
         subprocess.run(bash_command, shell=True, stdout=f_log, stderr=f_log)
@@ -362,5 +362,3 @@
         list_nbr_sub_traj, gro, xtc, out_directory, log_file,
         args.group_output, nb_cpus
     )
-
-
--- a/estimate_nb_sub_trajectories.py	Mon May 30 15:56:59 2022 +0000
+++ b/estimate_nb_sub_trajectories.py	Wed Jun 01 10:10:27 2022 +0000
@@ -72,8 +72,8 @@
         "--output_file",
         type=str,
         default="estimated_number_of_sub_trajectories.tsv",
-        help="""Output file. Default : 
-        estimated_number_of_sub_trajectories.tsv""",
+        help="""Output file. Default :
+         estimated_number_of_sub_trajectories.tsv""",
     )
     parser.add_argument(
         "-f",
--- a/run_installed_tests.html	Mon May 30 15:56:59 2022 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,920 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8"/>
-    <title>Test Report</title>
-    <style>body {
-  font-family: Helvetica, Arial, sans-serif;
-  font-size: 12px;
-  /* do not increase min-width as some may use split screens */
-  min-width: 800px;
-  color: #999;
-}
-
-h1 {
-  font-size: 24px;
-  color: black;
-}
-
-h2 {
-  font-size: 16px;
-  color: black;
-}
-
-p {
-  color: black;
-}
-
-a {
-  color: #999;
-}
-
-table {
-  border-collapse: collapse;
-}
-
-/******************************
- * SUMMARY INFORMATION
- ******************************/
-#environment td {
-  padding: 5px;
-  border: 1px solid #E6E6E6;
-}
-#environment tr:nth-child(odd) {
-  background-color: #f6f6f6;
-}
-
-/******************************
- * TEST RESULT COLORS
- ******************************/
-span.passed,
-.passed .col-result {
-  color: green;
-}
-
-span.skipped,
-span.xfailed,
-span.rerun,
-.skipped .col-result,
-.xfailed .col-result,
-.rerun .col-result {
-  color: orange;
-}
-
-span.error,
-span.failed,
-span.xpassed,
-.error .col-result,
-.failed .col-result,
-.xpassed .col-result {
-  color: red;
-}
-
-/******************************
- * RESULTS TABLE
- *
- * 1. Table Layout
- * 2. Extra
- * 3. Sorting items
- *
- ******************************/
-/*------------------
- * 1. Table Layout
- *------------------*/
-#results-table {
-  border: 1px solid #e6e6e6;
-  color: #999;
-  font-size: 12px;
-  width: 100%;
-}
-#results-table th,
-#results-table td {
-  padding: 5px;
-  border: 1px solid #E6E6E6;
-  text-align: left;
-}
-#results-table th {
-  font-weight: bold;
-}
-
-/*------------------
- * 2. Extra
- *------------------*/
-.log {
-  background-color: #e6e6e6;
-  border: 1px solid #e6e6e6;
-  color: black;
-  display: block;
-  font-family: "Courier New", Courier, monospace;
-  height: 230px;
-  overflow-y: scroll;
-  padding: 5px;
-  white-space: pre-wrap;
-}
-.log:only-child {
-  height: inherit;
-}
-
-div.image {
-  border: 1px solid #e6e6e6;
-  float: right;
-  height: 240px;
-  margin-left: 5px;
-  overflow: hidden;
-  width: 320px;
-}
-div.image img {
-  width: 320px;
-}
-
-div.video {
-  border: 1px solid #e6e6e6;
-  float: right;
-  height: 240px;
-  margin-left: 5px;
-  overflow: hidden;
-  width: 320px;
-}
-div.video video {
-  overflow: hidden;
-  width: 320px;
-  height: 240px;
-}
-
-.collapsed {
-  display: none;
-}
-
-.expander::after {
-  content: " (show details)";
-  color: #BBB;
-  font-style: italic;
-  cursor: pointer;
-}
-
-.collapser::after {
-  content: " (hide details)";
-  color: #BBB;
-  font-style: italic;
-  cursor: pointer;
-}
-
-/*------------------
- * 3. Sorting items
- *------------------*/
-.sortable {
-  cursor: pointer;
-}
-
-.sort-icon {
-  font-size: 0px;
-  float: left;
-  margin-right: 5px;
-  margin-top: 5px;
-  /*triangle*/
-  width: 0;
-  height: 0;
-  border-left: 8px solid transparent;
-  border-right: 8px solid transparent;
-}
-.inactive .sort-icon {
-  /*finish triangle*/
-  border-top: 8px solid #E6E6E6;
-}
-.asc.active .sort-icon {
-  /*finish triangle*/
-  border-bottom: 8px solid #999;
-}
-.desc.active .sort-icon {
-  /*finish triangle*/
-  border-top: 8px solid #999;
-}
-</style></head>
-  <body onLoad="init()">
-    <script>/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-
-function toArray(iter) {
-    if (iter === null) {
-        return null;
-    }
-    return Array.prototype.slice.call(iter);
-}
-
-function find(selector, elem) { // eslint-disable-line no-redeclare
-    if (!elem) {
-        elem = document;
-    }
-    return elem.querySelector(selector);
-}
-
-function findAll(selector, elem) {
-    if (!elem) {
-        elem = document;
-    }
-    return toArray(elem.querySelectorAll(selector));
-}
-
-function sortColumn(elem) {
-    toggleSortStates(elem);
-    const colIndex = toArray(elem.parentNode.childNodes).indexOf(elem);
-    let key;
-    if (elem.classList.contains('result')) {
-        key = keyResult;
-    } else if (elem.classList.contains('links')) {
-        key = keyLink;
-    } else {
-        key = keyAlpha;
-    }
-    sortTable(elem, key(colIndex));
-}
-
-function showAllExtras() { // eslint-disable-line no-unused-vars
-    findAll('.col-result').forEach(showExtras);
-}
-
-function hideAllExtras() { // eslint-disable-line no-unused-vars
-    findAll('.col-result').forEach(hideExtras);
-}
-
-function showExtras(colresultElem) {
-    const extras = colresultElem.parentNode.nextElementSibling;
-    const expandcollapse = colresultElem.firstElementChild;
-    extras.classList.remove('collapsed');
-    expandcollapse.classList.remove('expander');
-    expandcollapse.classList.add('collapser');
-}
-
-function hideExtras(colresultElem) {
-    const extras = colresultElem.parentNode.nextElementSibling;
-    const expandcollapse = colresultElem.firstElementChild;
-    extras.classList.add('collapsed');
-    expandcollapse.classList.remove('collapser');
-    expandcollapse.classList.add('expander');
-}
-
-function showFilters() {
-    const filterItems = document.getElementsByClassName('filter');
-    for (let i = 0; i < filterItems.length; i++)
-        filterItems[i].hidden = false;
-}
-
-function addCollapse() {
-    // Add links for show/hide all
-    const resulttable = find('table#results-table');
-    const showhideall = document.createElement('p');
-    showhideall.innerHTML = '<a href="javascript:showAllExtras()">Show all details</a> / ' +
-                            '<a href="javascript:hideAllExtras()">Hide all details</a>';
-    resulttable.parentElement.insertBefore(showhideall, resulttable);
-
-    // Add show/hide link to each result
-    findAll('.col-result').forEach(function(elem) {
-        const collapsed = getQueryParameter('collapsed') || 'Passed';
-        const extras = elem.parentNode.nextElementSibling;
-        const expandcollapse = document.createElement('span');
-        if (extras.classList.contains('collapsed')) {
-            expandcollapse.classList.add('expander');
-        } else if (collapsed.includes(elem.innerHTML)) {
-            extras.classList.add('collapsed');
-            expandcollapse.classList.add('expander');
-        } else {
-            expandcollapse.classList.add('collapser');
-        }
-        elem.appendChild(expandcollapse);
-
-        elem.addEventListener('click', function(event) {
-            if (event.currentTarget.parentNode.nextElementSibling.classList.contains('collapsed')) {
-                showExtras(event.currentTarget);
-            } else {
-                hideExtras(event.currentTarget);
-            }
-        });
-    });
-}
-
-function getQueryParameter(name) {
-    const match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
-    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
-}
-
-function init () { // eslint-disable-line no-unused-vars
-    resetSortHeaders();
-
-    addCollapse();
-
-    showFilters();
-
-    sortColumn(find('.initial-sort'));
-
-    findAll('.sortable').forEach(function(elem) {
-        elem.addEventListener('click',
-            function() {
-                sortColumn(elem);
-            }, false);
-    });
-}
-
-function sortTable(clicked, keyFunc) {
-    const rows = findAll('.results-table-row');
-    const reversed = !clicked.classList.contains('asc');
-    const sortedRows = sort(rows, keyFunc, reversed);
-    /* Whole table is removed here because browsers acts much slower
-     * when appending existing elements.
-     */
-    const thead = document.getElementById('results-table-head');
-    document.getElementById('results-table').remove();
-    const parent = document.createElement('table');
-    parent.id = 'results-table';
-    parent.appendChild(thead);
-    sortedRows.forEach(function(elem) {
-        parent.appendChild(elem);
-    });
-    document.getElementsByTagName('BODY')[0].appendChild(parent);
-}
-
-function sort(items, keyFunc, reversed) {
-    const sortArray = items.map(function(item, i) {
-        return [keyFunc(item), i];
-    });
-
-    sortArray.sort(function(a, b) {
-        const keyA = a[0];
-        const keyB = b[0];
-
-        if (keyA == keyB) return 0;
-
-        if (reversed) {
-            return keyA < keyB ? 1 : -1;
-        } else {
-            return keyA > keyB ? 1 : -1;
-        }
-    });
-
-    return sortArray.map(function(item) {
-        const index = item[1];
-        return items[index];
-    });
-}
-
-function keyAlpha(colIndex) {
-    return function(elem) {
-        return elem.childNodes[1].childNodes[colIndex].firstChild.data.toLowerCase();
-    };
-}
-
-function keyLink(colIndex) {
-    return function(elem) {
-        const dataCell = elem.childNodes[1].childNodes[colIndex].firstChild;
-        return dataCell == null ? '' : dataCell.innerText.toLowerCase();
-    };
-}
-
-function keyResult(colIndex) {
-    return function(elem) {
-        const strings = ['Error', 'Failed', 'Rerun', 'XFailed', 'XPassed',
-            'Skipped', 'Passed'];
-        return strings.indexOf(elem.childNodes[1].childNodes[colIndex].firstChild.data);
-    };
-}
-
-function resetSortHeaders() {
-    findAll('.sort-icon').forEach(function(elem) {
-        elem.parentNode.removeChild(elem);
-    });
-    findAll('.sortable').forEach(function(elem) {
-        const icon = document.createElement('div');
-        icon.className = 'sort-icon';
-        icon.textContent = 'vvv';
-        elem.insertBefore(icon, elem.firstChild);
-        elem.classList.remove('desc', 'active');
-        elem.classList.add('asc', 'inactive');
-    });
-}
-
-function toggleSortStates(elem) {
-    //if active, toggle between asc and desc
-    if (elem.classList.contains('active')) {
-        elem.classList.toggle('asc');
-        elem.classList.toggle('desc');
-    }
-
-    //if inactive, reset all other functions and add ascending active
-    if (elem.classList.contains('inactive')) {
-        resetSortHeaders();
-        elem.classList.remove('inactive');
-        elem.classList.add('active');
-    }
-}
-
-function isAllRowsHidden(value) {
-    return value.hidden == false;
-}
-
-function filterTable(elem) { // eslint-disable-line no-unused-vars
-    const outcomeAtt = 'data-test-result';
-    const outcome = elem.getAttribute(outcomeAtt);
-    const classOutcome = outcome + ' results-table-row';
-    const outcomeRows = document.getElementsByClassName(classOutcome);
-
-    for(let i = 0; i < outcomeRows.length; i++){
-        outcomeRows[i].hidden = !elem.checked;
-    }
-
-    const rows = findAll('.results-table-row').filter(isAllRowsHidden);
-    const allRowsHidden = rows.length == 0 ? true : false;
-    const notFoundMessage = document.getElementById('not-found-message');
-    notFoundMessage.hidden = !allRowsHidden;
-}
-</script>
-    <h1>run_installed_tests.html</h1>
-    <p>Report generated on 30-May-2022 at 16:40:20 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.1.1</p>
-    <h2>Environment</h2>
-    <table id="environment">
-      <tr>
-        <td>Packages</td>
-        <td>{"pluggy": "1.0.0", "py": "1.11.0", "pytest": "6.2.5"}</td></tr>
-      <tr>
-        <td>Platform</td>
-        <td>Linux-5.13.0-44-generic-x86_64-with-glibc2.29</td></tr>
-      <tr>
-        <td>Plugins</td>
-        <td>{"anyio": "3.5.0", "asyncio": "0.17.2", "celery": "0.0.0", "cov": "3.0.0", "html": "3.1.1", "json-report": "1.4.1", "metadata": "1.11.0", "mock": "3.7.0", "postgresql": "4.1.0", "pythonpath": "0.7.3", "shard": "0.1.2"}</td></tr>
-      <tr>
-        <td>Python</td>
-        <td>3.8.10</td></tr></table>
-    <h2>Summary</h2>
-    <p>6 tests ran in 207.85 seconds. </p>
-    <p class="filter" hidden="true">(Un)check the boxes to filter the results.</p><input checked="true" class="filter" data-test-result="passed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="passed">4 passed</span>, <input checked="true" class="filter" data-test-result="skipped" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="skipped">0 skipped</span>, <input checked="true" class="filter" data-test-result="failed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="failed">2 failed</span>, <input checked="true" class="filter" data-test-result="error" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="error">0 errors</span>, <input checked="true" class="filter" data-test-result="xfailed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xfailed">0 expected failures</span>, <input checked="true" class="filter" data-test-result="xpassed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xpassed">0 unexpected passes</span>
-    <h2>Results</h2>
-    <table id="results-table">
-      <thead id="results-table-head">
-        <tr>
-          <th class="sortable result initial-sort" col="result">Result</th>
-          <th class="sortable" col="name">Test</th>
-          <th class="sortable" col="duration">Duration</th>
-          <th class="sortable links" col="links">Links</th></tr>
-        <tr hidden="true" id="not-found-message">
-          <th colspan="4">No results found. Try to check the filters</th></tr></thead>
-      <tbody class="failed results-table-row">
-        <tr>
-          <td class="col-result">Failed</td>
-          <td class="col-name">test/functional/test_toolbox_pytest.py::test_tool[testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0_test_1]</td>
-          <td class="col-duration">41.70</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="log">testcases = (&#x27;testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0_test_1&#x27;, &lt;functional.test_toolbox.TestForTool_testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0 testMethod=runTest&gt;, 0)<br/>driver = &lt;functional.test_toolbox_pytest.DefaultGalaxyTestDriver object at 0x7fbd7dccadc0&gt;<br/><br/>    @pytest.mark.parametrize(&quot;testcases&quot;, cases(), ids=idfn)<br/>    def test_tool(testcases, driver):<br/>        test = testcases[1]<br/>&gt;       test.do_it(test_index=testcases[2])<br/><br/>test/functional/test_toolbox_pytest.py:84: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ <br/>test/functional/test_toolbox.py:35: in do_it<br/>    verify_tool(tool_id, self.galaxy_interactor, resource_parameters=resource_parameters, test_index=test_index, tool_version=tool_version, register_job_data=register_job_data)<br/>lib/galaxy/tool_util/verify/interactor.py:1127: in verify_tool<br/>    raise e<br/>lib/galaxy/tool_util/verify/interactor.py:1123: in verify_tool<br/>    job_stdio = _verify_outputs(testdef, test_history, jobs, data_list, data_collection_list, galaxy_interactor, quiet=quiet)<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ <br/><br/>testdef = &lt;galaxy.tool_util.verify.interactor.ToolTestDescription object at 0x7fbd717e2400&gt;, history = &#x27;54f2a3a23292eb07&#x27;<br/>jobs = [{&#x27;create_time&#x27;: &#x27;2022-05-30T14:38:35.742760&#x27;, &#x27;exit_code&#x27;: None, &#x27;galaxy_version&#x27;: &#x27;22.01&#x27;, &#x27;history_id&#x27;: &#x27;54f2a3a23292eb07&#x27;, ...}]<br/>data_list = {&#x27;cut_log&#x27;: {&#x27;create_time&#x27;: &#x27;2022-05-30T14:38:35.746121&#x27;, &#x27;data_type&#x27;: &#x27;galaxy.datatypes.data.Text&#x27;, &#x27;deleted&#x27;: False,...b446aa50-6cfd-42d4-a1ed-d388b4035422&#x27;, &#x27;validated_state&#x27;: &#x27;unknown&#x27;, &#x27;validated_state_message&#x27;: None, &#x27;visible&#x27;: True}}<br/>data_collection_list = {&#x27;output_traj&#x27;: {&#x27;collection_type&#x27;: &#x27;list&#x27;, &#x27;contents_url&#x27;: &#x27;/api/dataset_collections/5729865256bc2525/contents/5729865256bc2525&#x27;, &#x27;create_time&#x27;: &#x27;2022-05-30T14:38:35.744675&#x27;, &#x27;deleted&#x27;: False, ...}}<br/>galaxy_interactor = &lt;galaxy.tool_util.verify.interactor.GalaxyInteractorApi object at 0x7fbd2509c1f0&gt;, quiet = False<br/><br/>    def _verify_outputs(testdef, history, jobs, data_list, data_collection_list, galaxy_interactor, quiet=False):<br/>        assert len(jobs) == 1, &quot;Test framework logic error, somehow tool test resulted in more than one job.&quot;<br/>        job = jobs[0]<br/>    <br/>        found_exceptions = []<br/>    <br/>        def register_exception(e):<br/>            if not found_exceptions and not quiet:<br/>                # Only print this stuff out once.<br/>                for stream in [&#x27;stdout&#x27;, &#x27;stderr&#x27;]:<br/>                    if stream in job_stdio:<br/>                        print(_format_stream(job_stdio[stream], stream=stream, format=True), file=sys.stderr)<br/>            found_exceptions.append(e)<br/>    <br/>        if testdef.expect_failure:<br/>            if testdef.outputs:<br/>                raise Exception(&quot;Cannot specify outputs in a test expecting failure.&quot;)<br/>    <br/>        maxseconds = testdef.maxseconds<br/>        # Wait for the job to complete and register expections if the final<br/>        # status was not what test was expecting.<br/>        job_failed = False<br/>        try:<br/>            galaxy_interactor.wait_for_job(job[&#x27;id&#x27;], history, maxseconds)<br/>        except Exception as e:<br/>            job_failed = True<br/>            if not testdef.expect_failure:<br/>                found_exceptions.append(e)<br/>    <br/>        job_stdio = galaxy_interactor.get_job_stdio(job[&#x27;id&#x27;])<br/>    <br/>        if testdef.num_outputs is not None:<br/>            expected = testdef.num_outputs<br/>            actual = len(data_list) + len(data_collection_list)<br/>            if expected != actual:<br/>                message = f&quot;Incorrect number of outputs - expected {expected}, found {actual}: datasets {data_list.keys()} collections {data_collection_list.keys()}&quot;<br/>                error = AssertionError(message)<br/>                register_exception(error)<br/>    <br/>        if not job_failed and testdef.expect_failure:<br/>            error = AssertionError(&quot;Expected job to fail but Galaxy indicated the job successfully completed.&quot;)<br/>            register_exception(error)<br/>    <br/>        expect_exit_code = testdef.expect_exit_code<br/>        if expect_exit_code is not None:<br/>            exit_code = job_stdio[&quot;exit_code&quot;]<br/>            if str(expect_exit_code) != str(exit_code):<br/>                error = AssertionError(f&quot;Expected job to complete with exit code {expect_exit_code}, found {exit_code}&quot;)<br/>                register_exception(error)<br/>    <br/>        for output_index, output_dict in enumerate(testdef.outputs):<br/>            # Get the correct hid<br/>            name = output_dict[&quot;name&quot;]<br/>            outfile = output_dict[&quot;value&quot;]<br/>            attributes = output_dict[&quot;attributes&quot;]<br/>            output_testdef = Bunch(name=name, outfile=outfile, attributes=attributes)<br/>            try:<br/>                output_data = data_list[name]<br/>            except (TypeError, KeyError):<br/>                # Legacy - fall back on ordered data list access if data_list is<br/>                # just a list (case with twill variant or if output changes its<br/>                # name).<br/>                if hasattr(data_list, &quot;values&quot;):<br/>                    output_data = list(data_list.values())[output_index]<br/>                else:<br/>                    output_data = data_list[len(data_list) - len(testdef.outputs) + output_index]<br/>            assert output_data is not None<br/>            try:<br/>                galaxy_interactor.verify_output(history, jobs, output_data, output_testdef=output_testdef, tool_id=job[&#x27;tool_id&#x27;], maxseconds=maxseconds, tool_version=testdef.tool_version)<br/>            except Exception as e:<br/>                register_exception(e)<br/>    <br/>        other_checks = {<br/>            &quot;command_line&quot;: &quot;Command produced by the job&quot;,<br/>            &quot;command_version&quot;: &quot;Tool version indicated during job execution&quot;,<br/>            &quot;stdout&quot;: &quot;Standard output of the job&quot;,<br/>            &quot;stderr&quot;: &quot;Standard error of the job&quot;,<br/>        }<br/>        # TODO: Only hack the stdio like this for older profile, for newer tool profiles<br/>        # add some syntax for asserting job messages maybe - or just drop this because exit<br/>        # code and regex on stdio can be tested directly - so this is really testing Galaxy<br/>        # core handling more than the tool.<br/>        job_messages = job_stdio.get(&quot;job_messages&quot;) or []<br/>        stdout_prefix = &quot;&quot;<br/>        stderr_prefix = &quot;&quot;<br/>        for job_message in job_messages:<br/>            message_type = job_message.get(&quot;type&quot;)<br/>            if message_type == &quot;regex&quot; and job_message.get(&quot;stream&quot;) == &quot;stderr&quot;:<br/>                stderr_prefix += f&quot;{job_message.get(&#x27;desc&#x27;) or &#x27;&#x27;}\n&quot;<br/>            elif message_type == &quot;regex&quot; and job_message.get(&quot;stream&quot;) == &quot;stdout&quot;:<br/>                stdout_prefix += f&quot;{job_message.get(&#x27;desc&#x27;) or &#x27;&#x27;}\n&quot;<br/>            elif message_type == &quot;exit_code&quot;:<br/>                stderr_prefix += f&quot;{job_message.get(&#x27;desc&#x27;) or &#x27;&#x27;}\n&quot;<br/>            else:<br/>                raise Exception(f&quot;Unknown job message type [{message_type}] in [{job_message}]&quot;)<br/>    <br/>        for what, description in other_checks.items():<br/>            if getattr(testdef, what, None) is not None:<br/>                try:<br/>                    raw_data = job_stdio[what]<br/>                    assertions = getattr(testdef, what)<br/>                    if what == &quot;stdout&quot;:<br/>                        data = stdout_prefix + raw_data<br/>                    elif what == &quot;stderr&quot;:<br/>                        data = stderr_prefix + raw_data<br/>                    else:<br/>                        data = raw_data<br/>                    verify_assertions(data, assertions)<br/>                except AssertionError as err:<br/>                    errmsg = f&#x27;{description} different than expected\n&#x27;<br/>                    errmsg += util.unicodify(err)<br/>                    register_exception(AssertionError(errmsg))<br/>    <br/>        for output_collection_def in testdef.output_collections:<br/>            try:<br/>                name = output_collection_def.name<br/>                # TODO: data_collection_list is clearly a bad name for dictionary.<br/>                if name not in data_collection_list:<br/>                    message = f&quot;Failed to find output [{name}], tool outputs include [{&#x27;,&#x27;.join(data_collection_list.keys())}]&quot;<br/>                    raise AssertionError(message)<br/>    <br/>                # Data collection returned from submission, elements may have been populated after<br/>                # the job completed so re-hit the API for more information.<br/>                data_collection_id = data_collection_list[name][&quot;id&quot;]<br/>                galaxy_interactor.verify_output_collection(output_collection_def, data_collection_id, history, job[&#x27;tool_id&#x27;])<br/>            except Exception as e:<br/>                register_exception(e)<br/>    <br/>        if found_exceptions and not testdef.expect_test_failure:<br/>&gt;           raise JobOutputsError(found_exceptions, job_stdio)<br/><span class="error">E           galaxy.tool_util.verify.interactor.JobOutputsError: Output cut_log:  different than expected, difference (using diff):</span><br/><span class="error">E           ( /tmp/tmppchetkzbcut_trajectories_file.log v. /tmp/tmpt35t2o_2cut_trajectories_file.log )</span><br/><span class="error">E           --- local_file</span><br/><span class="error">E           +++ history_data</span><br/><span class="error">E           @@ -25,9 +25,9 @@</span><br/><span class="error">E            </span><br/><span class="error">E                           :-) GROMACS - gmx trjconv, 2022.1-conda_forge (-:</span><br/><span class="error">E            </span><br/><span class="error">E           -Executable:   /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1/bin.AVX2_256/gmx</span><br/><span class="error">E           -Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1</span><br/><span class="error">E           -Working dir:  /tmp/tmp87fei_xs/job_working_directory/000/5/working</span><br/><span class="error">E           +Executable:   /home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296/bin.AVX2_256/gmx</span><br/><span class="error">E           +Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296</span><br/><span class="error">E           +Working dir:  /tmp/tmpudbcnm66/job_working_directory/000/11/working</span><br/><span class="error">E            Command line:</span><br/><span class="error">E              gmx trjconv -f PIP2.1_test.xtc -s PIP2.1_test.gro -b 0 -e 20 -o out/PIP2.1_test_traj_1.xtc</span><br/><span class="error">E            </span><br/><span class="error">E           @@ -63,16 +63,16 @@</span><br/><span class="error">E            Last written: frame      2 time   20.000</span><br/><span class="error">E            </span><br/><span class="error">E            </span><br/><span class="error">E           -GROMACS reminds you: &quot;The Microsecond is Within Reach&quot; (P.J. Van Maaren)</span><br/><span class="error">E           +GROMACS reminds you: &quot;Unlike teachers or doctors, our efforts improve the lives of people we&#x27;ll never meet.&quot; (Katie Busch-Sorensen)</span><br/><span class="error">E            </span><br/><span class="error">E            Note that major changes are planned in future for trjconv, to improve usability and utility.</span><br/><span class="error">E            Select group for output</span><br/><span class="error">E            Selected 0: &#x27;System&#x27;</span><br/><span class="error">E           ********</span><br/><span class="error">E           *SNIP *</span><br/><span class="error">E           ********</span><br/><span class="error">E           +GROMACS reminds you: &quot;What about my nose?&quot; (Aneesur Rahman, responding to an Argonne manager arguing the long hair of Charles Bennett in his group was disreputing the lab; Retold by Michael Klein)</span><br/><span class="error">E            </span><br/><span class="error">E            Note that major changes are planned in future for trjconv, to improve usability and utility.</span><br/><span class="error">E            Select group for output</span><br/><span class="error">E            Selected 0: &#x27;System&#x27;</span><br/><span class="error">E                           :-) GROMACS - gmx trjconv, 2022.1-conda_forge (-:</span><br/><span class="error">E            </span><br/><span class="error">E           -Executable:   /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1/bin.AVX2_256/gmx</span><br/><span class="error">E           -Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1</span><br/><span class="error">E           -Working dir:  /tmp/tmp87fei_xs/job_working_directory/000/5/working</span><br/><span class="error">E           +Executable:   /home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296/bin.AVX2_256/gmx</span><br/><span class="error">E           +Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296</span><br/><span class="error">E           +Working dir:  /tmp/tmpudbcnm66/job_working_directory/000/11/working</span><br/><span class="error">E            Command line:</span><br/><span class="error">E              gmx trjconv -f PIP2.1_test.xtc -s PIP2.1_test.gro -b 60 -e 80 -o out/PIP2.1_test_traj_3.xtc</span><br/><span class="error">E            </span><br/><span class="error">E           @@ -155,7 +155,7 @@</span><br/><span class="error">E            Last written: frame      2 time   80.000</span><br/><span class="error">E            </span><br/><span class="error">E            </span><br/><span class="error">E           -GROMACS reminds you: &quot;Furious activity is no substitute for understanding.&quot; (H.H. Williams)</span><br/><span class="error">E           +GROMACS reminds you: &quot;There&#x27;s so many shades of black&quot; (The Raconteurs)</span><br/><span class="error">E            </span><br/><span class="error">E            Note that major changes are planned in future for trjconv, to improve usability and utility.</span><br/><span class="error">E            Select group for output</span><br/><br/>lib/galaxy/tool_util/verify/interactor.py:1299: JobOutputsError<br/> ------------------------------Captured stderr call------------------------------ <br/>2022-05-30 16:38:07,832 DEBUG [multipart.multipart] Calling on_field_start with no data
-2022-05-30 16:38:07,832 DEBUG [multipart.multipart] Calling on_field_name with data[0:4]
-2022-05-30 16:38:07,833 DEBUG [multipart.multipart] Calling on_field_data with data[5:123]
-2022-05-30 16:38:07,833 DEBUG [multipart.multipart] Calling on_field_end with no data
-2022-05-30 16:38:07,833 DEBUG [multipart.multipart] Calling on_end with no data
-2022-05-30 16:38:08,953 INFO  [galaxy.tools] Validated and populated state for tool request (29.050 ms)
-2022-05-30 16:38:08,960 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.145 ms)
-2022-05-30 16:38:09,092 DEBUG [galaxy.tools.actions.upload] Checked uploads (132.576 ms)
-2022-05-30 16:38:09,098 DEBUG [galaxy.tools.actions.upload] Created upload job (6.056 ms)
-2022-05-30 16:38:09,122 INFO  [galaxy.web_stack.handlers] (Job[id=8,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:38:09,852 INFO  [galaxy.jobs.handler] (8) Job dispatched
-2022-05-30 16:38:10,126 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/8/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/8/registry.xml&#x27; &#x27;/tmp/upload_params_i5a_w25s&#x27; &#x27;9:/tmp/tmpudbcnm66/job_working_directory/000/8/working/dataset_23d2a6f5-94b1-4d86-9f3f-a265f3acfe63_files:/tmp/tmpudbcnm66/files/2/3/d/dataset_23d2a6f5-94b1-4d86-9f3f-a265f3acfe63.dat&#x27;]
-2022-05-30 16:38:18,031 INFO  [galaxy.tools] Validated and populated state for tool request (29.267 ms)
-2022-05-30 16:38:18,038 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.146 ms)
-2022-05-30 16:38:18,189 DEBUG [galaxy.tools.actions.upload] Checked uploads (150.477 ms)
-2022-05-30 16:38:18,195 DEBUG [galaxy.tools.actions.upload] Created upload job (6.006 ms)
-2022-05-30 16:38:18,222 INFO  [galaxy.web_stack.handlers] (Job[id=9,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:38:19,453 INFO  [galaxy.jobs.handler] (9) Job dispatched
-2022-05-30 16:38:19,600 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/9/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/9/registry.xml&#x27; &#x27;/tmp/upload_params_f8bxg9_p&#x27; &#x27;10:/tmp/tmpudbcnm66/job_working_directory/000/9/working/dataset_db8cec7e-182c-4956-ab6d-92d9562a59a0_files:/tmp/tmpudbcnm66/files/d/b/8/dataset_db8cec7e-182c-4956-ab6d-92d9562a59a0.dat&#x27;]
-2022-05-30 16:38:26,862 INFO  [galaxy.tools] Validated and populated state for tool request (22.705 ms)
-2022-05-30 16:38:26,868 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.148 ms)
-2022-05-30 16:38:26,990 DEBUG [galaxy.tools.actions.upload] Checked uploads (121.841 ms)
-2022-05-30 16:38:26,997 DEBUG [galaxy.tools.actions.upload] Created upload job (6.363 ms)
-2022-05-30 16:38:27,045 INFO  [galaxy.web_stack.handlers] (Job[id=10,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:38:28,374 INFO  [galaxy.jobs.handler] (10) Job dispatched
-2022-05-30 16:38:28,534 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/10/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/10/registry.xml&#x27; &#x27;/tmp/upload_params_ta376p5u&#x27; &#x27;11:/tmp/tmpudbcnm66/job_working_directory/000/10/working/dataset_3d11862f-97ea-4b1f-9042-90ff10bf136a_files:/tmp/tmpudbcnm66/files/3/d/1/dataset_3d11862f-97ea-4b1f-9042-90ff10bf136a.dat&#x27;]
-2022-05-30 16:38:35,702 INFO  [galaxy.tools] Validated and populated state for tool request (25.700 ms)
-2022-05-30 16:38:35,716 INFO  [galaxy.tools.actions] Handled collection output named output_traj for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0 (2.649 ms)
-2022-05-30 16:38:35,718 INFO  [galaxy.tools.actions] Handled output named cut_log for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0 (2.191 ms)
-2022-05-30 16:38:35,729 INFO  [galaxy.tools.actions] Added output datasets to history (10.524 ms)
-2022-05-30 16:38:35,731 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0] complete, ready to be enqueued (1.911 ms)
-2022-05-30 16:38:35,771 INFO  [galaxy.web_stack.handlers] (Job[id=11,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:38:36,103 INFO  [galaxy.jobs.handler] (11) Job dispatched
-2022-05-30 16:38:36,326 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/11/tool_script.sh] for tool command [[ &quot;$(basename &quot;$CONDA_DEFAULT_ENV&quot;)&quot; = &quot;$(basename &#x27;/home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296&#x27;)&quot; ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . &#x27;/home/aepetit/miniconda3/bin/activate&#x27; &#x27;/home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296&#x27; &gt; conda_activate.log 2&gt;&amp;1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo &quot;Failed to activate conda environment! Error was:&quot;
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ &quot;$(basename &quot;$CONDA_DEFAULT_ENV&quot;)&quot; = &quot;$(basename &#x27;/home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296&#x27;)&quot; ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . &#x27;/home/aepetit/miniconda3/bin/activate&#x27; &#x27;/home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296&#x27; &gt; conda_activate.log 2&gt;&amp;1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo &quot;Failed to activate conda environment! Error was:&quot;
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; ln -s &#x27;/tmp/tmpudbcnm66/files/2/3/d/dataset_23d2a6f5-94b1-4d86-9f3f-a265f3acfe63.dat&#x27; &#x27;PIP2.1_test.gro&#x27; &amp;&amp; ln -s &#x27;/tmp/tmpudbcnm66/files/d/b/8/dataset_db8cec7e-182c-4956-ab6d-92d9562a59a0.dat&#x27; &#x27;PIP2.1_test.xtc&#x27; &amp;&amp; ln -s &#x27;/tmp/tmpudbcnm66/files/3/d/1/dataset_3d11862f-97ea-4b1f-9042-90ff10bf136a.dat&#x27; &#x27;estimated_number_of_sub_trajectories.tsv&#x27; &amp;&amp; python &#x27;/tmp/tmpudbcnm66/shed_tools/testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/b9fb306ccb2a/cut_trajectory/cut_trajectory.py&#x27; --verbose --gro_file &#x27;PIP2.1_test.gro&#x27; --xtc_file &#x27;PIP2.1_test.xtc&#x27; --log_output &#x27;out_log/cut_trajectories.log&#x27; --output_directory &#x27;out/&#x27; --nbr_sub_traj &#x27;estimated_number_of_sub_trajectories.tsv&#x27; --group_output 0 --number_cpus &quot;${GALAXY_SLOTS:-1}&quot;]
-2022-05-30 16:38:47,856 INFO  [galaxy.tool_util.verify] ## files diff on &#x27;/tmp/tmppchetkzbcut_trajectories_file.log&#x27; and &#x27;/tmp/tmpt35t2o_2cut_trajectories_file.log&#x27;: lines_diff = 12, found diff = 24
----------------------- &gt;&gt; begin tool stdout &lt;&lt; -----------------------
-
------------------------ &gt;&gt; end tool stdout &lt;&lt; ------------------------
-
----------------------- &gt;&gt; begin tool stderr &lt;&lt; -----------------------
-
------------------------ &gt;&gt; end tool stderr &lt;&lt; ------------------------
-
-<br/> -------------------------------Captured log call-------------------------------- <br/>DEBUG    multipart.multipart:multipart.py:604 Calling on_field_start with no data
-DEBUG    multipart.multipart:multipart.py:601 Calling on_field_name with data[0:4]
-DEBUG    multipart.multipart:multipart.py:601 Calling on_field_data with data[5:123]
-DEBUG    multipart.multipart:multipart.py:604 Calling on_field_end with no data
-DEBUG    multipart.multipart:multipart.py:604 Calling on_end with no data<br/></div></td></tr></tbody>
-      <tbody class="failed results-table-row">
-        <tr>
-          <td class="col-result">Failed</td>
-          <td class="col-name">test/functional/test_toolbox_pytest.py::test_tool[testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0_test_2]</td>
-          <td class="col-duration">45.94</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="log">testcases = (&#x27;testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0_test_2&#x27;, &lt;functional.test_toolbox.TestForTool_testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0 testMethod=runTest&gt;, 1)<br/>driver = &lt;functional.test_toolbox_pytest.DefaultGalaxyTestDriver object at 0x7fbd7dccadc0&gt;<br/><br/>    @pytest.mark.parametrize(&quot;testcases&quot;, cases(), ids=idfn)<br/>    def test_tool(testcases, driver):<br/>        test = testcases[1]<br/>&gt;       test.do_it(test_index=testcases[2])<br/><br/>test/functional/test_toolbox_pytest.py:84: <br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ <br/>test/functional/test_toolbox.py:35: in do_it<br/>    verify_tool(tool_id, self.galaxy_interactor, resource_parameters=resource_parameters, test_index=test_index, tool_version=tool_version, register_job_data=register_job_data)<br/>lib/galaxy/tool_util/verify/interactor.py:1127: in verify_tool<br/>    raise e<br/>lib/galaxy/tool_util/verify/interactor.py:1123: in verify_tool<br/>    job_stdio = _verify_outputs(testdef, test_history, jobs, data_list, data_collection_list, galaxy_interactor, quiet=quiet)<br/>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ <br/><br/>testdef = &lt;galaxy.tool_util.verify.interactor.ToolTestDescription object at 0x7fbd7aaba0d0&gt;, history = &#x27;8155e4b4bf1581ff&#x27;<br/>jobs = [{&#x27;create_time&#x27;: &#x27;2022-05-30T14:39:20.051320&#x27;, &#x27;exit_code&#x27;: None, &#x27;galaxy_version&#x27;: &#x27;22.01&#x27;, &#x27;history_id&#x27;: &#x27;8155e4b4bf1581ff&#x27;, ...}]<br/>data_list = {&#x27;cut_log&#x27;: {&#x27;create_time&#x27;: &#x27;2022-05-30T14:39:20.055030&#x27;, &#x27;data_type&#x27;: &#x27;galaxy.datatypes.data.Text&#x27;, &#x27;deleted&#x27;: False,...9bcf1c61-a26b-4578-9eb2-b93eb3b0d2d9&#x27;, &#x27;validated_state&#x27;: &#x27;unknown&#x27;, &#x27;validated_state_message&#x27;: None, &#x27;visible&#x27;: True}}<br/>data_collection_list = {&#x27;output_traj&#x27;: {&#x27;collection_type&#x27;: &#x27;list&#x27;, &#x27;contents_url&#x27;: &#x27;/api/dataset_collections/54f2a3a23292eb07/contents/54f2a3a23292eb07&#x27;, &#x27;create_time&#x27;: &#x27;2022-05-30T14:39:20.052784&#x27;, &#x27;deleted&#x27;: False, ...}}<br/>galaxy_interactor = &lt;galaxy.tool_util.verify.interactor.GalaxyInteractorApi object at 0x7fbd2509c1f0&gt;, quiet = False<br/><br/>    def _verify_outputs(testdef, history, jobs, data_list, data_collection_list, galaxy_interactor, quiet=False):<br/>        assert len(jobs) == 1, &quot;Test framework logic error, somehow tool test resulted in more than one job.&quot;<br/>        job = jobs[0]<br/>    <br/>        found_exceptions = []<br/>    <br/>        def register_exception(e):<br/>            if not found_exceptions and not quiet:<br/>                # Only print this stuff out once.<br/>                for stream in [&#x27;stdout&#x27;, &#x27;stderr&#x27;]:<br/>                    if stream in job_stdio:<br/>                        print(_format_stream(job_stdio[stream], stream=stream, format=True), file=sys.stderr)<br/>            found_exceptions.append(e)<br/>    <br/>        if testdef.expect_failure:<br/>            if testdef.outputs:<br/>                raise Exception(&quot;Cannot specify outputs in a test expecting failure.&quot;)<br/>    <br/>        maxseconds = testdef.maxseconds<br/>        # Wait for the job to complete and register expections if the final<br/>        # status was not what test was expecting.<br/>        job_failed = False<br/>        try:<br/>            galaxy_interactor.wait_for_job(job[&#x27;id&#x27;], history, maxseconds)<br/>        except Exception as e:<br/>            job_failed = True<br/>            if not testdef.expect_failure:<br/>                found_exceptions.append(e)<br/>    <br/>        job_stdio = galaxy_interactor.get_job_stdio(job[&#x27;id&#x27;])<br/>    <br/>        if testdef.num_outputs is not None:<br/>            expected = testdef.num_outputs<br/>            actual = len(data_list) + len(data_collection_list)<br/>            if expected != actual:<br/>                message = f&quot;Incorrect number of outputs - expected {expected}, found {actual}: datasets {data_list.keys()} collections {data_collection_list.keys()}&quot;<br/>                error = AssertionError(message)<br/>                register_exception(error)<br/>    <br/>        if not job_failed and testdef.expect_failure:<br/>            error = AssertionError(&quot;Expected job to fail but Galaxy indicated the job successfully completed.&quot;)<br/>            register_exception(error)<br/>    <br/>        expect_exit_code = testdef.expect_exit_code<br/>        if expect_exit_code is not None:<br/>            exit_code = job_stdio[&quot;exit_code&quot;]<br/>            if str(expect_exit_code) != str(exit_code):<br/>                error = AssertionError(f&quot;Expected job to complete with exit code {expect_exit_code}, found {exit_code}&quot;)<br/>                register_exception(error)<br/>    <br/>        for output_index, output_dict in enumerate(testdef.outputs):<br/>            # Get the correct hid<br/>            name = output_dict[&quot;name&quot;]<br/>            outfile = output_dict[&quot;value&quot;]<br/>            attributes = output_dict[&quot;attributes&quot;]<br/>            output_testdef = Bunch(name=name, outfile=outfile, attributes=attributes)<br/>            try:<br/>                output_data = data_list[name]<br/>            except (TypeError, KeyError):<br/>                # Legacy - fall back on ordered data list access if data_list is<br/>                # just a list (case with twill variant or if output changes its<br/>                # name).<br/>                if hasattr(data_list, &quot;values&quot;):<br/>                    output_data = list(data_list.values())[output_index]<br/>                else:<br/>                    output_data = data_list[len(data_list) - len(testdef.outputs) + output_index]<br/>            assert output_data is not None<br/>            try:<br/>                galaxy_interactor.verify_output(history, jobs, output_data, output_testdef=output_testdef, tool_id=job[&#x27;tool_id&#x27;], maxseconds=maxseconds, tool_version=testdef.tool_version)<br/>            except Exception as e:<br/>                register_exception(e)<br/>    <br/>        other_checks = {<br/>            &quot;command_line&quot;: &quot;Command produced by the job&quot;,<br/>            &quot;command_version&quot;: &quot;Tool version indicated during job execution&quot;,<br/>            &quot;stdout&quot;: &quot;Standard output of the job&quot;,<br/>            &quot;stderr&quot;: &quot;Standard error of the job&quot;,<br/>        }<br/>        # TODO: Only hack the stdio like this for older profile, for newer tool profiles<br/>        # add some syntax for asserting job messages maybe - or just drop this because exit<br/>        # code and regex on stdio can be tested directly - so this is really testing Galaxy<br/>        # core handling more than the tool.<br/>        job_messages = job_stdio.get(&quot;job_messages&quot;) or []<br/>        stdout_prefix = &quot;&quot;<br/>        stderr_prefix = &quot;&quot;<br/>        for job_message in job_messages:<br/>            message_type = job_message.get(&quot;type&quot;)<br/>            if message_type == &quot;regex&quot; and job_message.get(&quot;stream&quot;) == &quot;stderr&quot;:<br/>                stderr_prefix += f&quot;{job_message.get(&#x27;desc&#x27;) or &#x27;&#x27;}\n&quot;<br/>            elif message_type == &quot;regex&quot; and job_message.get(&quot;stream&quot;) == &quot;stdout&quot;:<br/>                stdout_prefix += f&quot;{job_message.get(&#x27;desc&#x27;) or &#x27;&#x27;}\n&quot;<br/>            elif message_type == &quot;exit_code&quot;:<br/>                stderr_prefix += f&quot;{job_message.get(&#x27;desc&#x27;) or &#x27;&#x27;}\n&quot;<br/>            else:<br/>                raise Exception(f&quot;Unknown job message type [{message_type}] in [{job_message}]&quot;)<br/>    <br/>        for what, description in other_checks.items():<br/>            if getattr(testdef, what, None) is not None:<br/>                try:<br/>                    raw_data = job_stdio[what]<br/>                    assertions = getattr(testdef, what)<br/>                    if what == &quot;stdout&quot;:<br/>                        data = stdout_prefix + raw_data<br/>                    elif what == &quot;stderr&quot;:<br/>                        data = stderr_prefix + raw_data<br/>                    else:<br/>                        data = raw_data<br/>                    verify_assertions(data, assertions)<br/>                except AssertionError as err:<br/>                    errmsg = f&#x27;{description} different than expected\n&#x27;<br/>                    errmsg += util.unicodify(err)<br/>                    register_exception(AssertionError(errmsg))<br/>    <br/>        for output_collection_def in testdef.output_collections:<br/>            try:<br/>                name = output_collection_def.name<br/>                # TODO: data_collection_list is clearly a bad name for dictionary.<br/>                if name not in data_collection_list:<br/>                    message = f&quot;Failed to find output [{name}], tool outputs include [{&#x27;,&#x27;.join(data_collection_list.keys())}]&quot;<br/>                    raise AssertionError(message)<br/>    <br/>                # Data collection returned from submission, elements may have been populated after<br/>                # the job completed so re-hit the API for more information.<br/>                data_collection_id = data_collection_list[name][&quot;id&quot;]<br/>                galaxy_interactor.verify_output_collection(output_collection_def, data_collection_id, history, job[&#x27;tool_id&#x27;])<br/>            except Exception as e:<br/>                register_exception(e)<br/>    <br/>        if found_exceptions and not testdef.expect_test_failure:<br/>&gt;           raise JobOutputsError(found_exceptions, job_stdio)<br/><span class="error">E           galaxy.tool_util.verify.interactor.JobOutputsError: Output cut_log:  different than expected, difference (using diff):</span><br/><span class="error">E           ( /tmp/tmp64i094o0cut_trajectories_no_file.log v. /tmp/tmpmbp6yd0kcut_trajectories_no_file.log )</span><br/><span class="error">E           --- local_file</span><br/><span class="error">E           +++ history_data</span><br/><span class="error">E           @@ -23,9 +23,9 @@</span><br/><span class="error">E            </span><br/><span class="error">E                           :-) GROMACS - gmx trjconv, 2022.1-conda_forge (-:</span><br/><span class="error">E            </span><br/><span class="error">E           -Executable:   /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1/bin.AVX2_256/gmx</span><br/><span class="error">E           -Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1</span><br/><span class="error">E           -Working dir:  /tmp/tmp87fei_xs/job_working_directory/000/7/working</span><br/><span class="error">E           +Executable:   /home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296/bin.AVX2_256/gmx</span><br/><span class="error">E           +Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296</span><br/><span class="error">E           +Working dir:  /tmp/tmpudbcnm66/job_working_directory/000/15/working</span><br/><span class="error">E            Command line:</span><br/><span class="error">E              gmx trjconv -f PIP2.1_test.xtc -s PIP2.1_test.gro -b 0 -e 20 -o out/PIP2.1_test_traj_1.xtc</span><br/><span class="error">E            </span><br/><span class="error">E           @@ -61,16 +61,16 @@</span><br/><span class="error">E            Last written: frame      2 time   20.000</span><br/><span class="error">E            </span><br/><span class="error">E            </span><br/><span class="error">E           -GROMACS reminds you: &quot;It is now quite lawful for a Catholic woman to avoid pregnancy by a resort to mathematics, though she is still forbidden to resort to physics and chemistry.&quot; (Henry Louis Mencken)</span><br/><span class="error">E           +GROMACS reminds you: &quot;Pretend That You&#x27;re Hercule Poirot&quot; (TeX)</span><br/><span class="error">E            </span><br/><span class="error">E            Note that major changes are planned in future for trjconv, to improve usability and utility.</span><br/><span class="error">E            Select group for output</span><br/><span class="error">E            Selected 0: &#x27;System&#x27;</span><br/><span class="error">E           ********</span><br/><span class="error">E           *SNIP *</span><br/><span class="error">E           ********</span><br/><span class="error">E           +GROMACS reminds you: &quot;If it&#x27;s a good idea, go ahead and do it. It&#x27;s much easier to apologize than it is to get permission.&quot; (Grace Hopper, developer of COBOL)</span><br/><span class="error">E            </span><br/><span class="error">E            Note that major changes are planned in future for trjconv, to improve usability and utility.</span><br/><span class="error">E            Select group for output</span><br/><span class="error">E            Selected 0: &#x27;System&#x27;</span><br/><span class="error">E                           :-) GROMACS - gmx trjconv, 2022.1-conda_forge (-:</span><br/><span class="error">E            </span><br/><span class="error">E           -Executable:   /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1/bin.AVX2_256/gmx</span><br/><span class="error">E           -Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1</span><br/><span class="error">E           -Working dir:  /tmp/tmp87fei_xs/job_working_directory/000/7/working</span><br/><span class="error">E           +Executable:   /home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296/bin.AVX2_256/gmx</span><br/><span class="error">E           +Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296</span><br/><span class="error">E           +Working dir:  /tmp/tmpudbcnm66/job_working_directory/000/15/working</span><br/><span class="error">E            Command line:</span><br/><span class="error">E              gmx trjconv -f PIP2.1_test.xtc -s PIP2.1_test.gro -b 60 -e 80 -o out/PIP2.1_test_traj_3.xtc</span><br/><span class="error">E            </span><br/><span class="error">E           @@ -153,7 +153,7 @@</span><br/><span class="error">E            Last written: frame      2 time   80.000</span><br/><span class="error">E            </span><br/><span class="error">E            </span><br/><span class="error">E           -GROMACS reminds you: &quot;Whatever Happened to Pong ?&quot; (F. Black)</span><br/><span class="error">E           +GROMACS reminds you: &quot;Oh My God ! It&#x27;s the Funky Shit&quot; (Beastie Boys)</span><br/><span class="error">E            </span><br/><span class="error">E            Note that major changes are planned in future for trjconv, to improve usability and utility.</span><br/><span class="error">E            Select group for output</span><br/><br/>lib/galaxy/tool_util/verify/interactor.py:1299: JobOutputsError<br/> ------------------------------Captured stderr call------------------------------ <br/>2022-05-30 16:38:49,689 DEBUG [multipart.multipart] Calling on_field_start with no data
-2022-05-30 16:38:49,689 DEBUG [multipart.multipart] Calling on_field_name with data[0:4]
-2022-05-30 16:38:49,689 DEBUG [multipart.multipart] Calling on_field_data with data[5:123]
-2022-05-30 16:38:49,689 DEBUG [multipart.multipart] Calling on_field_end with no data
-2022-05-30 16:38:49,690 DEBUG [multipart.multipart] Calling on_end with no data
-2022-05-30 16:38:50,819 INFO  [galaxy.tools] Validated and populated state for tool request (23.182 ms)
-2022-05-30 16:38:50,825 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.158 ms)
-2022-05-30 16:38:50,943 DEBUG [galaxy.tools.actions.upload] Checked uploads (118.175 ms)
-2022-05-30 16:38:50,952 DEBUG [galaxy.tools.actions.upload] Created upload job (8.520 ms)
-2022-05-30 16:38:50,974 INFO  [galaxy.web_stack.handlers] (Job[id=12,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:38:51,873 INFO  [galaxy.jobs.handler] (12) Job dispatched
-2022-05-30 16:38:52,023 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/12/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/12/registry.xml&#x27; &#x27;/tmp/upload_params_fm4vkooe&#x27; &#x27;16:/tmp/tmpudbcnm66/job_working_directory/000/12/working/dataset_835311dd-d3e5-4db2-bd98-274b2aa04186_files:/tmp/tmpudbcnm66/files/8/3/5/dataset_835311dd-d3e5-4db2-bd98-274b2aa04186.dat&#x27;]
-2022-05-30 16:39:00,135 INFO  [galaxy.tools] Validated and populated state for tool request (22.401 ms)
-2022-05-30 16:39:00,141 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.169 ms)
-2022-05-30 16:39:00,253 DEBUG [galaxy.tools.actions.upload] Checked uploads (111.316 ms)
-2022-05-30 16:39:00,260 DEBUG [galaxy.tools.actions.upload] Created upload job (7.542 ms)
-2022-05-30 16:39:00,290 INFO  [galaxy.web_stack.handlers] (Job[id=13,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:39:00,589 INFO  [galaxy.jobs.handler] (13) Job dispatched
-2022-05-30 16:39:00,789 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/13/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/13/registry.xml&#x27; &#x27;/tmp/upload_params_porkb1x0&#x27; &#x27;17:/tmp/tmpudbcnm66/job_working_directory/000/13/working/dataset_93d9a3db-08e5-4c64-b4b8-6ea194b2ec67_files:/tmp/tmpudbcnm66/files/9/3/d/dataset_93d9a3db-08e5-4c64-b4b8-6ea194b2ec67.dat&#x27;]
-2022-05-30 16:39:07,852 INFO  [galaxy.tools] Validated and populated state for tool request (23.241 ms)
-2022-05-30 16:39:07,858 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.145 ms)
-2022-05-30 16:39:07,983 DEBUG [galaxy.tools.actions.upload] Checked uploads (124.879 ms)
-2022-05-30 16:39:07,994 DEBUG [galaxy.tools.actions.upload] Created upload job (10.361 ms)
-2022-05-30 16:39:08,024 INFO  [galaxy.web_stack.handlers] (Job[id=14,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:39:09,254 INFO  [galaxy.jobs.handler] (14) Job dispatched
-2022-05-30 16:39:09,407 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/14/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/14/registry.xml&#x27; &#x27;/tmp/upload_params_zlwcb6g0&#x27; &#x27;18:/tmp/tmpudbcnm66/job_working_directory/000/14/working/dataset_89419396-ffd3-496c-9421-9534fdcdfb7b_files:/tmp/tmpudbcnm66/files/8/9/4/dataset_89419396-ffd3-496c-9421-9534fdcdfb7b.dat&#x27;]
-2022-05-30 16:39:20,011 INFO  [galaxy.tools] Validated and populated state for tool request (25.260 ms)
-2022-05-30 16:39:20,024 INFO  [galaxy.tools.actions] Handled collection output named output_traj for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0 (0.951 ms)
-2022-05-30 16:39:20,025 INFO  [galaxy.tools.actions] Handled output named cut_log for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0 (0.960 ms)
-2022-05-30 16:39:20,036 INFO  [galaxy.tools.actions] Added output datasets to history (11.339 ms)
-2022-05-30 16:39:20,039 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0] complete, ready to be enqueued (1.890 ms)
-2022-05-30 16:39:20,079 INFO  [galaxy.web_stack.handlers] (Job[id=15,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/cut_trajectory/0.1.0]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:39:21,134 INFO  [galaxy.jobs.handler] (15) Job dispatched
-2022-05-30 16:39:21,441 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/15/tool_script.sh] for tool command [[ &quot;$(basename &quot;$CONDA_DEFAULT_ENV&quot;)&quot; = &quot;$(basename &#x27;/home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296&#x27;)&quot; ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . &#x27;/home/aepetit/miniconda3/bin/activate&#x27; &#x27;/home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296&#x27; &gt; conda_activate.log 2&gt;&amp;1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo &quot;Failed to activate conda environment! Error was:&quot;
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ &quot;$(basename &quot;$CONDA_DEFAULT_ENV&quot;)&quot; = &quot;$(basename &#x27;/home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296&#x27;)&quot; ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . &#x27;/home/aepetit/miniconda3/bin/activate&#x27; &#x27;/home/aepetit/miniconda3/envs/mulled-v1-2880a0cc8fea113b095b7fdfec6d72552feed785405b8640b3b3dfce7df9d296&#x27; &gt; conda_activate.log 2&gt;&amp;1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo &quot;Failed to activate conda environment! Error was:&quot;
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; ln -s &#x27;/tmp/tmpudbcnm66/files/8/3/5/dataset_835311dd-d3e5-4db2-bd98-274b2aa04186.dat&#x27; &#x27;PIP2.1_test.gro&#x27; &amp;&amp; ln -s &#x27;/tmp/tmpudbcnm66/files/9/3/d/dataset_93d9a3db-08e5-4c64-b4b8-6ea194b2ec67.dat&#x27; &#x27;PIP2.1_test.xtc&#x27; &amp;&amp; ln -s &#x27;/tmp/tmpudbcnm66/files/8/9/4/dataset_89419396-ffd3-496c-9421-9534fdcdfb7b.dat&#x27; &#x27;PIP2.1_test_check.txt&#x27; &amp;&amp; python &#x27;/tmp/tmpudbcnm66/shed_tools/testtoolshed.g2.bx.psu.edu/repos/agpetit/cut_trajectory/b9fb306ccb2a/cut_trajectory/cut_trajectory.py&#x27; --verbose --gro_file &#x27;PIP2.1_test.gro&#x27; --xtc_file &#x27;PIP2.1_test.xtc&#x27; --log_output &#x27;out_log/cut_trajectories.log&#x27; --output_directory &#x27;out/&#x27; --nbr_sub_traj &#x27;3&#x27; --input_check &#x27;PIP2.1_test_check.txt&#x27; --start_traj &#x27;0&#x27; --end_traj &#x27;10&#x27; --group_output 0 --number_cpus &quot;${GALAXY_SLOTS:-1}&quot;]
-2022-05-30 16:39:33,777 INFO  [galaxy.tool_util.verify] ## files diff on &#x27;/tmp/tmp64i094o0cut_trajectories_no_file.log&#x27; and &#x27;/tmp/tmpmbp6yd0kcut_trajectories_no_file.log&#x27;: lines_diff = 12, found diff = 24
----------------------- &gt;&gt; begin tool stdout &lt;&lt; -----------------------
-
------------------------ &gt;&gt; end tool stdout &lt;&lt; ------------------------
-
----------------------- &gt;&gt; begin tool stderr &lt;&lt; -----------------------
-
------------------------ &gt;&gt; end tool stderr &lt;&lt; ------------------------
-
-<br/> -------------------------------Captured log call-------------------------------- <br/>DEBUG    multipart.multipart:multipart.py:604 Calling on_field_start with no data
-DEBUG    multipart.multipart:multipart.py:601 Calling on_field_name with data[0:4]
-DEBUG    multipart.multipart:multipart.py:601 Calling on_field_data with data[5:123]
-DEBUG    multipart.multipart:multipart.py:604 Calling on_field_end with no data
-DEBUG    multipart.multipart:multipart.py:604 Calling on_end with no data<br/></div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">test/functional/test_toolbox_pytest.py::test_tool[testtoolshed.g2.bx.psu.edu/repos/agpetit/calculate_diameter/calculate_diameter/1.0.0_test_1]</td>
-          <td class="col-duration">30.87</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="log"> ------------------------------Captured stderr call------------------------------ <br/>2022-05-30 16:37:05,655 DEBUG [multipart.multipart] Calling on_field_start with no data
-2022-05-30 16:37:05,655 DEBUG [multipart.multipart] Calling on_field_name with data[0:4]
-2022-05-30 16:37:05,655 DEBUG [multipart.multipart] Calling on_field_data with data[5:131]
-2022-05-30 16:37:05,655 DEBUG [multipart.multipart] Calling on_field_end with no data
-2022-05-30 16:37:05,655 DEBUG [multipart.multipart] Calling on_end with no data
-2022-05-30 16:37:05,796 INFO  [galaxy.managers.configuration] Galaxy extra version JSON file /tmp/tmpudbcnm66/galaxy-dev/version.json not loaded.
-2022-05-30 16:37:06,804 INFO  [galaxy.tools] Validated and populated state for tool request (24.171 ms)
-2022-05-30 16:37:06,821 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.159 ms)
-2022-05-30 16:37:06,969 DEBUG [galaxy.tools.actions.upload] Checked uploads (147.872 ms)
-2022-05-30 16:37:06,975 DEBUG [galaxy.tools.actions.upload] Created upload job (5.802 ms)
-2022-05-30 16:37:07,006 INFO  [galaxy.web_stack.handlers] (Job[id=1,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:37:07,656 INFO  [galaxy.jobs.handler] (1) Job dispatched
-2022-05-30 16:37:07,917 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/1/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/1/registry.xml&#x27; &#x27;/tmp/upload_params_b__72u_9&#x27; &#x27;1:/tmp/tmpudbcnm66/job_working_directory/000/1/working/dataset_fa99edec-859c-4f92-a5c3-df96305c5bb8_files:/tmp/tmpudbcnm66/files/f/a/9/dataset_fa99edec-859c-4f92-a5c3-df96305c5bb8.dat&#x27;]
-2022-05-30 16:37:15,524 INFO  [galaxy.tools] Validated and populated state for tool request (24.286 ms)
-2022-05-30 16:37:15,531 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.453 ms)
-2022-05-30 16:37:15,643 DEBUG [galaxy.tools.actions.upload] Checked uploads (112.079 ms)
-2022-05-30 16:37:15,650 DEBUG [galaxy.tools.actions.upload] Created upload job (6.610 ms)
-2022-05-30 16:37:15,678 INFO  [galaxy.web_stack.handlers] (Job[id=2,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:37:16,066 INFO  [galaxy.jobs.handler] (2) Job dispatched
-2022-05-30 16:37:16,315 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/2/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/2/registry.xml&#x27; &#x27;/tmp/upload_params_tk7_ntpu&#x27; &#x27;2:/tmp/tmpudbcnm66/job_working_directory/000/2/working/dataset_428a901e-46dd-433f-aa38-040834923c53_files:/tmp/tmpudbcnm66/files/4/2/8/dataset_428a901e-46dd-433f-aa38-040834923c53.dat&#x27;]
-2022-05-30 16:37:23,491 INFO  [galaxy.tools] Validated and populated state for tool request (28.958 ms)
-2022-05-30 16:37:23,505 INFO  [galaxy.tools.actions] Handled output named table for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/calculate_diameter/calculate_diameter/1.0.0 (2.815 ms)
-2022-05-30 16:37:23,507 INFO  [galaxy.tools.actions] Handled output named tool_log for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/calculate_diameter/calculate_diameter/1.0.0 (2.062 ms)
-2022-05-30 16:37:23,523 INFO  [galaxy.tools.actions] Added output datasets to history (15.846 ms)
-2022-05-30 16:37:23,527 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/calculate_diameter/calculate_diameter/1.0.0] complete, ready to be enqueued (3.520 ms)
-2022-05-30 16:37:23,568 INFO  [galaxy.web_stack.handlers] (Job[id=3,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/calculate_diameter/calculate_diameter/1.0.0]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:37:24,549 INFO  [galaxy.jobs.handler] (3) Job dispatched
-2022-05-30 16:37:24,812 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/3/tool_script.sh] for tool command [[ &quot;$(basename &quot;$CONDA_DEFAULT_ENV&quot;)&quot; = &quot;$(basename &#x27;/home/aepetit/miniconda3/envs/__mdanalysis@2.1.0&#x27;)&quot; ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . &#x27;/home/aepetit/miniconda3/bin/activate&#x27; &#x27;/home/aepetit/miniconda3/envs/__mdanalysis@2.1.0&#x27; &gt; conda_activate.log 2&gt;&amp;1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo &quot;Failed to activate conda environment! Error was:&quot;
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; python &#x27;/tmp/tmpudbcnm66/shed_tools/testtoolshed.g2.bx.psu.edu/repos/agpetit/calculate_diameter/e504457035e5/calculate_diameter/calculate_pore_diameter_aqp.py&#x27; --arr_one &#x27;HSD LEU ALA THR&#x27; --arr_second &#x27;ARG SER PHE GLY&#x27; --gro_file &#x27;/tmp/tmpudbcnm66/files/f/a/9/dataset_fa99edec-859c-4f92-a5c3-df96305c5bb8.dat&#x27; --xtc_file &#x27;/tmp/tmpudbcnm66/files/4/2/8/dataset_428a901e-46dd-433f-aa38-040834923c53.dat&#x27; --gro_file_ext &#x27;gro&#x27; --xtc_file_ext &#x27;xtc&#x27; --output &#x27;/tmp/tmpudbcnm66/files/9/7/7/dataset_977de3e3-d359-4a40-8a4b-7c51d4262504.dat&#x27; --verbose --log_output &#x27;/tmp/tmpudbcnm66/files/4/5/1/dataset_451a5cfb-9113-4c26-83ee-01449cf245c7.dat&#x27; --output_directory &#x27;out&#x27; 2&gt;&amp;1]
-<br/> -------------------------------Captured log call-------------------------------- <br/>DEBUG    multipart.multipart:multipart.py:604 Calling on_field_start with no data
-DEBUG    multipart.multipart:multipart.py:601 Calling on_field_name with data[0:4]
-DEBUG    multipart.multipart:multipart.py:601 Calling on_field_data with data[5:131]
-DEBUG    multipart.multipart:multipart.py:604 Calling on_field_end with no data
-DEBUG    multipart.multipart:multipart.py:604 Calling on_end with no data<br/></div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">test/functional/test_toolbox_pytest.py::test_tool[testtoolshed.g2.bx.psu.edu/repos/agpetit/concatenate_table/concatenate_table/1.0.0_test_1]</td>
-          <td class="col-duration">31.28</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="log"> ------------------------------Captured stderr call------------------------------ <br/>2022-05-30 16:37:36,534 DEBUG [multipart.multipart] Calling on_field_start with no data
-2022-05-30 16:37:36,535 DEBUG [multipart.multipart] Calling on_field_name with data[0:4]
-2022-05-30 16:37:36,535 DEBUG [multipart.multipart] Calling on_field_data with data[5:129]
-2022-05-30 16:37:36,535 DEBUG [multipart.multipart] Calling on_field_end with no data
-2022-05-30 16:37:36,535 DEBUG [multipart.multipart] Calling on_end with no data
-2022-05-30 16:37:36,751 INFO  [galaxy.tools] Validated and populated state for tool request (22.588 ms)
-2022-05-30 16:37:36,757 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.152 ms)
-2022-05-30 16:37:36,869 DEBUG [galaxy.tools.actions.upload] Checked uploads (111.983 ms)
-2022-05-30 16:37:36,876 DEBUG [galaxy.tools.actions.upload] Created upload job (6.364 ms)
-2022-05-30 16:37:36,905 INFO  [galaxy.web_stack.handlers] (Job[id=4,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:37:37,198 INFO  [galaxy.jobs.handler] (4) Job dispatched
-2022-05-30 16:37:37,368 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/4/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/4/registry.xml&#x27; &#x27;/tmp/upload_params_86aigh4i&#x27; &#x27;5:/tmp/tmpudbcnm66/job_working_directory/000/4/working/dataset_31f0355f-84ac-411f-97a3-0ac90eb23f59_files:/tmp/tmpudbcnm66/files/3/1/f/dataset_31f0355f-84ac-411f-97a3-0ac90eb23f59.dat&#x27;]
-2022-05-30 16:37:44,495 INFO  [galaxy.tools] Validated and populated state for tool request (22.079 ms)
-2022-05-30 16:37:44,502 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.148 ms)
-2022-05-30 16:37:44,627 DEBUG [galaxy.tools.actions.upload] Checked uploads (125.252 ms)
-2022-05-30 16:37:44,636 DEBUG [galaxy.tools.actions.upload] Created upload job (8.474 ms)
-2022-05-30 16:37:44,669 INFO  [galaxy.web_stack.handlers] (Job[id=5,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:37:45,610 INFO  [galaxy.jobs.handler] (5) Job dispatched
-2022-05-30 16:37:45,851 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/5/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/5/registry.xml&#x27; &#x27;/tmp/upload_params_wrbilm9o&#x27; &#x27;6:/tmp/tmpudbcnm66/job_working_directory/000/5/working/dataset_3698b34a-13cb-49f7-a025-b7c5874abd65_files:/tmp/tmpudbcnm66/files/3/6/9/dataset_3698b34a-13cb-49f7-a025-b7c5874abd65.dat&#x27;]
-2022-05-30 16:37:53,123 INFO  [galaxy.tools] Validated and populated state for tool request (26.199 ms)
-2022-05-30 16:37:53,129 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.147 ms)
-2022-05-30 16:37:53,247 DEBUG [galaxy.tools.actions.upload] Checked uploads (117.795 ms)
-2022-05-30 16:37:53,253 DEBUG [galaxy.tools.actions.upload] Created upload job (5.870 ms)
-2022-05-30 16:37:53,281 INFO  [galaxy.web_stack.handlers] (Job[id=6,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:37:54,076 INFO  [galaxy.jobs.handler] (6) Job dispatched
-2022-05-30 16:37:54,263 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/6/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/6/registry.xml&#x27; &#x27;/tmp/upload_params_a2trnhop&#x27; &#x27;7:/tmp/tmpudbcnm66/job_working_directory/000/6/working/dataset_8eed8997-0952-492c-82cf-ec9c086fbdc2_files:/tmp/tmpudbcnm66/files/8/e/e/dataset_8eed8997-0952-492c-82cf-ec9c086fbdc2.dat&#x27;]
-2022-05-30 16:38:01,685 INFO  [galaxy.tools] Validated and populated state for tool request (28.588 ms)
-2022-05-30 16:38:01,747 INFO  [galaxy.tools.actions] Handled output named sort_file for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/concatenate_table/concatenate_table/1.0.0 (3.914 ms)
-2022-05-30 16:38:01,762 INFO  [galaxy.tools.actions] Added output datasets to history (14.449 ms)
-2022-05-30 16:38:01,763 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/concatenate_table/concatenate_table/1.0.0] complete, ready to be enqueued (1.467 ms)
-2022-05-30 16:38:01,798 INFO  [galaxy.web_stack.handlers] (Job[id=7,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/concatenate_table/concatenate_table/1.0.0]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:38:02,505 INFO  [galaxy.jobs.handler] (7) Job dispatched
-2022-05-30 16:38:02,788 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/7/tool_script.sh] for tool command [cat /tmp/tmpudbcnm66/files/3/1/f/dataset_31f0355f-84ac-411f-97a3-0ac90eb23f59.dat | awk -F&#x27;\t&#x27; &#x27;BEGIN{mean=&quot;Time (ps)&quot;; std=&quot;&quot;} /^Time/ {for (i=2; i&lt;(NF+1); i++) gsub(&quot; &quot;, &quot;,mean &quot;,$i) ; for (i=2; i&lt;(NF+1); i++) mean=mean &quot;\t&quot; $i ;  for (i=2; i&lt;(NF+1); i++) gsub(&quot;,mean&quot;, &quot;,std &quot;,$i); for (i=2; i&lt;(NF+1); i++) std=std &quot;\t&quot; $i } END{print (mean std)}&#x27;  &amp;&gt;&gt; &#x27;/tmp/tmpudbcnm66/files/2/d/6/dataset_2d6d52d2-777e-48e6-b725-28a364f4e52c.dat&#x27; ; cat /tmp/tmpudbcnm66/files/3/1/f/dataset_31f0355f-84ac-411f-97a3-0ac90eb23f59.dat | awk -F&#x27;\t&#x27; -v min=200.0 &#x27;BEGIN{min_val=min ; max_val=0 ; means=&quot;&quot;; std=&quot;&quot;} /^[0-9]/ {if ($1 &lt;= min_val) {min_val=$1} ; if ($1 &gt;= max_val) {max_val=$1}} ; /Mean/ {for (i=2; i&lt;NF; i++) means=means&quot;\t&quot;$i ;means=means&quot;\t&quot;$NF } ; /Std/ {for (i=2; i&lt;NF; i++) std=std&quot;\t&quot;$i; ;std=std&quot;\t&quot;$NF} END {print (min_val &quot;-&quot; max_val means std)}&#x27; &amp;&gt;&gt; &#x27;test.tabular&#x27; ; cat /tmp/tmpudbcnm66/files/3/6/9/dataset_3698b34a-13cb-49f7-a025-b7c5874abd65.dat | awk -F&#x27;\t&#x27; -v min=500.0 &#x27;BEGIN{min_val=min ; max_val=0 ; means=&quot;&quot;; std=&quot;&quot;} /^[0-9]/ {if ($1 &lt;= min_val) {min_val=$1} ; if ($1 &gt;= max_val) {max_val=$1}} ; /Mean/ {for (i=2; i&lt;NF; i++) means=means&quot;\t&quot;$i ;means=means&quot;\t&quot;$NF } ; /Std/ {for (i=2; i&lt;NF; i++) std=std&quot;\t&quot;$i; ;std=std&quot;\t&quot;$NF} END {print (min_val &quot;-&quot; max_val means std)}&#x27; &amp;&gt;&gt; &#x27;test.tabular&#x27; ; cat /tmp/tmpudbcnm66/files/8/e/e/dataset_8eed8997-0952-492c-82cf-ec9c086fbdc2.dat | awk -F&#x27;\t&#x27; -v min=1000.0 &#x27;BEGIN{min_val=min ; max_val=0 ; means=&quot;&quot;; std=&quot;&quot;} /^[0-9]/ {if ($1 &lt;= min_val) {min_val=$1} ; if ($1 &gt;= max_val) {max_val=$1}} ; /Mean/ {for (i=2; i&lt;NF; i++) means=means&quot;\t&quot;$i ;means=means&quot;\t&quot;$NF } ; /Std/ {for (i=2; i&lt;NF; i++) std=std&quot;\t&quot;$i; ;std=std&quot;\t&quot;$NF} END {print (min_val &quot;-&quot; max_val means std)}&#x27; &amp;&gt;&gt; &#x27;test.tabular&#x27; ; cat &#x27;test.tabular&#x27; | sort -k1 -n &amp;&gt;&gt; &#x27;/tmp/tmpudbcnm66/files/2/d/6/dataset_2d6d52d2-777e-48e6-b725-28a364f4e52c.dat&#x27;]
-<br/> -------------------------------Captured log call-------------------------------- <br/>DEBUG    multipart.multipart:multipart.py:604 Calling on_field_start with no data
-DEBUG    multipart.multipart:multipart.py:601 Calling on_field_name with data[0:4]
-DEBUG    multipart.multipart:multipart.py:601 Calling on_field_data with data[5:129]
-DEBUG    multipart.multipart:multipart.py:604 Calling on_field_end with no data
-DEBUG    multipart.multipart:multipart.py:604 Calling on_end with no data<br/></div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">test/functional/test_toolbox_pytest.py::test_tool[testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_nb_sub_trajectories/estimate_nb_sub_trajectories/0.1.0_test_1]</td>
-          <td class="col-duration">18.87</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="log"> ------------------------------Captured stderr call------------------------------ <br/>2022-05-30 16:39:35,689 DEBUG [multipart.multipart] Calling on_field_start with no data
-2022-05-30 16:39:35,689 DEBUG [multipart.multipart] Calling on_field_name with data[0:4]
-2022-05-30 16:39:35,689 DEBUG [multipart.multipart] Calling on_field_data with data[5:151]
-2022-05-30 16:39:35,689 DEBUG [multipart.multipart] Calling on_field_end with no data
-2022-05-30 16:39:35,689 DEBUG [multipart.multipart] Calling on_end with no data
-2022-05-30 16:39:35,939 INFO  [galaxy.tools] Validated and populated state for tool request (22.631 ms)
-2022-05-30 16:39:35,946 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.145 ms)
-2022-05-30 16:39:36,081 DEBUG [galaxy.tools.actions.upload] Checked uploads (135.506 ms)
-2022-05-30 16:39:36,091 DEBUG [galaxy.tools.actions.upload] Created upload job (9.617 ms)
-2022-05-30 16:39:36,127 INFO  [galaxy.web_stack.handlers] (Job[id=16,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:39:37,095 INFO  [galaxy.jobs.handler] (16) Job dispatched
-2022-05-30 16:39:37,276 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/16/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/16/registry.xml&#x27; &#x27;/tmp/upload_params_yw33j4zk&#x27; &#x27;23:/tmp/tmpudbcnm66/job_working_directory/000/16/working/dataset_5b800b43-9848-4d53-9323-c6aceb22f262_files:/tmp/tmpudbcnm66/files/5/b/8/dataset_5b800b43-9848-4d53-9323-c6aceb22f262.dat&#x27;]
-2022-05-30 16:39:47,071 INFO  [galaxy.tools] Validated and populated state for tool request (13.357 ms)
-2022-05-30 16:39:47,085 INFO  [galaxy.tools.actions] Handled output named sub_trajectories_out_file for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_nb_sub_trajectories/estimate_nb_sub_trajectories/0.1.0 (2.867 ms)
-2022-05-30 16:39:47,087 INFO  [galaxy.tools.actions] Handled output named estimate_log for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_nb_sub_trajectories/estimate_nb_sub_trajectories/0.1.0 (1.940 ms)
-2022-05-30 16:39:47,102 INFO  [galaxy.tools.actions] Added output datasets to history (14.826 ms)
-2022-05-30 16:39:47,105 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_nb_sub_trajectories/estimate_nb_sub_trajectories/0.1.0] complete, ready to be enqueued (1.997 ms)
-2022-05-30 16:39:47,141 INFO  [galaxy.web_stack.handlers] (Job[id=17,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_nb_sub_trajectories/estimate_nb_sub_trajectories/0.1.0]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:39:47,780 INFO  [galaxy.jobs.handler] (17) Job dispatched
-2022-05-30 16:39:48,028 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/17/tool_script.sh] for tool command [ln -s &#x27;/tmp/tmpudbcnm66/files/5/b/8/dataset_5b800b43-9848-4d53-9323-c6aceb22f262.dat&#x27; &#x27;PIP2.1_test_check.txt&#x27; &amp;&amp; ln -s &#x27;/tmp/tmpudbcnm66/files/c/5/6/dataset_c56e8bb6-ce7d-4267-8564-4773459f1129.dat&#x27; &#x27;estimated_number_of_sub_trajectories.tsv&#x27; &amp;&amp; python &#x27;/tmp/tmpudbcnm66/shed_tools/testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_nb_sub_trajectories/5fcbf7af809c/estimate_nb_sub_trajectories/estimate_nb_sub_trajectories.py&#x27; --input_check &#x27;PIP2.1_test_check.txt&#x27; --verbose --output_file &#x27;estimated_number_of_sub_trajectories.tsv&#x27; --log_output &#x27;out_log/estimated_number_of_sub_trajectories.log&#x27; --nb_frames &#x27;3&#x27; --start_traj &#x27;&#x27; --end_traj &#x27;&#x27;]
-<br/> -------------------------------Captured log call-------------------------------- <br/>DEBUG    multipart.multipart:multipart.py:604 Calling on_field_start with no data
-DEBUG    multipart.multipart:multipart.py:601 Calling on_field_name with data[0:4]
-DEBUG    multipart.multipart:multipart.py:601 Calling on_field_data with data[5:151]
-DEBUG    multipart.multipart:multipart.py:604 Calling on_field_end with no data
-DEBUG    multipart.multipart:multipart.py:604 Calling on_end with no data<br/></div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">test/functional/test_toolbox_pytest.py::test_tool[testtoolshed.g2.bx.psu.edu/repos/agpetit/visualize_pore_diameter_aqp/visualize_pore_diameter_aqp/0.1.0_test_1]</td>
-          <td class="col-duration">26.28</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="log"> ------------------------------Captured stderr call------------------------------ <br/>2022-05-30 16:39:54,571 DEBUG [multipart.multipart] Calling on_field_start with no data
-2022-05-30 16:39:54,571 DEBUG [multipart.multipart] Calling on_field_name with data[0:4]
-2022-05-30 16:39:54,571 DEBUG [multipart.multipart] Calling on_field_data with data[5:149]
-2022-05-30 16:39:54,571 DEBUG [multipart.multipart] Calling on_field_end with no data
-2022-05-30 16:39:54,571 DEBUG [multipart.multipart] Calling on_end with no data
-2022-05-30 16:39:54,792 INFO  [galaxy.tools] Validated and populated state for tool request (26.681 ms)
-2022-05-30 16:39:54,798 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.150 ms)
-2022-05-30 16:39:54,915 DEBUG [galaxy.tools.actions.upload] Checked uploads (116.261 ms)
-2022-05-30 16:39:54,921 DEBUG [galaxy.tools.actions.upload] Created upload job (6.361 ms)
-2022-05-30 16:39:54,943 INFO  [galaxy.web_stack.handlers] (Job[id=18,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:39:55,282 INFO  [galaxy.jobs.handler] (18) Job dispatched
-2022-05-30 16:39:55,521 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/18/tool_script.sh] for tool command [python &#x27;/tmp/tmpudbcnm66/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmpudbcnm66/galaxy-dev&#x27; &#x27;/tmp/tmpudbcnm66/job_working_directory/000/18/registry.xml&#x27; &#x27;/tmp/upload_params_tj6wy_cu&#x27; &#x27;26:/tmp/tmpudbcnm66/job_working_directory/000/18/working/dataset_12912b09-e396-43d6-afbb-14e2260e8be3_files:/tmp/tmpudbcnm66/files/1/2/9/dataset_12912b09-e396-43d6-afbb-14e2260e8be3.dat&#x27;]
-2022-05-30 16:40:03,597 INFO  [galaxy.tools] Validated and populated state for tool request (16.995 ms)
-2022-05-30 16:40:03,623 INFO  [galaxy.tools.actions] Handled output named out_file for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/visualize_pore_diameter_aqp/visualize_pore_diameter_aqp/0.1.0 (4.741 ms)
-2022-05-30 16:40:03,628 INFO  [galaxy.tools.actions] Handled output named out_file2 for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/visualize_pore_diameter_aqp/visualize_pore_diameter_aqp/0.1.0 (4.097 ms)
-2022-05-30 16:40:03,630 INFO  [galaxy.tools.actions] Handled output named out_file3 for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/visualize_pore_diameter_aqp/visualize_pore_diameter_aqp/0.1.0 (2.331 ms)
-2022-05-30 16:40:03,634 INFO  [galaxy.tools.actions] Handled output named out_file4 for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/visualize_pore_diameter_aqp/visualize_pore_diameter_aqp/0.1.0 (3.048 ms)
-2022-05-30 16:40:03,656 INFO  [galaxy.tools.actions] Added output datasets to history (22.238 ms)
-2022-05-30 16:40:03,659 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/visualize_pore_diameter_aqp/visualize_pore_diameter_aqp/0.1.0] complete, ready to be enqueued (2.452 ms)
-2022-05-30 16:40:03,721 INFO  [galaxy.web_stack.handlers] (Job[id=19,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/visualize_pore_diameter_aqp/visualize_pore_diameter_aqp/0.1.0]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-30 16:40:04,091 INFO  [galaxy.jobs.handler] (19) Job dispatched
-2022-05-30 16:40:04,375 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmpudbcnm66/job_working_directory/000/19/tool_script.sh] for tool command [[ &quot;$(basename &quot;$CONDA_DEFAULT_ENV&quot;)&quot; = &quot;$(basename &#x27;/home/aepetit/miniconda3/envs/mulled-v1-5a4fbc211f26cb04dc98136056f4848655807f4df79e1bb9f5b172569688ee2f&#x27;)&quot; ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . &#x27;/home/aepetit/miniconda3/bin/activate&#x27; &#x27;/home/aepetit/miniconda3/envs/mulled-v1-5a4fbc211f26cb04dc98136056f4848655807f4df79e1bb9f5b172569688ee2f&#x27; &gt; conda_activate.log 2&gt;&amp;1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo &quot;Failed to activate conda environment! Error was:&quot;
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ &quot;$(basename &quot;$CONDA_DEFAULT_ENV&quot;)&quot; = &quot;$(basename &#x27;/home/aepetit/miniconda3/envs/mulled-v1-5a4fbc211f26cb04dc98136056f4848655807f4df79e1bb9f5b172569688ee2f&#x27;)&quot; ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . &#x27;/home/aepetit/miniconda3/bin/activate&#x27; &#x27;/home/aepetit/miniconda3/envs/mulled-v1-5a4fbc211f26cb04dc98136056f4848655807f4df79e1bb9f5b172569688ee2f&#x27; &gt; conda_activate.log 2&gt;&amp;1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo &quot;Failed to activate conda environment! Error was:&quot;
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ &quot;$(basename &quot;$CONDA_DEFAULT_ENV&quot;)&quot; = &quot;$(basename &#x27;/home/aepetit/miniconda3/envs/mulled-v1-5a4fbc211f26cb04dc98136056f4848655807f4df79e1bb9f5b172569688ee2f&#x27;)&quot; ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . &#x27;/home/aepetit/miniconda3/bin/activate&#x27; &#x27;/home/aepetit/miniconda3/envs/mulled-v1-5a4fbc211f26cb04dc98136056f4848655807f4df79e1bb9f5b172569688ee2f&#x27; &gt; conda_activate.log 2&gt;&amp;1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo &quot;Failed to activate conda environment! Error was:&quot;
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; [ &quot;$(basename &quot;$CONDA_DEFAULT_ENV&quot;)&quot; = &quot;$(basename &#x27;/home/aepetit/miniconda3/envs/mulled-v1-5a4fbc211f26cb04dc98136056f4848655807f4df79e1bb9f5b172569688ee2f&#x27;)&quot; ] || {
-MAX_TRIES=3
-COUNT=0
-while [ $COUNT -lt $MAX_TRIES ]; do
-    . &#x27;/home/aepetit/miniconda3/bin/activate&#x27; &#x27;/home/aepetit/miniconda3/envs/mulled-v1-5a4fbc211f26cb04dc98136056f4848655807f4df79e1bb9f5b172569688ee2f&#x27; &gt; conda_activate.log 2&gt;&amp;1
-    if [ $? -eq 0 ];then
-        break
-    else
-        let COUNT=COUNT+1
-        if [ $COUNT -eq $MAX_TRIES ];then
-            echo &quot;Failed to activate conda environment! Error was:&quot;
-            cat conda_activate.log
-            exit 1
-        fi
-        sleep 10s
-    fi
-done
-} ; ln -s &#x27;/tmp/tmpudbcnm66/files/1/2/9/dataset_12912b09-e396-43d6-afbb-14e2260e8be3.dat&#x27; &#x27;table_sort_pore_diameter_aqp.tabular&#x27; &amp;&amp; Rscript &#x27;/tmp/tmpudbcnm66/shed_tools/testtoolshed.g2.bx.psu.edu/repos/agpetit/visualize_pore_diameter_aqp/7f1b1530d0fb/visualize_pore_diameter_aqp/visualize_pore_diameter_aqp.R&#x27; -i &#x27;table_sort_pore_diameter_aqp.tabular&#x27; -a TRUE -p TRUE -d TRUE -f TRUE]
-2022-05-30 16:40:19,428 INFO  [galaxy.tool_util.verify] ## files diff on &#x27;/tmp/tmpaz27gu1ball_graphics_distribution.pdf&#x27; and &#x27;/tmp/tmphrnvqxzjall_graphics_distribution.pdf&#x27;: lines_diff = 0, found diff = 4, found pdf invalid diff = 0
-<br/> -------------------------------Captured log call-------------------------------- <br/>DEBUG    multipart.multipart:multipart.py:604 Calling on_field_start with no data
-DEBUG    multipart.multipart:multipart.py:601 Calling on_field_name with data[0:4]
-DEBUG    multipart.multipart:multipart.py:601 Calling on_field_data with data[5:149]
-DEBUG    multipart.multipart:multipart.py:604 Calling on_field_end with no data
-DEBUG    multipart.multipart:multipart.py:604 Calling on_end with no data<br/> ----------------------------Captured stderr teardown---------------------------- <br/>2022-05-30 16:40:19,530 INFO  [test_driver] 21 threads were active before stopping embedded server
-2022-05-30 16:40:19,530 INFO  [test_driver] Shutting down embedded galaxy uvicorn server
-2022-05-30 16:40:19,530 INFO  [test_driver] Embedded web server galaxy stopped
-2022-05-30 16:40:19,531 INFO  [test_driver] Stopping embedded server thread
-INFO:     Shutting down
-2022-05-30 16:40:19,532 INFO  [uvicorn.error] Shutting down
-INFO:     Waiting for application shutdown.
-2022-05-30 16:40:19,632 INFO  [uvicorn.error] Waiting for application shutdown.
-INFO:     Application shutdown complete.
-2022-05-30 16:40:19,633 INFO  [uvicorn.error] Application shutdown complete.
-INFO:     Finished server process [39518]
-2022-05-30 16:40:19,633 INFO  [uvicorn.error] Finished server process [39518]
-2022-05-30 16:40:19,633 INFO  [test_driver] Event loop for uvicorn closed
-2022-05-30 16:40:19,633 INFO  [test_driver] Embedded server thread stopped
-2022-05-30 16:40:19,634 INFO  [test_driver] Stopping application galaxy
-2022-05-30 16:40:20,509 INFO  [galaxy.queue_worker] Sending reconfigure_watcher control task.
-2022-05-30 16:40:20,524 INFO  [galaxy.jobs.handler] sending stop signal to worker thread
-2022-05-30 16:40:20,525 INFO  [galaxy.jobs.handler] job handler queue stopped
-2022-05-30 16:40:20,525 INFO  [galaxy.jobs.runners] LocalRunner: Sending stop signal to 4 job worker threads
-2022-05-30 16:40:20,525 INFO  [galaxy.jobs.runners] Waiting up to 5 seconds for job worker threads to shutdown...
-2022-05-30 16:40:20,526 INFO  [galaxy.jobs.runners] All job worker threads shutdown cleanly
-2022-05-30 16:40:20,526 INFO  [galaxy.jobs.runners] TaskRunner: Sending stop signal to 2 job worker threads
-2022-05-30 16:40:20,526 INFO  [galaxy.jobs.runners] Waiting up to 5 seconds for job worker threads to shutdown...
-2022-05-30 16:40:20,800 INFO  [galaxy.jobs.runners] All job worker threads shutdown cleanly
-2022-05-30 16:40:20,801 INFO  [galaxy.jobs.handler] sending stop signal to worker thread
-2022-05-30 16:40:20,801 INFO  [galaxy.jobs.handler] job handler stop queue stopped
-2022-05-30 16:40:20,802 INFO  [test_driver] Application galaxy stopped.
-2022-05-30 16:40:20,803 INFO  [test_driver] 2 active after stopping embedded server
-<br/> -----------------------------Captured log teardown------------------------------ <br/>INFO     test_driver:driver_util.py:747 21 threads were active before stopping embedded server
-INFO     test_driver:driver_util.py:755 Shutting down embedded galaxy uvicorn server
-INFO     test_driver:driver_util.py:757 Embedded web server galaxy stopped
-INFO     test_driver:driver_util.py:760 Stopping embedded server thread
-INFO     uvicorn.error:server.py:252 Shutting down
-INFO     uvicorn.error:on.py:64 Waiting for application shutdown.
-INFO     uvicorn.error:on.py:75 Application shutdown complete.
-INFO     uvicorn.error:server.py:85 Finished server process [39518]
-INFO     test_driver:driver_util.py:587 Event loop for uvicorn closed
-INFO     test_driver:driver_util.py:762 Embedded server thread stopped
-INFO     test_driver:driver_util.py:765 Stopping application galaxy
-INFO     test_driver:driver_util.py:767 Application galaxy stopped.
-INFO     test_driver:driver_util.py:769 2 active after stopping embedded server<br/></div></td></tr></tbody></table></body></html>
\ No newline at end of file
Binary file test-data/.PIP2.1_test.xtc_offsets.npz has changed
Binary file test-data/.XIP3.1_5_frames.xtc_offsets.npz has changed
Binary file test-data/Distance_distribution_by_aquaporin.png has changed
Binary file test-data/Distance_distribution_by_protomer.png has changed
Binary file test-data/Distance_distribution_on_all_protomers.png has changed
Binary file test-data/all_graphics_distribution.pdf has changed
--- a/visualize_pore_diameter_aqp.R	Mon May 30 15:56:59 2022 +0000
+++ b/visualize_pore_diameter_aqp.R	Wed Jun 01 10:10:27 2022 +0000
@@ -70,8 +70,8 @@
     geom_line(aes(color = .data[[color]])) +
     geom_ribbon(aes(ymin = mean_distance - std_distance, ymax = mean_distance
                     + std_distance, fill = .data[[color]]), alpha = 0.3) +
-    facet_wrap(wrap) + theme(legend.position = "top") + guides(color = "none", fill = "none") +
-    ggtitle(label = title, subtitle = "The envelope represents the standard deviation") +
+    facet_wrap(wrap, nrow = 2) + theme(legend.position = "top") + guides(color = "none", fill = "none") +
+    ggtitle(label = title, subtitle = "The envelope represents the standard deviation.") +
     ylab(label = "ArR-ArR distance (Ångströms)") + xlab(label = "Time (ns)")
   return(g_distribution)
 }
@@ -84,7 +84,7 @@
   wrap_aqp <- c("aqp")
   title_aqp <- "Average distance ArR-ArR by AQP (4 protomers)"
   g_aqp_distribution <- create_ggplot(tibble_sort_mean_long, tibble_sort_std_long, group_aqp, color_aqp, wrap_aqp, title_aqp)
-  ggsave("Distance_distribution_by_aquaporin.png", g_aqp_distribution, width = 20, height = 18, units = "cm")
+  ggsave("Distance_distribution_by_aquaporin.png", g_aqp_distribution, width = 40, height = 20, units = "cm")
   list_ggplot[[1]] <- g_aqp_distribution
 }
 
@@ -92,9 +92,9 @@
   group_protomer <- c("time", "protomer")
   color_protomer <- "protomer"
   wrap_protomer <- c("protomer")
-  title_protomer <- "Average distance ArR-ArR by by protomer (2 aquaporins)"
+  title_protomer <- "Average distance ArR-ArR by protomer (2 aquaporins)"
   g_protomer_distribution <- create_ggplot(tibble_sort_mean_long, tibble_sort_std_long, group_protomer, color_protomer, wrap_protomer, title_protomer)
-  ggsave("Distance_distribution_by_protomer.png", g_protomer_distribution, width = 20, height = 18, units = "cm")
+  ggsave("Distance_distribution_by_protomer.png", g_protomer_distribution, width = 40, height = 20, units = "cm")
   list_ggplot[[2]] <- g_protomer_distribution
 }
 
@@ -104,10 +104,10 @@
   wrap_all <- c("aqp", "protomer")
   title_all <- "Average distance ArR-ArR by protomer anq AQP"
   g_all_distribution <- create_ggplot(tibble_sort_mean_long, tibble_sort_std_long, group_all, color_all, wrap_all, title_all)
-  ggsave("Distance_distribution_on_all_protomers.png", g_all_distribution, width = 20, height = 18, units = "cm")
+  ggsave("Distance_distribution_on_all_protomers.png", g_all_distribution, width = 40, height = 20, units = "cm")
   list_ggplot[[3]] <- g_all_distribution
 }
 
 if (opt$pdf == TRUE) {
-  ggexport(list_ggplot, filename = "all_graphics_distribution.pdf")
+  ggexport(list_ggplot, filename = "all_graphics_distribution.pdf", width = 18, heigh = 18)
 }