cppkh-interface 0.2.0__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cppkh_interface-0.2.0 → cppkh_interface-0.2.1}/PKG-INFO +19 -2
- {cppkh_interface-0.2.0 → cppkh_interface-0.2.1}/README.md +20 -3
- cppkh_interface-0.2.1/cppkh_interface/data/src/main.cpp +3757 -0
- {cppkh_interface-0.2.0 → cppkh_interface-0.2.1}/cppkh_interface/main.py +58 -52
- {cppkh_interface-0.2.0 → cppkh_interface-0.2.1}/pyproject.toml +2 -2
- {cppkh_interface-0.2.0 → cppkh_interface-0.2.1}/build_backend/cppkh_interface_build_backend.py +0 -0
- {cppkh_interface-0.2.0 → cppkh_interface-0.2.1}/cppkh_interface/__init__.py +0 -0
- {cppkh_interface-0.2.0 → cppkh_interface-0.2.1}/cppkh_interface/__main__.py +0 -0
- {cppkh_interface-0.2.0 → cppkh_interface-0.2.1}/cppkh_interface/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cppkh-interface
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Dependency-free Python interface for cppkh with runtime C++ compilation.
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Author: GGN_2015
|
|
@@ -22,7 +22,7 @@ Description-Content-Type: text/markdown
|
|
|
22
22
|
`cppkh-interface` is a Python package for computing integer Khovanov homology
|
|
23
23
|
with the C++ `cppkh` implementation.
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
The package has no runtime Python-package dependencies. Link crossing signs,
|
|
26
26
|
PD validation, R1 removal, and nugatory-crossing removal all use the bundled
|
|
27
27
|
canonical `cppkh` C++ source and its SageMath-compatible orientation rules.
|
|
28
28
|
|
|
@@ -36,6 +36,23 @@ print(cppkh_interface.solve_khovanov(pd_code, de_r1=True, de_k8=True))
|
|
|
36
36
|
print(cppkh_interface.solve_many_khovanov([pd_code, pd_code]))
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
For a multi-component oriented link, callers can compute several explicit
|
|
40
|
+
crossing-sign variants without changing the existing APIs:
|
|
41
|
+
|
|
42
|
+
```python
|
|
43
|
+
from cppkh_interface import compute_signed_variants
|
|
44
|
+
|
|
45
|
+
hopf = [[2, 3, 1, 4], [4, 1, 3, 2]]
|
|
46
|
+
results = compute_signed_variants(hopf, [[-1, -1], [1, 1]])
|
|
47
|
+
assert len(results) == 2
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Each sign row must contain exactly one `-1` or `1` for every crossing. This
|
|
51
|
+
operation deliberately disables PD simplification because removing a crossing
|
|
52
|
+
would invalidate the positional sign mapping. `solve_khovanov` and
|
|
53
|
+
`solve_many_khovanov` retain their original signatures, inferred-sign behavior,
|
|
54
|
+
and simplification defaults.
|
|
55
|
+
|
|
39
56
|
Unlike wrappers that ship a prebuilt DLL or shared object, this package ships
|
|
40
57
|
the `cppkh` C++ source file in built distributions and compiles a local
|
|
41
58
|
executable on first use using only Python's standard library. The compiled
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
`cppkh-interface` is a Python package for computing integer Khovanov homology
|
|
4
4
|
with the C++ `cppkh` implementation.
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
The package has no runtime Python-package dependencies. Link crossing signs,
|
|
7
7
|
PD validation, R1 removal, and nugatory-crossing removal all use the bundled
|
|
8
8
|
canonical `cppkh` C++ source and its SageMath-compatible orientation rules.
|
|
9
9
|
|
|
@@ -14,8 +14,25 @@ import cppkh_interface
|
|
|
14
14
|
|
|
15
15
|
pd_code = [[1, 5, 2, 4], [3, 1, 4, 6], [5, 3, 6, 2]]
|
|
16
16
|
print(cppkh_interface.solve_khovanov(pd_code, de_r1=True, de_k8=True))
|
|
17
|
-
print(cppkh_interface.solve_many_khovanov([pd_code, pd_code]))
|
|
18
|
-
```
|
|
17
|
+
print(cppkh_interface.solve_many_khovanov([pd_code, pd_code]))
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
For a multi-component oriented link, callers can compute several explicit
|
|
21
|
+
crossing-sign variants without changing the existing APIs:
|
|
22
|
+
|
|
23
|
+
```python
|
|
24
|
+
from cppkh_interface import compute_signed_variants
|
|
25
|
+
|
|
26
|
+
hopf = [[2, 3, 1, 4], [4, 1, 3, 2]]
|
|
27
|
+
results = compute_signed_variants(hopf, [[-1, -1], [1, 1]])
|
|
28
|
+
assert len(results) == 2
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Each sign row must contain exactly one `-1` or `1` for every crossing. This
|
|
32
|
+
operation deliberately disables PD simplification because removing a crossing
|
|
33
|
+
would invalidate the positional sign mapping. `solve_khovanov` and
|
|
34
|
+
`solve_many_khovanov` retain their original signatures, inferred-sign behavior,
|
|
35
|
+
and simplification defaults.
|
|
19
36
|
|
|
20
37
|
Unlike wrappers that ship a prebuilt DLL or shared object, this package ships
|
|
21
38
|
the `cppkh` C++ source file in built distributions and compiles a local
|