forked from deepanshs/mrsimulator
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCHANGELOG
More file actions
312 lines (234 loc) · 11.2 KB
/
CHANGELOG
File metadata and controls
312 lines (234 loc) · 11.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
v0.8.0dev0
----------
What's new
''''''''''
**Features**
- Support gamma angle averaging.
v0.7.0
------
What's new
''''''''''
**Features**
- Support for complex amplitude simulation.
- New isotropic interpolation schemes. Added `isotropic_interpolation` as a `sim.config` parameter.
Allowed values are `linear` and `Gaussian`.
- New `larmor_freq(B0)` function added to the `Isotope` class which returns the Larmor frequency
of the isotope, given a magnetic flux density. For example, `H1.larmor_freq(B0=9.40)`
- New weak J and dipolar coupling enumerations added to `freq_contrib`.
- New command-line interface (CLI) tools for mrsimulator.
- Added 200+ NMR active isotopes to the library.
- Support for python 3.10
**Method**
- New Event classes---``SpectralEvent`` and ``MixingEvent``. The MixingEvent controls the transition
amplitude mixing in a multi-event method.
- New ``TotalMixing`` and ``NoMixing`` mixing query enumerations for quick scripting of common mixing
events.
- New weights attribute for the ``TransitionPathway`` object, which holds the probability of
the transition pathway based on the mixing events defined within the method.
- New ``plot()`` function in Method class, which generates a visual representation of the method's events,
transition pathways, rotor angle, etc.
- Support for concurrent mixing events.
- Support for negative spectral width in a spectral dimension.
- Deprecated ``Method1D`` and ``Method2D`` classes. Use the generic ``mrsimulator.method.Method``
object for custom 1D and 2D methods.
**SpinSystem**
- New function ``simplify()`` to simplifies a spin system object to
a list of irreducible spin systems.
- New function ``site_generator()`` added to the utility collection sub-module, which simplifies
the process of creating Site objects in bulk.
- Added gyromagnetic ratio and quadrupole moment metadata for all isotopes, including unstable
isotopes.
**SignalProcessor**
- New `SkewGaussian`, `TopHat`, and `Mask` apodization functions were added to the signal processor module.
**Documentation**
- Restructured documentation layout
- Improved troubleshooting section.
- Added section *User Guide* detailing the use and attributes of most objects.
- Added section *Method* demonstrating how to create custom **Method** objects.
- Condensed simulation/fitting gallery by removing redundant examples.
- New gallery demonstrating signal processing functions.
Changes
'''''''
- `reduced_dict` function is deprecated, use `json(units=False)` instead.
- The `mrsimulator.signal_processing` module is renamed to `mrsimulator.signal_processor`
- Drop support for Python version 3.6
- Added Channel validation for named methods #177
- Optimized memory usage and performance of the `single_site_system_generator` utility function.
Bug fixes
'''''''''
- Fixed bug where spectral interpolation resulted in a segmentation fault.
- Fixed memory leak issue in the C code.
- Fixed bug in query combination involving multiple quadrupolar queries. #188.
- Fixed bug related to unsigned/signed integers crashing on M1 macs.
Breaking changes
''''''''''''''''
**For most users**
Mrsimulator is currently in development, and the new release includes breaking changes from v0.6.
Please review these changes and make changes according.
- The `mrsimulator.methods` module is renamed as `mrsimulator.method.lib`.
- The `mrsimulator.signal_processing` module is renamed to `mrsimulator.signal_processor`.
- The `data` attribute of `SignalProcessor.apply_operations(data=...)` is renamed to `dataset`.
Use `SignalProcessor.apply_operations(dataset=...)`
- The `transition_query` attribute of the `mrsimulator.method.SpectralEvent` class
is renamed to `transition_queries`.
- The `mrsimulator.method.query.RotationalQuery` class is renamed to
`mrsimulator.method.query.RotationQuery`
**For advanced users**
- Complete redesign of the `TransitionQuery` object. Please refer to the documentation for details.
v0.6.0
------
What's new
''''''''''
- ⭐ Improved simulation performance. ⭐ See our :ref:`benchmark`.
- Simulation of one-dimensional spectra of coupled spin systems. The frequency contributions
from the coupled sites include weak J-couplings and weak dipolar couplings.
- New :class:`~mrsimulator.Coupling` class.
- Added a new ``Sites`` class that holds a list of Site objects. The Sites class method,
``to_pd()``, exports the sites as a pandas data frame.
- A new method, ``sites()``, is added to the Simulator object, which returns a list of
unique ``Sites`` objects within the Simulator object across multiple spin systems.
- Added three new arguments to the ``single_site_system_generator()`` method,
'site_labels', 'site_names', and 'site_descriptions'.
Changes
'''''''
- The :meth:`~mrsimulator.SpinSystem.get_isotopes` method from the SpinSystem object,
will now return :class:`~mrsimulator.spin_system.isotope.Isotope` objects by default.
Use the `symbol=True` argument of the method to get a list of string isotopes.
- The ``to_freq_dict()`` function is deprecated.
- The `D` symmetry of `transition_query` attribute from `Method2D` method is now None by default.
- `BlochDecayCTSpectrum` is an alias for `BlochDecayCentralTransitionSpectrum` class.
Bug fixes
'''''''''
- Fixed a bug related to `get_spectral_dimensions()` utility method in cases when CSDM
dimension objects have negative increment.
- Fixed a bug resulting in the non-conserved spectral area after a Gaussian apodization.
- Fixed a bug in Gaussian apodization, which raised an error when the FWHM argument is a scalar.
- Fixed bug causing multi-dataset fit to fail.
v0.5.1
------
Bug fixes
'''''''''
- Fixed a bug that was causing incorrect spectral binning when the frequency
contribution is pure isotropic.
Other changes
'''''''''''''
- The ``to_dict_with_units()`` method is deprecated and is replaced with ``json()``
- The ``json()`` function returns a python dictionary object with minimal required keywords,
where the event keys are globally serialized at the root method object. In the case where
the event key value is different from the global value, the respective key is serialized
within the event object.
- The ``json()`` function will no longer serialize the `transition_query` objects for the
named objects.
v0.5.0
------
What's new
''''''''''
- ⭐ Improved simulation performance. ⭐ See our :ref:`benchmark`.
The update introduces various two-dimensional methods for simulating NMR spectrum.
- Introduces a generic one-dimensional method, :class:`~mrsimulator.method.lib.Method1D`.
- Introduces a generic two-dimensional method, :class:`~mrsimulator.method.lib.Method2D`.
- Specialized two-dimensional methods for multi-quantum variable-angle spinning
with build-in affine transformations.
- :class:`~mrsimulator.method.lib.ThreeQ_VAS`,
- :class:`~mrsimulator.method.lib.FiveQ_VAS`,
- :class:`~mrsimulator.method.lib.SevenQ_VAS`
- Specialized two-dimensional methods for satellite-transition variable-angle spinning
with build-in affine transformations.
- :class:`~mrsimulator.method.lib.ST1_VAS`,
- :class:`~mrsimulator.method.lib.ST2_VAS`,
- Specialized two-dimensional isotropic/anisotropic sideband correlation method,
:class:`~mrsimulator.method.lib.SSB2D`.
Other changes
'''''''''''''
- The :meth:`~mrsimulator.Method.get_transition_pathways` method no longer return a
numpy array, instead a python list.
- Renamed `mrsimulator.methods` module to `mrsimulator.method.lib`.
v0.4.0
------
What's new!
'''''''''''
- ⭐ Improved simulation performance. ⭐ See our :ref:`benchmark`.
- New :class:`~mrsimulator.models.CzjzekDistribution` and
:class:`~mrsimulator.models.ExtCzjzekDistribution` classes for generating Czjzek and
extended Czjzek second-rank symmetric tensor distribution models for use in simulating
amorphous materials.
- New utility function, :func:`~mrsimulator.utils.collection.single_site_system_generator`,
for generating a list of single-site spin systems from a 1D list/array of respective
tensor parameters.
v0.3.0
------
What's new!
'''''''''''
- ⭐ Improved simulation performance. ⭐ See our :ref:`benchmark`.
- Removed the ``Dimension`` class and added a new ``Method`` class instead.
- New methods for simulating the NMR spectrum:
- ``BlochDecaySpectrum`` and
- ``BlochDecayCentralTransitionSpectrum``.
The Bloch decay spectrum method simulates all p=Δm=-1 transition pathways, while the
Bloch decay central transition selective spectrum method simulates all transition
pathways with p=Δm=-1 and d=0.
- New ``Isotope``, ``Transition``, and ``ZeemanState`` classes.
- Every class now includes a ``reduced_dict()`` method. The reduced_dict method returns
a dictionary with minimal key-value pairs required to simulate the spectrum. Note,
this may cause metadata loss, if any.
- Added a ``label`` and ``description`` attributes to the ``Site`` class.
- Added a new ``label`` attribute to the ``SpinSystem`` class.
- New ``SignalProcessor`` class for post-simulation signal processing.
- Improved usage of least-squares minimization using python
`LMFIT <https://lmfit.github.io/lmfit-py/>`_ package.
- Added a new ``get_spectral_dimensions`` utility function to extract the spectral
dimensions information from the CSDM object.
Bug fixes
'''''''''
- Fixed bug resulting from the rotation of the fourth rank tensor with non-zero euler
angles.
- Fixed bug causing a change in the spectral area as the sampling points change. Now the
area is constant.
- Fixed bug resulting in an incorrect spectrum when non-coincidental quad and shielding
tensors are given.
- Fixed bug causing incorrect generation of transition pathways when multiple events are
present.
Other changes
'''''''''''''
- Renamed the ``decompose`` attribute from the ``ConfigSimulator`` class to
``decompose_spectrum``. The attribute is an enumeration with the following literals:
- ``none``: Computes a spectrum which is an integration of the spectra from all
spin systems.
- ``spin_system``: Computes a series of spectra each corresponding to a single
spin system.
- Renamed ``Isotopomer`` class to ``SpinSystem``.
- Renamed ``isotopomers`` attribute from ``Simulator`` class to ``spin_systems``.
- Renamed ``dimensions`` attribute from ``Simulator`` class to ``methods``.
- Changed the default value of ``name`` and ``description`` attribute from the
``SpinSystem`` class from ``""`` to ``None``.
v0.2.x
------
What's new!
'''''''''''
- Added more isotopes to the simulator. Source NMR Tables
(https://apps.apple.com/bn/app/nmr-tables/id1030899609?mt=12).
- Added two new keywords: `atomic_number` and `quadrupole_moment`.
- Added documentation for every class.
- Added examples for simulating NMR quadrupolar spectrum.
Bug fixes
'''''''''
- Fixed amplitude normalization. The spectral amplitude no longer change when the
`integration_density`, integration_volume`, or the `number_of_sidebands` attributes
change.
Other changes
'''''''''''''
- Removed plotly-dash app to its own repository.
- Renamed the class ``Spectrum`` to ``Dimension``
v0.1.3
------
- Fixed missing files from source tar.
v0.1.2
------
- Initial release on pypi.
v0.1.1
------
- Added solid state quadrupolar spectrum simulation.
- Added mrsimulator plotly-dash app.
v0.1.0
------
- Solid state chemical shift anisotropy spectrum simulation.