Skip to content

👨🏻‍⚕️ The Cardiovascular Unified Real-Time Intelligent System

License

Notifications You must be signed in to change notification settings

gantoreno/curtis-engine

Repository files navigation

Curtis - The engine

Python package Upload Python Package Python PyPi License

The cardiovascular unified real-time intelligent system is an AI-based engine whose purpose is to analyze the cardiovascular health of a given person, this is done through ECG analysis (an existent ECG measuring system is needed to obtain the required values).

How does it work?

Curtis acts as an expert system, a rule-based program that emulates a real-life expert way of thinking about a certain topic, those rules were obtained for Curtis using the "decision tree approach", in which some existent data was given to a decision tree classifier, and it categorized the data into branches of rules and decisions.

Usage

First, install the curtis-engine package:

$ pip install curtis-engine

To start using Curtis, the CurtisEngine class must be imported, as well as CurtisFacts for the facts declaration:

>>> from curtis import CurtisEngine, CurtisFacts
>>> curtis = CurtisEngine()

After that, use curtis.declare_facts method to declare a new CurtisFacts object, which should contain all the ECG values needed for a diagnosis to be performed:

>>> curtis.declare_facts(
...    CurtisFacts(
...         sex=1,
...         age=89,
...         height=140,
...         weight=30,
...         HR=56,
...         Pd=122,
...         PQ=164,
...         QRS=118,
...         QT=460,
...         QTcFra=451
...     )
... )

Finally, to get a diagnosis over the declared fact, use the curtis.diagnose method:

>>> diagnosis = curtis.diagnose()
>>> print(diagnosis)
60

The curtis.diagnose method returns a number (as seen). This number is a diagnosis index, which means it's a unique index for a given diagnosis. To see which diagnosis belongs to that index, import the diagnosis_indexes dictionary from the curtis.utils.encoding package, and use the diagnosis as the index:

>>> from curtis.utils.encoding import diagnosis_indexes
>>> print(diagnosis_indexes[diagnosis])
Unifocal premature ventricular complexes

And voilà! you've made your first Curtis diagnosis. 🎉

Docs

To see the docs, you can clone the repo and open the docs folder to serve it as a website.

Using serve:

$ git clone github.com/gantoreno/curtis-engine.git
$ cd curtis-engine
$ serve docs/curtis

The documentation should now be available at http://localhost:5000.

License

This project is licensed under the GNU GPLv3 license.