test_imagej.test_partition_im()   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 12
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 11
nop 0
dl 0
loc 12
rs 9.85
c 0
b 0
f 0
1
import os
2
import pytest
3
import sys
4
import tempfile
5
import string
6
7
import numpy as np
8
import os.path as op
9
import diff_classifier.imagej as ij
10
from diff_classifier.utils import csv_to_pd
11
12
from urllib.request import urlretrieve
13
14
is_travis = "CI" in os.environ.keys()
15
is_mac = sys.platform == "darwin"
16
17
18
#@pytest.mark.skipif(is_travis, reason="We're running this on Travis")
19
#@pytest.mark.skipif(is_mac, reason="This doesn't work on Macs yet")
20
@pytest.mark.xfail
21
def test_run_tracking():
22
    tempf = tempfile.NamedTemporaryFile(suffix='.csv')
23
    ij.track('http://fiji.sc/samples/FakeTracks.tif', tempf.name)
24
    assert op.exists(tempf.name)
25
26
    df = csv_to_pd(tempf.name)
27
    assert df.shape == (84, 8)
28
29
30
def test_mean_intensity():
31
    fname = 'FakeTracks.tif'
32
    cwd = os.getcwd()
33
    fullname = os.path.join(cwd, fname)
34
    urlretrieve('http://fiji.sc/samples/FakeTracks.tif', filename=fullname)
35
36
    test = np.round(ij.mean_intensity(fname, frame=0), 1)
37
    assert test == 20.0
38
39
40
def test_partition_im():
41
    fname = 'FakeTracks.tif'
42
    cwd = os.getcwd()
43
    fullname = os.path.join(cwd, fname)
44
    urlretrieve('http://fiji.sc/samples/FakeTracks.tif', filename=fullname)
45
46
    rows = 2
47
    cols = 2
48
    names = ij.partition_im(fullname, irows=rows, icols=2, ores=(128, 128),
49
                            ires=(64, 64))
50
    for name in names:
51
        assert os.path.isfile(name)
52
53
54
def test_regress_sys():
55
    fname = 'FakeTracks.tif'
56
    cwd = os.getcwd()
57
    fullname = os.path.join(cwd, fname)
58
    urlretrieve('http://fiji.sc/samples/FakeTracks.tif', filename=fullname)
59
60
    all_videos = ['FakeTracks']*10
61
    yfit = [10, 9]
62
    training_size = 2
63
64
    tracks = ij.regress_sys(cwd, all_videos, yfit, training_size,
65
                            have_output=False, download=False)
66
    for track in tracks:
67
        assert track == 'FakeTracks'
68
69
    regress = ij.regress_sys(cwd, all_videos, yfit, training_size,
70
                             have_output=True, download=False)
71
    assert len(regress) == 8
72
73
    all_videos = list(string.ascii_lowercase)
74
    yfinal = ['e', 'b']
75
76
    tracks = ij.regress_sys(cwd, all_videos, yfit, training_size,
77
                            have_output=False, download=False)
78
    counter = 0
79
    for track in tracks:
80
        assert track == yfinal[counter]
81
        counter = counter + 1
82
83
84
def test_regress_tracking_params():
85
    fname = 'FakeTracks.tif'
86
    cwd = os.getcwd()
87
    fullname = os.path.join(cwd, fname)
88
    urlretrieve('http://fiji.sc/samples/FakeTracks.tif', filename=fullname)
89
90
    all_videos = ['FakeTracks']*10
91
    yfit = [10, 9]
92
    training_size = 2
93
94
    regress = ij.regress_sys(cwd, all_videos, yfit, training_size,
95
                             have_output=True, download=False)
96
97
    quality = ij.regress_tracking_params(regress, 'FakeTracks', frame=0)
98
    assert quality == 9.5
99
    quality = ij.regress_tracking_params(regress, 'FakeTracks', regmethod='SVR',
100
                                         frame=0)
101
    assert quality == 9.5
102
    quality = ij.regress_tracking_params(regress, 'FakeTracks',
103
                                         regmethod='BayesianRidge', frame=0)
104
    assert quality == 9.5
105
    quality = ij.regress_tracking_params(regress, 'FakeTracks',
106
                                         regmethod='SGDRegressor', frame=0)
107
    assert quality < -10000
108
    quality = ij.regress_tracking_params(regress, 'FakeTracks',
109
                                         regmethod='LassoLars', frame=0)
110
    assert quality == 9.5
111
    quality = ij.regress_tracking_params(regress, 'FakeTracks',
112
                                         regmethod='ARDRegression', frame=0)
113
    assert quality == 9.5
114
    quality = ij.regress_tracking_params(regress, 'FakeTracks',
115
                                         regmethod='PassiveAggressiveRegressor',
116
                                         frame=0)
117
    assert np.round(quality, 1) == 9.1 or np.round(quality, 1) == 9.9
118
    quality = ij.regress_tracking_params(regress, 'FakeTracks',
119
                                         regmethod='TheilSenRegressor', frame=0)
120
    assert quality == 9.5
121
    quality = ij.regress_tracking_params(regress, 'FakeTracks',
122
                                         regmethod='None', frame=0)
123
    assert quality == 3.0
124