NOTE:
penguins is not under active development.
I mostly used this as a tool for my own papers and my PhD thesis, and it served me admirably; however, I've since moved on to other stuff, and I don't have the time or motivation to work on new features.
If you are using it, and would like any help with using it to make plots / analyse data, I'm more than happy to help; just write to me at {myGithubUsername} at gmail dot com.
Please put penguins in the subject title, or I will ignore it.
Penguins: an ENjoyable Gateway to Unpacking and Illustrating NMR Spectra
penguins is a Python 3 package intended mainly for generating publication-quality plots of NMR spectra in a programmatic, reproducible fashion.
It also performs a very small number of processing and analysis of NMR spectra, namely integration as well as generation of projections/slices.
Install
python -m pip install penguins
(It's a good idea to use a virtual environment.)
Example
As an example of the output, here's Figure 2 from Angew. Chem. Int. Ed. 2017, 56 (39), 11779–11783:
And here's a similar plot that can be done in under 20 lines of PEP8-compliant code using penguins (it's the same compound, but not the same data):
import penguins as pg
hmqc, hsqc, cosy, noesy = pg.read("penguins-testdata", range(22001, 22005))
fig, axs = pg.subplots2d(2, 2)
hmqc.stage(axs[0, 0], levels=7e3, f1_bounds="110..130", f2_bounds="7..9.5")
hsqc.stage(axs[0, 1], levels=4e4, f1_bounds="12..65", f2_bounds="0.5..5")
cosy.stage(axs[1, 0], levels=8e5)
noesy.stage(axs[1, 1], levels=1e5)
titles = [r"$^{15}$N HMQC", r"$^{13}$C HSQC", "COSY", "NOESY"]
for ax, title in zip(axs.flat, titles):
pg.mkplot(ax, title=title)
pg.ymove(ax, pos="topright")
pg.label_axes(axs, fstr="({})", fontweight="semibold", fontsize=12)
pg.cleanup_axes()
pg.show()
Get started
Documentation can be found at https://yongrenjie.github.io/penguins. There are tutorial-type articles intended for entirely new users; I'm working on documentation beyond that, but it's not my main job, so it's a little slow.
Note that penguins is still in development, so the interface should not be assumed to be (too) stable. For now, I am working directly on the master branch, and rebasing/force pushing may occur without warning.
NOTE: You may want to silence type checking. There are plenty of issues with this which I have yet to fix. I have chosen to design penguins to provide Pythonic, friendly syntax, which unfortunately makes it very difficult to correctly specify types.
Metadata
Release files for penguins 0.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| penguins-0.5.2.tar.gz | 3.3 MB | Without provenance | Details for penguins-0.5.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| penguins-0.5.2-py3-none-any.whl | Python 3 | none | any | Details for penguins-0.5.2-py3-none-any.whl |
Total release size: 3.3 MB
Release files / penguins-0.5.2.tar.gz
| Download URL | penguins-0.5.2.tar.gz |
|---|---|
| Size | 3.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
94c0ca2c3bee44e1920af2c65bdae4d0f98643995acf44894bff93fd889a5c0b
|
|
BLAKE2b-256 checksum How to use checksums |
60495f97a08ed2921808b78caadbd0e0243ca864227850420adb207a39b36508
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.11.7
|
Release files / penguins-0.5.2-py3-none-any.whl
| Download URL | penguins-0.5.2-py3-none-any.whl |
|---|---|
| Size | 39.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f66a8ee942948da0d721eeda1ba933fcd9df09e8a898ccc3f40f2bc33337009c
|
|
BLAKE2b-256 checksum How to use checksums |
c8c0eec81bd93282f0540f2533378d0d84c2ac84593e785f4b22c847f2d6f792
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.11.7
|
Security for penguins 0.5.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.