changeset 4:433dba16af7d draft

"planemo upload for repository https://github.com/mesocentre-clermont-auvergne/aubi_piaf commit 48a10de1b21f94ab8019d9d0e4a43e0bd9d0c31e-dirty"
author agpetit
date Fri, 27 May 2022 09:07:29 +0000
parents b120a98cf623
children e504457035e5
files run_installed_tests.html test-data/cut_trajectories_file.log test-data/cut_trajectories_no_file.log
diffstat 3 files changed, 56 insertions(+), 1159 deletions(-) [+]
line wrap: on
line diff
--- a/run_installed_tests.html	Fri May 27 07:36:52 2022 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,947 +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 27-May-2022 at 09:08:27 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>5 tests ran in 162.57 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">3 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/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0_test_2]</td>
-          <td class="col-duration">38.80</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/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0_test_2&#x27;, ...d.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0 testMethod=runTest&gt;, 1)<br/>driver = &lt;functional.test_toolbox_pytest.DefaultGalaxyTestDriver object at 0x7f227250c280&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 0x7f226f4f3c40&gt;, history = &#x27;54f2a3a23292eb07&#x27;<br/>jobs = [{&#x27;create_time&#x27;: &#x27;2022-05-27T07:07:09.529613&#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-27T07:07:09.533075&#x27;, &#x27;data_type&#x27;: &#x27;galaxy.datatypes.data.Text&#x27;, &#x27;deleted&#x27;: False,...157069a5-6727-4eb8-9d80-8a551afe1093&#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-27T07:07:09.531693&#x27;, &#x27;deleted&#x27;: False, ...}}<br/>galaxy_interactor = &lt;galaxy.tool_util.verify.interactor.GalaxyInteractorApi object at 0x7f2214721b50&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</span><br/><span class="error">E           Expected 241+-0 lines in the output found 163</span><br/><br/>lib/galaxy/tool_util/verify/interactor.py:1299: JobOutputsError<br/> ------------------------------Captured stderr call------------------------------ <br/>2022-05-27 09:06:44,120 DEBUG [multipart.multipart] Calling on_field_start with no data
-2022-05-27 09:06:44,121 DEBUG [multipart.multipart] Calling on_field_name with data[0:4]
-2022-05-27 09:06:44,121 DEBUG [multipart.multipart] Calling on_field_data with data[5:153]
-2022-05-27 09:06:44,121 DEBUG [multipart.multipart] Calling on_field_end with no data
-2022-05-27 09:06:44,121 DEBUG [multipart.multipart] Calling on_end with no data
-2022-05-27 09:06:45,213 INFO  [galaxy.tools] Validated and populated state for tool request (21.598 ms)
-2022-05-27 09:06:45,219 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.142 ms)
-2022-05-27 09:06:45,353 DEBUG [galaxy.tools.actions.upload] Checked uploads (134.155 ms)
-2022-05-27 09:06:45,360 DEBUG [galaxy.tools.actions.upload] Created upload job (6.274 ms)
-2022-05-27 09:06:45,381 INFO  [galaxy.web_stack.handlers] (Job[id=7,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-27 09:06:46,309 INFO  [galaxy.jobs.handler] (7) Job dispatched
-2022-05-27 09:06:46,485 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/7/tool_script.sh] for tool command [python &#x27;/tmp/tmptoruqmiy/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmptoruqmiy/galaxy-dev&#x27; &#x27;/tmp/tmptoruqmiy/job_working_directory/000/7/registry.xml&#x27; &#x27;/tmp/upload_params_n9cdh_8t&#x27; &#x27;8:/tmp/tmptoruqmiy/job_working_directory/000/7/working/dataset_af8d1b0c-d748-4b88-935e-429302b926ec_files:/tmp/tmptoruqmiy/files/a/f/8/dataset_af8d1b0c-d748-4b88-935e-429302b926ec.dat&#x27;]
-2022-05-27 09:06:54,095 INFO  [galaxy.tools] Validated and populated state for tool request (24.710 ms)
-2022-05-27 09:06:54,102 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.144 ms)
-2022-05-27 09:06:54,215 DEBUG [galaxy.tools.actions.upload] Checked uploads (113.287 ms)
-2022-05-27 09:06:54,221 DEBUG [galaxy.tools.actions.upload] Created upload job (5.835 ms)
-2022-05-27 09:06:54,242 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-27 09:06:54,873 INFO  [galaxy.jobs.handler] (8) Job dispatched
-2022-05-27 09:06:55,123 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/8/tool_script.sh] for tool command [python &#x27;/tmp/tmptoruqmiy/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmptoruqmiy/galaxy-dev&#x27; &#x27;/tmp/tmptoruqmiy/job_working_directory/000/8/registry.xml&#x27; &#x27;/tmp/upload_params__n8zpgmo&#x27; &#x27;9:/tmp/tmptoruqmiy/job_working_directory/000/8/working/dataset_2f2d7be8-929e-4b65-a898-06a921300c73_files:/tmp/tmptoruqmiy/files/2/f/2/dataset_2f2d7be8-929e-4b65-a898-06a921300c73.dat&#x27;]
-2022-05-27 09:07:01,790 INFO  [galaxy.tools] Validated and populated state for tool request (23.541 ms)
-2022-05-27 09:07:01,796 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.142 ms)
-2022-05-27 09:07:01,908 DEBUG [galaxy.tools.actions.upload] Checked uploads (112.494 ms)
-2022-05-27 09:07:01,916 DEBUG [galaxy.tools.actions.upload] Created upload job (7.217 ms)
-2022-05-27 09:07:01,941 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-27 09:07:02,320 INFO  [galaxy.jobs.handler] (9) Job dispatched
-2022-05-27 09:07:02,533 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/9/tool_script.sh] for tool command [python &#x27;/tmp/tmptoruqmiy/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmptoruqmiy/galaxy-dev&#x27; &#x27;/tmp/tmptoruqmiy/job_working_directory/000/9/registry.xml&#x27; &#x27;/tmp/upload_params_d9ksd_uu&#x27; &#x27;10:/tmp/tmptoruqmiy/job_working_directory/000/9/working/dataset_1cbe15a0-33cd-4c77-a7eb-cfce8034f2bb_files:/tmp/tmptoruqmiy/files/1/c/b/dataset_1cbe15a0-33cd-4c77-a7eb-cfce8034f2bb.dat&#x27;]
-2022-05-27 09:07:09,478 INFO  [galaxy.tools] Validated and populated state for tool request (23.189 ms)
-2022-05-27 09:07:09,492 INFO  [galaxy.tools.actions] Handled collection output named output_traj for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0 (2.367 ms)
-2022-05-27 09:07:09,494 INFO  [galaxy.tools.actions] Handled output named cut_log for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0 (1.967 ms)
-2022-05-27 09:07:09,511 INFO  [galaxy.tools.actions] Added output datasets to history (17.096 ms)
-2022-05-27 09:07:09,515 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0] complete, ready to be enqueued (3.762 ms)
-2022-05-27 09:07:09,558 INFO  [galaxy.web_stack.handlers] (Job[id=10,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-27 09:07:09,901 INFO  [galaxy.jobs.handler] (10) Job dispatched
-2022-05-27 09:07:10,139 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/10/tool_script.sh] for tool command [[ &quot;$(basename &quot;$CONDA_DEFAULT_ENV&quot;)&quot; = &quot;$(basename &#x27;/home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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/tmptoruqmiy/files/a/f/8/dataset_af8d1b0c-d748-4b88-935e-429302b926ec.dat&#x27; &#x27;PIP2.1_test.gro&#x27; &amp;&amp; ln -s &#x27;/tmp/tmptoruqmiy/files/2/f/2/dataset_2f2d7be8-929e-4b65-a898-06a921300c73.dat&#x27; &#x27;PIP2.1_test.xtc&#x27; &amp;&amp; ln -s &#x27;/tmp/tmptoruqmiy/files/1/c/b/dataset_1cbe15a0-33cd-4c77-a7eb-cfce8034f2bb.dat&#x27; &#x27;estimated_number_of_sub_trajectories.tsv&#x27; &amp;&amp; python &#x27;/tmp/tmptoruqmiy/shed_tools/testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/c09cf8acc4de/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories.py&#x27; --verbose --gro_file &#x27;PIP2.1_test.gro&#x27; --xtc_file &#x27;PIP2.1_test.xtc&#x27; --log_output &#x27;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;]
----------------------- &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:153]
-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/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0_test_3]</td>
-          <td class="col-duration">40.43</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/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0_test_3&#x27;, ...d.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0 testMethod=runTest&gt;, 2)<br/>driver = &lt;functional.test_toolbox_pytest.DefaultGalaxyTestDriver object at 0x7f227250c280&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 0x7f226f22bd30&gt;, history = &#x27;8155e4b4bf1581ff&#x27;<br/>jobs = [{&#x27;create_time&#x27;: &#x27;2022-05-27T07:07:50.059003&#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-27T07:07:50.063180&#x27;, &#x27;data_type&#x27;: &#x27;galaxy.datatypes.data.Text&#x27;, &#x27;deleted&#x27;: False,...11db857f-5e9e-40b7-ab71-3aba6213bc8b&#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-27T07:07:50.061399&#x27;, &#x27;deleted&#x27;: False, ...}}<br/>galaxy_interactor = &lt;galaxy.tool_util.verify.interactor.GalaxyInteractorApi object at 0x7f2214721b50&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</span><br/><span class="error">E           Expected 239+-0 lines in the output found 161</span><br/><br/>lib/galaxy/tool_util/verify/interactor.py:1299: JobOutputsError<br/> ------------------------------Captured stderr call------------------------------ <br/>2022-05-27 09:07:23,056 DEBUG [multipart.multipart] Calling on_field_start with no data
-2022-05-27 09:07:23,056 DEBUG [multipart.multipart] Calling on_field_name with data[0:4]
-2022-05-27 09:07:23,056 DEBUG [multipart.multipart] Calling on_field_data with data[5:153]
-2022-05-27 09:07:23,056 DEBUG [multipart.multipart] Calling on_field_end with no data
-2022-05-27 09:07:23,056 DEBUG [multipart.multipart] Calling on_end with no data
-2022-05-27 09:07:24,155 INFO  [galaxy.tools] Validated and populated state for tool request (22.557 ms)
-2022-05-27 09:07:24,161 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.147 ms)
-2022-05-27 09:07:24,267 DEBUG [galaxy.tools.actions.upload] Checked uploads (105.875 ms)
-2022-05-27 09:07:24,273 DEBUG [galaxy.tools.actions.upload] Created upload job (6.109 ms)
-2022-05-27 09:07:24,304 INFO  [galaxy.web_stack.handlers] (Job[id=11,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-27 09:07:24,687 INFO  [galaxy.jobs.handler] (11) Job dispatched
-2022-05-27 09:07:24,908 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/11/tool_script.sh] for tool command [python &#x27;/tmp/tmptoruqmiy/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmptoruqmiy/galaxy-dev&#x27; &#x27;/tmp/tmptoruqmiy/job_working_directory/000/11/registry.xml&#x27; &#x27;/tmp/upload_params_149iajw4&#x27; &#x27;15:/tmp/tmptoruqmiy/job_working_directory/000/11/working/dataset_77bd9b6c-523e-47cf-9eab-81619349d30f_files:/tmp/tmptoruqmiy/files/7/7/b/dataset_77bd9b6c-523e-47cf-9eab-81619349d30f.dat&#x27;]
-2022-05-27 09:07:32,387 INFO  [galaxy.tools] Validated and populated state for tool request (22.918 ms)
-2022-05-27 09:07:32,394 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.147 ms)
-2022-05-27 09:07:32,506 DEBUG [galaxy.tools.actions.upload] Checked uploads (111.673 ms)
-2022-05-27 09:07:32,512 DEBUG [galaxy.tools.actions.upload] Created upload job (6.064 ms)
-2022-05-27 09:07:32,540 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-27 09:07:33,244 INFO  [galaxy.jobs.handler] (12) Job dispatched
-2022-05-27 09:07:33,510 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/12/tool_script.sh] for tool command [python &#x27;/tmp/tmptoruqmiy/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmptoruqmiy/galaxy-dev&#x27; &#x27;/tmp/tmptoruqmiy/job_working_directory/000/12/registry.xml&#x27; &#x27;/tmp/upload_params_t99uz5pr&#x27; &#x27;16:/tmp/tmptoruqmiy/job_working_directory/000/12/working/dataset_18454cb5-4d92-467e-a6fe-92717ffffe40_files:/tmp/tmptoruqmiy/files/1/8/4/dataset_18454cb5-4d92-467e-a6fe-92717ffffe40.dat&#x27;]
-2022-05-27 09:07:40,449 INFO  [galaxy.tools] Validated and populated state for tool request (22.896 ms)
-2022-05-27 09:07:40,456 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.352 ms)
-2022-05-27 09:07:40,576 DEBUG [galaxy.tools.actions.upload] Checked uploads (119.159 ms)
-2022-05-27 09:07:40,584 DEBUG [galaxy.tools.actions.upload] Created upload job (8.363 ms)
-2022-05-27 09:07:40,608 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-27 09:07:40,935 INFO  [galaxy.jobs.handler] (13) Job dispatched
-2022-05-27 09:07:41,109 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/13/tool_script.sh] for tool command [python &#x27;/tmp/tmptoruqmiy/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmptoruqmiy/galaxy-dev&#x27; &#x27;/tmp/tmptoruqmiy/job_working_directory/000/13/registry.xml&#x27; &#x27;/tmp/upload_params_e61k8ex6&#x27; &#x27;17:/tmp/tmptoruqmiy/job_working_directory/000/13/working/dataset_745f4487-3b81-44f5-9eb8-9d76e882a98a_files:/tmp/tmptoruqmiy/files/7/4/5/dataset_745f4487-3b81-44f5-9eb8-9d76e882a98a.dat&#x27;]
-2022-05-27 09:07:50,014 INFO  [galaxy.tools] Validated and populated state for tool request (24.877 ms)
-2022-05-27 09:07:50,027 INFO  [galaxy.tools.actions] Handled collection output named output_traj for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0 (0.776 ms)
-2022-05-27 09:07:50,028 INFO  [galaxy.tools.actions] Handled output named cut_log for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0 (0.902 ms)
-2022-05-27 09:07:50,042 INFO  [galaxy.tools.actions] Added output datasets to history (13.785 ms)
-2022-05-27 09:07:50,045 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0] complete, ready to be enqueued (2.064 ms)
-2022-05-27 09:07:50,082 INFO  [galaxy.web_stack.handlers] (Job[id=14,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-27 09:07:50,482 INFO  [galaxy.jobs.handler] (14) Job dispatched
-2022-05-27 09:07:50,758 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/14/tool_script.sh] for tool command [[ &quot;$(basename &quot;$CONDA_DEFAULT_ENV&quot;)&quot; = &quot;$(basename &#x27;/home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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/tmptoruqmiy/files/7/7/b/dataset_77bd9b6c-523e-47cf-9eab-81619349d30f.dat&#x27; &#x27;PIP2.1_test.gro&#x27; &amp;&amp; ln -s &#x27;/tmp/tmptoruqmiy/files/1/8/4/dataset_18454cb5-4d92-467e-a6fe-92717ffffe40.dat&#x27; &#x27;PIP2.1_test.xtc&#x27; &amp;&amp; ln -s &#x27;/tmp/tmptoruqmiy/files/7/4/5/dataset_745f4487-3b81-44f5-9eb8-9d76e882a98a.dat&#x27; &#x27;PIP2.1_test_check.txt&#x27; &amp;&amp; python &#x27;/tmp/tmptoruqmiy/shed_tools/testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/c09cf8acc4de/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories.py&#x27; --verbose --gro_file &#x27;PIP2.1_test.gro&#x27; --xtc_file &#x27;PIP2.1_test.xtc&#x27; --log_output &#x27;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;]
----------------------- &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:153]
-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">30.08</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="log"> ------------------------------Captured stderr call------------------------------ <br/>2022-05-27 09:05:57,130 DEBUG [multipart.multipart] Calling on_field_start with no data
-2022-05-27 09:05:57,130 DEBUG [multipart.multipart] Calling on_field_name with data[0:4]
-2022-05-27 09:05:57,131 DEBUG [multipart.multipart] Calling on_field_data with data[5:129]
-2022-05-27 09:05:57,131 DEBUG [multipart.multipart] Calling on_field_end with no data
-2022-05-27 09:05:57,131 DEBUG [multipart.multipart] Calling on_end with no data
-2022-05-27 09:05:57,282 INFO  [galaxy.managers.configuration] Galaxy extra version JSON file /tmp/tmptoruqmiy/galaxy-dev/version.json not loaded.
-2022-05-27 09:05:57,369 INFO  [galaxy.tools] Validated and populated state for tool request (23.134 ms)
-2022-05-27 09:05:57,383 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.163 ms)
-2022-05-27 09:05:57,525 DEBUG [galaxy.tools.actions.upload] Checked uploads (141.865 ms)
-2022-05-27 09:05:57,531 DEBUG [galaxy.tools.actions.upload] Created upload job (5.830 ms)
-2022-05-27 09:05:57,566 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-27 09:05:58,195 INFO  [galaxy.jobs.handler] (1) Job dispatched
-2022-05-27 09:05:58,387 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/1/tool_script.sh] for tool command [python &#x27;/tmp/tmptoruqmiy/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmptoruqmiy/galaxy-dev&#x27; &#x27;/tmp/tmptoruqmiy/job_working_directory/000/1/registry.xml&#x27; &#x27;/tmp/upload_params_7yd43mro&#x27; &#x27;1:/tmp/tmptoruqmiy/job_working_directory/000/1/working/dataset_97392d40-4be1-455b-b5a1-d46e4721e0d8_files:/tmp/tmptoruqmiy/files/9/7/3/dataset_97392d40-4be1-455b-b5a1-d46e4721e0d8.dat&#x27;]
-2022-05-27 09:06:05,465 INFO  [galaxy.tools] Validated and populated state for tool request (29.005 ms)
-2022-05-27 09:06:05,474 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.156 ms)
-2022-05-27 09:06:05,608 DEBUG [galaxy.tools.actions.upload] Checked uploads (133.631 ms)
-2022-05-27 09:06:05,614 DEBUG [galaxy.tools.actions.upload] Created upload job (5.702 ms)
-2022-05-27 09:06:05,635 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-27 09:06:06,681 INFO  [galaxy.jobs.handler] (2) Job dispatched
-2022-05-27 09:06:06,896 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/2/tool_script.sh] for tool command [python &#x27;/tmp/tmptoruqmiy/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmptoruqmiy/galaxy-dev&#x27; &#x27;/tmp/tmptoruqmiy/job_working_directory/000/2/registry.xml&#x27; &#x27;/tmp/upload_params_niqt66u4&#x27; &#x27;2:/tmp/tmptoruqmiy/job_working_directory/000/2/working/dataset_cb889cdf-730a-428f-b94b-82c19b5bb4f4_files:/tmp/tmptoruqmiy/files/c/b/8/dataset_cb889cdf-730a-428f-b94b-82c19b5bb4f4.dat&#x27;]
-2022-05-27 09:06:13,887 INFO  [galaxy.tools] Validated and populated state for tool request (21.823 ms)
-2022-05-27 09:06:13,893 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.140 ms)
-2022-05-27 09:06:14,001 DEBUG [galaxy.tools.actions.upload] Checked uploads (108.369 ms)
-2022-05-27 09:06:14,007 DEBUG [galaxy.tools.actions.upload] Created upload job (5.655 ms)
-2022-05-27 09:06:14,035 INFO  [galaxy.web_stack.handlers] (Job[id=3,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-27 09:06:14,310 INFO  [galaxy.jobs.handler] (3) Job dispatched
-2022-05-27 09:06:14,453 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/3/tool_script.sh] for tool command [python &#x27;/tmp/tmptoruqmiy/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmptoruqmiy/galaxy-dev&#x27; &#x27;/tmp/tmptoruqmiy/job_working_directory/000/3/registry.xml&#x27; &#x27;/tmp/upload_params_4_iqbmvk&#x27; &#x27;3:/tmp/tmptoruqmiy/job_working_directory/000/3/working/dataset_30dd8d24-f614-4ac7-8cd6-a4e18b4f1f3e_files:/tmp/tmptoruqmiy/files/3/0/d/dataset_30dd8d24-f614-4ac7-8cd6-a4e18b4f1f3e.dat&#x27;]
-2022-05-27 09:06:21,302 INFO  [galaxy.tools] Validated and populated state for tool request (28.288 ms)
-2022-05-27 09:06:21,362 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.760 ms)
-2022-05-27 09:06:21,377 INFO  [galaxy.tools.actions] Added output datasets to history (14.220 ms)
-2022-05-27 09:06:21,379 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.770 ms)
-2022-05-27 09:06:21,418 INFO  [galaxy.web_stack.handlers] (Job[id=4,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-27 09:06:21,724 INFO  [galaxy.jobs.handler] (4) Job dispatched
-2022-05-27 09:06:22,041 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/4/tool_script.sh] for tool command [cat /tmp/tmptoruqmiy/files/9/7/3/dataset_97392d40-4be1-455b-b5a1-d46e4721e0d8.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/tmptoruqmiy/files/e/e/c/dataset_eec2e4de-bddf-4d25-b9b2-aa655cfec902.dat&#x27; ; cat /tmp/tmptoruqmiy/files/9/7/3/dataset_97392d40-4be1-455b-b5a1-d46e4721e0d8.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/tmptoruqmiy/files/c/b/8/dataset_cb889cdf-730a-428f-b94b-82c19b5bb4f4.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/tmptoruqmiy/files/3/0/d/dataset_30dd8d24-f614-4ac7-8cd6-a4e18b4f1f3e.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/tmptoruqmiy/files/e/e/c/dataset_eec2e4de-bddf-4d25-b9b2-aa655cfec902.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_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0_test_1]</td>
-          <td class="col-duration">16.85</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="log"> ------------------------------Captured stderr call------------------------------ <br/>2022-05-27 09:06:27,235 DEBUG [multipart.multipart] Calling on_field_start with no data
-2022-05-27 09:06:27,236 DEBUG [multipart.multipart] Calling on_field_name with data[0:4]
-2022-05-27 09:06:27,236 DEBUG [multipart.multipart] Calling on_field_data with data[5:153]
-2022-05-27 09:06:27,237 DEBUG [multipart.multipart] Calling on_field_end with no data
-2022-05-27 09:06:27,237 DEBUG [multipart.multipart] Calling on_end with no data
-2022-05-27 09:06:27,445 INFO  [galaxy.tools] Validated and populated state for tool request (22.082 ms)
-2022-05-27 09:06:27,453 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.154 ms)
-2022-05-27 09:06:27,567 DEBUG [galaxy.tools.actions.upload] Checked uploads (113.879 ms)
-2022-05-27 09:06:27,572 DEBUG [galaxy.tools.actions.upload] Created upload job (5.676 ms)
-2022-05-27 09:06:27,592 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-27 09:06:28,223 INFO  [galaxy.jobs.handler] (5) Job dispatched
-2022-05-27 09:06:28,370 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/5/tool_script.sh] for tool command [python &#x27;/tmp/tmptoruqmiy/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmptoruqmiy/galaxy-dev&#x27; &#x27;/tmp/tmptoruqmiy/job_working_directory/000/5/registry.xml&#x27; &#x27;/tmp/upload_params_3z8ry2g5&#x27; &#x27;5:/tmp/tmptoruqmiy/job_working_directory/000/5/working/dataset_fedb0d1a-a7bd-401b-86ba-117e6751df12_files:/tmp/tmptoruqmiy/files/f/e/d/dataset_fedb0d1a-a7bd-401b-86ba-117e6751df12.dat&#x27;]
-2022-05-27 09:06:37,473 INFO  [galaxy.tools] Validated and populated state for tool request (22.142 ms)
-2022-05-27 09:06:37,488 INFO  [galaxy.tools.actions] Handled output named sub_trajectories_out_file for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0 (2.549 ms)
-2022-05-27 09:06:37,490 INFO  [galaxy.tools.actions] Handled output named estimate_log for tool testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0 (1.954 ms)
-2022-05-27 09:06:37,505 INFO  [galaxy.tools.actions] Added output datasets to history (15.426 ms)
-2022-05-27 09:06:37,508 INFO  [galaxy.tools.actions] Setup for job Job[unflushed,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0] complete, ready to be enqueued (2.166 ms)
-2022-05-27 09:06:37,543 INFO  [galaxy.web_stack.handlers] (Job[id=6,tool_id=testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/estimate_cut_sub_trajectories/0.1.0]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-27 09:06:37,847 INFO  [galaxy.jobs.handler] (6) Job dispatched
-2022-05-27 09:06:37,982 WARNI [galaxy.security.object_wrapper] Unable to create dynamic subclass SafeStringWrapper(galaxy.model.none_like.None:&lt;class &#x27;NoneType&#x27;&gt;,&lt;class &#x27;NotImplementedType&#x27;&gt;,&lt;class &#x27;bool&#x27;&gt;,&lt;class &#x27;bytearray&#x27;&gt;,&lt;class &#x27;ellipsis&#x27;&gt;,&lt;class &#x27;galaxy.security.object_wrapper.SafeStringWrapper&#x27;&gt;,&lt;class &#x27;galaxy.tools.wrappers.ToolParameterValueWrapper&#x27;&gt;,&lt;class &#x27;numbers.Number&#x27;&gt;) for &lt;class &#x27;galaxy.model.none_like.NoneDataset&#x27;&gt;, None: type() doesn&#x27;t support MRO entry resolution; use types.new_class()
-2022-05-27 09:06:38,056 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/6/tool_script.sh] for tool command [[ &quot;$(basename &quot;$CONDA_DEFAULT_ENV&quot;)&quot; = &quot;$(basename &#x27;/home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1&#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/tmptoruqmiy/files/f/e/d/dataset_fedb0d1a-a7bd-401b-86ba-117e6751df12.dat&#x27; &#x27;PIP2.1_test_check.txt&#x27; &amp;&amp; ln -s &#x27;/tmp/tmptoruqmiy/files/5/8/a/dataset_58ab194a-5436-4b35-aea0-6b66530a0562.dat&#x27; &#x27;estimated_number_of_sub_trajectories.tsv&#x27; &amp;&amp; python &#x27;/tmp/tmptoruqmiy/shed_tools/testtoolshed.g2.bx.psu.edu/repos/agpetit/estimate_cut_sub_trajectories/c09cf8acc4de/estimate_cut_sub_trajectories/estimate_cut_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;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:153]
-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">23.96</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="log"> ------------------------------Captured stderr call------------------------------ <br/>2022-05-27 09:08:03,555 DEBUG [multipart.multipart] Calling on_field_start with no data
-2022-05-27 09:08:03,556 DEBUG [multipart.multipart] Calling on_field_name with data[0:4]
-2022-05-27 09:08:03,556 DEBUG [multipart.multipart] Calling on_field_data with data[5:149]
-2022-05-27 09:08:03,557 DEBUG [multipart.multipart] Calling on_field_end with no data
-2022-05-27 09:08:03,557 DEBUG [multipart.multipart] Calling on_end with no data
-2022-05-27 09:08:03,766 INFO  [galaxy.tools] Validated and populated state for tool request (22.328 ms)
-2022-05-27 09:08:03,772 DEBUG [galaxy.tools.actions.upload] Persisted uploads (0.146 ms)
-2022-05-27 09:08:03,874 DEBUG [galaxy.tools.actions.upload] Checked uploads (101.847 ms)
-2022-05-27 09:08:03,880 DEBUG [galaxy.tools.actions.upload] Created upload job (5.943 ms)
-2022-05-27 09:08:03,908 INFO  [galaxy.web_stack.handlers] (Job[id=15,tool_id=upload1]) Handler &#x27;_default_&#x27; assigned using &#x27;HANDLER_ASSIGNMENT_METHODS.DB_SKIP_LOCKED&#x27; assignment method
-2022-05-27 09:08:04,251 INFO  [galaxy.jobs.handler] (15) Job dispatched
-2022-05-27 09:08:04,484 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/15/tool_script.sh] for tool command [python &#x27;/tmp/tmptoruqmiy/galaxy-dev/tools/data_source/upload.py&#x27; &#x27;/tmp/tmptoruqmiy/galaxy-dev&#x27; &#x27;/tmp/tmptoruqmiy/job_working_directory/000/15/registry.xml&#x27; &#x27;/tmp/upload_params_fom2zjay&#x27; &#x27;22:/tmp/tmptoruqmiy/job_working_directory/000/15/working/dataset_14d25761-af75-46cc-b88e-fff28f41b237_files:/tmp/tmptoruqmiy/files/1/4/d/dataset_14d25761-af75-46cc-b88e-fff28f41b237.dat&#x27;]
-2022-05-27 09:08:11,110 INFO  [galaxy.tools] Validated and populated state for tool request (11.546 ms)
-2022-05-27 09:08:11,124 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 (2.658 ms)
-2022-05-27 09:08:11,126 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 (1.971 ms)
-2022-05-27 09:08:11,128 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 (1.959 ms)
-2022-05-27 09:08:11,131 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 (2.792 ms)
-2022-05-27 09:08:11,148 INFO  [galaxy.tools.actions] Added output datasets to history (16.256 ms)
-2022-05-27 09:08:11,150 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.459 ms)
-2022-05-27 09:08:11,183 INFO  [galaxy.web_stack.handlers] (Job[id=16,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-27 09:08:11,681 INFO  [galaxy.jobs.handler] (16) Job dispatched
-2022-05-27 09:08:11,940 INFO  [galaxy.jobs.command_factory] Built script [/tmp/tmptoruqmiy/job_working_directory/000/16/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/tmptoruqmiy/files/1/4/d/dataset_14d25761-af75-46cc-b88e-fff28f41b237.dat&#x27; &#x27;table_sort_pore_diameter_aqp.tabular&#x27; &amp;&amp; Rscript &#x27;/tmp/tmptoruqmiy/shed_tools/testtoolshed.g2.bx.psu.edu/repos/agpetit/visualize_pore_diameter_aqp/3cdcc6eeb3ec/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-27 09:08:24,745 INFO  [galaxy.tool_util.verify] ## files diff on &#x27;/tmp/tmpher3091iall_graphics_distribution.pdf&#x27; and &#x27;/tmp/tmpc_uqkw8kall_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-27 09:08:24,841 INFO  [test_driver] 21 threads were active before stopping embedded server
-2022-05-27 09:08:24,841 INFO  [test_driver] Shutting down embedded galaxy uvicorn server
-2022-05-27 09:08:24,841 INFO  [test_driver] Embedded web server galaxy stopped
-2022-05-27 09:08:24,841 INFO  [test_driver] Stopping embedded server thread
-INFO:     Shutting down
-2022-05-27 09:08:24,911 INFO  [uvicorn.error] Shutting down
-INFO:     Waiting for application shutdown.
-2022-05-27 09:08:25,013 INFO  [uvicorn.error] Waiting for application shutdown.
-INFO:     Application shutdown complete.
-2022-05-27 09:08:25,013 INFO  [uvicorn.error] Application shutdown complete.
-INFO:     Finished server process [23683]
-2022-05-27 09:08:25,014 INFO  [uvicorn.error] Finished server process [23683]
-2022-05-27 09:08:25,015 INFO  [test_driver] Event loop for uvicorn closed
-2022-05-27 09:08:25,016 INFO  [test_driver] Embedded server thread stopped
-2022-05-27 09:08:25,016 INFO  [test_driver] Stopping application galaxy
-2022-05-27 09:08:26,298 INFO  [galaxy.queue_worker] Sending reconfigure_watcher control task.
-2022-05-27 09:08:26,325 INFO  [galaxy.jobs.handler] sending stop signal to worker thread
-2022-05-27 09:08:27,337 INFO  [galaxy.jobs.handler] job handler queue stopped
-2022-05-27 09:08:27,338 INFO  [galaxy.jobs.runners] LocalRunner: Sending stop signal to 4 job worker threads
-2022-05-27 09:08:27,338 INFO  [galaxy.jobs.runners] Waiting up to 5 seconds for job worker threads to shutdown...
-2022-05-27 09:08:27,339 INFO  [galaxy.jobs.runners] All job worker threads shutdown cleanly
-2022-05-27 09:08:27,340 INFO  [galaxy.jobs.runners] TaskRunner: Sending stop signal to 2 job worker threads
-2022-05-27 09:08:27,340 INFO  [galaxy.jobs.runners] Waiting up to 5 seconds for job worker threads to shutdown...
-2022-05-27 09:08:27,468 INFO  [galaxy.jobs.runners] All job worker threads shutdown cleanly
-2022-05-27 09:08:27,469 INFO  [galaxy.jobs.handler] sending stop signal to worker thread
-2022-05-27 09:08:27,469 INFO  [galaxy.jobs.handler] job handler stop queue stopped
-2022-05-27 09:08:27,470 INFO  [test_driver] Application galaxy stopped.
-2022-05-27 09:08:27,471 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 [23683]
-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
--- a/test-data/cut_trajectories_file.log	Fri May 27 07:36:52 2022 +0000
+++ b/test-data/cut_trajectories_file.log	Fri May 27 09:07:29 2022 +0000
@@ -16,45 +16,18 @@
 INFO - .gro file is PIP2.1_test.gro
 INFO - .xtc file is PIP2.1_test.xtc
 INFO - Output directory is out/
-INFO - The name of .log file is log/cut_trajectories.log
+INFO - The name of .log file is out_log/cut_trajectories.log
 INFO - The number of cpus used is 1
 INFO - Sub_trajectory 1 starts at 0 ps and ends at 20 ps
 INFO - Sub_trajectory 2 starts at 30 ps and ends at 50 ps
 INFO - Sub_trajectory 3 starts at 60 ps and ends at 80 ps
 INFO - Launch gmx trjconv
 
-             :-) GROMACS - gmx trjconv, 2020.1-Ubuntu-2020.1-1 (-:
+               :-) GROMACS - gmx trjconv, 2022.1-conda_forge (-:
 
-                            GROMACS is written by:
-     Emile Apol      Rossen Apostolov      Paul Bauer     Herman J.C. Berendsen
-    Par Bjelkmar      Christian Blau   Viacheslav Bolnykh     Kevin Boyd    
- Aldert van Buuren   Rudi van Drunen     Anton Feenstra       Alan Gray     
-  Gerrit Groenhof     Anca Hamuraru    Vincent Hindriksen  M. Eric Irrgang  
-  Aleksei Iupinov   Christoph Junghans     Joe Jordan     Dimitrios Karkoulis
-    Peter Kasson        Jiri Kraus      Carsten Kutzner      Per Larsson    
-  Justin A. Lemkul    Viveca Lindahl    Magnus Lundborg     Erik Marklund   
-    Pascal Merz     Pieter Meulenhoff    Teemu Murtola       Szilard Pall   
-    Sander Pronk      Roland Schulz      Michael Shirts    Alexey Shvetsov  
-   Alfons Sijbers     Peter Tieleman      Jon Vincent      Teemu Virolainen 
- Christian Wennberg    Maarten Wolf      Artem Zhmurov   
-                           and the project leaders:
-        Mark Abraham, Berk Hess, Erik Lindahl, and David van der Spoel
-
-Copyright (c) 1991-2000, University of Groningen, The Netherlands.
-Copyright (c) 2001-2019, The GROMACS development team at
-Uppsala University, Stockholm University and
-the Royal Institute of Technology, Sweden.
-check out http://www.gromacs.org for more information.
-
-GROMACS is free software; you can redistribute it and/or modify it
-under the terms of the GNU Lesser General Public License
-as published by the Free Software Foundation; either version 2.1
-of the License, or (at your option) any later version.
-
-GROMACS:      gmx trjconv, version 2020.1-Ubuntu-2020.1-1
-Executable:   /usr/bin/gmx
-Data prefix:  /usr
-Working dir:  /home/aepetit/Documents/scripts/Stage-M2/wrapper/test-data
+Executable:   /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1/bin.AVX2_256/gmx
+Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1
+Working dir:  /tmp/tmp87fei_xs/job_working_directory/000/5/working
 Command line:
   gmx trjconv -f PIP2.1_test.xtc -s PIP2.1_test.gro -b 0 -e 20 -o out/PIP2.1_test_traj_1.xtc
 
@@ -80,52 +53,26 @@
 Reading frame       0 time    0.000   
 Precision of PIP2.1_test.xtc is 0.001 (nm)
 Using output precision of 0.001 (nm)
- ->  frame      0 time    0.000      
 
-Reading frame       1 time   10.000    ->  frame      1 time   10.000      
+Reading frame       1 time   10.000    ->  frame      0 time    0.000      
 
-Reading frame       2 time   20.000    ->  frame      2 time   20.000      
+Reading frame       2 time   20.000    ->  frame      1 time   10.000      
 
 Last frame          2 time   20.000   
+ ->  frame      2 time   20.000      
+Last written: frame      2 time   20.000
 
 
-GROMACS reminds you: "Do You Have Sex Maniacs or Schizophrenics or Astrophysicists in Your Family?" (Gogol Bordello)
+GROMACS reminds you: "The Microsecond is Within Reach" (P.J. Van Maaren)
 
 Note that major changes are planned in future for trjconv, to improve usability and utility.
 Select group for output
 Selected 0: 'System'
-             :-) GROMACS - gmx trjconv, 2020.1-Ubuntu-2020.1-1 (-:
+               :-) GROMACS - gmx trjconv, 2022.1-conda_forge (-:
 
-                            GROMACS is written by:
-     Emile Apol      Rossen Apostolov      Paul Bauer     Herman J.C. Berendsen
-    Par Bjelkmar      Christian Blau   Viacheslav Bolnykh     Kevin Boyd    
- Aldert van Buuren   Rudi van Drunen     Anton Feenstra       Alan Gray     
-  Gerrit Groenhof     Anca Hamuraru    Vincent Hindriksen  M. Eric Irrgang  
-  Aleksei Iupinov   Christoph Junghans     Joe Jordan     Dimitrios Karkoulis
-    Peter Kasson        Jiri Kraus      Carsten Kutzner      Per Larsson    
-  Justin A. Lemkul    Viveca Lindahl    Magnus Lundborg     Erik Marklund   
-    Pascal Merz     Pieter Meulenhoff    Teemu Murtola       Szilard Pall   
-    Sander Pronk      Roland Schulz      Michael Shirts    Alexey Shvetsov  
-   Alfons Sijbers     Peter Tieleman      Jon Vincent      Teemu Virolainen 
- Christian Wennberg    Maarten Wolf      Artem Zhmurov   
-                           and the project leaders:
-        Mark Abraham, Berk Hess, Erik Lindahl, and David van der Spoel
-
-Copyright (c) 1991-2000, University of Groningen, The Netherlands.
-Copyright (c) 2001-2019, The GROMACS development team at
-Uppsala University, Stockholm University and
-the Royal Institute of Technology, Sweden.
-check out http://www.gromacs.org for more information.
-
-GROMACS is free software; you can redistribute it and/or modify it
-under the terms of the GNU Lesser General Public License
-as published by the Free Software Foundation; either version 2.1
-of the License, or (at your option) any later version.
-
-GROMACS:      gmx trjconv, version 2020.1-Ubuntu-2020.1-1
-Executable:   /usr/bin/gmx
-Data prefix:  /usr
-Working dir:  /home/aepetit/Documents/scripts/Stage-M2/wrapper/test-data
+Executable:   /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1/bin.AVX2_256/gmx
+Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1
+Working dir:  /tmp/tmp87fei_xs/job_working_directory/000/5/working
 Command line:
   gmx trjconv -f PIP2.1_test.xtc -s PIP2.1_test.gro -b 30 -e 50 -o out/PIP2.1_test_traj_2.xtc
 
@@ -152,52 +99,26 @@
 Reading frame       0 time   30.000   
 Precision of PIP2.1_test.xtc is 0.001 (nm)
 Using output precision of 0.001 (nm)
- ->  frame      0 time   30.000      
 
-Reading frame       1 time   40.000    ->  frame      1 time   40.000      
+Reading frame       1 time   40.000    ->  frame      0 time   30.000      
 
-Reading frame       2 time   50.000    ->  frame      2 time   50.000      
+Reading frame       2 time   50.000    ->  frame      1 time   40.000      
 
 Last frame          2 time   50.000   
+ ->  frame      2 time   50.000      
+Last written: frame      2 time   50.000
 
 
-GROMACS reminds you: "The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense." (Edsger Dijkstra)
+GROMACS reminds you: "I'm Not Gonna Die Here !" (Sphere)
 
 Note that major changes are planned in future for trjconv, to improve usability and utility.
 Select group for output
 Selected 0: 'System'
-             :-) GROMACS - gmx trjconv, 2020.1-Ubuntu-2020.1-1 (-:
+               :-) GROMACS - gmx trjconv, 2022.1-conda_forge (-:
 
-                            GROMACS is written by:
-     Emile Apol      Rossen Apostolov      Paul Bauer     Herman J.C. Berendsen
-    Par Bjelkmar      Christian Blau   Viacheslav Bolnykh     Kevin Boyd    
- Aldert van Buuren   Rudi van Drunen     Anton Feenstra       Alan Gray     
-  Gerrit Groenhof     Anca Hamuraru    Vincent Hindriksen  M. Eric Irrgang  
-  Aleksei Iupinov   Christoph Junghans     Joe Jordan     Dimitrios Karkoulis
-    Peter Kasson        Jiri Kraus      Carsten Kutzner      Per Larsson    
-  Justin A. Lemkul    Viveca Lindahl    Magnus Lundborg     Erik Marklund   
-    Pascal Merz     Pieter Meulenhoff    Teemu Murtola       Szilard Pall   
-    Sander Pronk      Roland Schulz      Michael Shirts    Alexey Shvetsov  
-   Alfons Sijbers     Peter Tieleman      Jon Vincent      Teemu Virolainen 
- Christian Wennberg    Maarten Wolf      Artem Zhmurov   
-                           and the project leaders:
-        Mark Abraham, Berk Hess, Erik Lindahl, and David van der Spoel
-
-Copyright (c) 1991-2000, University of Groningen, The Netherlands.
-Copyright (c) 2001-2019, The GROMACS development team at
-Uppsala University, Stockholm University and
-the Royal Institute of Technology, Sweden.
-check out http://www.gromacs.org for more information.
-
-GROMACS is free software; you can redistribute it and/or modify it
-under the terms of the GNU Lesser General Public License
-as published by the Free Software Foundation; either version 2.1
-of the License, or (at your option) any later version.
-
-GROMACS:      gmx trjconv, version 2020.1-Ubuntu-2020.1-1
-Executable:   /usr/bin/gmx
-Data prefix:  /usr
-Working dir:  /home/aepetit/Documents/scripts/Stage-M2/wrapper/test-data
+Executable:   /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1/bin.AVX2_256/gmx
+Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1
+Working dir:  /tmp/tmp87fei_xs/job_working_directory/000/5/working
 Command line:
   gmx trjconv -f PIP2.1_test.xtc -s PIP2.1_test.gro -b 60 -e 80 -o out/PIP2.1_test_traj_3.xtc
 
@@ -224,16 +145,17 @@
 Reading frame       0 time   60.000   
 Precision of PIP2.1_test.xtc is 0.001 (nm)
 Using output precision of 0.001 (nm)
- ->  frame      0 time   60.000      
 
-Reading frame       1 time   70.000    ->  frame      1 time   70.000      
+Reading frame       1 time   70.000    ->  frame      0 time   60.000      
 
-Reading frame       2 time   80.000    ->  frame      2 time   80.000      
+Reading frame       2 time   80.000    ->  frame      1 time   70.000      
 
 Last frame          2 time   80.000   
+ ->  frame      2 time   80.000      
+Last written: frame      2 time   80.000
 
 
-GROMACS reminds you: "C++ is tricky. You can do everything. You can even make every mistake." (Nicolai Josuttis, CppCon2017)
+GROMACS reminds you: "Furious activity is no substitute for understanding." (H.H. Williams)
 
 Note that major changes are planned in future for trjconv, to improve usability and utility.
 Select group for output
--- a/test-data/cut_trajectories_no_file.log	Fri May 27 07:36:52 2022 +0000
+++ b/test-data/cut_trajectories_no_file.log	Fri May 27 09:07:29 2022 +0000
@@ -14,45 +14,18 @@
 INFO - .gro file is PIP2.1_test.gro
 INFO - .xtc file is PIP2.1_test.xtc
 INFO - Output directory is out/
-INFO - The name of .log file is log/cut_trajectories.log
+INFO - The name of .log file is out_log/cut_trajectories.log
 INFO - The number of cpus used is 1
 INFO - Sub_trajectory 1 starts at 0 ps and ends at 20 ps
 INFO - Sub_trajectory 2 starts at 30 ps and ends at 50 ps
 INFO - Sub_trajectory 3 starts at 60 ps and ends at 80 ps
 INFO - Launch gmx trjconv
 
-             :-) GROMACS - gmx trjconv, 2020.1-Ubuntu-2020.1-1 (-:
+               :-) GROMACS - gmx trjconv, 2022.1-conda_forge (-:
 
-                            GROMACS is written by:
-     Emile Apol      Rossen Apostolov      Paul Bauer     Herman J.C. Berendsen
-    Par Bjelkmar      Christian Blau   Viacheslav Bolnykh     Kevin Boyd    
- Aldert van Buuren   Rudi van Drunen     Anton Feenstra       Alan Gray     
-  Gerrit Groenhof     Anca Hamuraru    Vincent Hindriksen  M. Eric Irrgang  
-  Aleksei Iupinov   Christoph Junghans     Joe Jordan     Dimitrios Karkoulis
-    Peter Kasson        Jiri Kraus      Carsten Kutzner      Per Larsson    
-  Justin A. Lemkul    Viveca Lindahl    Magnus Lundborg     Erik Marklund   
-    Pascal Merz     Pieter Meulenhoff    Teemu Murtola       Szilard Pall   
-    Sander Pronk      Roland Schulz      Michael Shirts    Alexey Shvetsov  
-   Alfons Sijbers     Peter Tieleman      Jon Vincent      Teemu Virolainen 
- Christian Wennberg    Maarten Wolf      Artem Zhmurov   
-                           and the project leaders:
-        Mark Abraham, Berk Hess, Erik Lindahl, and David van der Spoel
-
-Copyright (c) 1991-2000, University of Groningen, The Netherlands.
-Copyright (c) 2001-2019, The GROMACS development team at
-Uppsala University, Stockholm University and
-the Royal Institute of Technology, Sweden.
-check out http://www.gromacs.org for more information.
-
-GROMACS is free software; you can redistribute it and/or modify it
-under the terms of the GNU Lesser General Public License
-as published by the Free Software Foundation; either version 2.1
-of the License, or (at your option) any later version.
-
-GROMACS:      gmx trjconv, version 2020.1-Ubuntu-2020.1-1
-Executable:   /usr/bin/gmx
-Data prefix:  /usr
-Working dir:  /home/aepetit/Documents/scripts/Stage-M2/wrapper/test-data
+Executable:   /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1/bin.AVX2_256/gmx
+Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1
+Working dir:  /tmp/tmp87fei_xs/job_working_directory/000/7/working
 Command line:
   gmx trjconv -f PIP2.1_test.xtc -s PIP2.1_test.gro -b 0 -e 20 -o out/PIP2.1_test_traj_1.xtc
 
@@ -78,52 +51,26 @@
 Reading frame       0 time    0.000   
 Precision of PIP2.1_test.xtc is 0.001 (nm)
 Using output precision of 0.001 (nm)
- ->  frame      0 time    0.000      
 
-Reading frame       1 time   10.000    ->  frame      1 time   10.000      
+Reading frame       1 time   10.000    ->  frame      0 time    0.000      
 
-Reading frame       2 time   20.000    ->  frame      2 time   20.000      
+Reading frame       2 time   20.000    ->  frame      1 time   10.000      
 
 Last frame          2 time   20.000   
+ ->  frame      2 time   20.000      
+Last written: frame      2 time   20.000
 
 
-GROMACS reminds you: "Your Proposal is Accepted" (Men In Black)
+GROMACS reminds you: "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." (Henry Louis Mencken)
 
 Note that major changes are planned in future for trjconv, to improve usability and utility.
 Select group for output
 Selected 0: 'System'
-             :-) GROMACS - gmx trjconv, 2020.1-Ubuntu-2020.1-1 (-:
+               :-) GROMACS - gmx trjconv, 2022.1-conda_forge (-:
 
-                            GROMACS is written by:
-     Emile Apol      Rossen Apostolov      Paul Bauer     Herman J.C. Berendsen
-    Par Bjelkmar      Christian Blau   Viacheslav Bolnykh     Kevin Boyd    
- Aldert van Buuren   Rudi van Drunen     Anton Feenstra       Alan Gray     
-  Gerrit Groenhof     Anca Hamuraru    Vincent Hindriksen  M. Eric Irrgang  
-  Aleksei Iupinov   Christoph Junghans     Joe Jordan     Dimitrios Karkoulis
-    Peter Kasson        Jiri Kraus      Carsten Kutzner      Per Larsson    
-  Justin A. Lemkul    Viveca Lindahl    Magnus Lundborg     Erik Marklund   
-    Pascal Merz     Pieter Meulenhoff    Teemu Murtola       Szilard Pall   
-    Sander Pronk      Roland Schulz      Michael Shirts    Alexey Shvetsov  
-   Alfons Sijbers     Peter Tieleman      Jon Vincent      Teemu Virolainen 
- Christian Wennberg    Maarten Wolf      Artem Zhmurov   
-                           and the project leaders:
-        Mark Abraham, Berk Hess, Erik Lindahl, and David van der Spoel
-
-Copyright (c) 1991-2000, University of Groningen, The Netherlands.
-Copyright (c) 2001-2019, The GROMACS development team at
-Uppsala University, Stockholm University and
-the Royal Institute of Technology, Sweden.
-check out http://www.gromacs.org for more information.
-
-GROMACS is free software; you can redistribute it and/or modify it
-under the terms of the GNU Lesser General Public License
-as published by the Free Software Foundation; either version 2.1
-of the License, or (at your option) any later version.
-
-GROMACS:      gmx trjconv, version 2020.1-Ubuntu-2020.1-1
-Executable:   /usr/bin/gmx
-Data prefix:  /usr
-Working dir:  /home/aepetit/Documents/scripts/Stage-M2/wrapper/test-data
+Executable:   /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1/bin.AVX2_256/gmx
+Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1
+Working dir:  /tmp/tmp87fei_xs/job_working_directory/000/7/working
 Command line:
   gmx trjconv -f PIP2.1_test.xtc -s PIP2.1_test.gro -b 30 -e 50 -o out/PIP2.1_test_traj_2.xtc
 
@@ -150,52 +97,26 @@
 Reading frame       0 time   30.000   
 Precision of PIP2.1_test.xtc is 0.001 (nm)
 Using output precision of 0.001 (nm)
- ->  frame      0 time   30.000      
 
-Reading frame       1 time   40.000    ->  frame      1 time   40.000      
+Reading frame       1 time   40.000    ->  frame      0 time   30.000      
 
-Reading frame       2 time   50.000    ->  frame      2 time   50.000      
+Reading frame       2 time   50.000    ->  frame      1 time   40.000      
 
 Last frame          2 time   50.000   
+ ->  frame      2 time   50.000      
+Last written: frame      2 time   50.000
 
 
-GROMACS reminds you: "That Was Really Cool" (Butthead)
+GROMACS reminds you: "Here's the Way It Might End" (G. Michael)
 
 Note that major changes are planned in future for trjconv, to improve usability and utility.
 Select group for output
 Selected 0: 'System'
-             :-) GROMACS - gmx trjconv, 2020.1-Ubuntu-2020.1-1 (-:
+               :-) GROMACS - gmx trjconv, 2022.1-conda_forge (-:
 
-                            GROMACS is written by:
-     Emile Apol      Rossen Apostolov      Paul Bauer     Herman J.C. Berendsen
-    Par Bjelkmar      Christian Blau   Viacheslav Bolnykh     Kevin Boyd    
- Aldert van Buuren   Rudi van Drunen     Anton Feenstra       Alan Gray     
-  Gerrit Groenhof     Anca Hamuraru    Vincent Hindriksen  M. Eric Irrgang  
-  Aleksei Iupinov   Christoph Junghans     Joe Jordan     Dimitrios Karkoulis
-    Peter Kasson        Jiri Kraus      Carsten Kutzner      Per Larsson    
-  Justin A. Lemkul    Viveca Lindahl    Magnus Lundborg     Erik Marklund   
-    Pascal Merz     Pieter Meulenhoff    Teemu Murtola       Szilard Pall   
-    Sander Pronk      Roland Schulz      Michael Shirts    Alexey Shvetsov  
-   Alfons Sijbers     Peter Tieleman      Jon Vincent      Teemu Virolainen 
- Christian Wennberg    Maarten Wolf      Artem Zhmurov   
-                           and the project leaders:
-        Mark Abraham, Berk Hess, Erik Lindahl, and David van der Spoel
-
-Copyright (c) 1991-2000, University of Groningen, The Netherlands.
-Copyright (c) 2001-2019, The GROMACS development team at
-Uppsala University, Stockholm University and
-the Royal Institute of Technology, Sweden.
-check out http://www.gromacs.org for more information.
-
-GROMACS is free software; you can redistribute it and/or modify it
-under the terms of the GNU Lesser General Public License
-as published by the Free Software Foundation; either version 2.1
-of the License, or (at your option) any later version.
-
-GROMACS:      gmx trjconv, version 2020.1-Ubuntu-2020.1-1
-Executable:   /usr/bin/gmx
-Data prefix:  /usr
-Working dir:  /home/aepetit/Documents/scripts/Stage-M2/wrapper/test-data
+Executable:   /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1/bin.AVX2_256/gmx
+Data prefix:  /home/aepetit/miniconda3/envs/mulled-v1-0569c04ab612909a373223b7f7da6469041d31d933b93b55db5a38a76d747ad1
+Working dir:  /tmp/tmp87fei_xs/job_working_directory/000/7/working
 Command line:
   gmx trjconv -f PIP2.1_test.xtc -s PIP2.1_test.gro -b 60 -e 80 -o out/PIP2.1_test_traj_3.xtc
 
@@ -222,16 +143,17 @@
 Reading frame       0 time   60.000   
 Precision of PIP2.1_test.xtc is 0.001 (nm)
 Using output precision of 0.001 (nm)
- ->  frame      0 time   60.000      
 
-Reading frame       1 time   70.000    ->  frame      1 time   70.000      
+Reading frame       1 time   70.000    ->  frame      0 time   60.000      
 
-Reading frame       2 time   80.000    ->  frame      2 time   80.000      
+Reading frame       2 time   80.000    ->  frame      1 time   70.000      
 
 Last frame          2 time   80.000   
+ ->  frame      2 time   80.000      
+Last written: frame      2 time   80.000
 
 
-GROMACS reminds you: "Everything He Lacks, He Makes Up In Denial" (Offspring)
+GROMACS reminds you: "Whatever Happened to Pong ?" (F. Black)
 
 Note that major changes are planned in future for trjconv, to improve usability and utility.
 Select group for output