Skip to content

Commit

Permalink
Begin tests and small fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
VincentBeaud committed Sep 12, 2024
1 parent afe7e5d commit 77050ab
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 80 deletions.
1 change: 1 addition & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ jobs:
with:
name: test-coverage-${{ github.run_id }}
retention-days: 1
include-hidden-files: true
path: |
.coverage
.test_reports/
Expand Down
2 changes: 1 addition & 1 deletion scilpy/tracking/seed.py
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ def init_generator(self, rng_seed, numbers_to_skip):
self.generator.random_sample(100000)
numbers_to_skip -= 100000
self.generator.random_sample(numbers_to_skip)
sampling_rng_seed = self.generator.random_integers(0, 2**32-1)
sampling_rng_seed = self.generator.randint(0, 2**32-1)
self.sampling_generator = np.random.default_rng(sampling_rng_seed)

return self.sampling_generator, indices
Expand Down
13 changes: 11 additions & 2 deletions scripts/scil_fibertube_tracking.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,11 +224,20 @@ def main():
our_origin)

logging.debug("Instantiating tracker")
max_nbr_seeds = args.nb_seeds_per_fiber * len(centerlines)
if args.nb_fibers:
nbr_seeds = args.nb_seeds_per_fiber * args.nb_fibers
if args.nb_fibers > len(centerlines):
raise ValueError("The provided number of seeded fibers exceeds" +
"the number of available fibertubes.")
else:
nbr_seeds = args.nb_seeds_per_fiber * args.nb_fibers
else:
nbr_seeds = args.nb_seeds_per_fiber * len(centerlines)
nbr_seeds = max_nbr_seeds

if args.skip and nbr_seeds + args.skip > max_nbr_seeds:
raise ValueError("The number of seeds plus the number of skipped " +
"seeds requires more fibertubes than there are " +
"available.")
tracker = Tracker(propagator, fake_mask, seed_generator, nbr_seeds,
min_nbr_pts, max_nbr_pts,
args.max_invalid_nb_points, 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@


def test_help_option(script_runner):
ret = script_runner.run('scil_fibertube_reconstruction_metrics.py', '--help')
ret = script_runner.run('scil_fibertube_score_tractogram.py', '--help')
assert ret.success
111 changes: 35 additions & 76 deletions scripts/tests/test_fibertube_tracking.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,118 +3,77 @@

import os
import tempfile
import numpy as np
import nibabel as nib

from scilpy import SCILPY_HOME
from scilpy.io.fetcher import fetch_data, get_testing_files_dict
from scilpy.io.streamlines import save_tractogram
from dipy.io.stateful_tractogram import StatefulTractogram, Space, Origin

# If they already exist, this only takes 5 seconds (check md5sum)
fetch_data(get_testing_files_dict(), keys=['tractograms.zip'])
tmp_dir = tempfile.TemporaryDirectory()

def init_data():
streamlines = [[[4., 0., 4.], [4., 4., 8.], [6., 8., 8.], [12., 10., 8.], [4.,6., 6.]],
[[6., 6., 6.], [8., 8., 8.]]]

def test_help_option(script_runner):
ret = script_runner.run('scil_fibertube_tracking.py', '--help')
assert ret.success
in_mask = os.path.join(SCILPY_HOME, 'tracking',
'seeding_mask.nii.gz')
mask_img = nib.load(in_mask)

sft = StatefulTractogram(streamlines, mask_img, Space.VOX, Origin.NIFTI)
sft.data_per_streamline = {
"diameters": [0.002, 0.001]
}

def test_execution_(script_runner, monkeypatch):
monkeypatch.chdir(os.path.expanduser(tmp_dir.name))
in_tractogram = os.path.join(SCILPY_HOME, 'tracking', 'local.trk')
in_diameters = 'diameters.txt'
diameters = [0.0012, 0.0024, 0.0018, 0.0043, 0.0017,
0.0013, 0.0011, 0.0028, 0.0016, 0.0036] * 100
np.savetxt(in_diameters, diameters)
in_mask = os.path.join(SCILPY_HOME, 'tracking', 'seeding_mask.nii.gz')
save_tractogram(sft, 'tractogram.trk', True)

ret = script_runner.run('scil_fibertube_tracking.py',
in_tractogram, in_diameters, in_mask,
'tracking.trk', '1', '1', '--nb_seeds_per_fiber',
'1', '--nb_fibers', '1', '-f')

def test_help_option(script_runner):
ret = script_runner.run('scil_fibertube_tracking.py', '--help',
'--min_length', '0')
assert ret.success


def test_execution_single_diameter(script_runner, monkeypatch):
def test_execution(script_runner, monkeypatch):
monkeypatch.chdir(os.path.expanduser(tmp_dir.name))
in_tractogram = os.path.join(SCILPY_HOME, 'tracking', 'local.trk')
in_diameters = 'diameters.txt'
diameters = [0.0025]
np.savetxt(in_diameters, diameters)
in_mask = os.path.join(SCILPY_HOME, 'tracking', 'seeding_mask.nii.gz')

init_data()
ret = script_runner.run('scil_fibertube_tracking.py',
in_tractogram, in_diameters, in_mask,
'tracking.trk', '1', '1', '--nb_seeds_per_fiber',
'1', '--nb_fibers', '1', '--single_diameter', '-f')
'tractogram.trk', 'tracking.trk', '0.1', '0.3',
'--min_length', '0', '-f')

