示例#1
0
    def test_extract_data(self):
        """todo : check if this test makes sense"""
        h = Histogram(str(get_shared_data("meri1.his")))

        e = h.estimate_nonparametric()

        assert e
    def test_extract_data(self):
        """run and test the extract_data methods"""

        h = Histogram(str(get_shared_data("meri2.his")))
        m = h.estimate_DiscreteMixture("B", "NB")

        d = m.extract_data()
        assert d
    def test_extract_data(self):
        """run and test the extract_data methods"""

        h = Histogram(str(get_shared_data( "meri2.his")))
        m = h.estimate_DiscreteMixture("B", "NB")

        d = m.extract_data()
        assert d
示例#4
0
    def test_mixture_1(self):
        distributions = ["B", "NB", "NB", "NB"]
        h = Histogram(get_shared_data( "peup2.his"))
        m1 =  h.estimate_mixture(distributions, NbComponent="Estimated")
        assert m1

        types = []
        for d in distributions:
            temp = distribution_identifier_type[d]
            types.append(temp)

        c = h.mixture_estimation2(types, 0, True, True,
                                likelihood_penalty_type['AIC'])

        assert str(c)==str(m1)
示例#5
0
    def test_plot_convolution(self):

        convol1 = Convolution("data/convolution1.conv")
        if DISABLE_PLOT == False:
            Plot(convol1.extract_elementary(1), convol1.extract_elementary(2))

        histo_b2 = Histogram("data/nothofagus_antarctica_bud_2.his")
        histo_s2 = Histogram("data/nothofagus_antarctica_shoot_2.his")

        convol31 = Estimate(Shift(histo_s2, 1),
                            "CONVOLUTION",
                            Estimate(histo_b2, "NP"),
                            NbIteration=100,
                            Estimator="PenalizedLikelihood",
                            Weight=0.5)
        if DISABLE_PLOT == False:
            Plot(convol31.extract_elementary(1))
    def test_mixture(self):

        h = Histogram(get_shared_data("meri2.his"))
        mixt = h.estimate_mixture(["B", "NB"])

        assert ExtractHistogram(mixt, "Weight") == \
            mixt.extract_weight()
        assert ExtractHistogram(mixt, "Mixture") == \
            mixt.extract_mixture()
        assert ExtractHistogram(mixt, "Component", 1) == \
            mixt.extract_component(1)
        assert ExtractHistogram(mixt, "Component", 2) == \
            mixt.extract_component(2)

        try:
            ExtractHistogram(mixt, "Component", 3)
            assert False
        except: # Bas distrubition index
            assert True
    def test_constructors(self):
        h = Histogram([1, 2, 3, 4, 5, 6, 1, 2, 3])
        assert h

        # from histogram
        dist = Distribution(h)
        assert dist

        #from parametric model
        pm = _DiscreteParametricModel(h)
        dist = Distribution(pm)
        assert dist
    def test_merge_histo(self):
        meri1 = Histogram(get_shared_data( "meri1.his"))
        meri2 = Histogram(get_shared_data( "meri2.his"))
        meri3 = Histogram(get_shared_data( "meri3.his"))
        meri4 = Histogram(get_shared_data( "meri4.his"))
        meri5 = Histogram(get_shared_data( "meri5.his"))
       

        meri = Merge(meri1, meri2, meri3, meri4, meri5)
        assert meri
        meri_bis = meri1.merge([meri2, meri3, meri4, meri5])
        assert meri_bis
        assert str(meri)==str(meri_bis)
        Plot(meri)
示例#9
0
    def test_convolution(self):

        elementary = Histogram("data/nothofagus_antarctica_bud_2.his")
        total = Histogram("data/nothofagus_antarctica_shoot_2.his")

        convol1 = Estimate(Shift(total, 1), "CONVOLUTION",
                           Estimate(elementary, "NP"),
                           NbIteration=100,
                           Estimator="PenalizedLikelihood",
                           Weight=0.5)

        convol2 = total.shift(1).estimate_convolution(
                                    elementary.estimate_nonparametric(),
                                    NbIteration=100,
                                    Estimator="PenalizedLikelihood",
                                    Weight=0.5)

        assert convol1 and convol2
        assert convol1 == convol2
 def get_mixture_2(self):
     """create another mixture data"""
     h = Histogram(get_shared_data("meri2.his"))
     m = h.estimate_mixture("B", "NB")
     return m
