Exemple #1
0
    def test_4(self):
        """test generation of sample directories"""
        myModel = mcTestModels.staticModel()
        statFrw = sf.StaticFramework(myModel)
        mcFw = mf.MonteCarloFramework(statFrw, 5)
        directoriesCreated = True
        for directory in range(1, 6):
            if not os.path.isdir(str(directory)):
                directoriesCreated = False
        self.assertTrue(directoriesCreated)

        for directory in range(1, 6):
            shutil.rmtree(str(directory))

        myModel = mcTestModels.dynamicModel()
        dynFrw = df.DynamicFramework(myModel, 10)
        mcFw = mf.MonteCarloFramework(dynFrw, 5)
        directoriesCreated = True
        for directory in range(1, 6):
            if not os.path.isdir(str(directory)):
                directoriesCreated = False
        self.assertTrue(directoriesCreated)

        for directory in range(1, 6):
            shutil.rmtree(str(directory))
Exemple #2
0
    def test_5(self):
        """test execution of sections, report, readmap for a static model"""
        myModel = mcTestModels.staticModel()
        statFrw = sf.StaticFramework(myModel)
        mcFw = mf.MonteCarloFramework(statFrw, 5)
        mcFw.setQuiet(True)
        mcFw.run()

        filesInitialCreated = True
        filesPremcCreated = True
        filesPostmcCreated = True

        for sample in range(1, 6):
            nameInit = "mcsi%d.map" % (sample)
            namePre = "premc%d.map" % (sample)
            namePost = "postmc%d.map" % (sample)
            if not os.path.isfile(os.path.join(str(sample), nameInit)):
                filesInitialCreated = False
            if not os.path.isfile(namePre):
                filesPremcCreated = False
            if not os.path.isfile(namePost):
                filesPostmcCreated = False

        self.assertTrue(filesInitialCreated)
        self.assertTrue(filesPremcCreated)
        self.assertTrue(filesPostmcCreated)
Exemple #3
0
    def test_3(self):
        """test framework methods"""
        myModel = mcTestModels.dynamicModel()
        dynFrw = df.DynamicFramework(myModel, 10)
        mcFw = mf.MonteCarloFramework(dynFrw, 5)

        self.assertTrue(myModel.sampleNumbers() == range(1, 6))
Exemple #4
0
 def test_1(self):
     """test type of user model"""
     myModel = mcTestModels.T0()
     try:
         mcFw = mf.MonteCarloFramework(myModel, 5)
     except fb.FrameworkError as e:
         self.assertEqual(
             str(e),
             "Cannot run MonteCarlo framework: User model must be type of StaticFramework or DynamicFramework"
         )
Exemple #5
0
 def test_2(self):
     """test existence of added methods and attributes"""
     myModel = mcTestModels.staticModel()
     statFrw = sf.StaticFramework(myModel)
     mcFw = mf.MonteCarloFramework(statFrw, 5)
     self.assertTrue(hasattr(myModel, "nrSamples"))
     self.assertTrue(hasattr(myModel, "_d_firstSampleNumber"))
     self.assertTrue(hasattr(myModel, "_d_lastSampleNumber"))
     self.assertTrue(hasattr(myModel, "_d_currentSampleNumber"))
     self.assertTrue(hasattr(myModel, "_d_inSample"))
     self.assertTrue(hasattr(myModel, "currentSampleNumber"))
     self.assertTrue(hasattr(myModel, "_lastSampleNumber"))
     self.assertTrue(hasattr(myModel, "_firstSampleNumber"))
     self.assertTrue(hasattr(myModel, "_setCurrentSample"))
     self.assertTrue(hasattr(myModel, "_inSample"))
     self.assertTrue(hasattr(myModel, "sampleNumbers"))
     self.assertTrue(hasattr(myModel, "report"))
     self.assertTrue(hasattr(myModel, "readmap"), "todo")
Exemple #6
0
    def test_003(self):
        """ value of Python variables in the resume section, RR """
        dynamicModel = pfTestModels.DynamicModel()
        dynamicModelFrw = df.DynamicFramework(dynamicModel,
                                              lastTimeStep=10,
                                              firstTimestep=1)
        dynamicModelFrw.setQuiet()
        dynamicMcFrw = mc.MonteCarloFramework(dynamicModelFrw, nrSamples=5)
        dynamicMcFrw.setQuiet()
        runPassed = False
        try:
            pfModel = pf.ResidualResamplingFramework(dynamicMcFrw)
            pfModel.setFilterTimesteps([3, 5, 7])
            pfModel.setQuiet(True)
            pfModel.run()
            runPassed = True
        except AssertionError:
            pass

        self.assertTrue(runPassed)
