Beispiel #1
0
def test_upsample():
    data, labels = make_blobs(n_samples=3000,
                              n_features=2,
                              centers=3,
                              random_state=42)
    data = pd.DataFrame(data, columns=["X", "Y"])
    g = gate.Gate(gate_name="test",
                  parent="test parent",
                  x="X",
                  y="Y",
                  method="manual",
                  sampling={
                      "method": "uniform",
                      "frac": 0.5
                  })
    sample = g._downsample(data=data)
    sample_labels = labels[sample.index.values]
    pops = list()
    for x in np.unique(sample_labels):
        idx = sample.index.values[np.where(sample_labels == x)[0]]
        pops.append(
            gate.Population(population_name=f"Pop_{x}",
                            parent="root",
                            index=idx[:498]))
    pops = g._upsample(data=data, sample=sample, populations=pops)
    assert isinstance(pops, list)
    assert all([isinstance(p, gate.Population) for p in pops])
    assert all([len(p.index) == 1000 for p in pops])
    for x in np.unique(labels):
        p = [i for i in pops if i.population_name == f"Pop_{x}"][0]
        assert np.array_equal(p.index, np.where(labels == x)[0])
Beispiel #2
0
def test_downsample(kwargs):
    g = gate.Gate(gate_name="test",
                  parent="test parent",
                  x="X",
                  y="Y",
                  method="manual",
                  sampling=kwargs)
    data = pd.DataFrame({
        "X": np.random.normal(1, scale=0.5, size=1000),
        "Y": np.random.normal(1, scale=0.5, size=1000)
    })
    sample = g._downsample(data=data)
    if kwargs.get("method") is None:
        assert sample is None
    else:
        assert sample.shape[0] < data.shape[0]
Beispiel #3
0
def test_transform_none():
    g = gate.Gate(gate_name="test",
                  parent="test parent",
                  x="X",
                  y="Y",
                  method="manual")
    data = pd.DataFrame({
        "X": np.random.normal(1, scale=0.5, size=1000),
        "Y": np.random.normal(1, scale=0.5, size=1000)
    })
    transformed = g._transform(data)
    assert isinstance(transformed, pd.DataFrame)
    assert transformed.shape[0] == 1000
    assert transformed.shape[1] == 2
    for i in ["X", "Y"]:
        assert transformed[i].mean() == pytest.approx(1., 0.1)
        assert transformed[i].std() == pytest.approx(0.5, 0.1)
Beispiel #4
0
def test_transform_x():
    g = gate.Gate(gate_name="test",
                  parent="test parent",
                  x="X",
                  y="Y",
                  method="manual",
                  transformations={"x": "logicle"})
    data = pd.DataFrame({
        "X": np.random.normal(1, scale=0.5, size=1000),
        "Y": np.random.normal(1, scale=0.5, size=1000)
    })
    transformed = g._transform(data)
    assert isinstance(transformed, pd.DataFrame)
    assert transformed.shape[0] == 1000
    assert transformed.shape[1] == 2
    assert transformed["X"].mean() != pytest.approx(1., 0.1)
    assert transformed["X"].std() != pytest.approx(0.5, 0.1)
    assert transformed["Y"].mean() == pytest.approx(1., 0.1)
    assert transformed["Y"].std() == pytest.approx(0.5, 0.1)
Beispiel #5
0
def test_dim_reduction():
    g = gate.Gate(gate_name="test",
                  parent="test parent",
                  x="X",
                  y="Y",
                  method="manual",
                  dim_reduction={
                      "method": "UMAP",
                      "n_neighbors": 100
                  })
    data = pd.DataFrame({
        "X": np.random.normal(1, 0.5, 1000),
        "Y": np.random.normal(1, 0.5, 1000),
        "Z": np.random.normal(1, 0.5, 1000),
        "W": np.random.normal(1, 0.5, 1000)
    })
    data = g._dim_reduction(data=data)
    assert g.x == "UMAP1"
    assert g.y == "UMAP2"
    assert data.shape == (1000, 6)
    assert all([f"UMAP{i + 1}" in data.columns for i in range(2)])