示例#11
0
 def test_mixture_2(self):
     h = Histogram(get_shared_data( "peup2.his"))
     m2 = h.estimate_mixture([Binomial(0, 10, 0.5), "NB"])
     assert m2
示例#12
0
 def __init__(self):
     self.meri1 = Histogram(get_shared_data("meri1.his"))
     self.meri2 = Histogram(get_shared_data("meri1.his"))
     self.meri3 = Histogram(get_shared_data("meri1.his"))
示例#13
0
 def test_binomial(self):
     """BINOMIAL Distribution"""
     h = Histogram(get_shared_data("meri5.his"))
     assert h.estimate_parametric('B')
示例#14
0
 def test_constructor_from_integers(self):
     v = Histogram(0, 1, 2, 3)
     assert v
示例#15
0
    def test_container(self):
        """ container / iterator"""
        h = Histogram(str(get_shared_data("meri1.his")))

        assert h[0] == 0
        assert h[10] == 1
def test2():
    """finite mixture of discrete distributions"""

    mixt1 = Mixture("data//mixture1.mixt")
    mixt1 = Mixture(0.6, Distribution("B", 2, 18, 0.5), 0.4,
                    Distribution("NB", 10, 10, 0.5))

    mixt_histo1 = Simulate(mixt1, 200)
    Plot(mixt_histo1)
    # extraction of histograms/frequency distributions corresponding
    # to a given mixture component
    # (i.e. elementary distributions which are combined by mixture)

    histo10 = ExtractHistogram(mixt_histo1, "Component", 1)
    histo11 = ExtractHistogram(mixt_histo1, "Component", 2)
    _histo12 = Merge(histo10, histo11)
    _histo13 = ExtractHistogram(mixt_histo1, "Weight")

    # estimation

    mixt2 = Estimate(mixt_histo1,
                     "MIXTURE",
                     "B",
                     "NB",
                     MinInfBound=0,
                     InfBoundStatus="Fixed",
                     DistInfBoundStatus="Fixed")

    _mixt_histo2 = ExtractData(mixt2)

    _histo14 = ExtractHistogram(ExtractData(mixt2), "Component", 1)
    _histo15 = ToHistogram(ExtractDistribution(mixt2, "Component", 1))

    # estimation and selection of the number of components

    meri1 = Histogram(get_shared_data("meri1.his"))
    meri2 = Histogram(get_shared_data("meri2.his"))
    meri3 = Histogram(get_shared_data("meri3.his"))
    meri4 = Histogram(get_shared_data("meri4.his"))
    meri5 = Histogram(get_shared_data("meri5.his"))

    #mixt3 = Estimate(meri1, "MIXTURE", Distribution("B", 6, 7, 0.5), "B")
    mixt3 = Estimate(meri1, "MIXTURE", "B", "B")
    Plot(mixt3)
    # NbComponent="Fixed" (default) / "Estimated"
    # Penalty="AIC"/ "AICc" / "BIC" / "BICc" (default), option
    # valide if NbComponent="Estimated"

    meri = Merge(meri1, meri2, meri3, meri4, meri5)

    mixt2 = Estimate(meri,
                     "MIXTURE",
                     "B",
                     "B",
                     "B",
                     "B",
                     NbComponent="Estimated",
                     Penalty="BIC")
    Display(mixt2, Detail=2)
    dist_mixt = ExtractDistribution(mixt2, "Mixture")
    Plot(dist_mixt)
 def hist_data(self):
     h = Histogram(get_shared_data( "meri2.his"))
     return h
    def test_histo_extract_data(self):

        h = Histogram(get_shared_data("meri2.his"))
        mixt = h.estimate_mixture(["B", "NB"])
        assert ExtractData(mixt)
        assert mixt.extract_data() == ExtractData(mixt)
示例#19
0
 def get_mixture_2(self):
     """create another mixture data"""
     h = Histogram(get_shared_data("meri2.his"))
     m = h.estimate_mixture("B", "NB")
     return m
 def test_value_select_float(self):
     meri1 = Histogram(get_shared_data("meri1.his"))
     # note keep=False is equivalent to Mode=keep,is this correct ?
     assert str(ValueSelect(meri1, 0, 10, Mode="Keep"))==\
         str(meri1.value_select( min=0, max=10, keep=True))
 def test_fit_histogram(self):
     meri5 = Histogram(get_shared_data( "meri5.his"))
     dist1 = Fit(meri5, Distribution("B", 0, 10, 0.437879))
     dist2 = meri5.fit(Distribution("B", 0, 10, 0.437879))
     assert str(dist1)==str(dist2)
