Metadata-Version: 2.1
Name: okcompute
Version: 1.0.0
Summary: Fault tolerant analysis framework.
Home-page: https://github.com/swift-nav/okcompute
License: GNU Lesser General Public License 3
Project-URL: Documentation, http://okcompute.swiftnav.com/
Project-URL: Code, https://github.com/swift-nav/okcompute
Project-URL: Issue tracker, https://github.com/swift-nav/okcompute/issues
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Software Development
Description-Content-Type: text/markdown
Provides-Extra: doc
Provides-Extra: appdoc
Provides-Extra: plot
Requires-Dist: networkx
Provides-Extra: appdoc
Requires-Dist: pygraphviz; extra == 'appdoc'
Requires-Dist: jinja2; extra == 'appdoc'
Provides-Extra: doc
Requires-Dist: sphinx; extra == 'doc'
Provides-Extra: plot
Requires-Dist: pygraphviz; extra == 'plot'

# OKCompute
A framework to make analysis stages clear, self documenting, and fault tolerant.

See [OKCompute Documentation](http://okcompute.swiftnav.com/) for details.

## Key Features

 * Graph of dependencies - Can figure out minimum analysis for set of outputs, or diagnose missing inputs
 * Minimum Boilerplate
 * Human Readable Reports - Generates HTML documentation implicitly inferred from code and comprehensive reports of what occured during a run
 * Support for Pandas dataframes with column validation
 * Can specify optional fields or a fallback value if a required field is missing
 * Full stack traces are logged in the run results if an exception occurs during analysis
 * Supports checking for intermediary results to avoid rerunning slow analysis steps
 * Makes writing unit tests extremely easy

## TODO
 * Make generated documentation prettier
 * Better hashing of fields / metrics (avoid collisions based on string names)
 * Add way of specifying a list fields with name determined by data (thread names) with sub keys
 * Make helper functions to reduce boiler plate in saving / resuming from intermediary processing
 * Make reports returned by prune functions more consistent
 * Standardize config/input/output conventions
 * Should allow metric input/output be dicts?


