%global _empty_manifest_terminate_build 0 Name: python-traces Version: 0.6.0 Release: 1 Summary: A library for unevenly-spaced time series analysis. License: MIT license URL: https://github.com/datascopeanalytics/traces Source0: https://mirrors.nju.edu.cn/pypi/web/packages/f4/51/f99afc6bf101cfe10cb5a5e1ca1de86a90029571150c692766769e01582d/traces-0.6.0.macosx-10.15-x86_64.tar.gz BuildArch: noarch Requires: python3-sortedcontainers Requires: python3-infinity Requires: python3-dateutil Requires: python3-cprofilev Requires: python3-pip Requires: python3-bumpversion Requires: python3-wheel Requires: python3-tox Requires: python3-flake8 Requires: python3-coverage Requires: python3-cryptography Requires: python3-PyYAML Requires: python3-Sphinx Requires: python3-sphinxcontrib-napoleon Requires: python3-recommonmark Requires: python3-sphinx-autobuild Requires: python3-pandas Requires: python3-pycodestyle Requires: python3-coveralls Requires: python3-nose Requires: python3-pytest Requires: python3-pytest-mpl Requires: python3-numpy Requires: python3-scipy Requires: python3-pandas Requires: python3-matplotlib %description # traces [![Version](https://img.shields.io/pypi/v/traces.svg?)](https://pypi.python.org/pypi/traces) [![PyVersions](https://img.shields.io/pypi/pyversions/traces.svg)](https://pypi.python.org/pypi/traces) [![CircleCI](https://circleci.com/gh/datascopeanalytics/traces/tree/master.svg?style=shield)](https://circleci.com/gh/datascopeanalytics/traces/tree/master) [![Documentation Status](https://readthedocs.org/projects/traces/badge/?version=master)](https://traces.readthedocs.io/en/master/?badge=master) [![Coverage Status](https://coveralls.io/repos/github/datascopeanalytics/traces/badge.svg?branch=master)](https://coveralls.io/github/datascopeanalytics/traces?branch=master) A Python library for unevenly-spaced time series analysis. ## Why? Taking measurements at irregular intervals is common, but most tools are primarily designed for evenly-spaced measurements. Also, in the real world, time series have missing observations or you may have multiple series with different frequencies: it's can be useful to model these as unevenly-spaced. Traces was designed by the team at [Datascope](https://datascopeanalytics.com/) based on several practical applications in different domains, because it turns out [unevenly-spaced data is actually pretty great, particularly for sensor data analysis](https://datascopeanalytics.com/blog/unevenly-spaced-time-series/). ## Installation To install traces, run this command in your terminal: ```bash $ pip install traces ``` ## Quickstart: using traces To see a basic use of traces, let's look at these data from a light switch, also known as _Big Data from the Internet of Things_. ![](docs/_static/img/trace.svg) The main object in traces is a [TimeSeries](https://traces.readthedocs.io/en/master/api_reference.html#timeseries), which you create just like a dictionary, adding the five measurements at 6:00am, 7:45:56am, etc. ```python >>> time_series = traces.TimeSeries() >>> time_series[datetime(2042, 2, 1, 6, 0, 0)] = 0 # 6:00:00am >>> time_series[datetime(2042, 2, 1, 7, 45, 56)] = 1 # 7:45:56am >>> time_series[datetime(2042, 2, 1, 8, 51, 42)] = 0 # 8:51:42am >>> time_series[datetime(2042, 2, 1, 12, 3, 56)] = 1 # 12:03:56am >>> time_series[datetime(2042, 2, 1, 12, 7, 13)] = 0 # 12:07:13am ``` What if you want to know if the light was on at 11am? Unlike a python dictionary, you can look up the value at any time even if it's not one of the measurement times. ```python >>> time_series[datetime(2042, 2, 1, 11, 0, 0)] # 11:00am 0 ``` The `distribution` function gives you the fraction of time that the `TimeSeries` is in each state. ```python >>> time_series.distribution( >>> start=datetime(2042, 2, 1, 6, 0, 0), # 6:00am >>> end=datetime(2042, 2, 1, 13, 0, 0) # 1:00pm >>> ) Histogram({0: 0.8355952380952381, 1: 0.16440476190476191}) ``` The light was on about 16% of the time between 6am and 1pm. ### Adding more data... Now let's get a little more complicated and look at the sensor readings from forty lights in a house. ![](docs/_static/img/traces.svg) How many lights are on throughout the day? The merge function takes the forty individual `TimeSeries` and efficiently merges them into one `TimeSeries` where the each value is a list of all lights. ```python >>> trace_list = [... list of forty traces.TimeSeries ...] >>> count = traces.TimeSeries.merge(trace_list, operation=sum) ``` We also applied a `sum` operation to the list of states to get the `TimeSeries` of the number of lights that are on. ![](docs/_static/img/count.svg) How many lights are on in the building on average during business hours, from 8am to 6pm? ```python >>> histogram = count.distribution( >>> start=datetime(2042, 2, 1, 8, 0, 0), # 8:00am >>> end=datetime(2042, 2, 1, 12 + 6, 0, 0) # 6:00pm >>> ) >>> histogram.median() 17 ``` The `distribution` function returns a [Histogram](https://traces.readthedocs.io/en/master/api_reference.html#histogram) that can be used to get summary metrics such as the mean or quantiles. ### It's flexible The measurements points (keys) in a `TimeSeries` can be in any units as long as they can be ordered. The values can be anything. For example, you can use a `TimeSeries` to keep track the contents of a grocery basket by the number of minutes within a shopping trip. ```python >>> time_series = traces.TimeSeries() >>> time_series[1.2] = {'broccoli'} >>> time_series[1.7] = {'broccoli', 'apple'} >>> time_series[2.2] = {'apple'} # puts broccoli back >>> time_series[3.5] = {'apple', 'beets'} # mmm, beets ``` To learn more, check the [examples](https://traces.readthedocs.io/en/master/examples.html) and the detailed [reference](https://traces.readthedocs.io/en/master/api_reference.html#). ## More info ## Contributing Contributions are welcome and greatly appreciated! Please visit our [guidelines](https://github.com/datascopeanalytics/traces/blob/master/CONTRIBUTING.md) for more info. %package -n python3-traces Summary: A library for unevenly-spaced time series analysis. Provides: python-traces BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-traces # traces [![Version](https://img.shields.io/pypi/v/traces.svg?)](https://pypi.python.org/pypi/traces) [![PyVersions](https://img.shields.io/pypi/pyversions/traces.svg)](https://pypi.python.org/pypi/traces) [![CircleCI](https://circleci.com/gh/datascopeanalytics/traces/tree/master.svg?style=shield)](https://circleci.com/gh/datascopeanalytics/traces/tree/master) [![Documentation Status](https://readthedocs.org/projects/traces/badge/?version=master)](https://traces.readthedocs.io/en/master/?badge=master) [![Coverage Status](https://coveralls.io/repos/github/datascopeanalytics/traces/badge.svg?branch=master)](https://coveralls.io/github/datascopeanalytics/traces?branch=master) A Python library for unevenly-spaced time series analysis. ## Why? Taking measurements at irregular intervals is common, but most tools are primarily designed for evenly-spaced measurements. Also, in the real world, time series have missing observations or you may have multiple series with different frequencies: it's can be useful to model these as unevenly-spaced. Traces was designed by the team at [Datascope](https://datascopeanalytics.com/) based on several practical applications in different domains, because it turns out [unevenly-spaced data is actually pretty great, particularly for sensor data analysis](https://datascopeanalytics.com/blog/unevenly-spaced-time-series/). ## Installation To install traces, run this command in your terminal: ```bash $ pip install traces ``` ## Quickstart: using traces To see a basic use of traces, let's look at these data from a light switch, also known as _Big Data from the Internet of Things_. ![](docs/_static/img/trace.svg) The main object in traces is a [TimeSeries](https://traces.readthedocs.io/en/master/api_reference.html#timeseries), which you create just like a dictionary, adding the five measurements at 6:00am, 7:45:56am, etc. ```python >>> time_series = traces.TimeSeries() >>> time_series[datetime(2042, 2, 1, 6, 0, 0)] = 0 # 6:00:00am >>> time_series[datetime(2042, 2, 1, 7, 45, 56)] = 1 # 7:45:56am >>> time_series[datetime(2042, 2, 1, 8, 51, 42)] = 0 # 8:51:42am >>> time_series[datetime(2042, 2, 1, 12, 3, 56)] = 1 # 12:03:56am >>> time_series[datetime(2042, 2, 1, 12, 7, 13)] = 0 # 12:07:13am ``` What if you want to know if the light was on at 11am? Unlike a python dictionary, you can look up the value at any time even if it's not one of the measurement times. ```python >>> time_series[datetime(2042, 2, 1, 11, 0, 0)] # 11:00am 0 ``` The `distribution` function gives you the fraction of time that the `TimeSeries` is in each state. ```python >>> time_series.distribution( >>> start=datetime(2042, 2, 1, 6, 0, 0), # 6:00am >>> end=datetime(2042, 2, 1, 13, 0, 0) # 1:00pm >>> ) Histogram({0: 0.8355952380952381, 1: 0.16440476190476191}) ``` The light was on about 16% of the time between 6am and 1pm. ### Adding more data... Now let's get a little more complicated and look at the sensor readings from forty lights in a house. ![](docs/_static/img/traces.svg) How many lights are on throughout the day? The merge function takes the forty individual `TimeSeries` and efficiently merges them into one `TimeSeries` where the each value is a list of all lights. ```python >>> trace_list = [... list of forty traces.TimeSeries ...] >>> count = traces.TimeSeries.merge(trace_list, operation=sum) ``` We also applied a `sum` operation to the list of states to get the `TimeSeries` of the number of lights that are on. ![](docs/_static/img/count.svg) How many lights are on in the building on average during business hours, from 8am to 6pm? ```python >>> histogram = count.distribution( >>> start=datetime(2042, 2, 1, 8, 0, 0), # 8:00am >>> end=datetime(2042, 2, 1, 12 + 6, 0, 0) # 6:00pm >>> ) >>> histogram.median() 17 ``` The `distribution` function returns a [Histogram](https://traces.readthedocs.io/en/master/api_reference.html#histogram) that can be used to get summary metrics such as the mean or quantiles. ### It's flexible The measurements points (keys) in a `TimeSeries` can be in any units as long as they can be ordered. The values can be anything. For example, you can use a `TimeSeries` to keep track the contents of a grocery basket by the number of minutes within a shopping trip. ```python >>> time_series = traces.TimeSeries() >>> time_series[1.2] = {'broccoli'} >>> time_series[1.7] = {'broccoli', 'apple'} >>> time_series[2.2] = {'apple'} # puts broccoli back >>> time_series[3.5] = {'apple', 'beets'} # mmm, beets ``` To learn more, check the [examples](https://traces.readthedocs.io/en/master/examples.html) and the detailed [reference](https://traces.readthedocs.io/en/master/api_reference.html#). ## More info ## Contributing Contributions are welcome and greatly appreciated! Please visit our [guidelines](https://github.com/datascopeanalytics/traces/blob/master/CONTRIBUTING.md) for more info. %package help Summary: Development documents and examples for traces Provides: python3-traces-doc %description help # traces [![Version](https://img.shields.io/pypi/v/traces.svg?)](https://pypi.python.org/pypi/traces) [![PyVersions](https://img.shields.io/pypi/pyversions/traces.svg)](https://pypi.python.org/pypi/traces) [![CircleCI](https://circleci.com/gh/datascopeanalytics/traces/tree/master.svg?style=shield)](https://circleci.com/gh/datascopeanalytics/traces/tree/master) [![Documentation Status](https://readthedocs.org/projects/traces/badge/?version=master)](https://traces.readthedocs.io/en/master/?badge=master) [![Coverage Status](https://coveralls.io/repos/github/datascopeanalytics/traces/badge.svg?branch=master)](https://coveralls.io/github/datascopeanalytics/traces?branch=master) A Python library for unevenly-spaced time series analysis. ## Why? Taking measurements at irregular intervals is common, but most tools are primarily designed for evenly-spaced measurements. Also, in the real world, time series have missing observations or you may have multiple series with different frequencies: it's can be useful to model these as unevenly-spaced. Traces was designed by the team at [Datascope](https://datascopeanalytics.com/) based on several practical applications in different domains, because it turns out [unevenly-spaced data is actually pretty great, particularly for sensor data analysis](https://datascopeanalytics.com/blog/unevenly-spaced-time-series/). ## Installation To install traces, run this command in your terminal: ```bash $ pip install traces ``` ## Quickstart: using traces To see a basic use of traces, let's look at these data from a light switch, also known as _Big Data from the Internet of Things_. ![](docs/_static/img/trace.svg) The main object in traces is a [TimeSeries](https://traces.readthedocs.io/en/master/api_reference.html#timeseries), which you create just like a dictionary, adding the five measurements at 6:00am, 7:45:56am, etc. ```python >>> time_series = traces.TimeSeries() >>> time_series[datetime(2042, 2, 1, 6, 0, 0)] = 0 # 6:00:00am >>> time_series[datetime(2042, 2, 1, 7, 45, 56)] = 1 # 7:45:56am >>> time_series[datetime(2042, 2, 1, 8, 51, 42)] = 0 # 8:51:42am >>> time_series[datetime(2042, 2, 1, 12, 3, 56)] = 1 # 12:03:56am >>> time_series[datetime(2042, 2, 1, 12, 7, 13)] = 0 # 12:07:13am ``` What if you want to know if the light was on at 11am? Unlike a python dictionary, you can look up the value at any time even if it's not one of the measurement times. ```python >>> time_series[datetime(2042, 2, 1, 11, 0, 0)] # 11:00am 0 ``` The `distribution` function gives you the fraction of time that the `TimeSeries` is in each state. ```python >>> time_series.distribution( >>> start=datetime(2042, 2, 1, 6, 0, 0), # 6:00am >>> end=datetime(2042, 2, 1, 13, 0, 0) # 1:00pm >>> ) Histogram({0: 0.8355952380952381, 1: 0.16440476190476191}) ``` The light was on about 16% of the time between 6am and 1pm. ### Adding more data... Now let's get a little more complicated and look at the sensor readings from forty lights in a house. ![](docs/_static/img/traces.svg) How many lights are on throughout the day? The merge function takes the forty individual `TimeSeries` and efficiently merges them into one `TimeSeries` where the each value is a list of all lights. ```python >>> trace_list = [... list of forty traces.TimeSeries ...] >>> count = traces.TimeSeries.merge(trace_list, operation=sum) ``` We also applied a `sum` operation to the list of states to get the `TimeSeries` of the number of lights that are on. ![](docs/_static/img/count.svg) How many lights are on in the building on average during business hours, from 8am to 6pm? ```python >>> histogram = count.distribution( >>> start=datetime(2042, 2, 1, 8, 0, 0), # 8:00am >>> end=datetime(2042, 2, 1, 12 + 6, 0, 0) # 6:00pm >>> ) >>> histogram.median() 17 ``` The `distribution` function returns a [Histogram](https://traces.readthedocs.io/en/master/api_reference.html#histogram) that can be used to get summary metrics such as the mean or quantiles. ### It's flexible The measurements points (keys) in a `TimeSeries` can be in any units as long as they can be ordered. The values can be anything. For example, you can use a `TimeSeries` to keep track the contents of a grocery basket by the number of minutes within a shopping trip. ```python >>> time_series = traces.TimeSeries() >>> time_series[1.2] = {'broccoli'} >>> time_series[1.7] = {'broccoli', 'apple'} >>> time_series[2.2] = {'apple'} # puts broccoli back >>> time_series[3.5] = {'apple', 'beets'} # mmm, beets ``` To learn more, check the [examples](https://traces.readthedocs.io/en/master/examples.html) and the detailed [reference](https://traces.readthedocs.io/en/master/api_reference.html#). ## More info ## Contributing Contributions are welcome and greatly appreciated! Please visit our [guidelines](https://github.com/datascopeanalytics/traces/blob/master/CONTRIBUTING.md) for more info. %prep %autosetup -n traces-0.6.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-traces -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Apr 25 2023 Python_Bot - 0.6.0-1 - Package Spec generated