def test():
    meri1 = Histogram(get_shared_data("meri1.his"))
    meri2 = Histogram(get_shared_data("meri2.his"))
    meri3 = Histogram(get_shared_data("meri3.his"))
    meri4 = Histogram(get_shared_data("meri4.his"))
    meri5 = Histogram(get_shared_data("meri5.his"))

    Plot(meri1, meri2, meri3, meri4, meri5)
    Compare(meri1, meri2, meri3, meri4, meri5, "N")

    ComparisonTest("F", meri1, meri2)
    ComparisonTest("T", meri1, meri2)
    ComparisonTest("W", meri1, meri2)

    ComparisonTest("F", meri1, meri3)
    ComparisonTest("T", meri1, meri3)
    ComparisonTest("W", meri1, meri3)

    # Estimation of a mixture of two distributions assuming a first
    # sub-population of GUs made only of a preformed part and a second
    # sub-population made of both a preformed part and a neoformed part

    _mixt1 = Estimate(meri2, "MIXTURE", "B", "B")

    meri = Merge(meri1, meri2, meri3, meri4, meri5)

    #model selection approach: estimation of both the mixture parameters and
    # the number of components

    mixt2 = Estimate(meri,
                     "MIXTURE",
                     "B",
                     "B",
                     "B",
                     "B",
                     NbComponent="Estimated")
    mixt2 = Estimate(meri, "MIXTURE", "NB", "NB")
    Plot(mixt2)
    Plot(ExtractDistribution(mixt2, "Mixture"))

    print type(ExtractDistribution(mixt2, "Component", 1))

    Plot(ExtractDistribution(mixt2, "Component", 1),
         ExtractDistribution(mixt2, "Component", 2))
    Display(mixt2)

    _mixt_data = ExtractData(mixt2)

    dist5 = Estimate(meri5, "BINOMIAL")
    Display(dist5, Detail=2)
    Plot(dist5)

    histo5 = Simulate(dist5, 100)
    Display(histo5, Detail=2)
    Plot(histo5)

    peup1 = Histogram(get_shared_data("peup1.his"))
    peup2 = Histogram(get_shared_data("peup2.his"))
    peup3 = Histogram(get_shared_data("peup3.his"))
    peup4 = Histogram(get_shared_data("peup4.his"))
    peup5 = Histogram(get_shared_data("peup5.his"))
    peup6 = Histogram(get_shared_data("peup6.his"))

    _mixt10 = Estimate(peup2,
                       "MIXTURE",
                       "B",
                       "NB",
                       "NB",
                       "NB",
                       NbComponent="Estimated")

    peup = Merge(peup1, peup2, peup3, peup4, peup5, peup6)

    _histo1 = Shift(peup, -1)
    _histo2 = Cluster(peup, "Information", 0.8)
    _histo3 = Cluster(peup, "Step", 10)
    histo4 = Cluster(peup, "Limit", [13, 24])
    Display(histo4, Detail=2)
    Plot(histo4)

    _mixt11 = Estimate(peup,
                       "MIXTURE",
                       "B",
                       "NB",
                       "NB",
                       "NB",
                       NbComponent="Estimated")
    _mixt11 = Estimate(peup, "MIXTURE", "B", "NB")
示例#23
0
 def build_data(self):
     v = Histogram([0, 1, 2, 3])
     assert v
     return v
示例#24
0
 def create_data(self):
     return Histogram(str(get_shared_data('fagus1.his')))
示例#25
0
 def test_constructor_from_list(self):
     v = Histogram([0, 1, 2, 3])
     assert v
示例#26
0
 def test_nonparametric(self):
     h = Histogram(get_shared_data("meri1.his"))
     e =  h.estimate_nonparametric()
     assert e
