Mercurial > repos > workflow4metabolomics > physiofit
changeset 2:232ad69fc93c draft
planemo upload for repository https://github.com/MetaSys-LISBP/PhysioFit commit 79951a0ab2644ba8ca6615200e9be1a8645d78d4
author | workflow4metabolomics |
---|---|
date | Tue, 16 Jan 2024 15:42:03 +0000 |
parents | 52dddad92226 |
children | 4e885e541368 |
files | physiofit.xml test-data/KEIO_ROBOT6_1.tsv test-data/config_file.yml test-data/data.txt test-data/flux_results.tsv test-data/output.csv test-data/output_zip.zip |
diffstat | 7 files changed, 126 insertions(+), 284 deletions(-) [+] |
line wrap: on
line diff
--- a/physiofit.xml Wed Nov 16 17:16:06 2022 +0000 +++ b/physiofit.xml Tue Jan 16 15:42:03 2024 +0000 @@ -1,278 +1,100 @@ -<tool id='physiofit' name='PhysioFit' profile='21.09' version='@TOOL_VERSION@+galaxy0' python_template_version='3.5'> - <description>Extracellular flux analysis</description> +<tool id='physiofit' name='PhysioFit: extracellular flux calculation' version='@TOOL_VERSION@+galaxy0' python_template_version='3.5' profile='21.05'> + <description>PhysioFit is a scientific tool designed to quantify cell growth parameters and uptake and production fluxes</description> <macros> - <token name="@TOOL_VERSION@">2.2.1</token> + <token name='@TOOL_VERSION@'>3.3.2</token> </macros> <requirements> - <requirement type='package' version='@TOOL_VERSION@'>physiofit4galaxy</requirement> + <requirement type='package' version='@TOOL_VERSION@'>physiofit</requirement> </requirements> <command detect_errors='exit_code'><![CDATA[ - - physiofit4galaxy --galaxy - - #if $input_selection.input_selector == 'tsv': - --data '$input_selection.datafile' - #end if - - #if $input_selection.input_selector == 'json': - --data '$input_selection.datafile' - --config '$input_selection.cfgfile' - #end if - - - #if $basic_settings.lag: - -l - #end if - - #if $basic_settings.deg_select.deg == 'Yes': - -d '$basic_settings.deg_select.degconsts' - #end if - - #if $basic_settings.mc_select.montecarlo == 'Yes': - -mc '$basic_settings.mc_select.iters' - #end if - - --vini '$advanced_settings.vini' - - #if $advanced_settings.sd_select.sd == 'Yes': - -s '$advanced_settings.sd_select.stddevs' - #end if - - #if $advanced_settings.cm_select.cm == 'Yes': - -cm '$advanced_settings.cm_select.conc_met_bounds' - #end if - - #if $advanced_settings.fm_select.fm == 'Yes': - -fm '$advanced_settings.fm_select.flux_met_bounds' - #end if - - #if $advanced_settings.cb_select.cb == 'Yes': - -cb '$advanced_settings.cb_select.conc_biom_bounds' - #end if - - #if $advanced_settings.fb_select.fb == 'Yes': - -fb '$advanced_settings.fb_select.flux_biom_bounds' - #end if - - #if $advanced_settings.verbose: - -v - #end if - - -op '$plots' -of '$fluxes' -os '$stats' -oc '$config' 2> $log - - ]]></command> + physiofit + --galaxy + --config $configfile + --data $datafile + -or '$recap' + -oz $zip + 2> $log + ]]> + </command> <inputs> - - <conditional name='input_selection'> - <param name='input_selector' type='select' label='Choose the input data type to upload (tsv or json config file. For more information please check the documentation'> - <option value='tsv'>tsv file</option> - <option value='json'>config file (json)</option> - </param> - <when value='tsv'> - <param name='datafile' type='data' format='tabular, txt' multiple='true' label='Upload data file containing biomass and concentration values'/> - </when> - <when value='json'> - <param name='datafile' type='data' format='tabular, txt' multiple='true' label='Upload data file containing biomass and concentration values'/> - <param name='cfgfile' type='data' format='json' label='Upload configuration file' /> - </when> - </conditional> - - - <section name='basic_settings' title='Basic Settings'> - - <param name='lag' type='boolean' argument='--lag' truevalue='-l' falsevalue='' label='Flag to estimate lag phase'/> - - <conditional name='deg_select'> - <param name='deg' type='select' label='Select yes to add degradation constants'> - <option value='No'>No</option> - <option value='Yes'>Yes</option> - </param> - <when value='Yes'> - <param type='text' name='degconsts' value='{}' label='Enter degradation constants in dictionary format (see docs for more information)'> - <sanitizer> - <valid> - <add value='"'/> - <add value='{'/> - <add value='}'/> - </valid> - </sanitizer> - </param> - </when> - </conditional> - - <conditional name='mc_select'> - <param name='montecarlo' type='select' label='Select yes for sensitivity analysis'> - <option value='Yes'>Yes</option> - <option value='No'>No</option> - </param> - <when value='Yes'> - <param name='iters' type='integer' value='100' label='Number of iterations for sensitivity analysis'/> - </when> - </conditional> - - </section> - - - <section name='advanced_settings' title='Advanced Settings'> - - <param name='vini' type='float' value='1' label='Initial value for fluxes to estimate' /> - - <conditional name='sd_select'> - <param name='sd' type='select' label='Select yes to add standard deviations'> - <option value='No'>No</option> - <option value='Yes'>Yes</option> - </param> - <when value='Yes'> - <param name='stddevs' type='text' value='{}' label='Standard deviation on measurements. Give SDs in dictionary format (see docs for more information)'> - <sanitizer> - <valid> - <add value='"'/> - <add value='{'/> - <add value='}'/> - </valid> - </sanitizer> - </param> - </when> - </conditional> - - <conditional name='cm_select'> - <param name='cm' type='select' label='Flag to add bounds on metabolite concentrations'> - <option value='No'>No</option> - <option value='Yes'>Yes</option> - </param> - <when value='Yes'> - <param name='conc_met_bounds' type='text' value='()' label='Bounds on metabolite concentrations. Bounds should be given in tuple format (see docs for more information)'/> - - </when> - </conditional> - - <conditional name='fm_select'> - <param name='fm' type='select' label='Select yes to add bounds on metabolite fluxes'> - <option value='No'>No</option> - <option value='Yes'>Yes</option> - </param> - <when value='Yes'> - <param name='flux_met_bounds' type='text' value='()' label='Bounds on metabolite fluxes. Bounds should be given in tuple format (see docs for more information)' /> - </when> - </conditional> - - <conditional name='cb_select'> - <param name='cb' type='select' label='Select yes to add bounds on biomass concentrations'> - <option value='No'>No</option> - <option value='Yes'>Yes</option> - </param> - <when value='Yes'> - <param name='conc_biom_bounds' type='text' value='()' label='Bounds on biomass concentrations. Bounds should be given in tuple format (see docs for more information)' /> - </when> - </conditional> - - <conditional name='fb_select'> - <param name='fb' type='select' label='Select yes to add bounds on biomass fluxes'> - <option value='No'>No</option> - <option value='Yes'>Yes</option> - </param> - <when value='Yes'> - <param name='flux_biom_bounds' type='text' value='()' label='Bounds on biomass fluxes. Bounds should be given in tuple format (see docs for more information)' /> - </when> - </conditional> - - <param name='verbose' type='boolean' argument='--verbose' truevalue='-v' falsevalue='' label='Flag to get debug information'/> - - </section> - + <param name='datafile' type='data' format='tabular, txt' multiple='true' label='Upload data file containing biomass and concentration values'/> + <param name='configfile' type='data' format='yaml' multiple='true' label='Upload yaml configuration file containing run parameters'/> </inputs> - <outputs> - <data name='plots' label='Plots' format='pdf'/> - <data name='fluxes' label='Flux_results' format='tabular'/> - <data name='stats' label='Stat_results' format='tabular'/> - <data name='config' label='Config_file' format='json'/> - <data name='log' label='Run_Log' format='txt'/> + <data name='recap' label='Summary file' format='csv'/> + <data name='zip' label='Results' format='zip'/> + <data name='log' label='Log' format='txt'/> </outputs> - <tests> <test> - <param name='input_selection|input_selector' value='tsv' /> - <param name='input_selection|datafile' value='KEIO_ROBOT6_1.tsv' /> - <section name='basic_settings'> - <param name='lag' value='No'/> - <param name='deg_select|deg' value='No'/> - <param name='mc_select|montecarlo' value='Yes'/> - </section> - <section name='advanced_settings'> - <param name='vini' value='1'/> - <param name='sd_select|sd' value='No'/> - <param name='cm_select|cm' value='No'/> - <param name='fm_select|fm' value='No'/> - <param name='cb_select|cb' value='No'/> - <param name='fb_select|fb' value='No'/> - <param name='verbose' value='No'/> - </section> - <output name='fluxes'> + <param name='datafile' value='data.txt'/> + <param name='configfile' value='config_file.yml'/> + <output name='recap'> <assert_contents> - <has_n_columns n='7'/> - <has_n_lines n='7'/> - <has_size value='767' delta='20'/> + <has_text text='experiments'/> + <has_text text='growth_rate'/> + <has_text text='Glc_q'/> + <has_text text='Glc_M0'/> + <has_text text='Ace_q'/> + <has_text text='Ace_M0'/> + <has_text text='optimal'/> + <has_text text='mean'/> + </assert_contents> + </output> + <output name='zip'> + <assert_contents> + <has_archive_member path='.*\.svg' min='3'/> + <has_archive_member path='.*\.tsv' min='2'/> + <has_archive_member path='.*\.pdf' min='1'/> </assert_contents> </output> </test> -<!-- <test>--> -<!-- <param name='input_selection|input_selector' value='tsv' />--> -<!-- <param name='input_selection|datafile' value='KEIO_ROBOT6_1.tsv' />--> -<!-- <section name='basic_settings'>--> -<!-- <param name='lag' value='No'/>--> -<!-- <param name='deg_select|deg' value='No'/>--> -<!-- <param name='mc_select|montecarlo' value='No'/>--> -<!-- </section>--> -<!-- <section name='advanced_settings'>--> -<!-- <param name='vini' value='1'/>--> -<!-- <param name='sd_select|sd' value='No'/>--> -<!-- <param name='cm_select|cm' value='No'/>--> -<!-- <param name='fm_select|fm' value='No'/>--> -<!-- <param name='cb_select|cb' value='No'/>--> -<!-- <param name='fb_select|fb' value='No'/>--> -<!-- <param name='verbose' value='No'/>--> -<!-- </section>--> -<!-- <output name='fluxes' file='flux_results.tsv'/>--> -<!-- </test>--> </tests> - <help><![CDATA[ -.. class:: warningmark - -**PhysioFit is a scientific tool designed to i) quantify exchange (production and consumption) fluxes and ii) cell growth -rate during (batch) cultivations of microorganisms.** - -Fluxes are estimated from time-course measurements of extracellular metabolites and biomass concentrations. PhysioFit has been designed to -calculate fluxes in batch experiments, assuming cells are in metabolic (pseudo) steady-state (i.e. fluxes are constant during the experiment). - -**PhysioFit includes the following features:** - - * **calculation of growth rate and extracellular (uptake and production) fluxes**. - * if cell growth has some **lag** (e.g. due to adaptation to a novel environment), lag can be taken into account and lag time estimated. - * **non-enzymatic degradation** of some metabolites (e.g. DHA or glutamine) can be estimated and taken into account when calculating fluxes. - * sensitivity analyses are performed to **estimate the precision of the calculated fluxes**. - * **evaluation of the goodness of fit and visual inspection of the fitted curves**. - * shipped as a **library** with both a **graphical** and **command line** interface, - * open-source, free and easy to install everywhere where Python 3 and pip run, - * biologist-friendly. - -It is one of the routine tools that we use at the MetaSys team and `MetaToul platform <http://www.metatoul.fr>`_ to calculate fluxes. - -The code is open-source, and available on `GitHub <https://github.com/MetaSys-LISBP/PhysioFit/>`_ under a GPLv3 license. - -We strongly encourage you to read the `documentation <https://physiofit.readthedocs.io/en/latest/>`_ before using PhysioFit. - - ]]></help> + **PhysioFit is a scientific tool designed to quantify cell growth parameters and uptake & production fluxes** + + Fluxes are estimated using mathematical models by fitting time-course measurements of the concentration of + cells and extracellular substrates and products. PhysioFit is shipped with some common growth models, and + additional tailor-made models can be implemented by users. + + **PhysioFit includes the following features:** + + * **calculation of growth rate and extracellular (uptake and production) fluxes**, + * **a set of steady-state and dynamic models** are shipped with PhysioFit, + * **tailor-made models** can be constructed by users, + * Monte-Carlo sensitivity analysis to **estimate the precision of the calculated fluxes**, + * **evaluation of the goodness of fit and visual inspection of the fitted curves**, + * shipped as a **library** with both a **graphical** and a **command line** interface, + * **open-source, free and easy to install** everywhere where Python 3 and pip run, + * **biologist-friendly**. + + It is one of the routine tools that we use at the + `MetaSys team <https://www.toulouse-biotechnology-institute.fr/en/poles/equipe-metasys/>`_ + and `MetaToul platform <https://mth-metatoul.com/>`_ to calculate fluxes. + + The code is open-source, and available on `GitHub <https://github.com/MetaSys-LISBP/PhysioFit/>`_ under a GPLv3 license. + + This documentation is available on Read the Docs (`https://physiofit.readthedocs.io <https://physiofit.readthedocs.io/>`_) + and can be downloaded as a `PDF file <https://readthedocs.org/projects/physiofit/downloads/pdf/latest/>`_. + +]]></help> <citations> - <citation type='bibtex'> - @misc{githubphysiofit, - author = {Le Gregam, Loic}, - year = {2022}, - title = {PhysioFit}, - publisher = {Peiro et al.}, - journal = {Appl Environ Microbiol}, - url = {https://journals.asm.org/doi/10.1128/AEM.00768-19}, - }</citation> - </citations> -</tool> \ No newline at end of file + <citation type='bibtex'>@article{10.1101/2023.10.12.561695, + author = {Le Grégam, Loïc and Guitton, Yann and Bellvert, Floriant and Heux, Stéphanie and Jourdan, Fabien and Portais, Jean-Charles and Millard, Pierre}, + title = "{Physiofit: a software to quantify cell growth parameters and extracellular fluxes}", + year = {2023}, + month = {10}, + abstract = '{Quantification of growth parameters and extracellular uptake and production fluxes is central in systems and synthetic biology. + Fluxes can be estimated using various mathematical models by fitting time-course measurements of the concentration of cells and + extracellular substrates and products. A single tool is available to calculate extracellular fluxes, but it is hardly interoperable and + includes a single hard-coded growth model. We present our open-source flux calculation software, PhysioFit, which can be used with any + growth model and is interoperable by design. PhysioFit includes by default the most common growth models, and additional models can be + implemented by users to calculate fluxes and other growth parameters for metabolic systems or experimental setups that follow alternative + kinetics. PhysioFit can be used as a Python library and includes a graphical user interface for intuitive use by end-users and a + command-line interface to streamline integration into existing pipelines.}', + doi = {10.1101/2023.10.12.561695}, + url = {https://doi.org/10.1101/2023.10.12.561695}, + } + </citation> + </citations> +</tool>
--- a/test-data/KEIO_ROBOT6_1.tsv Wed Nov 16 17:16:06 2022 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -time X Glc Ace -1.69472222222222 6.1992000000000005E-2 NA NA -2.3002777777777799 8.6184000000000011E-2 NA NA -2.6983333333333301 0.11037599999999999 NA NA -3.43611111111111 0.17841599999999999 NA NA -3.8211111111111098 0.20865600000000001 NA NA -4.2011111111111097 0.3024 NA NA -4.5980555555555496 0.378 NA NA -4.9950000000000001 0.54583199999999998 NA NA -5.3752777777777796 0.60933599999999999 NA NA -1.35 NA 13.6276813815462 0.216958848225059 -1.91666666666667 NA 13.5792133323062 0.371914222400848 -2.86666666666667 NA 12.6200457520069 0.707537683463011 -4 NA 11.2499817544224 1.46436775470691 -4.8 NA 9.36560347817446 2.13574936032777 -5.18333333333333 NA 8.20020915137498 2.54657962639804 -5.58333333333333 NA 6.55172432249331 2.88518116059672
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/config_file.yml Tue Jan 16 15:42:03 2024 +0000 @@ -0,0 +1,23 @@ +iterations: 100 +mc: true +model: + bounds: + Ace_M0: (1e-06, 50) + Ace_q: (-50, 50) + Glc_M0: (1e-06, 50) + Glc_q: (-50, 50) + X_0: (0.001, 10) + growth_rate: (0.001, 3) + model_name: Steady-state batch model + parameters_to_estimate: + Ace_M0: 1 + Ace_q: 1 + Glc_M0: 1 + Glc_q: 1 + X_0: 1 + growth_rate: 1 +path_to_data: C:\Users\millard\Documents\GIT\PhysioFit\data_test\Steady-state_model\data.txt +sds: + Ace: 0.2 + Glc: 0.46 + X: 0.02
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/data.txt Tue Jan 16 15:42:03 2024 +0000 @@ -0,0 +1,14 @@ +experiments time X Glc Ace +A 0 0.033264 NA NA +A 1.18888889 0.051408 NA NA +A 2.27694444 0.074088 NA NA +A 3.12833333 0.108864 NA NA +A 3.77138889 0.139104 NA NA +A 4.41555556 0.175392 NA NA +A 4.82277778 0.228312 NA NA +A 0.06666667 NA 15.81315 0.009505775 +A 1.71666667 NA 15.6035 0.294995312 +A 2.8 NA 13.76795 0.610747733 +A 3.63333333 NA 13.12348 0.997928907 +A 4.26666667 NA 12.69779 1.377281918 +A 4.88333333 NA 11.58289 1.804833542
--- a/test-data/flux_results.tsv Wed Nov 16 17:16:06 2022 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ - optimal mean sd median CI_2.5 CI_97.5 -X_0 0.030057356085279038 0.031020693652716442 0.01248214419475165 0.029507198033154346 0.011641988888053973 0.058342137145944405 -mu 0.5582759125316301 0.5686092117011008 0.08528431418544957 0.5617732771700231 0.4274326438805963 0.7428252946602405 -Glc_q -6.4690012286708845 -6.591939336986598 0.9573465913461194 -6.424216065589273 -8.689007040053548 -5.0804721629347975 -Glc_M0 14.102913181701245 14.093239782222746 0.3546457036884282 14.067487732809713 13.440594995883767 14.729084422532983 -Ace_q 2.4965870596545154 2.476648498253909 0.498894590813266 2.4157877116089033 1.7499997734065047 3.472079451670515 -Ace_M0 0.17844344816654867 0.20546717227239447 0.1953912180223188 0.17549120518463776 1e-06 0.7122213079215097
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/output.csv Tue Jan 16 15:42:03 2024 +0000 @@ -0,0 +1,7 @@ +experiments,parameter name,optimal,mean,sd,median,CI_2.5,CI_97.5 +A,X_0,0.031416046332836525,0.03182035444450761,0.005889446987390569,0.03142333650054849,0.02023327944287703,0.04332078203780423 +A,growth_rate,0.4006864459114259,0.40211131871783157,0.04429485269871631,0.40086534734771084,0.32931826537615494,0.49089693037133325 +A,Glc_q,-9.180022678150166,-9.133793078913406,1.0337255786927726,-8.931030226348817,-11.239908883027535,-7.284934929582838 +A,Glc_M0,15.801477563634192,15.803710474829554,0.22508207962463989,15.808337292505701,15.385041267489758,16.222121607839906 +A,Ace_q,3.8199601365677696,3.7419073047720337,0.39020454597179627,3.7095971504962546,3.0629124776324934,4.595036468507531 +A,Ace_M0,0.0017301878123572975,0.03444074046224758,0.05451955290753988,1e-06,1e-06,0.16366853757506963