Metadata-Version: 2.1
Name: PyFina
Version: 0.0.2
Summary: A numpy subclass to read emoncms PHPFINA feeds as numpy array
Home-page: https://github.com/Open-Building-Management/PyFina
Author: Alexandre CUER
Author-email: alexandre.cuer@wanadoo.fr
License: UNKNOWN
Project-URL: Bug Tracker, https://github.com/Open-Building-Management/PyFina/issues
Description: # PyFina
        
        PyFina is a subclass of numpy np.ndarray to import emoncms PHPFINA feeds as numpy arrays
        
        **The pip installer will install any missing requirements (numpy, matplotlib)**
        
        PyFina brings the power of numpy to the PHPFINA timeseries, including basic operations and more :
        addition, soustraction, multiplication, division, min, max, mean, sum, slicing with the bracket operator
        
        Note : any operation on a PyFina object results to a standard numpy nd.array object.
        The signature of the PyFina object is lost.
        
        It does not prevent to add two PyFina objects of the same size but sampled with different intervals
        
        
        ## Installation
        
        ```
        python3 -m pip install PyFina
        ```
        or, for python on Windows
        ```
        py -m pip install PyFina
        ```
        
        ## Post installation testing
        
        copy the content of [test.py](https://raw.githubusercontent.com/Open-Building-Management/PyFina/main/tests/test.py), paste it in a blank file on your local machine and save it using the same name.
        
        ```
        py test.py
        ```
        
        ## Getting Started
        
        To retrieve metadatas for feed number 1 :
        
        ```
        from PyFina import getMeta, PyFina
        import matplotlib.pylab as plt
        # classic emoncms feed storage on linux
        dir = "/var/opt/emoncms/phpfina"
        meta = getMeta(1,dir)
        print(meta)
        ```
        To import the first 8 days of datas, with a sampling interval of 3600 s :
        
        ```
        step = 3600
        start = meta["start_time"]
        window = 8*24*3600
        length = meta["npoints"] * meta["interval"]
        if window > length:
            window = length
        nbpts = window // step
        Text = PyFina(1,dir,start,step,nbpts)
        ```
        To catch the signature of the created PyFina object :
        ```
        # time start as a unixtimestamp expressed in seconds
        print(Text.start)
        # step/interval in seconds
        print(Text.step)
        ```
        
        To plot:
        ```
        import datetime
        import time
        localstart = datetime.datetime.fromtimestamp(start)
        utcstart = datetime.datetime.utcfromtimestamp(start)
        title = "starting on :\nUTC {}\n{} {}".format(utcstart,time.tzname[0],localstart)
        plt.subplot(111)
        plt.title(title)
        plt.ylabel("outdoor Temp °C")
        plt.xlabel("time in hours")
        plt.plot(Text)
        plt.show()
        ```
        With the above code, the xrange will be expressed in hour, so 192 points will be displayed
        
        ![](test.png)
        
        To express the xrange in seconds :
        ```
        xrange = Text.timescale()
        plt.subplot(111)
        plt.plot(xrange,Text)
        plt.show()
        ```
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
