def test_data_point():
    """obtain a point cloud based on the data
    """

    # build world
    world = tt.World(name="model test", ndim=3)

    # test (x, Y)
    x = np.linspace(0, 1, 100)
    Y = np.zeros((100, 3))  # << dimension
    Y[:, 0] = x
    Y[:, 1] = x
    Y[:, 2] = x

    a = world._get_point_from_xY(x, Y, x1=0.0)
    a_expected = np.array([0.0, 0.0, 0.0])
    np.testing.assert_array_almost_equal_nulp(a, a_expected)

    a = world._get_point_from_xY(x, Y, x1=1.0)
    a_expected = np.array([1.0, 1.0, 1.0])
    np.testing.assert_array_almost_equal_nulp(a, a_expected)

    # test cluster_data
    cluster_data = []
    cluster_data.append((x, Y))  # 1
    cluster_data.append((x, Y))  # 2
    cluster_data.append((x, Y))  # 3
    cluster_data.append((x, Y))  # 4

    A = world._get_point_from_cluster_data(cluster_data, x1=0.0)
    A_expected = np.zeros((4, 3))
    np.testing.assert_array_almost_equal_nulp(A, A_expected)

    A = world._get_point_from_cluster_data(cluster_data, x1=1.0)
    A_expected = np.ones((4, 3))
    np.testing.assert_array_almost_equal_nulp(A, A_expected)

    # add trajectories
    world.addCluster(cluster_data, "1")
    world.addCluster(cluster_data, "2")

    # obtain list of points
    clusterP = world.getClusterPoints(x1=0.0)

    # check values inside clusters
    for i in [0, 1]:
        np.testing.assert_array_almost_equal_nulp(clusterP[i], np.zeros(
            (4, 3)))

    # obtain list of points
    clusterP = world.getClusterPoints(x1=1.0)

    # check values
    for i in [0, 1]:
        np.testing.assert_array_almost_equal_nulp(clusterP[i], np.ones((4, 3)))
def test_model():
    """
    tests the modelling functionality
    """

    # build world
    world_1 = tt.World(name="model test", ndim=3)

    # add trajectories
    for ntype in [0, 1]:
        correct_cluster_name = "toy {0}".format(ntype)
        correct_cluster_data = tt.helpers.get_trajectories(ntype,
                                                           ndim=3,
                                                           ntraj=20)
        world_1.addCluster(correct_cluster_data, correct_cluster_name)

    # model all trajectories
    settings = {}
    settings["model_type"] = "resampling"
    settings["ngaus"] = 10

    # build a model
    world_1.buildModel(settings)

    with pt.raises(TypeError) as testException:
        world_1.buildModel(settings, "Hello World!")

    with pt.raises(ValueError) as testException:
        world_1.buildModel(settings, [-1])

    # log-likelihood
    (ss_list, [xx, yy, zz]) = world_1.getLogLikelihood([0, 1])

    with pt.raises(TypeError) as testException:
        (ss_list, [xx, yy, zz]) = world_1.getLogLikelihood("Hello World!")

    with pt.raises(ValueError) as testException:
        (ss_list, [xx, yy, zz]) = world_1.getLogLikelihood([-1])

    # build tube (twice!)
    for i in range(2):
        (ss_list, [xx, yy, zz]) = world_1.getTube([0, 1])

    # complexity map
    ss, xx, yy, zz = world_1.getComplexityMap([0, 1])

    # overview
    world_1.overview()

    # produce some numbers
    world_1.getTubeStats()

    # clear world
    world_1.clear()