Exemple #7
0
    def test_6(self):
        """test execution of sections, report, readmap for a static model"""
        myModel = mcTestModels.dynamicModel()
        dynFrw = df.DynamicFramework(myModel, 10)
        dynFrw.setQuiet(True)
        mcFw = mf.MonteCarloFramework(dynFrw, 5)
        mcFw.setQuiet(True)
        # see if existing directories were emptied
        for directory in range(1, 6):
            assert len(os.listdir(str(directory))) == 0

        mcFw.run()

        filesInitialCreated = True
        filesDynamicCreated = True
        filesPremcCreated = True
        filesPostmcCreated = True

        for sample in range(1, 6):
            nameInit = "mcdi%d.map" % (sample)
            if not os.path.isfile(os.path.join(str(sample), nameInit)):
                filesInitialCreated = False

            for timestep in range(1, 11):
                nameDyn = fb.generateNameT("mcdd%d" % (sample), timestep)
                if not os.path.isfile(os.path.join(str(sample), nameDyn)):
                    filesDynamicCreated = False

            for timestep in range(1, 11):
                namePre = "premc_%d_%d.map" % (sample, timestep)
                namePost = "postmc_%d_%d.map" % (sample, timestep)

                if not os.path.isfile(namePre):
                    filesPremcCreated = False
                if not os.path.isfile(namePost):
                    filesPostmcCreated = False

        self.assertTrue(filesInitialCreated)
        self.assertTrue(filesPremcCreated)
        self.assertTrue(filesPostmcCreated)
        self.assertTrue(filesDynamicCreated)
Exemple #8
0
    def test_8(self):
        """ test not removing sample directories """

        # Create output from a previous run
        for directory in range(1, 6):
            dirname = '{}'.format(directory)
            shutil.rmtree(dirname)
            os.mkdir('{}'.format(directory))
            with open(os.path.join(dirname, 'sentinel.txt'), 'w') as content:
                content.write('dummy text')

        myModel = mcTestModels.dynamicModel()
        dynFrw = df.DynamicFramework(myModel, 10)
        mcFw = mf.MonteCarloFramework(dynFrw, 5, remove_dirs=False)

        file_exists = True
        for directory in range(1, 6):
            dirname = '{}'.format(directory)
            if not os.path.exists(os.path.join(dirname, 'sentinel.txt')):
                file_exists = False

        self.assertTrue(file_exists)
Exemple #9
0
 def test_7(self):
     """ test random seed reset while forking """
     myModel = mcTestModels.randomModel()
     dynFrw = df.DynamicFramework(myModel, 2)
     dynFrw.setQuiet(True)
     mcFw = mf.MonteCarloFramework(dynFrw, 2)
     mcFw.setQuiet(True)
     mcFw.setForkSamples(True)
     mcFw.run()
     pyVal1 = pcraster.cellvalue(
         pcraster.readmap(os.path.join("1", "pyVal.map")), 1, 1)[0]
     pyVal2 = pcraster.cellvalue(
         pcraster.readmap(os.path.join("2", "pyVal.map")), 1, 1)[0]
     pcrVal1 = pcraster.cellvalue(
         pcraster.readmap(os.path.join("1", "pcrVal.map")), 1, 1)[0]
     pcrVal2 = pcraster.cellvalue(
         pcraster.readmap(os.path.join("2", "pcrVal.map")), 1, 1)[0]
     npVal1 = pcraster.cellvalue(
         pcraster.readmap(os.path.join("1", "npVal.map")), 1, 1)[0]
     npVal2 = pcraster.cellvalue(
         pcraster.readmap(os.path.join("2", "npVal.map")), 1, 1)[0]
     self.assertNotEqual(pyVal1, pyVal2)
     self.assertNotEqual(pcrVal1, pcrVal2)
     self.assertNotEqual(npVal1, npVal2)
