apsg 1.3.0__py3-none-any.whl

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.
AUTHORS.md ADDED
@@ -0,0 +1,9 @@
1
+ # Credits
2
+
3
+ ## Development Lead
4
+
5
+ * Ondrej Lexa <lexa.ondrej@gmail.com>
6
+
7
+ ## Contributors
8
+
9
+ * David Landa <david.landa@natur.cuni.cz>
CHANGELOG.md ADDED
@@ -0,0 +1,304 @@
1
+ # Changelog
2
+
3
+ ## 1.3.0 (Dec 14 2024)
4
+ * Python 3.10 set as minimal version
5
+ * Tensor3 eigenlins and eigenfols implemented as methods
6
+ * pandas accessors G property returns apsg FeatureSet
7
+
8
+ ### 1.2.3 (Nov 18 2024)
9
+ * ClusterSet accepts PairSet and FaultSet
10
+ * quicknet label option added
11
+ * vector pow bug fix
12
+
13
+ ### 1.2.2 (Oct 21 2024)
14
+ * Fault sense could be defined by str, one of 's', 'd', 'n' and 'r'
15
+
16
+ ### 1.2.1 (Sep 23 2024)
17
+ * Fault sense could be defined by str, one of 's', 'd', 'n' and 'r'
18
+
19
+ ## 1.2.0 (May 24 2024)
20
+ * sqlalchemy and pandas added to requirements
21
+ * quicknet fault bug fixed
22
+
23
+ ### 1.1.5 (May 15 2024)
24
+ * paleomag Core .dd bug fixed
25
+ * fix round-off domain math error for acosd and asind
26
+
27
+ ### 1.1.4 (Dec 13 2023)
28
+ * Ellipsoid repr bugfix
29
+
30
+ ### 1.1.3 (Oct 23 2023)
31
+ Bugfix release
32
+ * slip and dilatation tendency methods added to stress
33
+ * proj alias of project for FeatureSet added
34
+
35
+ ### 1.1.2 (Oct 09 2023)
36
+ * added title_kws argument for plotting routines
37
+
38
+ ### 1.1.1 (Oct 06 2023)
39
+ * sigma estimate contour fix
40
+
41
+ ## 1.1.0 (Oct 04 2023)
42
+ APSG offers convenient pandas integration via pandas accessors.
43
+
44
+ See documentation and Pandas interface tutorial for further details.
45
+
46
+ * StereoNet tensor method added
47
+ * Cluster class renamed to ClusterSet
48
+
49
+ ### 1.0.3 (Apr 30 2023)
50
+ * lambda properties of tensors renamed to S
51
+ * cursor coordinates in stereonet show lin and fol
52
+
53
+ ### 1.0.1 (Nov 22 2022)
54
+ * density_lookup method implemented for StereoNet.grid
55
+ * Stress tensor sigma* properties using inverted order of eigenvalues
56
+ * render2fig method of StereoNet implemented
57
+ * vector-like objects are not iterable, so properly render in pandas
58
+
59
+ ## 1.0.0 (Oct 7 2022)
60
+ New major release
61
+
62
+ APSG has been significantly refactored from version 1.0 and several changes are
63
+ breaking backward compatibility. The main APSG namespace provides often-used
64
+ classes in lowercase names as aliases to `PascalCase` convention used in
65
+ modules to provide a simplified interface for users. The `PascalCase` names of
66
+ classes use longer and plain English names instead acronyms for better
67
+ readability.
68
+
69
+ See documentation for further details.
70
+
71
+ ### 0.7.3 (Oct 6 2022)
72
+ * figure window title removed from StereoNet
73
+ * for future only bugfixes planned, foo further development see versions >=1.0
74
+
75
+ ### 0.7.2 (Oct 6 2022)
76
+ * bugfix release
77
+
78
+ ### 0.7.1 (Jul 13 2021)
79
+ * paleomag rs3 input/output improved
80
+ * Simple SQLAlchemy API to sdb database implemented
81
+ * StereoNet arc method fixed
82
+ * StereoNet polygon method added
83
+
84
+ ## 0.7.0 (Feb 3 2021)
85
+
86
+ * Python 2 support dropped
87
+ * RosePlot added
88
+ * Ortensor has from_pairs method for Lisle tensor for orthogonal data
89
+ * StereoNet scatter method has labels kwarg to show hover annotations
90
+
91
+ ### 0.6.3 (Dec 6 2019)
92
+
93
+ * Python 2/3 compatibility fix
94
+
95
+ ### 0.6.2 (Dec 6 2019)
96
+
97
+ * few minor bugs fixed
98
+ * Stereogrid apply_func passes Vec3 instead numpy array
99
+ * Pair H method to get mutual rotation implemented
100
+ * velgrad method of DefGrad accepts steps kwarg
101
+ to generate list of DefGrad tensors
102
+ * Added Tensor class to work with deformation tensors
103
+
104
+ ### 0.6.1 (Dec 12 2018)
105
+
106
+ * Stereogrid always use Euclidean norms as weights
107
+ * DefGrad properties e1, e2, e3 (natural principal strains) added
108
+ * DefGrad properties eoct, goct (octahedral strains) added
109
+ * DefGrad from_ratios class method added
110
+ * DefGrad properties k, d, K, D (strain symmetries and intesities) added
111
+ * New class Ellipsoid added to work with ellipsoids
112
+ * FabricPLot renamed to VollmerPlot for consistency
113
+ * RamsayPlot, FlinnPlot and HsuPlot implemented
114
+ * All fabric plots have new path method accepting list of tensors
115
+
116
+ ## 0.6.0 (Nov 7 2018)
117
+
118
+ * Stress always gives eigenvalues sorted
119
+ * Stress I1, I2, I3 properties for invariants implemented
120
+ * Stress mean_stress property implemented
121
+ * Stress hydrostatic and deviatoric properties implemented
122
+ * precision added to settings to control numerical comparisms
123
+ * figsize added to settings to control figure size across APSG
124
+ * Animation examples fixed
125
+ * rand class method implemented for Fol, Lin, Vec3 and Pair to
126
+ generate random instance
127
+ * Group to_csv and from_csv improved
128
+ * SDB tags method works properly for multiple tags
129
+ * SDB can modify database metadata
130
+ * QGIS 3 plugin ReadSDB compatibility
131
+
132
+ ### 0.5.4 (Oct 19 2018)
133
+
134
+ * StereoNet has cbpad keyword for colorbar padding
135
+ * FabricPlot bug introduced in 0.5.2 fixed.
136
+
137
+ ### 0.5.3 (Oct 10 2018)
138
+
139
+ * Bugfix release
140
+
141
+ ### 0.5.2 (Oct 10 2018)
142
+
143
+ * Fischer distribution sampling added
144
+ * transform method has norm kwarg to normalize tranformed vectors
145
+ * axisangle property to calculate axis and angle from rotation matrix
146
+ * StereoNet arc method added
147
+ * Vec3 and Group upper and flip properties implemented
148
+ * DefGrad, VelGrad and Stress rotate method accepts also rotation matrix
149
+ * velgrad method added to DefGrad to calculate matrix logarithm
150
+ * StereoGrid has new methods max, min, max_at, min_at
151
+
152
+ ### 0.5.1 (Dec 5 2017)
153
+
154
+ * Kent distribution sampling added
155
+ * Automatic kernel density estimate for contouring
156
+ * UserWarnings fix
157
+
158
+ ## 0.5.0 (Nov 19 2017)
159
+
160
+ * bux fix minor release
161
+
162
+ ### 0.4.4 (Mar 25 2017)
163
+
164
+ * Group method centered improved
165
+ * Group method halfspace added to reorient all vectors towards resultant
166
+ halfspace
167
+
168
+ ### 0.4.3 (Mar 25 2017)
169
+
170
+ * Stress tensor with few basic methods implemented
171
+ * StereoGrid keyword argument 'weighted' to control weighting
172
+ * StereoNet kwargs are passed to underlying methods for immediate plots
173
+ * StereoNet tensor method implemented (draw eigenlins or fols based on
174
+ fol_plot settings)
175
+ * Group totvar property and dot and proj methods implemented
176
+ * Fol and Lin dot method returns absolute value of dot product
177
+ * Vec3 H method to get mutual rotation implemented
178
+ * StereoNet.contourf method draw contour lines as well by default. Option
179
+ clines controls it.
180
+ * centered bug fixed
181
+ * StereoNet allows simple animations. Add `animate=True` kwarg to plotting
182
+ method and finally call StereoNet animate method.
183
+
184
+ ### 0.4.1-2 (Mar 4 2017)
185
+
186
+ * bugfix
187
+
188
+ ## 0.4.0 (Mar 4 2017)
189
+
190
+ * Density class renamed to StereoGrid
191
+ * Fault sense under rotation fixed
192
+ * FaultSet example provided
193
+ * Angelier-Mechler dihedra method implemented for FaultSet
194
+ * StereoNet accepts StereoGrid and Ortensor as quick plot arguments
195
+ * StereoNet instance has axtitle method to put text below stereonet
196
+
197
+ ### 0.3.7 (Jan 5 2017)
198
+
199
+ * conda build for all platforms
200
+ * numpy, matplotlib and other helpres imported by default
201
+ * ortensor is normed by default
202
+ * ortensor MADp, MADo, MAD and kind properties added
203
+
204
+ ### 0.3.6 (Jan 3 2017)
205
+
206
+ * shell script iapsg opens interactive console
207
+
208
+ ### 0.3.5 (Nov 12 2016)
209
+
210
+ * Simple settings interface implemented in in apsg.core.seetings dictionary.
211
+ To change settings use:
212
+ ```
213
+ from apsg.core import settings
214
+ setting['name']=value
215
+ ```
216
+ * `notation` setting with values `dd` or `rhr` control how azimuth argument of
217
+ Fol is represented.
218
+ * `vec2dd` setting with values `True` or `False` control how `Vec3` is
219
+ represented.
220
+ * Vec3 could be instantiated by one arument (vector like), 2 arguments
221
+ (azimuth, inclination) or 3 arguments (azimuth, inclination, magnitude).
222
+ * Group and FaultSet can return array or list of user-defined attributes of
223
+ all elements
224
+
225
+ ### 0.3.4 (Jun 20 2016)
226
+
227
+ * RTD fix
228
+
229
+ ### 0.3.3 (Jun 4 2016)
230
+
231
+ * Added E1,E2,E3 properties and polar decomposition method to DefGrad object
232
+ * StereoNet has vector method to mimics lower and upper hemisphere plotting
233
+ of Lin and Vec3 objects as used in paleomagnetic plots
234
+ * StereoNet could be initialized with subplots
235
+ * rake method of Fol added to return vector defined by rake
236
+ * Density could be initialized without data for user-defined calculations
237
+ New method apply_func could be used to calculate density
238
+ * Contour(f) methods accept Density object as argument
239
+ * Added Group class methods to generate Spherical Fibonacci and Golden Section
240
+ based uniform distributions of Vec3, Lin and Fol
241
+
242
+ ### 0.3.2 (Feb 22 2016)
243
+
244
+ * FabricPlot - triangular fabric plot added
245
+ * .asvec3 property has .V alias
246
+ * Resultant of Fol and Lin is calculated as vectorial in centered position
247
+ * dv property of Fol added to return dip slip vector
248
+
249
+ ### 0.3.1 (Nov 20 2015)
250
+
251
+ * SDB class improved. Support basic filtering including tags
252
+ * StereoNet has close method to close figure and new method
253
+ to re-initialize figure when closed in interactive mode
254
+ * iapsg shell script added to invoke apsg ipython shell
255
+
256
+ ## 0.3.0 (Nov 9 2015)
257
+
258
+ * Group fancy indexing implemented. Group could be indexed by sequences
259
+ of indexes like list, tuple or array as well as sliced.
260
+ * Cluster class with hierarchical clustering implemented
261
+ * Group to_file and from_file methods implemented to store data in file
262
+ * Group copy method for shallow copy implemented
263
+ * StereoNet now accept Vec3 and Fault object as well for instant plotting.
264
+ * Ortensor updated with new properties E1,E2,E3 and Vollmer(1989) indexes
265
+ P,G,R and C. Bug in Woodcocks's shape and strength values fixed.
266
+ * uniform_lin and uniform_fol improved.
267
+ * asvec3 method implemented for Fol and Lin
268
+ * fol_plot property of StereoNet allows choose poles or great circles for
269
+ immediate plotting
270
+ * bootstrap method of Group provide generator of random resampling with
271
+ replacements.
272
+ * Group examples method provide few well-known datasets.
273
+ * Matplotlib deprecation warnings are ignored by default
274
+
275
+ ### 0.2.3 (Oct 21 2015)
276
+
277
+ * New Docstrings format
278
+ * StereoNet.getfols method bug fixed.
279
+ * Shell scripts to run interactive session improved.
280
+
281
+ ### 0.2.2 (Apr 17 2015)
282
+
283
+ * FaultSet class added. Fault and Hoeppner methods of StereoNet implemented
284
+ * VelGrad and DefGrad classes used for transformations added
285
+ * G class to quickly create groups from strings added.
286
+
287
+ ### 0.2.1 (Dec 9 2014)
288
+
289
+ * Quick plotting of groups fixed.
290
+
291
+ ## 0.2.0 (Dec 9 2014)
292
+
293
+ * new StereoNet class for Schmidt projection
294
+ * Quick plot when data are passed as argument `StereoNet` class instantiation
295
+ * mplstereonet dependency depreceated
296
+ * new `Pair` and `Fault` classes to manipulate paired data (full support in future)
297
+ * new `uniform_lin` and `uniform_fol` `Group` methods
298
+ * abs for `Group` implemented to calculate euclidean norms
299
+ * new `Group` method normalized
300
+ * new `Group` properties and methods to calculate spherical statistics
301
+
302
+ ## 0.1.0 (Nov 1 2014)
303
+
304
+ * First release of APSG
CONTRIBUTING.md ADDED
@@ -0,0 +1,91 @@
1
+ # Contributing
2
+
3
+ Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given. You can contribute in many ways.
4
+
5
+ ## Types of Contributions
6
+
7
+ ### Report Bugs
8
+
9
+ Report bugs at [https://github.com/ondrolexa/apsg/issues](https://github.com/ondrolexa/apsg/issues).
10
+
11
+ If you are reporting a bug, please include:
12
+
13
+ * Your operating system name and version.
14
+ * Any details about your local setup that might be helpful in troubleshooting.
15
+ * Detailed steps to reproduce the bug.
16
+
17
+ ### Fix Bugs
18
+
19
+ Look through the GitHub issues for bugs. Anything tagged with "bug"
20
+ is open to whoever wants to implement it.
21
+
22
+ ### Implement Features
23
+
24
+ Look through the GitHub issues for features. Anything tagged with "feature"
25
+ is open to whoever wants to implement it.
26
+
27
+ ### Write Documentation
28
+
29
+ APSG could always use more documentation, whether as part of the
30
+ official APSG docs, in docstrings, or even on the web in blog posts,
31
+ articles, and such.
32
+
33
+ ### Submit Feedback
34
+
35
+ The best way to send feedback is to file an issue at [https://github.com/ondrolexa/apsg/issues](https://github.com/ondrolexa/apsg/issues).
36
+
37
+ If you are proposing a feature:
38
+
39
+ * Explain in detail how it would work.
40
+ * Keep the scope as narrow as possible, to make it easier to implement.
41
+ * Remember that this is a volunteer-driven project, and that contributions
42
+ are welcome :)
43
+
44
+ ## Get Started!
45
+
46
+ Ready to contribute? Here's how to set up `apsg` for local development.
47
+
48
+ 1. Fork the `apsg` repo on GitHub.
49
+ 2. Clone your fork locally with SSH or HTTPS.
50
+ ```
51
+ $ git clone git@github.com:ondrolexa/apsg.git
52
+ $ git clone https://github.com/ondrolexa/apsg.git
53
+ ```
54
+
55
+ 3. Install your local copy and activate the virtual environment via `pipenv`.
56
+ ```
57
+ $ cd apsg/
58
+ $ pipenv shell
59
+ $ pipenv install --dev
60
+ ```
61
+ 4. Create a branch for local development.
62
+ ```
63
+ $ git checkout -b name-of-your-bugfix-or-feature
64
+ ```
65
+ 6. Now you can make your changes locally.
66
+
67
+ 7. When you're done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox.
68
+ ```
69
+ $ flake8 apsg tests
70
+ $ python setup.py test
71
+ $ tox
72
+ ```
73
+ 8. Commit your changes and push your branch to GitHub.
74
+ ```
75
+ $ git add .
76
+ $ git commit -m "Your detailed description of your changes."
77
+ $ git push origin name-of-your-bugfix-or-feature
78
+ ```
79
+ 9. Submit a pull request through the GitHub website.
80
+
81
+ ## Pull Request Guidelines
82
+
83
+ Before you submit a pull request, check that it meets these guidelines:
84
+
85
+ 1. The pull request should include tests.
86
+ 2. If the pull request adds functionality, the docs should be updated. Put
87
+ your new functionality into a function with a docstring, and add the
88
+ feature to the list in ``README.md``.
89
+ 3. The pull request should work for Python 2.7, 3.5, and 3.6.
90
+ Check [https://travis-ci.org/ondrolexa/apsg/pull_requests](https://travis-ci.org/ondrolexa/apsg/pull_requests)
91
+ and make sure that the tests pass for all supported Python versions.
apsg/__init__.py ADDED
@@ -0,0 +1,104 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ import importlib.metadata
4
+ from apsg.math import (
5
+ Vector3 as vec,
6
+ Vector2 as vec2,
7
+ Matrix2 as matrix2,
8
+ Matrix3 as matrix,
9
+ )
10
+ from apsg.config import apsg_conf
11
+ from apsg.feature import (
12
+ Lineation as lin,
13
+ Foliation as fol,
14
+ Pair as pair,
15
+ Fault as fault,
16
+ Cone as cone,
17
+ )
18
+ from apsg.feature import (
19
+ Vector3Set as vecset,
20
+ Vector2Set as vec2set,
21
+ LineationSet as linset,
22
+ FoliationSet as folset,
23
+ PairSet as pairset,
24
+ FaultSet as faultset,
25
+ ConeSet as coneset,
26
+ EllipseSet as ellipseset,
27
+ EllipsoidSet as ellipsoidset,
28
+ OrientationTensor2Set as ortensor2set,
29
+ OrientationTensor3Set as ortensorset,
30
+ ClusterSet as cluster,
31
+ )
32
+ from apsg.feature import (
33
+ DeformationGradient3 as defgrad,
34
+ VelocityGradient3 as velgrad,
35
+ Stress3 as stress,
36
+ Ellipsoid as ellipsoid,
37
+ OrientationTensor3 as ortensor,
38
+ )
39
+ from apsg.feature import (
40
+ DeformationGradient2 as defgrad2,
41
+ VelocityGradient2 as velgrad2,
42
+ Stress2 as stress2,
43
+ Ellipse as ellipse,
44
+ OrientationTensor2 as ortensor2,
45
+ )
46
+ from apsg.feature import G
47
+ from apsg.plotting import (
48
+ StereoGrid,
49
+ StereoNet,
50
+ RosePlot,
51
+ VollmerPlot,
52
+ RamsayPlot,
53
+ FlinnPlot,
54
+ HsuPlot,
55
+ quicknet,
56
+ )
57
+
58
+ __all__ = (
59
+ "apsg_conf",
60
+ "vec",
61
+ "vec2",
62
+ "matrix",
63
+ "matrix2",
64
+ "lin",
65
+ "fol",
66
+ "pair",
67
+ "fault",
68
+ "cone",
69
+ "vecset",
70
+ "vec2set",
71
+ "linset",
72
+ "folset",
73
+ "pairset",
74
+ "faultset",
75
+ "coneset",
76
+ "ellipseset",
77
+ "ellipsoidset",
78
+ "ortensor2set",
79
+ "ortensorset",
80
+ "cluster",
81
+ "G",
82
+ "defgrad",
83
+ "velgrad",
84
+ "stress",
85
+ "ellipsoid",
86
+ "ortensor",
87
+ "defgrad2",
88
+ "velgrad2",
89
+ "stress2",
90
+ "ellipse",
91
+ "ortensor2",
92
+ "StereoGrid",
93
+ "StereoNet",
94
+ "RosePlot",
95
+ "VollmerPlot",
96
+ "RamsayPlot",
97
+ "FlinnPlot",
98
+ "HsuPlot",
99
+ "quicknet",
100
+ )
101
+
102
+ __version__ = importlib.metadata.version("apsg")
103
+ __author__ = "Ondrej Lexa"
104
+ __email__ = "lexa.ondrej@gmail.com"