Example #3
0
def test_visual_3d():
    """
    can produce figures
    """

    # build world
    world_1 = tt.World(name="Example 3D", ndim=3, resolution=[10, 10, 10])

    # extreme reduced resolution
    # world_1.setResolution(xstep=3, ystep=3, zstep=3)

    # add trajectories
    for mtype in [0, 1]:
        correct_cluster_name = "toy {0}".format(mtype)
        correct_cluster_data = tt.helpers.get_trajectories(mtype,
                                                           ndim=3,
                                                           ntraj=20)
        world_1.addCluster(correct_cluster_data, correct_cluster_name)

    list_icluster = [0, 1]

    # model all trajectories
    settings = {}
    settings["model_type"] = "resampling"
    settings["ngaus"] = 10

    world_1.buildModel(settings)

    #  this part is Python 2.7 [ONLY] due to Mayavi / VTK dependencies

    # visuals by mayavi
    visual = tt.visual_3d.Visual_3d(world_1)
    # visualise trajectories
    visual.plotTrajectories(list_icluster, ntraj=3)
    visual.plotSamples(list_icluster, ntraj=3)
    # visualise points
    # visualise trajectories
    visual.plotTrajectoriesPoints(x1=0.0, list_icluster=None, ntraj=3)
    # visualise intersection
    visual.plotLogLikelihood()
    #
    visual.plotComplexityMap()
    # visualise tube
    visual.plotTube()
    # visualise difference
    visual.plotTubeDifference([0, 1])
    # visualise outline
    visual.plotOutline()
    # close
    visual.close()
def test_init():
    """
    <description>
    """

    # test 1
    # set values
    name_1 = "Hello world!"
    D_1 = 2
    world_1 = tt.World(name=name_1, ndim=D_1)
    assert (world_1._name == name_1)
    assert (world_1._ndim == D_1)

    # test 2
    # default values
    world_2 = tt.World()
    assert (world_2._name == "")
    assert (world_2._ndim == 3)

    # test 3
    # bad name
    name_3 = 5
    with pt.raises(TypeError) as testException:
        world_3 = tt.World(name_3)

    # bad TYPE dimension
    name_4 = "Hello world!"
    D_4 = "Hello World!"
    with pt.raises(TypeError) as testException:
        world_4 = tt.World(name_4, D_4)

    # bad VALUE dimension
    name_5 = "Hello World!"
    D_5 = 1
    with pt.raises(ValueError) as testException:
        world_5 = tt.World(name_5, D_5)
def test_addCluster():
    """
    <description>
    """

    mdim = 3  # dimensionality

    # build world
    world_1 = tt.World(name="test", ndim=mdim)

    # build a valid cluster
    correct_cluster_name = "correct data"

    # normal operation
    for mtype in [0, 1]:
        correct_cluster_data = tt.helpers.get_trajectories(mtype,
                                                           ndim=mdim,
                                                           ntraj=5)
        world_1.addCluster(correct_cluster_data, correct_cluster_name)

    #
    these_clusters = world_1.getCluster()

    assert (len(these_clusters) == 2)

    #
    wrong_cluster_name = 5
    with pt.raises(TypeError) as testException:
        world_1.addCluster(correct_cluster_data, wrong_cluster_name)

    #
    wrong_cluster_data = 5
    with pt.raises(TypeError) as testException:
        world_1.addCluster(wrong_cluster_data, correct_cluster_name)

    #
    wrong_trajectory_data = 5
    wrong_cluster_data = correct_cluster_data
    wrong_cluster_data.append(wrong_trajectory_data)
    with pt.raises(TypeError) as testException:
        world_1.addCluster(wrong_cluster_data, correct_cluster_name)
Example #6
0
def test_visual_2d():
    """
    produce figures
    """

    mdim = 2
    mtraj = 20

    # build world
    world_1 = tt.World(name="Example 3D", ndim=2, resolution=100)

    # extreme reduced resolution
    #world_1.setResolution(xstep=3, ystep=3, zstep=3)

    # add trajectories
    for mtype in [0, 1]:
        correct_cluster_name = "toy {0}".format(mtype)
        correct_cluster_data = tt.helpers.get_trajectories(mtype,
                                                           ndim=mdim,
                                                           ntraj=mtraj)
        world_1.addCluster(correct_cluster_data, correct_cluster_name)

    list_iclusters = [0, 1]

    # model all trajectories
    settings = {}
    settings["model_type"] = "resampling"
    settings["ngaus"] = 10

    world_1.buildModel(settings)

    # visuals by
    visual = tt.visual_2d.Visual_2d(world_1)
    # visualise trajectories
    visual.plotTrajectories(list_iclusters)
    # visualise intersection
    visual.plotLogLikelihood()
    # close
    visual.close()
