=======
BP Diag
=======
**BP Diag** parses blood preasure statistics from data files, generates some
statistics and prints them to *STDERR*. You can export the data (and the
gathered statistics) to **JSON** (dump to *STDOUT*). And you can also generate
**SVG** or **PNG** charts from it.
To see a list of possible command line options run::
bpdiag.py --help
Examples
========
Lets say we got a file called ``bp.csv`` containing the following values::
136/83/65, 132/82/70
144/82/86, 137/81/75, -, 143/80/68
131/82/60, 144/82/64, 136/79/67, 140/80/62
136/83/68, 138/80/99, -, 133/74/65
136/79/67, 131/76/64, 135/81/72, 136/75/61
127/79/72
**BP Diag** first tries to split multiple entries on each line using the
string given with the ``--delimiter`` option (default is ``,``). Each entry
found is then split into *sys*, *dia* and *pulse* values with the string
given with the ``--seperator`` option (default: ``/``).
So if we run **BP Diag** on the file like this ``bpdiag.py bp.csv``, we got
the following results::
Read 17 value(s) from 1 file(s)...
Statistics (min, max, avg):
:: SYS...: 127, 144, 136
:: DIA...: 74, 83, 79
:: PULSE.: 60, 99, 69
Dump JSON
---------
As you see parsing errors are ignored. We can dump JSON with the ``--json``
option. Only the JSON dump is written to *STDOUT*, other output goes to
*STDERR*, so we can redirect the dump to a file (use ``--compact`` to
prevent spaces after ``,`` and ``:``)::
bpdiag.py --json --compact bp.csv > bp.json
The file ``bp.json`` will then contain one long line with the JSON data. You
can also dump the statistic gatherd from the data to JSON with the ``--json-
stats`` option. Use the ``--sort`` and ``--indent 2`` options if you want a
more readable output.
Generate Charts
---------------
To generate SVG charts, you need to have PyGal_ installed (see below). Other
than that, just use the ``--chart`` option to have a chart called ``bp.svg``
generated in your current directory. There are more options to this, take a
look at the ``--help`` output.
Instead of the interactive SVG charts you can use PNG as output format. Just
use the ``--png`` option along with ``--chart``. You need a couple more
dependencies for that though, take a look below.
Number of measurements per line
-------------------------------
Per default all values are gathered one after the other and parsing errors are
ignored. But you can use the ``--entries`` option to set a fixed number of
measurements per line.
What this means is that only that much values are used per line (even if there
are more) and if a line contains less than *entries* values, the remaining
ones are filled with ``None`` values. Also values that conatin ``-`` (or any
other combination of characters that does not parse to a three integer tuple)
are not ignored but stored as a ``None`` value too.
This can be helpful in cases where you have a given number of measurements per
line and you want to keep them aligned even if sometimes a measurement is
skipped / missing.::
bpdiag.py --json --compact --entries 4 bp.csv
Will result in the following JSON::
[[136,83,65],[132,82,70],null,null,[144,82,86],[137,81,75],null,[143,80,68],[131,82,60],[144,82,64],[136,79,67],[140,80,62],[136,83,68],[138,80,99],null,[133,74,65],[136,79,67],[131,76,64],[135,81,72],[136,75,61],[127,79,72],null,null,null]
Install
=======
You can install **BP Diag** with pip_ or from source.
Install with pip
----------------
pip_ is "*a tool for installing and managing Python packages*". If you don't
have it installed, see the `pip install instructions`_::
pip install --user bpdiag
Install from source
-------------------
You can fetch the latest sourceball_ from github and unpack it, or just clone
this repository: ``git clone git://github.com/brutus/bpdiag``. If you
got the source, change into the directory and use ``setup.py``::
python setup.py install
Dependencies
============
PyGal_ is used to generate the charts. If you want to generate charts,
you need to install it. With pip_ it's as easy as this::
pip install --user pygal
If you want to export to PNG files, you need CairoSVG_, tinycss_ and
cssselect_ too. You can install them like this::
pip install --user CairoSVG tinycss cssselect
Bugs and Contribution
======================
**BP Diag** is at home at: https://github.com/brutus/bpdiag/
If you find any bugs, issues or anything, please use the `issue tracker`_.
.. _home: https://github.com/brutus/bpdiag/
.. _sourceball: https://github.com/brutus/bpdiag/zipball/master
.. _`issue tracker`: https://github.com/brutus/bpdiag/issues
.. _pip: http://www.pip-installer.org/en/latest/index.html
.. _`pip install instructions`: http://www.pip-installer.org/en/latest/installing.html
.. _PyGal: http://pygal.org/
.. _CairoSVG: http://cairosvg.org/
.. _tinycss: http://packages.python.org/tinycss/
.. _cssselect: http://packages.python.org/cssselect/