-
Notifications
You must be signed in to change notification settings - Fork 11
Add NMR data model, integration with EnzymeML, and peak assignment features #13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
@torogi94 Thanks for this!
|
|
Thank you for looking over it! Here, a few comments:
Good catch! I really did forget to declare the new dependencies in the requirements.txt file. I think you are right that we should not necessarily introduce them to the core of NMRpy. How about we declare them as optional nmrpy[enzymeml]? For the NMRpy data model, however, it would be easier if we could make pydantic a core dependency. If I am not mistaken, it is the only one required for the data model to work. If not, I can restructure my code, so the data model part becomes entirely optional, too, though.
We are preparing a new stable pyenzyme (v2) release which we can then pin in the requirements. In my experience, it is already running better and will be more maintainable than the previous v1 version. With regard to md-models, the NMRpy data model is not dependent at all on the md-models version. Actually, it is not even a dependency needed, as all functionalities are handled via pydantic, which is itself a very well maintained library!
Absolutely. I’ll merge main into my branch and fix the conflict manually so you can have a clean merge without conflicts!
Sorry for the noisy diff, it seems I accidentally let my linter loose on the two files and did not even notice... I’ll revert the linting changes from this PR and submit them in a separate PR (like discussed). |
I agree with making pydantic a core dependency and the others as optional in On another note. I also have a conda build recipe as well as a CI job that builds and distributes a conda package. This has been very easy to date because NMRPy is a pure python package and there are/were conda packages available for all of the dependencies (channel conda-forge). Is PyEnzyme released as a conda package? I would like to continue distributing conda packages, just as we do for PySCeS as well.
Okay great.
Give me a ping once you are ready with all of this then I'll proceed with the detailed code review 😄 |
|
I think I have addressed all points mentioned so far, so you may continue with the detailed code review now!
I am in contact with @JR-1991 about the |
|
I have addressed a few more issues we discussed in pull requests #14 and #15 and merged them with this pull request:
|
|
@jmrohwer: In #18, I have added handling of t0 values in |
b9db28b to
8182bfc
Compare
- Remove features from FidArray.calculate_concentrations() and raise NotImplementedError when called - Remove features from ConcentraionCalculator and raise NotImplementedError when initialised
- Initialisation of enzymeml_document and concentrations properties of FidArray class with initial None value led to Error. Check for None added to fix this issue. - Add correct optional dependency name to setup.py
- Move the setup of Peak objects from the Peak(Range)Assigner to the deconvolution methods to prevent uninitialised Peak objects in data model. - Update create_enzymeml() method to reflect changes in pyenzyme library. - Add species property to FidArray, similar to the deconvoluted_integrals property.
Due to an issue with md-models, pydantic>=2.10.0 is currently causing errors. In the meantime, a version restraint has been added to the requirements.txt
Fix type checking bug in enzymeml_document property of FidArray class.
* Add create_new_enzymeml_measurement() method - FidArray now has a create_new_enzymeml_measurement() method that acts as the interface for creating new Measurement objects either per GUI or script. - FidArray enzymeml_document property now checks for existence of at least one Measurement object in adder method. - plotting.py now has a skeleton MeasurementCreator class that will later be the GUI for creating new Measurement objects. - utils.py now has a utility function that creates an EnzymeML Measurement object from the parameters passed to it. * Add multiple Measurement support - Add MeasurementCreator widget as GUI for create_new_enzymeml_measurement() method - Update apply_to_enzymeml() method - Update create_enzymeml() method
* Update EnzymeML species handling - Add species type flags to get_species_from_enzymeml() util function to allow filtering for specific types of species. - Remove unnecessary display of proteins in PeakAssigner and PeakRangeAssigner using the new species type flags. * Add flags for keeping data models upon saving * Change data array handling of NMRpy data model - Add save_data_model() method to serialise the NMRpy data model. - Change handling of data arrays: They are now saved as numpy.ndarrays in each Fid object and only copied as lists into the data model upon serialisation. * Update data_objects.py - Resolve Pydantic serialisation issues (complex → string conversion). - Optimise processing loops for faster execution and lower memory usage. * Change keep_data_model flag to False
… save, not set to None
- Added T0Tab and T0Logic classes to utils.py - Added T0Adder widget class to plotting.py - Added add_t0_to_enzymeml() method that can be used interactively with a Jupyter widget using gui=True or script-like with gui=False
Changed behaviour of Fid._setup_peak_objects(). Multiple peaks per range are handled properly now by using Fid._grouped_peaklist instead of Fid.peaks. Also refactored the method to make it more robust and readable overall.
- Added NMR parameters to fid_object setter - Fixed p0 and p1 phasing parameter assignment
8182bfc to
9f55722
Compare
md-models-based research data model for NMRpyenzymelibrary