Delete pywavelets/PYWAVELETS_USER_GUIDE.txt
Browse files
pywavelets/PYWAVELETS_USER_GUIDE.txt
DELETED
|
@@ -1,91 +0,0 @@
|
|
| 1 |
-
================================================================================
|
| 2 |
-
PYWAVELETS - USER GUIDE (Android Python STB) - Generated by RIMI
|
| 3 |
-
================================================================================
|
| 4 |
-
|
| 5 |
-
PyWavelets 1.10.0 for Android (CPython 3.12, API 24)
|
| 6 |
-
----------------------------------------------------
|
| 7 |
-
PyWavelets (import name: pywt) is a wavelet transform library for Python:
|
| 8 |
-
discrete and stationary wavelet transforms (1D, 2D, nD), wavelet packets,
|
| 9 |
-
continuous wavelet transform (CWT), thresholding, and multilevel analysis.
|
| 10 |
-
|
| 11 |
-
Provided wheels (C extensions, cross-compiled with NDK r26):
|
| 12 |
-
pywavelets-1.10.0-cp312-cp312-android_24_arm64_v8a.whl (real ARM64 phones)
|
| 13 |
-
pywavelets-1.10.0-cp312-cp312-android_24_x86_64.whl (x86_64 emulators)
|
| 14 |
-
|
| 15 |
-
Installation
|
| 16 |
-
------------
|
| 17 |
-
1. Install the numpy 2.5.2 Android wheel FIRST (from its own package
|
| 18 |
-
folder — do NOT look for numpy in the pywavelets folder):
|
| 19 |
-
numpy-2.5.2-cp312-cp312-android_24_<arch>.whl
|
| 20 |
-
2. Install the matching pywavelets STANDALONE wheel:
|
| 21 |
-
pywavelets-1.10.0-cp312-cp312-android_24_<arch>.whl
|
| 22 |
-
pip resolves the `numpy<3,>=1.26.4` runtime dependency from the
|
| 23 |
-
already-installed numpy (both wheels share the same Python 3.12 ABI).
|
| 24 |
-
3. Run Test_PyWavelets.py from the Scripts folder; expect ALL PASSED.
|
| 25 |
-
|
| 26 |
-
Quick start
|
| 27 |
-
-----------
|
| 28 |
-
import pywt
|
| 29 |
-
import numpy as np
|
| 30 |
-
|
| 31 |
-
x = np.arange(16, dtype=float)
|
| 32 |
-
|
| 33 |
-
# 1D discrete transform and perfect reconstruction
|
| 34 |
-
cA, cD = pywt.dwt(x, 'db1')
|
| 35 |
-
y = pywt.idwt(cA, cD, 'db1')
|
| 36 |
-
|
| 37 |
-
# Multilevel decomposition
|
| 38 |
-
coeffs = pywt.wavedec(x, 'db2', level=2)
|
| 39 |
-
y = pywt.waverec(coeffs, 'db2')
|
| 40 |
-
|
| 41 |
-
# Stationary (undecimated) transform
|
| 42 |
-
swt = pywt.swt(x, 'haar', level=1)
|
| 43 |
-
y = pywt.iswt(swt, 'haar')
|
| 44 |
-
|
| 45 |
-
# 2D transform
|
| 46 |
-
img = np.arange(64, dtype=float).reshape(8, 8)
|
| 47 |
-
cA, (cH, cV, cD) = pywt.dwt2(img, 'haar')
|
| 48 |
-
rec = pywt.idwt2((cA, (cH, cV, cD)), 'haar')
|
| 49 |
-
|
| 50 |
-
# Denoising-style thresholding
|
| 51 |
-
t = pywt.threshold(np.linspace(-2, 2, 32), 1.0, mode='soft')
|
| 52 |
-
|
| 53 |
-
print(pywt.wavelist()[:5]) # ['bior1.1', 'bior1.3', ...]
|
| 54 |
-
|
| 55 |
-
Android-specific notes
|
| 56 |
-
----------------------
|
| 57 |
-
* The 4 native modules (pywt/_extensions/_cwt, _dwt, _pywt, _swt,
|
| 58 |
-
named *.cpython-312.so) link only against librimi.so + system
|
| 59 |
-
libm/libdl/libc. No C++ runtime is needed (pure C + Cython).
|
| 60 |
-
* 16 KB page aligned, no GNU_RELRO: safe on Android 13+ (no dlopen
|
| 61 |
-
`can't enable GNU RELRO protection` crash).
|
| 62 |
-
* No OPENBLAS/Fortran dependency — unlike numpy/scipy this wheel is
|
| 63 |
-
small (~4.3 MB) and has no native deps besides numpy's headers
|
| 64 |
-
at build time.
|
| 65 |
-
* Shell `python3` on device cannot load these modules (librimi.so needs
|
| 66 |
-
the app JVM context); always test inside the app via Scripts.
|
| 67 |
-
|
| 68 |
-
Known upstream quirk (NOT a build defect)
|
| 69 |
-
-----------------------------------------
|
| 70 |
-
The 1.10.0 source distribution ships util/version_utils.py with the
|
| 71 |
-
version constants still at 1.8.0, so `pywt.__version__` reports '1.8.0'
|
| 72 |
-
— the official PyPI 1.10.0 wheels do exactly the same. The *wheel*
|
| 73 |
-
version (pywavelets-1.10.0.dist-info) is 1.10.0. The device test
|
| 74 |
-
therefore checks only that the version string is present.
|
| 75 |
-
|
| 76 |
-
Tested features (device script Test_PyWavelets.py, 10 checks)
|
| 77 |
-
--------------------------------------------------------------
|
| 78 |
-
import pywt + numpy / version string / Wavelet('db1') object /
|
| 79 |
-
wavelist contents (db1, db2, haar, sym2) / dwt+idwt roundtrip /
|
| 80 |
-
wavedec+waverec roundtrip (db2, level 2) / swt+iswt roundtrip (haar) /
|
| 81 |
-
dwt2+idwt2 roundtrip (haar, 8x8) / soft+hard threshold smoke /
|
| 82 |
-
pywt.data.camera() load.
|
| 83 |
-
|
| 84 |
-
Runtime dependency
|
| 85 |
-
------------------
|
| 86 |
-
numpy<3,>=1.26.4 (declared in METADATA Requires-Dist; install the
|
| 87 |
-
numpy 2.5.2 Android wheel from its own package folder separately).
|
| 88 |
-
|
| 89 |
-
================================================================================
|
| 90 |
-
Generated by RIMI
|
| 91 |
-
================================================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|