Skip to content
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

Release v0.14.4 #370

Merged
merged 44 commits into from
Aug 10, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
9161e8a
bumb version to v0.15.0-dev (#307)
luisfabib Apr 9, 2022
adcc09f
examples: fix identifiablity analysis grid values (#314)
luisfabib Apr 12, 2022
6f80a79
remove line that should be substituted by the subsequent GHA (#313)
luisfabib Apr 12, 2022
483b174
Use Scipy's `eigh` instead of Numpy's to avoid convergence error (#311)
luisfabib Apr 12, 2022
289e284
Enable the pickling of DeerLab's objects (#312)
luisfabib Apr 19, 2022
402e44c
`docs`: add important note to user guide on experimental deadtime cor…
luisfabib Apr 20, 2022
05a5573
Fix dependency of DeerLab's documentation logo on system fonts (#328)
luisfabib Jun 2, 2022
6913a64
fix minor bug when printing fit results with most parameters frozen (…
luisfabib Jun 2, 2022
242c09b
Fix bug when propagating bootstrapped uncertainty in presence of roun…
luisfabib Jun 2, 2022
796301e
docs: add docstring for evaluate and propagate methods (#321)
luisfabib Jun 2, 2022
ce2cc09
docs: minor edits, CSS fixes, and one 404 fix (#331)
luisfabib Jun 3, 2022
8dd79ae
Remove hard dependency of the DeerLab's installation routine and scri…
luisfabib Jun 7, 2022
3947c1c
Avoid use of pre-release Numpy versions during installation (#336)
luisfabib Jun 8, 2022
738f6dd
Fix randomly failing GHA WinOS workflow (#337)
luisfabib Jun 8, 2022
8b4e91a
Prevent potential future bugs when normalizing distributions througho…
luisfabib Jun 9, 2022
789aa58
`bootstrap_analysis`: better noise estimation and add option to speci…
luisfabib Jun 9, 2022
942303e
Fix automated upload to PyPI via token (#338)
luisfabib Jun 14, 2022
1cb810a
Correct behavior of L-curve selection methods (#340)
luisfabib Jun 23, 2022
b075972
Remove unused lines in `dipolarmodel` (#341)
edmundxcvi Jun 28, 2022
5d62986
`dipolarmodel`: Fix error when specifying a limited excitation bandwi…
luisfabib Jun 28, 2022
47fdbe4
fit: properly pass the user-supplied noise level to the bootstrapping…
luisfabib Jun 28, 2022
c20d65d
remove unused lines in example (#345)
luisfabib Jun 28, 2022
a22b07b
Fix documentation navigation menu on mobile phones and collapsed wind…
luisfabib Jun 28, 2022
102cf67
docs: force light theme even in dark themed browsers (#350)
luisfabib Jul 11, 2022
ca8bb4b
fit: avoid unfreezing of all parameters when applying normalization (…
luisfabib Jul 11, 2022
a4b74fc
Background models mathematical fixes (#351)
luisfabib Jul 13, 2022
dc4995c
Fix scheduled CI test suite (#353)
luisfabib Jul 29, 2022
215db52
Modelling system quality of life improvements (#354)
luisfabib Jul 29, 2022
e7cc77c
Fix errors in GHA publishing workflow (#355)
luisfabib Jul 30, 2022
9a9e9df
Minor edits to files edited in previous PRs (#356)
luisfabib Jul 30, 2022
d64dea7
docs: fix theme package version to solve dark theme issues (#359)
luisfabib Aug 3, 2022
b357491
UQResults: add docstrings for undocumented attributes (#360)
luisfabib Aug 3, 2022
35d8117
dd_randcoil: fix description of model parameters (#361)
luisfabib Aug 8, 2022
8d7c394
add chemistry travel award funding to support page (#364)
luisfabib Aug 8, 2022
4250f1d
Fix PyPI and Anaconda build and upload workflows (#363)
luisfabib Aug 8, 2022
bfaa773
docs: fix multiple CSS issues and flex container bugs (#365)
luisfabib Aug 9, 2022
5ca8f7f
Merge branch 'main' into v0.14.4
luisfabib Aug 10, 2022
8d3851f
bump VERSION to v0.14.4
luisfabib Aug 10, 2022
11a0969
update the changelog
luisfabib Aug 10, 2022
714e62d
`fit`: add missing arguments to docstring (#367)
luisfabib Aug 10, 2022
2112615
`dipolarmodel`: add `pulselength` optional argument to experiment mod…
luisfabib Aug 10, 2022
d2dd2eb
model: add start values and frozen values to the printed parameter ta…
luisfabib Aug 10, 2022
70e088b
Merge branch 'main' into v0.14.4
luisfabib Aug 10, 2022
acf951d
update changelog
luisfabib Aug 10, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/actions/conda_build_publish_package/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ build_package(){
done
for platform in "${PLATFORMS[@]}"; do
for filename in /$platform/*.tar.bz2; do
conda convert -p $platform linux-64/*.tar.bz2
conda convert /$platform/$filename -p $platform linux-64/*.tar.bz2 -o .
done
done
}
Expand All @@ -38,7 +38,7 @@ upload_package(){
export ANACONDA_API_TOKEN=$INPUT_ANACONDATOKEN

for platform in "${PLATFORMS[@]}"; do
for filename in ./"$platform"/*.tar.bz2; do
for filename in ./$platform/*.tar.bz2; do
anaconda upload $filename
done
done
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/deploy_ghpages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Set up Python 3.7
- name: Set up Python 3.9
uses: actions/setup-python@v1
with:
python-version: 3.7
python-version: 3.9
- uses: actions/cache@v2
with:
path: |
Expand All @@ -26,14 +26,14 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pydata-sphinx-theme
python -m pip install pydata-sphinx-theme==0.7.1
python -m pip install numpydoc
python -m pip install sphinx-gallery
python -m pip install sphinxcontrib-httpdomain
python -m pip install sphinxcontrib-ghcontributors
python -m pip install sphinx-issues
python -m pip install sphinx-copybutton
python -m pip install sphinx
python -m pip install sphinx==4.2
sudo apt install texlive-extra-utils
sudo apt-get install texlive-latex-extra
python -m pip install .
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/docs_PR.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Set up Python 3.7
- name: Set up Python 3.9
uses: actions/setup-python@v1
with:
python-version: 3.7
python-version: 3.9
- uses: actions/cache@v2
with:
path: |
Expand All @@ -30,14 +30,14 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pydata-sphinx-theme
python -m pip install pydata-sphinx-theme==0.7.1
python -m pip install numpydoc
python -m pip install sphinx-gallery
python -m pip install sphinxcontrib-httpdomain
python -m pip install sphinxcontrib-ghcontributors
python -m pip install sphinx-copybutton
python -m pip install sphinx-issues
python -m pip install sphinx
python -m pip install sphinx==4.2
sudo apt install texlive-extra-utils
sudo apt-get install texlive-latex-extra
python -m pip install .
Expand Down
19 changes: 8 additions & 11 deletions .github/workflows/package_upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,16 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Set up Python 3.8
- name: Set up Python 3.10
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install setuptools --user
python -m pip install build --user
python -m pip install twine --user
- name: Build distribution
run: |
python setup.py sdist
./setup.py bdist_wheel --user
python-version: "3.10"
- name: Install pypa/build
run: >-
python -m pip install build --user
- name: Build a binary wheel and a source tarball
run: >-
python -m build --sdist --wheel --outdir dist/
- name: Publish distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v0.14.3
v0.14.4
19 changes: 17 additions & 2 deletions deerlab/classes.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,19 +87,34 @@ class UQResult:
type : string
Uncertainty quantification approach:

* 'covariance' - Covariance-based uncertainty analysis
* 'bootstrap' - Bootstrapped uncertainty analysis
* ``'covariance'`` - Covariance-based uncertainty analysis
* ``'bootstrap'`` - Bootstrapped uncertainty analysis
* ``'profile'`` - Likelihood profile uncertainty analysis
* ``'void'`` - Empty uncertainty analysis

mean : ndarray
Mean values of the uncertainty distribution of the parameters.

median : ndarray
Median values of the uncertainty distribution of the parameters.

std : ndarray
Standard deviations of the uncertainty distribution of the parameters.

covmat : ndarray
Covariance matrix

nparam : int scalar
Number of parameters in the analysis.

samples : ndarray
Bootstrap samples of the parameters. Only available for ``type='bootstrap'``.

profile : ndarray
Likelihood profile of the parameters. Only available for ``type='profile'``.

threshold : scalar
Treshold value used for the profile method. Only available for ``type='profile'``.

Methods
-------
Expand Down
4 changes: 2 additions & 2 deletions deerlab/dd_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -400,8 +400,8 @@ def _randcoil(r,Nres,scaling,length):
dd_randcoil.description = 'Random-coil model for an unfolded peptide/protein'
# Parameters
dd_randcoil.Nres.set(description='Number of residues', lb=2.0, ub=1000, par0=50, unit='')
dd_randcoil.scaling.set(description='Segment length', lb=0.1, ub=0.4, par0=0.2, unit='nm')
dd_randcoil.length.set(description='Scaling exponent', lb=0.33, ub=1.00, par0=0.602, unit='')
dd_randcoil.scaling.set(description='Scaling exponent', lb=0.1, ub=0.4, par0=0.2, unit='nm')
dd_randcoil.length.set(description='Segment length', lb=0.33, ub=1.00, par0=0.602, unit='')
# Add documentation
dd_randcoil.__doc__ = _dd_docstring(dd_randcoil,notes) + docstr_example('dd_randcoil')

Expand Down
55 changes: 40 additions & 15 deletions deerlab/dipolarmodel.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,8 +237,8 @@ def Vnonlinear_fcn(*nonlin):
for n in range(npathways):
getattr(DipolarSignal,reftime_names[n]).set(
par0 = experiment.reftimes[n],
lb = experiment.reftimes[n] - 0.05,
ub = experiment.reftimes[n] + 0.05
lb = experiment.reftimes[n] - 3*experiment.pulselength,
ub = experiment.reftimes[n] + 3*experiment.pulselength
)

# Set other dipolar model specific attributes
Expand Down Expand Up @@ -337,15 +337,16 @@ class ExperimentInfo():
r"""
Represents information about a dipolar EPR experiment"""

def __init__(self,name,reftimes,harmonics):
def __init__(self,name,reftimes,harmonics,pulselength):
self.npathways = len(reftimes)
self.reftimes = reftimes
self.harmonics = harmonics
self.pulselength = pulselength
self.name = name
#===============================================================================

#===============================================================================
def ex_3pdeer(tau, pathways=None):
def ex_3pdeer(tau, pathways=None, pulselength=0.016):
r"""
Generate a 3-pulse DEER dipolar experiment model.

Expand Down Expand Up @@ -375,6 +376,10 @@ def ex_3pdeer(tau, pathways=None):
Pathways to include in the model. The pathways are specified based to the pathways numbers.
By default, both pathways are included in the order given in the table above.

pulselength : float scalar, optional
Length of the longest microwave pulse in the sequence in microseconds. Used to determine the uncertainty in the
boundaries of the pathay refocusing times.

Returns
-------
experiment : ``ExperimentInfo`` object
Expand All @@ -394,11 +399,11 @@ def ex_3pdeer(tau, pathways=None):
reftimes = [reftimes[pathway-1] for pathway in pathways]
harmonics = [harmonics[pathway-1] for pathway in pathways]

return ExperimentInfo('3-pulse DEER',reftimes,harmonics)
return ExperimentInfo('3-pulse DEER',reftimes,harmonics,pulselength)
#===============================================================================

#===============================================================================
def ex_4pdeer(tau1, tau2, pathways=None):
def ex_4pdeer(tau1, tau2, pathways=None, pulselength=0.016):
r"""
Generate a 4-pulse DEER dipolar experiment model.

Expand Down Expand Up @@ -432,6 +437,10 @@ def ex_4pdeer(tau1, tau2, pathways=None):
Pathways to include in the model. The pathways are specified based to the pathways numbers.
By default, all 4 pathways are included in the order given in the table above.

pulselength : float scalar, optional
Length of the longest microwave pulse in the sequence in microseconds. Used to determine the uncertainty in the
boundaries of the pathay refocusing times.

Returns
-------
experiment : ``ExperimentInfo`` object
Expand All @@ -450,11 +459,11 @@ def ex_4pdeer(tau1, tau2, pathways=None):
reftimes = [reftimes[pathway-1] for pathway in pathways]
harmonics = [harmonics[pathway-1] for pathway in pathways]

return ExperimentInfo('4-pulse DEER', reftimes, harmonics)
return ExperimentInfo('4-pulse DEER', reftimes, harmonics, pulselength)
#===============================================================================

#===============================================================================
def ex_rev5pdeer(tau1, tau2, tau3, pathways=None):
def ex_rev5pdeer(tau1, tau2, tau3, pathways=None, pulselength=0.016):
r"""
Generate a reverse 5-pulse DEER dipolar experiment model.

Expand Down Expand Up @@ -494,6 +503,10 @@ def ex_rev5pdeer(tau1, tau2, tau3, pathways=None):
Pathways to include in the model. The pathways are specified based to the pathways numbers.
By default, all 8 pathways are included in the order given in the table above.

pulselength : float scalar, optional
Length of the longest microwave pulse in the sequence in microseconds. Used to determine the uncertainty in the
boundaries of the pathay refocusing times.

Returns
-------
experiment : ``ExperimentInfo`` object
Expand All @@ -512,12 +525,12 @@ def ex_rev5pdeer(tau1, tau2, tau3, pathways=None):
reftimes = [reftimes[pathway-1] for pathway in pathways]
harmonics = [harmonics[pathway-1] for pathway in pathways]

return ExperimentInfo('Reverse 5-pulse DEER',reftimes,harmonics)
return ExperimentInfo('Reverse 5-pulse DEER',reftimes,harmonics,pulselength)
#===============================================================================


#===============================================================================
def ex_fwd5pdeer(tau1, tau2, tau3, pathways=None):
def ex_fwd5pdeer(tau1, tau2, tau3, pathways=None, pulselength=0.016):
r"""
Generate a forward 5-pulse DEER dipolar experiment model.

Expand Down Expand Up @@ -557,6 +570,10 @@ def ex_fwd5pdeer(tau1, tau2, tau3, pathways=None):
Pathways to include in the model. The pathways are specified based to the pathways numbers.
By default, all pathways are included in the order given in the table above.

pulselength : float scalar, optional
Length of the longest microwave pulse in the sequence in microseconds. Used to determine the uncertainty in the
boundaries of the pathay refocusing times.

Returns
-------
experiment : ``ExperimentInfo`` object
Expand All @@ -575,11 +592,11 @@ def ex_fwd5pdeer(tau1, tau2, tau3, pathways=None):
reftimes = [reftimes[pathway-1] for pathway in pathways]
harmonics = [harmonics[pathway-1] for pathway in pathways]

return ExperimentInfo('Forward 5-pulse DEER', reftimes, harmonics)
return ExperimentInfo('Forward 5-pulse DEER',reftimes,harmonics,pulselength)
#===============================================================================

#===============================================================================
def ex_sifter(tau1, tau2, pathways=None):
def ex_sifter(tau1, tau2, pathways=None, pulselength=0.016):
r"""
Generate a SIFTER dipolar experiment model.

Expand Down Expand Up @@ -611,6 +628,10 @@ def ex_sifter(tau1, tau2, pathways=None):
Pathways to include in the model. The pathways are specified based to the pathways numbers.
By default, all 3 pathways are included and ordered as given in the table above.

pulselength : float scalar, optional
Length of the longest microwave pulse in the sequence in microseconds. Used to determine the uncertainty in the
boundaries of the pathay refocusing times.

Returns
-------
experiment : ``ExperimentInfo`` object
Expand All @@ -630,12 +651,12 @@ def ex_sifter(tau1, tau2, pathways=None):
reftimes = [reftimes[pathway-1] for pathway in pathways]
harmonics = [harmonics[pathway-1] for pathway in pathways]

return ExperimentInfo('SIFTER',reftimes,harmonics)
return ExperimentInfo('SIFTER',reftimes,harmonics,pulselength)
#===============================================================================


#===============================================================================
def ex_ridme(tau1, tau2, pathways=None):
def ex_ridme(tau1, tau2, pathways=None, pulselength=0.016):
r"""
Generate a RIDME dipolar experiment model.

Expand Down Expand Up @@ -668,6 +689,10 @@ def ex_ridme(tau1, tau2, pathways=None):
Pathways to include in the model. The pathways are specified based to the pathways numbers.
By default, all 4 pathways are included in the order given in the table above.

pulselength : float scalar, optional
Length of the longest microwave pulse in the sequence in microseconds. Used to determine the uncertainty in the
boundaries of the pathay refocusing times.

Returns
-------
experiment : ``ExperimentInfo`` object
Expand All @@ -687,5 +712,5 @@ def ex_ridme(tau1, tau2, pathways=None):
reftimes = [reftimes[pathway-1] for pathway in pathways]
harmonics = [harmonics[pathway-1] for pathway in pathways]

return ExperimentInfo('RIDME',reftimes,harmonics)
return ExperimentInfo('RIDME',reftimes,harmonics,pulselength)
#===============================================================================
Loading