DGCV 0.3.2__tar.gz → 0.3.4__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.
- {dgcv-0.3.2/src/dgcv.egg-info → dgcv-0.3.4}/PKG-INFO +10 -26
- {dgcv-0.3.2 → dgcv-0.3.4}/README.md +9 -25
- {dgcv-0.3.2 → dgcv-0.3.4}/pyproject.toml +1 -1
- {dgcv-0.3.2 → dgcv-0.3.4}/setup.cfg +1 -1
- {dgcv-0.3.2 → dgcv-0.3.4}/setup.py +1 -1
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/CR_geometry.py +3 -4
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/__init__.py +34 -30
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/_config.py +5 -3
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/_dgcv_display.py +10 -18
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/_safeguards.py +83 -51
- dgcv-0.3.4/src/dgcv/_settings.py +26 -0
- dgcv-0.3.4/src/dgcv/algebras/algebras_aux.py +321 -0
- dgcv-0.3.2/src/dgcv/finite_dim_algebras.py → dgcv-0.3.4/src/dgcv/algebras/algebras_core.py +691 -1188
- dgcv-0.3.4/src/dgcv/algebras/algebras_secondary.py +1574 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/dgcv_core.py +51 -894
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/eds/eds.py +27 -2
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/eds/eds_operations.py +2 -1
- dgcv-0.3.4/src/dgcv/filtered_structures.py +925 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/polynomials.py +2 -1
- dgcv-0.3.4/src/dgcv/representations.py +10 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/tensors.py +162 -102
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/vector_fields_and_differential_forms.py +19 -157
- dgcv-0.3.4/src/dgcv/vmf.py +1140 -0
- {dgcv-0.3.2 → dgcv-0.3.4/src/dgcv.egg-info}/PKG-INFO +10 -26
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv.egg-info/SOURCES.txt +4 -1
- dgcv-0.3.2/src/dgcv/_settings.py +0 -16
- dgcv-0.3.2/src/dgcv/filtered_structures.py +0 -426
- dgcv-0.3.2/src/dgcv/vmf.py +0 -262
- {dgcv-0.3.2 → dgcv-0.3.4}/LICENSE.txt +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/MANIFEST.in +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/Riemannian_geometry.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/_tensor_field_printers.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/__init__.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Black.ttf +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Black.woff2 +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Bold.ttf +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Bold.woff2 +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-ExtraBold.ttf +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-ExtraBold.woff2 +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Medium.ttf +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Medium.woff2 +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Regular.ttf +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-Regular.woff2 +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-SemiBold.ttf +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/Orbitron-SemiBold.woff2 +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/PatrickHand-Regular.ttf +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/assets/fonts/fonts.css +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/combinatorics.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/complex_structures.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/conversions.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/coordinate_maps.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/dgcv_formatter.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/eds/__init__.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/eds/ast.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/eds/eds_representations.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/solvers.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv/styles.py +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv.egg-info/dependency_links.txt +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv.egg-info/requires.txt +0 -0
- {dgcv-0.3.2 → dgcv-0.3.4}/src/dgcv.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dgcv
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.4
|
|
4
4
|
Summary: Differential Geometry with Complex Variables
|
|
5
5
|
Author: David Sykes
|
|
6
6
|
Author-email: David Sykes <david@realandimaginary.com>
|
|
@@ -18,51 +18,35 @@ Dynamic: requires-python
|
|
|
18
18
|
|
|
19
19
|
**dgcv** is an open-source Python package providing basic tools for differential geometry integrated with systematic organization of structures naturally accompanying complex variables, in short, Differential Geometry with Complex Variables.
|
|
20
20
|
|
|
21
|
-
At its core are symbolic representations of standard DG objects such as vector fields and differential forms. There are coordinate free representations, and representations defined relative to coordinate systems falling into two
|
|
21
|
+
At its core are symbolic representations of standard DG objects such as vector fields and differential forms. There are coordinate free representations, and representations defined relative to coordinate systems falling into two general categories:
|
|
22
22
|
|
|
23
|
-
- **standard** - basic systems that can represent real or complex coordinates, sufficient for
|
|
23
|
+
- **standard** - basic systems that can represent real or complex coordinates, sufficient for applications that do not require **dgcv**'s complex variable handling features.
|
|
24
24
|
- **complex** - richer systems for representing complex coordinate patches that interact with **dgcv**'s complex variable handling features. These are comprised of holomorphic coordinate functions, their conjugates, and their real and imaginary parts (e.g., $\\{z_j,\overline{z_j},x_j,y_j\\}$).
|
|
25
25
|
|
|
26
26
|
**dgcv** functions account for coordinate types dynamically when operating on objects built from such coordinate systems. The package has a growing library for coordinate-free representations as well, and tools for converting between the two paradigms.
|
|
27
27
|
|
|
28
28
|
As systems of differential geometric objects constructed from complex variables inherit natural relationships from the underlying complex structure, **dgcv** objects track these relationships across the constructions. This system enables smooth switching between real and holomorphic coordinate representations of mathematical objects. In computations, **dgcv** objects dynamically manage this format switching on their own so that typical complex variables formulas can be written plainly and will simply work. Some examples of this: In coordinates $z_j = x_j + iy_j$, expressions such as $\frac{\partial}{\partial x_j}|z_j|^2$ or $d z_j \wedge d \overline{z_j} \left( \frac{\partial}{\partial z_j}, \frac{\partial}{\partial y_j} \right)$ are correctly parsed without needing to convert everything to a uniform variable format. Retrieving objects' complex structure-related attributes, like the holomorphic part of a vector field or pluriharmonic terms from a polynomial is straightforward. Complexified cotangent bundles and their exterior algebras are easily decomposed into components from the Dolbeault complex and Dolbeault operators themselves can be applied to functions and k-forms in either coordinate format.
|
|
29
29
|
|
|
30
|
-
**dgcv**
|
|
30
|
+
**dgcv** is tested on Python 3.13, and has dependencies on the SymPy, Pandas, and iPython libraries.
|
|
31
31
|
|
|
32
32
|
## Features
|
|
33
33
|
|
|
34
|
-
-
|
|
35
|
-
- Intuitive interactions with complex structures from holomorphic coordinate systems: **dgcv** objects dynamically manage coordinate transformations between real and holomorphic coordinates during computation as necessary, so objects can be represented in and freely converted between either coordinate format
|
|
36
|
-
- Natural LaTeX rendering for representation of mathematical objects, designed with Jupyter notebooks in mind.
|
|
34
|
+
- Symbolic representations of various tensor fields (vector fields, differential forms, etc.) and dedicated python classes for representing many other common differential geometric structures
|
|
35
|
+
- Intuitive interactions with complex structures from holomorphic coordinate systems: **dgcv** objects dynamically manage coordinate transformations between real and holomorphic coordinates during computation as necessary, so objects can be represented in and freely converted between either coordinate format
|
|
37
36
|
|
|
38
37
|
## Installation
|
|
39
38
|
|
|
40
|
-
|
|
39
|
+
**dgcv** can be installed directly from PyPI with pip, e.g.:
|
|
41
40
|
|
|
42
41
|
```bash
|
|
43
42
|
pip install dgcv
|
|
44
43
|
```
|
|
45
44
|
|
|
46
|
-
Depending on Python install configurations, the above command can vary. The key is to have the relevant Python environment active so that the package manager pip sources from the right location (suggested to use virtual environments: [Getting started with virtual environments](https://docs.python.org/3/library/venv.html)).
|
|
47
|
-
|
|
48
|
-
## Tutorials
|
|
49
|
-
|
|
50
|
-
Two Jupyter Notebook tutorials are available to help getting started with **dgcv**:
|
|
51
|
-
|
|
52
|
-
1. **dgcv Introduction**: An introduction to the key concepts and setup
|
|
53
|
-
|
|
54
|
-
- [View **dgcv** Introduction Tutorial](https://www.realandimaginary.com/dgcv/tutorials/DGCV_introduction/)
|
|
55
|
-
|
|
56
|
-
2. **dgcv in Action**: A quick tour through examples from some of the library's more elaborate functions
|
|
57
|
-
- [View **dgcv** in Action Tutorial](https://www.realandimaginary.com/dgcv/tutorials/DGCV_in_action/)
|
|
58
|
-
|
|
59
|
-
### Running the Tutorials Locally
|
|
60
|
-
|
|
61
|
-
You can download the tutorials individually from the **dgcv** repository [**dgcv** github repo](https://github.com/YikesItsSykes/DGCV).
|
|
45
|
+
Depending on Python install configurations, the above command can vary. The key is to have the relevant Python environment active so that the package manager `pip` sources from the right location (suggested to use virtual environments: [Getting started with virtual environments](https://docs.python.org/3/library/venv.html)).
|
|
62
46
|
|
|
63
47
|
## Documentation
|
|
64
48
|
|
|
65
|
-
**dgcv** documentation is hosted at [https://www.realandimaginary.com/dgcv/](https://www.realandimaginary.com/dgcv/), with documentation pages for
|
|
49
|
+
**dgcv** documentation is hosted at [https://www.realandimaginary.com/dgcv/](https://www.realandimaginary.com/dgcv/), with documentation pages for individual functions in the library and more. Docstrings within the code provide more information on available classes/methods and functions.
|
|
66
50
|
|
|
67
51
|
## License
|
|
68
52
|
|
|
@@ -76,7 +60,7 @@ You can download the tutorials individually from the **dgcv** repository [**dgcv
|
|
|
76
60
|
|
|
77
61
|
### Future Development
|
|
78
62
|
|
|
79
|
-
The current (0.3.x) version of **dgcv** is designed with several planned extensions to the library in mind. Current plans broadly fall into
|
|
63
|
+
The current (0.3.x) version of **dgcv** is designed with several planned extensions to the library in mind. Current plans broadly fall into two categories:
|
|
80
64
|
|
|
81
65
|
- Extending complex variable handling and dynamic coordinate-type conversion automations. The simple goal is to fully automate handling of complex variable formats, allowing input to be formatted freely with any coordinate type, with features to fully control coordinate type formatting or let the systems automate the process.
|
|
82
66
|
- Expanding libraries dedicated to more specialized areas of differential geometry
|
|
@@ -2,51 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
**dgcv** is an open-source Python package providing basic tools for differential geometry integrated with systematic organization of structures naturally accompanying complex variables, in short, Differential Geometry with Complex Variables.
|
|
4
4
|
|
|
5
|
-
At its core are symbolic representations of standard DG objects such as vector fields and differential forms. There are coordinate free representations, and representations defined relative to coordinate systems falling into two
|
|
5
|
+
At its core are symbolic representations of standard DG objects such as vector fields and differential forms. There are coordinate free representations, and representations defined relative to coordinate systems falling into two general categories:
|
|
6
6
|
|
|
7
|
-
- **standard** - basic systems that can represent real or complex coordinates, sufficient for
|
|
7
|
+
- **standard** - basic systems that can represent real or complex coordinates, sufficient for applications that do not require **dgcv**'s complex variable handling features.
|
|
8
8
|
- **complex** - richer systems for representing complex coordinate patches that interact with **dgcv**'s complex variable handling features. These are comprised of holomorphic coordinate functions, their conjugates, and their real and imaginary parts (e.g., $\\{z_j,\overline{z_j},x_j,y_j\\}$).
|
|
9
9
|
|
|
10
10
|
**dgcv** functions account for coordinate types dynamically when operating on objects built from such coordinate systems. The package has a growing library for coordinate-free representations as well, and tools for converting between the two paradigms.
|
|
11
11
|
|
|
12
12
|
As systems of differential geometric objects constructed from complex variables inherit natural relationships from the underlying complex structure, **dgcv** objects track these relationships across the constructions. This system enables smooth switching between real and holomorphic coordinate representations of mathematical objects. In computations, **dgcv** objects dynamically manage this format switching on their own so that typical complex variables formulas can be written plainly and will simply work. Some examples of this: In coordinates $z_j = x_j + iy_j$, expressions such as $\frac{\partial}{\partial x_j}|z_j|^2$ or $d z_j \wedge d \overline{z_j} \left( \frac{\partial}{\partial z_j}, \frac{\partial}{\partial y_j} \right)$ are correctly parsed without needing to convert everything to a uniform variable format. Retrieving objects' complex structure-related attributes, like the holomorphic part of a vector field or pluriharmonic terms from a polynomial is straightforward. Complexified cotangent bundles and their exterior algebras are easily decomposed into components from the Dolbeault complex and Dolbeault operators themselves can be applied to functions and k-forms in either coordinate format.
|
|
13
13
|
|
|
14
|
-
**dgcv**
|
|
14
|
+
**dgcv** is tested on Python 3.13, and has dependencies on the SymPy, Pandas, and iPython libraries.
|
|
15
15
|
|
|
16
16
|
## Features
|
|
17
17
|
|
|
18
|
-
-
|
|
19
|
-
- Intuitive interactions with complex structures from holomorphic coordinate systems: **dgcv** objects dynamically manage coordinate transformations between real and holomorphic coordinates during computation as necessary, so objects can be represented in and freely converted between either coordinate format
|
|
20
|
-
- Natural LaTeX rendering for representation of mathematical objects, designed with Jupyter notebooks in mind.
|
|
18
|
+
- Symbolic representations of various tensor fields (vector fields, differential forms, etc.) and dedicated python classes for representing many other common differential geometric structures
|
|
19
|
+
- Intuitive interactions with complex structures from holomorphic coordinate systems: **dgcv** objects dynamically manage coordinate transformations between real and holomorphic coordinates during computation as necessary, so objects can be represented in and freely converted between either coordinate format
|
|
21
20
|
|
|
22
21
|
## Installation
|
|
23
22
|
|
|
24
|
-
|
|
23
|
+
**dgcv** can be installed directly from PyPI with pip, e.g.:
|
|
25
24
|
|
|
26
25
|
```bash
|
|
27
26
|
pip install dgcv
|
|
28
27
|
```
|
|
29
28
|
|
|
30
|
-
Depending on Python install configurations, the above command can vary. The key is to have the relevant Python environment active so that the package manager pip sources from the right location (suggested to use virtual environments: [Getting started with virtual environments](https://docs.python.org/3/library/venv.html)).
|
|
31
|
-
|
|
32
|
-
## Tutorials
|
|
33
|
-
|
|
34
|
-
Two Jupyter Notebook tutorials are available to help getting started with **dgcv**:
|
|
35
|
-
|
|
36
|
-
1. **dgcv Introduction**: An introduction to the key concepts and setup
|
|
37
|
-
|
|
38
|
-
- [View **dgcv** Introduction Tutorial](https://www.realandimaginary.com/dgcv/tutorials/DGCV_introduction/)
|
|
39
|
-
|
|
40
|
-
2. **dgcv in Action**: A quick tour through examples from some of the library's more elaborate functions
|
|
41
|
-
- [View **dgcv** in Action Tutorial](https://www.realandimaginary.com/dgcv/tutorials/DGCV_in_action/)
|
|
42
|
-
|
|
43
|
-
### Running the Tutorials Locally
|
|
44
|
-
|
|
45
|
-
You can download the tutorials individually from the **dgcv** repository [**dgcv** github repo](https://github.com/YikesItsSykes/DGCV).
|
|
29
|
+
Depending on Python install configurations, the above command can vary. The key is to have the relevant Python environment active so that the package manager `pip` sources from the right location (suggested to use virtual environments: [Getting started with virtual environments](https://docs.python.org/3/library/venv.html)).
|
|
46
30
|
|
|
47
31
|
## Documentation
|
|
48
32
|
|
|
49
|
-
**dgcv** documentation is hosted at [https://www.realandimaginary.com/dgcv/](https://www.realandimaginary.com/dgcv/), with documentation pages for
|
|
33
|
+
**dgcv** documentation is hosted at [https://www.realandimaginary.com/dgcv/](https://www.realandimaginary.com/dgcv/), with documentation pages for individual functions in the library and more. Docstrings within the code provide more information on available classes/methods and functions.
|
|
50
34
|
|
|
51
35
|
## License
|
|
52
36
|
|
|
@@ -60,7 +44,7 @@ You can download the tutorials individually from the **dgcv** repository [**dgcv
|
|
|
60
44
|
|
|
61
45
|
### Future Development
|
|
62
46
|
|
|
63
|
-
The current (0.3.x) version of **dgcv** is designed with several planned extensions to the library in mind. Current plans broadly fall into
|
|
47
|
+
The current (0.3.x) version of **dgcv** is designed with several planned extensions to the library in mind. Current plans broadly fall into two categories:
|
|
64
48
|
|
|
65
49
|
- Extending complex variable handling and dynamic coordinate-type conversion automations. The simple goal is to fully automate handling of complex variable formats, allowing input to be formatted freely with any coordinate type, with features to fully control coordinate type formatting or let the systems automate the process.
|
|
66
50
|
- Expanding libraries dedicated to more specialized areas of differential geometry
|
|
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
|
|
5
5
|
[project]
|
|
6
6
|
requires-python = ">=3.6"
|
|
7
7
|
name = "dgcv"
|
|
8
|
-
version = "0.3.
|
|
8
|
+
version = "0.3.4"
|
|
9
9
|
description = "Differential Geometry with Complex Variables"
|
|
10
10
|
authors = [{ name = "David Sykes", email = "david@realandimaginary.com" }]
|
|
11
11
|
license = { text = "MIT" }
|
|
@@ -15,7 +15,7 @@ To get started, check out the Jupyter Notebook tutorials:
|
|
|
15
15
|
|
|
16
16
|
setup(
|
|
17
17
|
name="dgcv",
|
|
18
|
-
version="0.3.
|
|
18
|
+
version="0.3.4",
|
|
19
19
|
description="Differential Geometry with Complex Variables",
|
|
20
20
|
long_description=long_description, # This shows up on PyPI
|
|
21
21
|
long_description_content_type="text/markdown",
|
|
@@ -34,10 +34,8 @@ from .dgcv_core import (
|
|
|
34
34
|
VFClass,
|
|
35
35
|
addVF,
|
|
36
36
|
allToReal,
|
|
37
|
-
clearVar,
|
|
38
37
|
holToReal,
|
|
39
38
|
holVF_coeffs,
|
|
40
|
-
listVar,
|
|
41
39
|
realPartOfVF,
|
|
42
40
|
scaleVF,
|
|
43
41
|
symToReal,
|
|
@@ -46,6 +44,7 @@ from .dgcv_core import (
|
|
|
46
44
|
from .polynomials import createMultigradedPolynomial
|
|
47
45
|
from .solvers import solve_dgcv
|
|
48
46
|
from .vector_fields_and_differential_forms import assembleFromHolVFC
|
|
47
|
+
from .vmf import clearVar, listVar
|
|
49
48
|
|
|
50
49
|
|
|
51
50
|
def tangencyObstruction(vf, CR_defining_expr, graph_variable, simplify=False, *args):
|
|
@@ -208,7 +207,7 @@ def findWeightedCRSymmetries_old(
|
|
|
208
207
|
arg2,
|
|
209
208
|
arg4,
|
|
210
209
|
arg3,
|
|
211
|
-
|
|
210
|
+
Akey,
|
|
212
211
|
_tempVar=retrieve_passkey(),
|
|
213
212
|
degreeCap=degreeCap,
|
|
214
213
|
assumeReal=True,
|
|
@@ -217,7 +216,7 @@ def findWeightedCRSymmetries_old(
|
|
|
217
216
|
arg2,
|
|
218
217
|
arg4,
|
|
219
218
|
arg3,
|
|
220
|
-
|
|
219
|
+
Bkey,
|
|
221
220
|
_tempVar=retrieve_passkey(),
|
|
222
221
|
degreeCap=degreeCap,
|
|
223
222
|
assumeReal=True,
|
|
@@ -51,6 +51,20 @@ from ._dgcv_display import (
|
|
|
51
51
|
show,
|
|
52
52
|
)
|
|
53
53
|
from ._settings import set_dgcv_settings
|
|
54
|
+
from .algebras.algebras_aux import algebraDataFromMatRep, algebraDataFromVF
|
|
55
|
+
from .algebras.algebras_core import (
|
|
56
|
+
adjointRepresentation,
|
|
57
|
+
algebra_class,
|
|
58
|
+
algebra_element_class,
|
|
59
|
+
algebra_subspace_class,
|
|
60
|
+
killingForm,
|
|
61
|
+
)
|
|
62
|
+
from .algebras.algebras_secondary import (
|
|
63
|
+
createAlgebra,
|
|
64
|
+
createFiniteAlg, # deprecated
|
|
65
|
+
createSimpleLieAlgebra,
|
|
66
|
+
subalgebra_class,
|
|
67
|
+
)
|
|
54
68
|
from .combinatorics import carProd, chooseOp, permSign
|
|
55
69
|
from .complex_structures import Del, DelBar, KahlerStructure
|
|
56
70
|
from .coordinate_maps import coordinate_map
|
|
@@ -62,7 +76,6 @@ from .CR_geometry import (
|
|
|
62
76
|
)
|
|
63
77
|
from .dgcv_core import (
|
|
64
78
|
DFClass,
|
|
65
|
-
DGCV_snapshot, # deprecated
|
|
66
79
|
DGCVPolyClass, # deprecated
|
|
67
80
|
STFClass,
|
|
68
81
|
VF_bracket,
|
|
@@ -80,7 +93,6 @@ from .dgcv_core import (
|
|
|
80
93
|
changeTFBasis,
|
|
81
94
|
changeVFBasis,
|
|
82
95
|
cleanUpConjugation,
|
|
83
|
-
clearVar,
|
|
84
96
|
complex_struct_op,
|
|
85
97
|
complexVFC,
|
|
86
98
|
compress_dgcv_class,
|
|
@@ -98,7 +110,6 @@ from .dgcv_core import (
|
|
|
98
110
|
holVF_coeffs,
|
|
99
111
|
im_with_hol_coor,
|
|
100
112
|
im_with_real_coor,
|
|
101
|
-
listVar,
|
|
102
113
|
re_with_hol_coor,
|
|
103
114
|
re_with_real_coor,
|
|
104
115
|
realPartOfVF,
|
|
@@ -111,11 +122,7 @@ from .dgcv_core import (
|
|
|
111
122
|
symToReal,
|
|
112
123
|
tensor_product,
|
|
113
124
|
tensorField,
|
|
114
|
-
variableSummary,
|
|
115
|
-
vmf_summary,
|
|
116
125
|
)
|
|
117
|
-
|
|
118
|
-
# EDS imports exposed at the top level
|
|
119
126
|
from .eds import (
|
|
120
127
|
DF_representation,
|
|
121
128
|
abst_coframe,
|
|
@@ -132,17 +139,7 @@ from .eds import (
|
|
|
132
139
|
transform_coframe,
|
|
133
140
|
zeroFormAtom,
|
|
134
141
|
)
|
|
135
|
-
from .
|
|
136
|
-
AlgebraElement,
|
|
137
|
-
FAClass,
|
|
138
|
-
adjointRepresentation,
|
|
139
|
-
algebraDataFromMatRep,
|
|
140
|
-
algebraDataFromVF,
|
|
141
|
-
algebraSubspace,
|
|
142
|
-
createClassicalLA,
|
|
143
|
-
createFiniteAlg,
|
|
144
|
-
killingForm,
|
|
145
|
-
)
|
|
142
|
+
from .filtered_structures import Tanaka_symbol, distribution
|
|
146
143
|
from .polynomials import (
|
|
147
144
|
createBigradPolynomial,
|
|
148
145
|
createPolynomial,
|
|
@@ -156,7 +153,7 @@ from .Riemannian_geometry import (
|
|
|
156
153
|
)
|
|
157
154
|
from .solvers import solve_dgcv
|
|
158
155
|
from .styles import get_DGCV_themes, get_dgcv_themes # get_DGCV_themes is deprecated
|
|
159
|
-
from .tensors import createVectorSpace, tensorProduct,
|
|
156
|
+
from .tensors import createVectorSpace, tensorProduct, vector_space_element, vectorSpace
|
|
160
157
|
from .vector_fields_and_differential_forms import (
|
|
161
158
|
LieDerivative,
|
|
162
159
|
annihilator,
|
|
@@ -171,6 +168,7 @@ from .vector_fields_and_differential_forms import (
|
|
|
171
168
|
interiorProduct,
|
|
172
169
|
makeZeroForm,
|
|
173
170
|
)
|
|
171
|
+
from .vmf import DGCV_snapshot, clearVar, listVar, variableSummary, vmf_summary
|
|
174
172
|
|
|
175
173
|
# Default functions/classes
|
|
176
174
|
__all__ = [
|
|
@@ -203,6 +201,19 @@ __all__ = [
|
|
|
203
201
|
# From _config
|
|
204
202
|
"canonicalize", # Reformat supported objects canonically
|
|
205
203
|
|
|
204
|
+
# From algebras
|
|
205
|
+
"algebra_element_class",# Algebra element class
|
|
206
|
+
"algebra_subspace_class", # Algebra subspace class
|
|
207
|
+
"algebra_class", # Finite dimensional algebra
|
|
208
|
+
"adjointRepresentation",# Adjoint representation of algebra
|
|
209
|
+
"algebraDataFromMatRep",# Algebra data from matrix representation
|
|
210
|
+
"algebraDataFromVF", # Algebra data from vector fields
|
|
211
|
+
"createFiniteAlg", # deprecated
|
|
212
|
+
"createAlgebra", # Create a finite dimensional algebra
|
|
213
|
+
"createSimpleLieAlgebra",
|
|
214
|
+
"killingForm", # Compute the Killing form
|
|
215
|
+
"subalgebra_class",
|
|
216
|
+
|
|
206
217
|
# From coordinateMaps
|
|
207
218
|
"coordinate_map", # Transforms coordinates systems
|
|
208
219
|
|
|
@@ -285,16 +296,9 @@ __all__ = [
|
|
|
285
296
|
"DF_representation",
|
|
286
297
|
"transform_coframe",
|
|
287
298
|
|
|
288
|
-
# From
|
|
289
|
-
"
|
|
290
|
-
"
|
|
291
|
-
"FAClass", # Finite dimensional algebra class
|
|
292
|
-
"createClassicalLA", # Initialize classicle simple L.A.
|
|
293
|
-
"adjointRepresentation",# Adjoint representation of algebra
|
|
294
|
-
"algebraDataFromMatRep",# Algebra data from matrix representation
|
|
295
|
-
"algebraDataFromVF", # Algebra data from vector fields
|
|
296
|
-
"createFiniteAlg", # Create a finite dimensional algebra
|
|
297
|
-
"killingForm", # Compute the Killing form
|
|
299
|
+
# From filtered_structures
|
|
300
|
+
"distribution",
|
|
301
|
+
"Tanaka_symbol",
|
|
298
302
|
|
|
299
303
|
# From polynomials
|
|
300
304
|
"createBigradPolynomial",# Create bigraded polynomial
|
|
@@ -316,7 +320,7 @@ __all__ = [
|
|
|
316
320
|
|
|
317
321
|
# From tensors
|
|
318
322
|
"vectorSpace", # Class representing vector spaces
|
|
319
|
-
"
|
|
323
|
+
"vector_space_element", # Class representing elements in a vector space
|
|
320
324
|
"tensorProduct", # Class representing elements in tensor products (of VS elements)
|
|
321
325
|
# of vector space and their dual spaces
|
|
322
326
|
"createVectorSpace", # Create vectorSpace class instances with labeling
|
|
@@ -183,14 +183,17 @@ variable_registry = {
|
|
|
183
183
|
"real_part": StringifiedSymbolsDict(),
|
|
184
184
|
"im_part": StringifiedSymbolsDict(),
|
|
185
185
|
},
|
|
186
|
+
"_labels":{}
|
|
186
187
|
}
|
|
187
188
|
dgcv_settings_registry = {
|
|
188
189
|
'use_latex':False,
|
|
189
190
|
'theme':'blue',
|
|
190
191
|
'format_displays':False,
|
|
191
|
-
'version_specific_defaults':f'v{__version__}'
|
|
192
|
+
'version_specific_defaults':f'v{__version__}',
|
|
193
|
+
'ask_before_overwriting_objects_in_vmf':True,
|
|
194
|
+
'forgo_warnings':False
|
|
192
195
|
}
|
|
193
|
-
# retrieval
|
|
196
|
+
# retrieval functions for accessing and clearing registries
|
|
194
197
|
def get_variable_registry():
|
|
195
198
|
return variable_registry
|
|
196
199
|
|
|
@@ -198,7 +201,6 @@ def get_dgcv_settings_registry():
|
|
|
198
201
|
return dgcv_settings_registry
|
|
199
202
|
|
|
200
203
|
def clear_variable_registry():
|
|
201
|
-
# Optional: function to reset variable_registry if needed
|
|
202
204
|
global variable_registry
|
|
203
205
|
variable_registry = {
|
|
204
206
|
"standard_variable_systems": {},
|
|
@@ -19,6 +19,7 @@ from IPython.display import HTML, Latex, display
|
|
|
19
19
|
from sympy.printing.latex import LatexPrinter
|
|
20
20
|
|
|
21
21
|
############# dgcv classes to format
|
|
22
|
+
from ._safeguards import check_dgcv_category, get_dgcv_category
|
|
22
23
|
from .dgcv_core import (
|
|
23
24
|
DFClass,
|
|
24
25
|
STFClass,
|
|
@@ -29,7 +30,6 @@ from .dgcv_core import (
|
|
|
29
30
|
tensorField,
|
|
30
31
|
)
|
|
31
32
|
from .filtered_structures import Tanaka_symbol
|
|
32
|
-
from .finite_dim_algebras import AlgebraElement, FAClass
|
|
33
33
|
from .Riemannian_geometry import metricClass
|
|
34
34
|
|
|
35
35
|
|
|
@@ -58,9 +58,9 @@ def LaTeX(obj, removeBARs=False):
|
|
|
58
58
|
return sp.latex(symToHol(term))
|
|
59
59
|
else:
|
|
60
60
|
return sp.latex(term)
|
|
61
|
-
elif
|
|
62
|
-
return
|
|
63
|
-
elif
|
|
61
|
+
elif get_dgcv_category(term) in {'algebra','algebra_element'}:
|
|
62
|
+
return term._repr_latex_()
|
|
63
|
+
elif get_dgcv_category(term)=='algebra_element':
|
|
64
64
|
return _alglabeldisplayclass(term.algebra.label, term)._repr_latex_()
|
|
65
65
|
elif isinstance(term, Tanaka_symbol):
|
|
66
66
|
return "Tanaka_symbol Class"
|
|
@@ -68,16 +68,9 @@ def LaTeX(obj, removeBARs=False):
|
|
|
68
68
|
return sp.latex(symToHol(term))
|
|
69
69
|
|
|
70
70
|
def strip_dollar_signs(latex_str):
|
|
71
|
-
"""Strip leading and trailing $ or $$ signs from a LaTeX string."""
|
|
72
|
-
# if latex_str == None:
|
|
73
|
-
# return ''
|
|
74
71
|
if latex_str is None:
|
|
75
72
|
return latex_str
|
|
76
|
-
|
|
77
|
-
return latex_str[2:-2]
|
|
78
|
-
if latex_str.startswith("$") and latex_str.endswith("$"):
|
|
79
|
-
return latex_str[1:-1]
|
|
80
|
-
return latex_str
|
|
73
|
+
return latex_str.replace("$", "")
|
|
81
74
|
|
|
82
75
|
if isinstance(obj, list):
|
|
83
76
|
latex_elements = [strip_dollar_signs(filter(elem)) for elem in obj]
|
|
@@ -90,7 +83,6 @@ def LaTeX(obj, removeBARs=False):
|
|
|
90
83
|
return r"\left\{ " + ", ".join(latex_elements) + r" \right\}"
|
|
91
84
|
|
|
92
85
|
else:
|
|
93
|
-
# Apply sympy.latex() for non-list/tuple objects
|
|
94
86
|
return strip_dollar_signs(filter(obj))
|
|
95
87
|
|
|
96
88
|
def LaTeX_eqn_system(eqn_dict, math_mode = '$$', left_prefix = "", left_suffix = "", right_prefix = "", right_suffix = "", one_line = False, bare_latex = False, add_period = False):
|
|
@@ -157,13 +149,13 @@ def _display_DGCV_single(arg):
|
|
|
157
149
|
display(Latex(arg))
|
|
158
150
|
elif isinstance(
|
|
159
151
|
arg,
|
|
160
|
-
(sp.Expr, metricClass, DFClass, VFClass, STFClass, tensorField, dgcvPolyClass, Tanaka_symbol),
|
|
152
|
+
(sp.Expr, metricClass, DFClass, VFClass, STFClass, tensorField, dgcvPolyClass, Tanaka_symbol) or check_dgcv_category(arg),
|
|
161
153
|
):
|
|
162
154
|
_complexDisplay(arg)
|
|
163
|
-
elif
|
|
164
|
-
|
|
165
|
-
elif
|
|
166
|
-
|
|
155
|
+
# elif get_dgcv_category(arg)=='algebra':
|
|
156
|
+
# _complexDisplay(_alglabeldisplayclass(arg.label))
|
|
157
|
+
# elif get_dgcv_category(arg)=='algebra_element_class':
|
|
158
|
+
# _complexDisplay(_alglabeldisplayclass(arg.algebra.label, ae=arg))
|
|
167
159
|
else:
|
|
168
160
|
display(arg)
|
|
169
161
|
|