deepanshs / mrsimulator

A fast solid-state NMR spectrum simulation and analysis library.
https://mrsimulator.readthedocs.io/en/latest/
BSD 3-Clause "New" or "Revised" License
34 stars 13 forks source link

Automatically create SpinSystem objects from Gaussian and CASTEP outputs. #21

Open deepanshs opened 4 years ago

deepanshs commented 4 years ago

Describe the reason for the request

An update feature to automatically create mrsimulator SpinSystem objects from Gaussian and CASTEP outputs. The alternative, manually creating spin-systems, works but gets tedious.

ml-evs commented 3 years ago

Hi @DeepanshS, I've just stumbled across mrsimulator (great work!) and would be interested in implementing the CASTEP part of this suggestion for use in my own package, matador, which currently only does referencing and naive smearing of magres calculations (see e.g. this example).

Am I right in saying this would just need a wrapper for the .magres file format? I already have parsing code as part of my package (though it could be improved) which I could improve and contribute here, if you would be interested?

The magres file format is also a supported output by most of the DFT codes I've come across (though I have no idea about Gaussian). The only problem I can foresee is that the referencing of calculations (i.e. chemical shielding -> chemical shift) would also need implementing, or adding via a separate package.

Let me know what you think!

deepanshs commented 3 years ago

Hi @ml-evs, thank you for reaching out and offering to contribute to the mrsimulator library. I appreciate that and will be happy to work along with you on this contribution. I am also including @pjgrandinetti in this thread.

Yes, you are correct that this would be a wrapper from the .magres file. From your example, I see that you already have implemented a parser for the .magres files. For compatibility with mrsimulator, the missing step is to convert the site-specific NMR metadata to Site objects.

You are correct about the issue with referencing (shielding -> shift). Since each nucleus is referenced differently, it seems like there needs to be another function for reference.

I think having the ability to read and import .magres data is a good first step. Parsing Gaussian output does not have to be a part of this contribution.

Please feel free to create a pull request and let me know if I could be of assistance.

ml-evs commented 3 years ago

Great, I'll have a play around with it on some systems I've looked at and see what I can come up with, depending on what time I get in the next few weeks.

I do have a referencing implementation under development at https://github.com/ml-evs/matador/pull/104/files which could maybe be folded in here somehow if that would be helpful.