Example #7
0
def test_visual_2d():
    """
    produce figures
    """

    mdim = 2
    mtraj = 20

    # build world
    world_1 = tt.World(name="Example 3D", ndim=2, resolution=100)

    # extreme reduced resolution
    #world_1.setResolution(xstep=3, ystep=3, zstep=3)

    # add trajectories
    for mtype in [0, 1]:
        correct_cluster_name = "toy {0}".format(mtype)
        correct_cluster_data = tt.helpers.get_trajectories(mtype,
                                                           ndim=mdim,
                                                           ntraj=mtraj)
        world_1.addCluster(correct_cluster_data, correct_cluster_name)

    list_iclusters = [0, 1]

    # model all trajectories
    settings = {}
    settings["model_type"] = "resampling"
    settings["ngaus"] = 10

    world_1.buildModel(settings)

    # visuals by
    visual = tt.visual_2d.Visual_2d(world_1)
    # visualise intersection
    visual.plotLogLikelihood()
    # close
    visual.close()

    # visuals by
    visual = tt.visual_2d.Visual_2d(world_1)
    # visualise intersection
    visual.plotComplexityMap()
    # close
    visual.close()

    # visuals by
    visual = tt.visual_2d.Visual_2d(world_1)
    # visualise intersection
    visual.plotTube()
    # close
    visual.close()

    # visuals by
    visual = tt.visual_2d.Visual_2d(world_1)
    # visualise intersection
    visual.plotTubeDifference()
    # close
    visual.close()

    # new figure
    visual = tt.visual_2d.Visual_2d(world_1)
    # visualise trajectories
    visual.plotTrajectories(list_iclusters)
    # visualise points
    visual.plotTrajectoriesPoints(x1=0.0, list_icluster=None)
    # mean
    visual.plotMean()
    #
    visual.plotSamples()

    #
    visual.plotBox(np.array([0.0, 0.0]), np.array([1.0, 1.0]))

    # close
    visual.close()
Example #8
0
for ls in llsettings:

    settings = {"model_type":ls[0],
                "ngaus":ls[1],
                "basis_type":ls[2],
                "nbasis":ls[3]}

    # build world
    world_name = "[{0}] [{1}] [{2}] [{3}]".format(settings["model_type"],
                                  settings["basis_type"],
                                  settings["nbasis"],
                                  ls[4])

    # build world
    new_world = tt.World(name=world_name, ndim=3, resolution=[10, 10, 10])

    # add trajectories
    for ntype in [0, 1]:
        cluster_name = "toy {0}".format(ntype)
        cluster_data = tt.helpers.get_trajectories(ntype,
                                                   ndim=3,
                                                   ntraj=50,
                                                   npoints=100,
                                                   noise_std=ls[4])
        new_world.addCluster(cluster_data, cluster_name)

    # overview
    new_world.overview()

    # model
Example #9
0
for ls in llsettings:

    settings = {
        "model_type": ls[0],
        "ngaus": ls[1],
        "basis_type": ls[2],
        "nbasis": ls[3]
    }

    # build world
    world_name = "[{0}] [{1}] [{2}] [{3}]".format(settings["model_type"],
                                                  settings["basis_type"],
                                                  settings["nbasis"], ls[4])

    # create a new world
    new_world = tt.World(name=world_name, ndim=2, resolution=[50, 50, 50])

    # add trajectories
    for ntype in [0, 1]:
        cluster_name = "toy {0}".format(ntype)
        cluster_data = tt.helpers.get_trajectories(ntype,
                                                   ndim=2,
                                                   ntraj=50,
                                                   npoints=100,
                                                   noise_std=ls[4])
        new_world.addCluster(cluster_data, cluster_name)

    # output an overview
    new_world.overview()

    # build the model