In [ ]:
'''
=======
Scripts
=======
Fast Plots, Initial Conversion from Excel to Python
0.1 Legacy Script - Laminate_Stress_Constant_Thickness_1g.ipynb
- Calculates stress, plot, export data for single geometry.
Supports insets.
0.2 - Legacy Script - Laminate_Stress_Constant_Thickness_2d.ipynb
- Handles multiple geometries, heiarchical indexing, more...
0.3 Legacy Script - Laminate_Stress_Constant_Thickness_3a3.ipynb
- Abstracted layers to classes.
- Forked to become the LamAna project.
=============
Local Program
=============
Standalone Program, Abstracted for General Application, Single Notebook
0.4.0 Organized module and package layout
0.4.1 Most user inpurt API conventions worked out
- `input_.Geometry`
- `distributions.Case(*args)`, `distributions.Case().apply()`
- `Geometry().itotal()`
0.4.2 General Convention standardized types for Geometry object
0.4.2a Developed total method; float and list wrappers covering attributes
0.4.2b Develop total methods and tests; cleaned docs
0.4.3 Developed `contructs` module to return DataFrames
0.4.3a Built Stack class giving skeletal layout for each Geometry
0.4.3b Implemented namedtuples called `StackTuple` in the `Stack` class
- Deprecated ModdedList and ModdedFloat wrappers
- Implemented namedtuples called GeometryTuple in the `Geometry` class
- Made unittest for p >= 1 (odd and even)
0.4.3c Added stress states to laminates.
0.4.3c1 Refactored the ConstuctTheory workflow
- Refocused on building separate Construct and Theory objects
- Removed double call of snapshot and laminate model in Case
0.4.3c2 Laminate object made the official LaminateModel object w/ __repr__
- laminate_tuple deprecated. self attrs used instead
- LaminatModel object is now Laminae self called directly in Case
- `LM` attribute returns the LaminateModel object
- Refactored frames and snapshots to generate lists only when called.
0.4.3c3 Developed Laminate Object to calculate Planar variables
0.4.3c4 Implemented update_columns() into Laminate as `_update_dimensions()`.
First trial with version 4a. Testing needs resolution.
Refactored `_update_dim..()` w/copies and returns; cleared warnings.
1.5x longer to run 62 tests with now; from 33s to 86s.
Tested Planar values for different plies, ps.
0.4.3c4b Verify values and algorightms with CLT.
- Added drag and drop spreadsheet testing of laminates.
- Removed a labels test with improved test speed.
- Built the `utils.tools` modulue and implemented in tests.
- Fixed critical BUG in inner_i ordering.
0.4.3c4c Cleaned deprecations, and made use of `laminator()`
- Applied `shift` to discontinuity values.
- Added nplies, p, total attrs to Laminate
0.4.3c4d Vectorize _update_dimensions(). Deprecated for tech.
- Documented alogrithms.
- Made test_controls for various case controls.
- Deprecated Laminae classes; maybe someday. Only dfs for now.
- Rename to LFrame. Changed planar term to dimensionals.
0.4.3c5 Deprecation code cleared.
Learned about iterators, generators, gen expressions and more.
0.4.3c5a Add iterator functionality; replaced empty list/append code.
- Add lt_exceptions for relevent error handling.
0.4.3c5b The Big Generator Switch
- Improved architexture using generators in Geometry and Stack.
- The StackTuple has added alias and unifed name to 'n-ply'.
decode_geometry() and indentify_geometry() were refactored.
- Running 75 tests at 109s. No big speed up. The tests are slow.
0.4.3c6 Marked for theories model and Data variable implementation.
- LFrame returns IDs and Dimensional columns only
- LMFrame returns full DataFrame.
- Many tests developed for theories and models.
- Models accepted as functions or classes
- Minor exception handling to prevent backdoor API breaking.
0.4.3d Deprecations, cleanup, reorganization, documentation.
- Deprecated .itotal()
- Renamed Model to BaseModel and subclassed from it.
- Refactored laminator to yield case, not LMs
- Reorganized docs; added Delta Code and new case build idioms (2/3)
- Refactored tests for new case build ideology (Py2/3 compliant)
- Started Cases object outline to replace laminator.
0.4.3d1 continued...
- Defaults() abstracted to BaseDefaults()
- Defaults() subclassed in Wilson_LT
- Refactored BaseDefaults() geo_inputs dict keys with names
- Automated BaseDefaults() groupings
- Built smarter tests to allow extension of BaseDefaults()
- Moved BaseDefaults() from utils.tools to input_ module
- Geometry and LaminateModel objects support == and != comparisions
0.4.3d2 continued...
- Rename geo_params to load_params
0.4.3d3 continued...
- Changed mat_params default type from Dataframe to (nested) dict
- mat_params now DataFrame and assert_equally-friendly
- Cleaner exception handing of apply(mat_params)
- Deprecated materials_to_df in favor of Standard Form conversions
- Replaced @staticmethod with @classmethod
- Cleaned Case helpers; moved to BaseDefaults
0.4.3d4 continued...
- Refactored FeatureInput; Parameters, Properties, Materials...
- Support of ordered materials lists
- Added get_materials()
- Extended case params and props to give Series and DataFrame views
- Tested models columns by written new .csv files
- Cleanup, privatizing, Geo_object comparison tests, user-defined
material setting, material stack order tests, change to mat_props.
0.4.4 Marked `distributions` plotting.
- Defined Cases and select method.
- Made Geometry and Laminate hashable for set comparison w/tests.
- Extended Cases.select() with set operations.
- Implemented Cases.to_csv
- Implemented Cases in distributions
- Wrote Cases tests.
0.4.4a Cases documentation in intermediate tutorial; upgrade from beta
0.4.4b Cases.__eq__ handles DataFrame/Series attrs
- Laminate.__eq__ handles DataFrame/Series attrs
- Refactored LPEP numbers. LPEP 001 contains micro-PEPs.
- Plotting
- Reverted to k=1 to correlate w/LT definitions in the paper.
0.4.4b1 continued...
- Initial implementation of case.plot()
- Using library from external notebook for 1st demo to prof.
- Worked through labeling keywords for plots
- _distribplot: halfplots, annotations, insets, extrema
- _multiplot: nrows, ncols, deletes empty axes, labels
- Added LAMANA_PALETTE
- Implemeentated Laminate.extrema
- Rewrote controls with new k algorithm
- Reorganized ToDo list: headings (functionalize, clarify, optimize).
0.4.4b2 continued...
- Final implementation of case.plot(), _distribplot() & _multiplot()
- Cleanup docstrings, move abstractions to beta, clean beta
- Implement Case.plot() multiplots
- Revise Demo notebook.
0.4.4b3 continued...
- Make Cases process cases
- Implement Cases.plot() multiplots
- LPEP 003 Pattern development and cases input standards.
0.4.5 Marked for release candidate 1
- Cleanup
- Refined exception handing of rollback; improved dormant tests
- Implemented lt_exceptions and IndeterminateError
- Register GitHub, pypitest and pypi
- prepare revised repo structure
0.4.5a1 BRCH: Refactor iteration in Geometry, distributions and Laminate.
- Refactored *.apply iter strings, not objects, cache ... 100s faster
- 198 tests ~300s, 200s faster since output_
- Coded is_valid() with regex
- Write References to utils
- Finalize stable release before pip and GitHub upload; old-sytle
0.4.5b1 First Fork from stable package.
- move is_valid to Beta-functionalize; cleanup Quick tests
- Use text editor, Atom, to rename lamana, sp check and remove tabs
- Make Main template for pull and push
- Repo redesign
- flake8
0.4.5b2 "Pull" from flake8'd core modules.
- Pulled updated modules
- Figure out __version__
- Suspended repo changes until official GitHub push.
===============
The Large Split
===============
Version Control, GitHub Upload, Open Source Tools, PyPI Releases, Separated Notebooks
0.4.6 Official GitHub release (usable; needs repo maintenace)
- Reflects suspended repo state as of 0.4.5b2
- Nearly equals 0.4.5b2 but cleaner directory, new repo tree
- Uses new templates to run code; clonable
- Minimal point releases allowed.
- Updated version number.
0.4.7 Initial PyPI release
- Rolled back due to pandas breaking
0.4.8 Pre-conda, gitflow, travis release: dev reliable
- Init gitflow
- Add Travis CI to install pinned dependencies and check builds
- Pass builds 2.7, 3.3, 3.4, 3.5, 3.5.1 on Linux
- Main deps matplotlib==1.4.3, numpy==1.9.2, pandas==0.16.2
- Reproducible builds with `pip freeze`, pinned deps (LPEP 001.14)
- Suggest "Hands-on/off" pip install options
- Update license info
- Update release workflow in tutorial
0.4.9 Flagship PyPI release
- Install with conda through pip
- Works with IPython/Jupyter
- Add `find_version()` to `setup.py`; confirm tarball url works
- Update source to use latest `pandas>=0.17.1` and `numpy`
- Fixed pandas issue (backwards compatible):
- replace `np.cumsum` with pandas `aggregate` method
- replace pandas `sort` with `sort_index`
0.4.10 Documentation Release
- flake8
- docs
- numpy docstrings
- Register readthedocs
- Initial codecov and coverage
- nb templates (main, doc-builder)
- Fix df.sort to address pandas API changes in 0.17.1
0.4.11 Housekeeping - cross-platform stability, coverage and more
- Add environment.yaml files for 2.7, 3.3 and 3.5
- Continuous Integration on Windows (using Appveyor); no 64x Py3.4 support
- Add negative index handling in Cases (not negative step)
- Deprecate __getslice__ in Cases(); affect Py < 2.6
- Improve coverage (+20%)
- Try logging
- Add dashboards; revamp export
- Speed up readthedocs
- Refactor BaseModel with abstract hook method
- Add warnings
- Deprecate warn util.write_csv, Cases.to_csv
- Add config file
- Add py35 environment yaml
0.4.12 Hotfix - unpinned dependencies
- Add openpyxl to setup.py; fix export BUG
- Add six to setup.py
- Resolve workflow for nb regression tests
- Add picture to README
- Fix Appveyor badge
- Add conda install deps to instructions for reliable install
- Clean up docs
'''