Esempio n. 1
0
def example_filegroup():
    test_project = Project(project_id="test")
    exp = test_project.add_experiment(
        experiment_id="test experiment",
        data_directory=f"{os.getcwd()}/test_data",
        panel_definition=f"{os.getcwd()}/assets/test_panel.xlsx")
    exp.add_new_sample(
        sample_id="test sample",
        primary_path=f"{os.getcwd()}/assets/test.FCS",
        controls_path={"test_ctrl": f"{os.getcwd()}/assets/test.FCS"},
        compensate=False)
    yield exp.get_sample(sample_id="test sample")
    test_project.delete()
Esempio n. 2
0
 def _build(dump=True):
     # Initiate Gating object
     if dump:
         db = connect('test')
         db.drop_database('test')
         global_init('test')
         setup_with_dummy_data()
     project = Project.objects(project_id='test').get()
     gate = Gating(experiment=project.load_experiment('test_experiment_dummy'),
                   sample_id='dummy_test')
     return gate
Esempio n. 3
0
def test_apply_all(example_experiment):
    gs = create_gatingstrategy_and_load(example_experiment)
    with pytest.raises(AssertionError) as err:
        gs.apply_all()
    assert str(err.value) == "No gates to apply"
    gs = apply_some_gates(gs)
    exp = Project.objects(
        project_id="test").get().load_experiment("test experiment")
    gs.load_data(experiment=exp, sample_id="test sample")
    gs.apply_all()
    assert_expected_gated_pops(gs)
    with pytest.raises(AssertionError) as err:
        gs.apply_all()
    assert str(err.value) == "One or more of the populations generated from this gating strategy are already " \
                             "presented in the population tree"
Esempio n. 4
0
def test_init_new_fcs_file(example_filegroup):
    fg = example_filegroup
    assert os.path.isfile(f"{os.getcwd()}/test_data/{fg.id}.hdf5")
    experiment = Project.objects(
        project_id="test").get().load_experiment("test experiment")
    fg = experiment.get_sample("test sample")
    primary_data = fg.data("primary")
    ctrl_data = fg.data("test_ctrl")
    assert len(fg.populations) == 1
    assert fg.populations[0].population_name == "root"
    assert len(fg.tree.keys()) == 1
    assert list(fg.tree.keys())[0] == "root"
    root = fg.populations[0]
    assert root.parent == "root"
    assert root.population_name == "root"
    assert np.array_equal(primary_data.index.values, root.index)
    assert np.array_equal(ctrl_data.index.values,
                          root.ctrl_index.get("test_ctrl"))
    assert primary_data.shape == (30000, 7)
    assert ctrl_data.shape == (30000, 7)
Esempio n. 5
0
 def test_FileGroup(self):
     test_project = Project.objects(project_id='test').get()
     test_exp = test_project.load_experiment('test_experiment_dummy')
     # Testing data retrieval
     test_grp = test_exp.pull_sample('dummy_test')
     test_file = test_grp.files[0]
     self.assertEqual(test_file.pull().shape, (100, 3))
     self.assertEqual(test_file.pull(sample=10).shape, (10, 3))
     data = test_exp.pull_sample_data('dummy_test', include_controls=True)
     primary = [d for d in data if d.get('typ') == 'complete'][0]
     ctrl = [d for d in data if d.get('typ') == 'control'][0]
     self.assertEqual(primary.get('data').shape, (100, 3))
     self.assertEqual(ctrl.get('data').shape, (100, 3))
     self.assertListEqual(
         ctrl.get('data').columns.tolist(),
         ['feature0', 'feature1', 'blobID'])
     data = test_exp.pull_sample_data('dummy_test',
                                      include_controls=True,
                                      columns_default='channel')
     primary = [d for d in data if d.get('typ') == 'complete'][0]
     self.assertListEqual(
         primary.get('data').columns.tolist(), ['var0', 'var1', 'var2'])
