draeger-lab / refinegems

refineGEMs is a python package inteded to help with the curation of genome-scale metabolic models (GEMS).
https://refinegems.readthedocs.io/en/latest/
MIT License
10 stars 1 forks source link

Enhance user-friendliness #57

Closed GwennyGit closed 1 year ago

GwennyGit commented 1 year ago

Under this issue we can collect all ideas for enhancing the user-friendliness of refineGEMs.


Suggestion regarding the YAML file: Create an example YAML file with all modules that can be used with the main.py and restructure the main.py to let the user create a YAML file which only contains modules the user wants to apply to its models. Another approach for handling the YAML file differently was already described in #55. The idea to redesign the main.py was already stated in #46.

famosab commented 1 year ago

Maybe we can create a template YAML file with placeholders for the values that the user can configure, and then write a script to replace the placeholders with the user-specified values to create a final YAML configuration file.

Or we can take the user trough some CLI questions and answers and create the corresponding yaml file. This would be the easiest for really inexperienced users but it make take some time to implement.

famosab commented 1 year ago

Another idea I has is to add more comments to the yaml file. That will elongate the file but might still be enough to help a user. Example below.


# Settings for Model Manipulation:
# Set TRUE/FALSE to turn each feature on/off and specify additional settings.

# Add KEGG Pathways as Groups:
keggpathways: FALSE
# Path to save the model with KEGG Groups.
kegg_path: '../C_striatum_GEMs/models/Cstr_KC-Na-01.xml'

# SBO-Term Annotation:
sboterms: FALSE
# Path to save the model with sbo terms.
sbo_path: '../C_striatum_GEMs/models/Cstr_KC-Na-01.xml'

# Model Polishing:
polish: FALSE
# Identifier database (BIGG or VMH).
id_db: 'BIGG' 
# Use locus tag from protein_fasta file as label in the model.
lab_strain: FALSE
# Path to the CarveMe input file (if available).
protein_fasta: ''
# Path to save the polished model.
polish_path: '../C_striatum_GEMs/models/Cstr_KC-Na-01.xml'
famosab commented 1 year ago

Maybe some parts of this can also be solved with a jupyter notebook (see Issue #22) that shows how to use refineGEMs so that only people that really just need one script end up using the config?

GwennyGit commented 1 year ago

I mean of course adding more comments is also a good solution to help the user. However, I think it is always easier if the user just adds what the person really wants. In this case the YAML file could also be added to a publication and would maybe not confuse other people that much as it only contains the information relevant to the publication. This might also provide a better reproducibility for the publication.

famosab commented 1 year ago

That makes sense. I also saw how you handled this in your own repository and that is quite nice. However so far I did not find any easy templating solution for yaml files. Since these are only needed for the more inexperienced users that want to use the finished scripts anything that makes this more complex to use is not of help. We could switch to console input but I decided to avoid that since it seemed easier for me to just directly edit the yaml file. And since we provide all flags and examples it should be usable. But maybe @draeger you have an idea on how to handle this a bit better?

famosab commented 1 year ago

With the new possibility to provide your own config, the user can just add whatever seems necessary to their own config. However at the moment if nothing is given, main.py will throw an error. I will try to adapt to that.

famosab commented 1 year ago

I think that by creating the log file as described in #42 and the prompting for the config as described in #55 and done in the commits above, the user-friendliness has been increased towards what was aimed for in this issue, closing for now.