assert ret.success


def test_execution_forward_only(script_runner, monkeypatch):
def test_execution_tracking_rk(script_runner, monkeypatch):
monkeypatch.chdir(os.path.expanduser(tmp_dir.name))
in_tractogram = os.path.join(SCILPY_HOME, 'tracking', 'local.trk')
in_diameters = 'diameters.txt'
diameters = [0.0012, 0.0024, 0.0018, 0.0043, 0.0017,
0.0013, 0.0011, 0.0028, 0.0016, 0.0036] * 100
np.savetxt(in_diameters, diameters)
in_mask = os.path.join(SCILPY_HOME, 'tracking', 'seeding_mask.nii.gz')

init_data()
ret = script_runner.run('scil_fibertube_tracking.py',
in_tractogram, in_diameters, in_mask,
'tracking.trk', '1', '1', '--nb_seeds_per_fiber',
'1', '--nb_fibers', '1', '--forward_only', '-f')
'tractogram.trk', 'tracking.trk', '0.1', '0.3',
'--rk_order', '2', '--min_length', '0', '-f')

assert ret.success


def test_execution_no_compression(script_runner, monkeypatch):
def test_execution_config(script_runner, monkeypatch):
monkeypatch.chdir(os.path.expanduser(tmp_dir.name))
in_tractogram = os.path.join(SCILPY_HOME, 'tracking', 'local.trk')
in_diameters = 'diameters.txt'
diameters = [0.0012, 0.0024, 0.0018, 0.0043, 0.0017,
0.0013, 0.0011, 0.0028, 0.0016, 0.0036] * 100
np.savetxt(in_diameters, diameters)
in_mask = os.path.join(SCILPY_HOME, 'tracking', 'seeding_mask.nii.gz')

init_data()
ret = script_runner.run('scil_fibertube_tracking.py',
in_tractogram, in_diameters, in_mask,
'tracking.trk', '1', '1', '--nb_seeds_per_fiber',
'1', '--nb_fibers', '1', '--do_not_compress', '-f')
'tractogram.trk', 'tracking.trk', '0.1', '0.3',
'--out_config', 'config.txt',
'--min_length', '0', '-f')

assert ret.success


def test_execution_saving(script_runner, monkeypatch):
def test_execution_seeding(script_runner, monkeypatch):
monkeypatch.chdir(os.path.expanduser(tmp_dir.name))
in_tractogram = os.path.join(SCILPY_HOME, 'tracking', 'local.trk')
in_diameters = 'diameters.txt'
diameters = [0.0012, 0.0024, 0.0018, 0.0043, 0.0017,
0.0013, 0.0011, 0.0028, 0.0016, 0.0036] * 100
np.savetxt(in_diameters, diameters)
in_mask = os.path.join(SCILPY_HOME, 'tracking', 'seeding_mask.nii.gz')

init_data()
ret = script_runner.run('scil_fibertube_tracking.py',
in_tractogram, in_diameters, in_mask,
'tracking.trk', '1', '1', '--nb_seeds_per_fiber',
'1', '--nb_fibers', '1', '--save_seeds',
'--save_config', '-f')
'tractogram.trk', 'tracking.trk', '0.1', '0.3',
'--nb_fibers', '1', '--nb_seeds_per_fiber', '3',
'--skip', '3', '--min_length', '0', '-f')

assert ret.success


def test_execution_shuffle(script_runner, monkeypatch):
monkeypatch.chdir(os.path.expanduser(tmp_dir.name))
in_tractogram = os.path.join(SCILPY_HOME, 'tracking', 'local.trk')
in_diameters = 'diameters.txt'
diameters = [0.0012, 0.0024, 0.0018, 0.0043, 0.0017,
0.0013, 0.0011, 0.0028, 0.0016, 0.0036] * 100
np.savetxt(in_diameters, diameters)
in_mask = os.path.join(SCILPY_HOME, 'tracking', 'seeding_mask.nii.gz')

ret = script_runner.run('scil_fibertube_tracking.py',
in_tractogram, in_diameters, in_mask,
'tracking.trk', '1', '1', '--nb_seeds_per_fiber',
'1', '--nb_fibers', '1', '--shuffle', '-f')

assert ret.success

0 comments on commit 77050ab

Please sign in to comment.