Exemple #10
0
    def test_001(self):
        """test requirements of the user model class"""
        staticModel = pfTestModels.StaticWithoutAll()
        staticModelFrw = sf.StaticFramework(staticModel)
        try:
            pfModel = pf.SequentialImportanceResamplingFramework(
                staticModelFrw)
        except fb.FrameworkError as e:
            self.assertEqual(str(e),
                             "Model must be instance of MonteCarloFramework")

        # updateWeight
        staticModel = pfTestModels.StaticWithoutAll()
        staticModelFrw = sf.StaticFramework(staticModel)
        staticMcFrw = mc.MonteCarloFramework(staticModelFrw, 5)
        try:
            pfModel = pf.SequentialImportanceResamplingFramework(staticMcFrw)
        except fb.FrameworkError as e:
            self.assertEqual(
                str(e),
                "Cannot run particle filter framework: Implement 'updateWeight' method"
            )
        try:
            pfModel = pf.ResidualResamplingFramework(staticMcFrw)
        except fb.FrameworkError as e:
            self.assertEqual(
                str(e),
                "Cannot run particle filter framework: Implement 'updateWeight' method"
            )

        dynamicModel = pfTestModels.DynamicWithoutAll()
        dynamicModelFrw = sf.StaticFramework(dynamicModel)
        dynamicMcFrw = mc.MonteCarloFramework(dynamicModelFrw, 5)
        try:
            pfModel = pf.SequentialImportanceResamplingFramework(dynamicMcFrw)
        except fb.FrameworkError as e:
            self.assertEqual(
                str(e),
                "Cannot run particle filter framework: Implement 'updateWeight' method"
            )
        try:
            pfModel = pf.ResidualResamplingFramework(dynamicMcFrw)
        except fb.FrameworkError as e:
            self.assertEqual(
                str(e),
                "Cannot run particle filter framework: Implement 'updateWeight' method"
            )

        # suspend
        staticModel = pfTestModels.StaticWithoutSuspend()
        staticModelFrw = sf.StaticFramework(staticModel)
        staticMcFrw = mc.MonteCarloFramework(staticModelFrw, 5)
        try:
            pfModel = pf.SequentialImportanceResamplingFramework(staticMcFrw)
        except fb.FrameworkError as e:
            self.assertEqual(
                str(e),
                "Cannot run particle filter framework: Implement 'suspend' method"
            )
        try:
            pfModel = pf.ResidualResamplingFramework(staticMcFrw)
        except fb.FrameworkError as e:
            self.assertEqual(
                str(e),
                "Cannot run particle filter framework: Implement 'suspend' method"
            )

        dynamicModel = pfTestModels.DynamicWithoutSuspend()
        dynamicModelFrw = sf.StaticFramework(dynamicModel)
        dynamicMcFrw = mc.MonteCarloFramework(dynamicModelFrw, 5)
        try:
            pfModel = pf.SequentialImportanceResamplingFramework(dynamicMcFrw)
        except fb.FrameworkError as e:
            self.assertEqual(
                str(e),
                "Cannot run particle filter framework: Implement 'suspend' method"
            )
        try:
            pfModel = pf.ResidualResamplingFramework(dynamicMcFrw)
        except fb.FrameworkError as e:
            self.assertEqual(
                str(e),
                "Cannot run particle filter framework: Implement 'suspend' method"
            )

        # resume
        staticModel = pfTestModels.StaticWithoutResume()
        staticModelFrw = sf.StaticFramework(staticModel)
        staticMcFrw = mc.MonteCarloFramework(staticModelFrw, 5)
        try:
            pfModel = pf.SequentialImportanceResamplingFramework(staticMcFrw)
        except fb.FrameworkError as e:
            self.assertEqual(
                str(e),
                "Cannot run particle filter framework: Implement 'resume' method"
            )
        try:
            pfModel = pf.ResidualResamplingFramework(staticMcFrw)
        except fb.FrameworkError as e:
            self.assertEqual(
                str(e),
                "Cannot run particle filter framework: Implement 'resume' method"
            )

        dynamicModel = pfTestModels.DynamicWithoutResume()
        dynamicModelFrw = sf.StaticFramework(dynamicModel)
        dynamicMcFrw = mc.MonteCarloFramework(dynamicModelFrw, 5)
        try:
            pfModel = pf.SequentialImportanceResamplingFramework(dynamicMcFrw)
        except fb.FrameworkError as e:
            self.assertEqual(
                str(e),
                "Cannot run particle filter framework: Implement 'resume' method"
            )
        try:
            pfModel = pf.ResidualResamplingFramework(dynamicMcFrw)
        except fb.FrameworkError as e:
            self.assertEqual(
                str(e),
                "Cannot run particle filter framework: Implement 'resume' method"
            )