Closed GwennyGit closed 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.
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'
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?
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.
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?
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.
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.
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 themain.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 themain.py
was already stated in #46.