def test():
    """Mixture tests from exploratory.aml
    #
    #  Frequency distributions
    #
    #  Objective: Analyzing the number of nodes of growth units in selected architectural
    #                 position considering the respective roles of preformation and neoformation,
    #
    #  Methods: comparison tests, one-way variance analysis,
    #           estimation of finite mixture of distributions.
    #
    #  Wild cherry tree: number of nodes per growth unit (GU)
    #
    #  Data: Dominique Fournier
    #
    #  meri1.his: order 1,
    #  meri1.his: order 2,
    #  meri1.his: order 3, GU 1,
    #  meri1.his: order 3, GU 2,
    #  meri5.his: short shoots.
    #
    #
    #  Poplar: number of nodes per growth unit
    #
    #  Data: Yves Caraglio and Herve Rey
    #
    #  peup1.his: order 2,
    #  peup2.his: order 3,
    #  peup3.his: order 4,
    #  peup4.his: order 5,
    #  peup5.his: order 3, GU 4,
    #  peup6.his: order 3, acrotony.
    #
    #########################################################################
    """

    plot.DISABLE_PLOT = DISABLE_PLOT
    meri1 = Histogram(get_shared_data("meri1.his"))
    meri2 = Histogram(get_shared_data("meri2.his"))
    meri3 = Histogram(get_shared_data("meri3.his"))
    meri4 = Histogram(get_shared_data("meri4.his"))
    meri5 = Histogram(get_shared_data("meri5.his"))

    Plot(meri1, meri2, meri3, meri4, meri5)
    Compare(meri1, meri2, meri3, meri4, meri5, "N")

    ComparisonTest("F", meri1, meri2)
    ComparisonTest("T", meri1, meri2)
    ComparisonTest("W", meri1, meri2)

    ComparisonTest("F", meri1, meri3)
    ComparisonTest("T", meri1, meri3)
    ComparisonTest("W", meri1, meri3)

    # Estimation of a mixture of two distributions assuming a first
    # sub-population of GUs made only of a preformed part and a second
    # sub-population made of both a preformed part and a neoformed part

    _mixt1 = Estimate(meri2, "MIXTURE", "B", "B")

    meri = Merge(meri1, meri2, meri3, meri4, meri5)

    # model selection approach: estimation of both the mixture parameters and
    # the number of components"""

    mixt2 = Estimate(meri,
                     "MIXTURE",
                     "B",
                     "B",
                     "B",
                     "B",
                     NbComponent="Estimated")
    mixt2 = Estimate(meri, "MIXTURE", "NB", "NB")
    Plot(mixt2)
    Plot(ExtractDistribution(mixt2, "Mixture"))
    Plot(ExtractDistribution(mixt2, "Component", 1),
         ExtractDistribution(mixt2, "Component", 2))
    Display(mixt2)

    _mixt_data = ExtractData(mixt2)

    dist5 = Estimate(meri5, "BINOMIAL")
    Display(dist5, Detail=2)
    Plot(dist5)

    histo5 = Simulate(dist5, 100)
    Display(histo5, Detail=2)
    Plot(histo5)

    peup1 = Histogram(get_shared_data("peup1.his"))
    peup2 = Histogram(get_shared_data("peup2.his"))
    peup3 = Histogram(get_shared_data("peup3.his"))
    peup4 = Histogram(get_shared_data("peup4.his"))
    peup5 = Histogram(get_shared_data("peup5.his"))
    peup6 = Histogram(get_shared_data("peup6.his"))

    _mixt10 = Estimate(peup2,
                       "MIXTURE",
                       "B",
                       "NB",
                       "NB",
                       "NB",
                       NbComponent="Estimated")

    peup = Merge(peup1, peup2, peup3, peup4, peup5, peup6)

    _histo1 = Shift(peup, -1)
    _histo2 = Cluster(peup, "Information", 0.8)
    _histo3 = Cluster(peup, "Step", 10)
    histo4 = Cluster(peup, "Limit", [13, 24])
    Display(histo4, Detail=2)
    Plot(histo4)

    _mixt11 = Estimate(peup,
                       "MIXTURE",
                       "B",
                       "NB",
                       "NB",
                       "NB",
                       NbComponent="Estimated")

    _mixt11 = Estimate(peup, "MIXTURE", "B", "NB")
示例#28
0
 def test_nb(self):
     """NegativeBinomial"""
     h = Histogram(get_shared_data("peup2.his"))
     assert h.estimate_parametric('NB')
示例#29
0
 def build_data(self):
     data = Histogram("data/fagus1.his")
     return data
 def test_getters(self):
     dist = Distribution(Histogram([1, 1, 1, 2, 2, 2, 3, 3, 3]))
     assert dist.get_mean == 2
     assert 0.3333 < dist.get_max < 0.3334
     assert dist.get_mean == 2
     assert 0.6666 < dist.get_variance < 0.6667