Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions inflammation-analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,8 @@ def main(args):
for filename in in_files:
inflammation_data = models.load_csv(filename)

view_data = {
'average': models.daily_mean(inflammation_data),
'max': models.daily_max(inflammation_data),
'min': models.daily_min(inflammation_data)}

view_data = {'mean': models.daily_mean(inflammation_data), 'max': models.daily_max(inflammation_data), 'min': models.daily_min(inflammation_data), **(models.s_dev(inflammation_data))}

views.visualize(view_data)

Expand Down
13 changes: 13 additions & 0 deletions inflammation/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,18 @@ def daily_min(data):
"""
return np.min(data, axis=0)



def s_dev(data):
"""Computes and returns standard deviation for data."""
mmm = np.mean(data, axis=0)
devs = []
for entry in data:
devs.append((entry - mmm) * (entry - mmm))

s_dev2 = sum(devs) / len(data)
return {'standard deviation': s_dev2}

def patient_normalise(data):
"""Normalise patient data from a 2D inflammation data array."""
if not isinstance(data, np.ndarray):
Expand All @@ -57,3 +69,4 @@ def patient_normalise(data):
normalised = data / max_data[:, np.newaxis]
normalised[np.isnan(normalised)] = 0
return normalised

19 changes: 12 additions & 7 deletions tests/test_models.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
"""Tests for statistics functions within the Model layer."""

import os
import numpy as np
import numpy.testing as npt
import pytest
Expand Down Expand Up @@ -97,10 +98,14 @@ def test_patient_normalise(test, expected, expect_raises):
if isinstance(test, list):
test = np.array(test)

if expect_raises is not None:
with pytest.raises(expect_raises):
result = patient_normalise(test)
npt.assert_allclose(result, np.array(expected), rtol=1e-2, atol=1e-2)
else:
result = patient_normalise(test)
npt.assert_allclose(result, np.array(expected), rtol=1e-2, atol=1e-2)

@pytest.mark.parametrize('data, expected_standard_deviation', [
([0, 0, 0], 0.0),
([1.0, 1.0, 1.0], 0),
([0.0, 2.0], 1.0)
])
def test_daily_standard_deviation(data, expected_standard_deviation):
from inflammation.models import s_dev
result_data = s_dev(data)['standard deviation']
npt.assert_approx_equal(result_data, expected_standard_deviation)