PythonSTB commited on
Commit
fb74ade
·
verified ·
1 Parent(s): f0abdc9

Upload pywavelets/PYWAVELETS_USER_GUIDE.txt with huggingface_hub

Browse files
pywavelets/PYWAVELETS_USER_GUIDE.txt ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ ================================================================================