Esempio n. 6
0
def test_delete(example_experiment, remove_associations):
    gs = create_gatingstrategy_and_load(example_experiment)
    gs = apply_some_gates(gs)
    gs.save()
    gs = GatingStrategy.objects(name="test").get()
    populations = [[c.name for c in g.children] for g in gs.gates]
    populations = list(set([x for sl in populations for x in sl]))
    gs.delete(remove_associations=remove_associations,
              delete_gates=remove_associations)
    assert len(GatingStrategy.objects(name="test")) == 0
    n = [0, 0]
    if not remove_associations:
        n = [2, 1]
    for n_, gate in zip(n, [ThresholdGate, EllipseGate]):
        assert len(gate.objects()) == n_
    fg = (Project.objects(project_id="test").get().load_experiment(
        "test experiment").get_sample("test sample"))
    if remove_associations:
        assert len(fg.gating_strategy) == 0
        assert all([p not in fg.list_populations() for p in populations])
    else:
        assert len(fg.gating_strategy) == 1
        assert all([p in fg.list_populations() for p in populations])
Esempio n. 7
0
def test_add_population(example_filegroup):
    fg, populations = create_populations(filegroup=example_filegroup)
    fg.save()
    experiment = Project.objects(
        project_id="test").get().load_experiment("test experiment")
    fg = experiment.get_sample("test sample")
    # Check population objects
    assert len(fg.populations) == 4
    assert all([
        x in [p.population_name for p in fg.populations]
        for x in ["root", "pop1", "pop2", "pop3"]
    ])
    # Check indexes
    pop_idx = {p.population_name: p.index for p in fg.populations}
    pop_ctrl_idx = {
        p.population_name: p.ctrl_index.get("test_ctrl")
        for p in fg.populations
    }
    for data_dict in [pop_idx, pop_ctrl_idx]:
        for name, expected_n in zip(["root", "pop1", "pop2", "pop3"],
                                    [30000, 24000, 12000, 6000]):
            assert len(data_dict.get(name)) == expected_n
    # Check cluster idx
    clustered_pops = [p for p in fg.populations if p.population_name != "root"]
    cluster_idx = {
        p.population_name: p.clusters[0].index
        for p in clustered_pops
    }
    for name, n in zip(["pop1", "pop2", "pop3"], [24000, 12000, 6000]):
        assert len(cluster_idx.get(name)) == n * 0.25
    # Check trees
    assert all([x in fg.tree.keys() for x in ["root", "pop1", "pop2", "pop3"]])
    assert not fg.tree.get("root").parent
    assert fg.tree.get("pop1").parent == fg.tree.get("root")
    assert fg.tree.get("pop2").parent == fg.tree.get("pop1")
    assert fg.tree.get("pop3").parent == fg.tree.get("pop2")
Esempio n. 8
0
def create_project():
    p = Project(project_id="test")
    p.save()
    yield p
    p.delete()
Esempio n. 9
0
 def test_Project(self):
     test_panel = Panel(panel_name='test')
     test_panel.save()
     test_project = Project(project_id='test', owner='test')
     test_project.add_experiment('test_experiment_aml', panel_name='test')
     test_project.add_experiment('test_experiment_dummy', panel_name='test')
     test_project.add_subject('test_subject', testing=True)
     self.assertEqual(test_project.list_subjects(), ['test_subject'])
     s = test_project.pull_subject('test_subject')
     self.assertEqual(s.testing, True)
     self.assertEqual(s.subject_id, 'test_subject')
     self.assertEqual(test_project.list_fcs_experiments(), ['test_experiment_aml', 'test_experiment_dummy'])
     test_project.save()
     test_project.delete()
     err = False
     try:
         Project.objects(project_id='test').get()
     except DoesNotExist:
         err = True
     self.assertTrue(err)
Esempio n. 10
0
def reload_file():
    fg = (Project.objects(project_id="test").get().load_experiment(
        "test experiment").get_sample("test sample"))
    return fg