Skip to main content

Automatically store/load data in a tidy, efficient way.

Project description

Tidypath

For people that have to compute and store a large variety of data and/or figures.

Keep your files tidy!

Don't spend time creating directories, deciding filenames, saving, loading, etc. Decorators savefig & savedata will do it for you.

  • savedata computes output and stores it in the first function call. Future calls reads it from memory. Default LZMA compression
  • savefig saves output figure.

Although recommended, it is not needed to start a new project using tidypath. You can continue using your previous code and apply tidypath on new code.

savedata

Example function slow_computation in module package.subpackages.module

@savedata("x+z")
def slow_computation(x, y, *args, z=1, **kwargs):
    ...
    return result
  1. Apply to function (result of any type).
  2. Choose the variables to record in the filenames.
  3. Optionally, choose file extension and other specifications. Supported: lzma (default), bz2, npz, csv, JSON.
  4. Result will be saved at data/subpackages/module/slow_computation/x-'x'_z-'z'_.lzma ('x' = value of x passed to slow_computation during call)
  5. If you want to recompute and overwrite, you can pass overwrite=True to slow_computation. The decorator adds the arguments: save, overwrite, keys and funcname_in_filename.

savefig

@savefig("kwargs")
def plot_results(*args, **kwargs):
    ...
    return figure
  • Same steps as savedata. Only difference is the output type.
  • Supports matplotlib and plotly and all figure extensions (png, eps, ...) including html (plotly).
  • Decorator adds the same arguments as savedata plus return_fig (bool).

Adaptable to code modifications

Caching data depends on the specific variables set to store, since they define the filenames. Suppose we want to add a new variable method indicating a new method for computing the results, but already computed results are still useful. We can

  1. Modify the variables to record in the savedata decorator:

     @savedata("x+z")     =>    @savedata("x+z+method")
    
  2. Assign method='original' to all existing pre-computed files:

     add_arg(slow_computation, method='original')
    
  3. Now access is granted for the already computed data, and data corresponding to new methods will be stored in separate files.

Use the functions add_arg, modify_arg, delete_arg to ensure cached data is loaded after modifying function arguments.

Example

Docs

Github pages

Install

pip install tidypath

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tidypath-1.3.6.tar.gz (30.6 kB view details)

Uploaded Source

File details

Details for the file tidypath-1.3.6.tar.gz.

File metadata

  • Download URL: tidypath-1.3.6.tar.gz
  • Upload date:
  • Size: 30.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for tidypath-1.3.6.tar.gz
Algorithm Hash digest
SHA256 b041f4bdf0f90096266ce5e24faf3ba30c7809311ab709d1bb302b4cdedd8a37
MD5 c511178ec471545089b031e845c49572
BLAKE2b-256 9661f407034d6be6abf300d63a4729c087d63f9e4f5252240a8b47a071ebd9e5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page