def test_total_time(self):
        analysis = paths.ChannelAnalysis(steps=None, channels=self.channels)
        analysis._results = self.toy_results

        analysis.treat_multiples = 'newest'
        total_time = analysis.total_time
        assert_equal(total_time, {'a': 5, 'b': 4, 'c': 1})

        analysis.treat_multiples = 'oldest'
        total_time = analysis.total_time
        assert_equal(total_time, {'a': 6, 'b': 4})
        assert_equal(total_time['c'], 0)

        analysis.treat_multiples = 'all'
        total_time = analysis.total_time
        assert_equal(total_time, {'a': 7, 'b': 6, 'c': 2})

        analysis.treat_multiples = 'multiple'
        total_time = analysis.total_time
        assert_equal(total_time, {
            'a': 4,
            'b': 2,
            'a,b': 2,
            'b,c': 1,
            'a,b,c': 1
        })
    def test_residence_times_with_none(self):
        analysis = paths.ChannelAnalysis(steps=None, channels=self.channels)
        analysis._results = self.results_with_none

        residence_times = analysis.residence_times
        assert_equal(residence_times,
                     {'a': [2, 3], 'b': [2, 1], 'None': [3]})
    def test_residence_times(self):
        analysis = paths.ChannelAnalysis(steps=None, channels=self.channels)
        analysis._results = self.toy_results

        analysis.treat_multiples = 'newest'
        residence_times = analysis.residence_times
        assert_equal(residence_times, {'a': [3, 2], 'b': [4], 'c': [1]})

        analysis.treat_multiples = 'oldest'
        residence_times = analysis.residence_times
        assert_equal(residence_times, {'a': [5, 1], 'b': [4]})

        analysis.treat_multiples = 'all'
        residence_times = analysis.residence_times
        assert_equal(residence_times, {'a': [5, 2], 'b': [6], 'c': [2]})

        analysis.treat_multiples = 'multiple'
        residence_times = analysis.residence_times
        assert_equal(residence_times, {
            'a': [3, 1],
            'b': [2],
            'a,b': [2],
            'b,c': [1],
            'a,b,c': [1]
        })
    def test_switching(self):
        analysis = paths.ChannelAnalysis(steps=None, channels=self.channels)
        analysis._results = self.toy_results
        #nan = float('nan')
        nan = 0  # self transitions are 0


        analysis.treat_multiples = 'newest'
        df = analysis.switching_matrix
        expected = np.array([[nan, 1, 0], [0, nan, 1], [1, 0, nan]])
        assert_array_almost_equal(df.values, expected)

        analysis.treat_multiples = 'oldest'
        df = analysis.switching_matrix
        expected = np.array([[nan, 1], [1, nan]]) # no column for c!
        assert_array_almost_equal(df.values, expected)

        analysis.treat_multiples = 'multiple'
        df = analysis.switching_matrix
        # 'a', 'b', 'a,b', 'b,c', 'a,b,c'
        expected = np.array([[nan, 0, 1, 0, 0],
                             [0, nan, 0, 1, 0],
                             [0, 1, nan, 0, 0],
                             [0, 0, 0, nan, 1],
                             [1, 0, 0, 0, nan]])
        assert_array_almost_equal(df.values, expected)
 def test_analyze_incr_decr(self):
     steps = [
         paths.MCStep(mccycle=0, active=self.incr_1),
         paths.MCStep(mccycle=1, active=self.decr_1)
     ]
     results = paths.ChannelAnalysis(steps, self.channels)
     assert_equal(results._results,
                  {'incr': [(0,1)], 'decr': [(1,2)], None: []})
    def test_switching_with_none(self):
        analysis = paths.ChannelAnalysis(steps=None, channels=self.channels)
        analysis._results = self.results_with_none
        nan = 0  # self transitions are 0

        analysis.treat_multiples = 'newest'
        df = analysis.switching_matrix

        # None, a, b
        expected = np.array([[nan, 0, 1], [1, nan, 1], [0, 1, nan]])
        assert_array_almost_equal(df.as_matrix(), expected)
 def test_treat_multiples(self):
     obj = paths.ChannelAnalysis(steps=None, channels=self.channels)
     assert_equal(obj.treat_multiples, 'all')
     obj.treat_multiples = 'oldest'
     assert_equal(obj.treat_multiples, 'oldest')
     obj.treat_multiples = 'newest'
     assert_equal(obj.treat_multiples, 'newest')
     obj.treat_multiples = 'multiple'
     assert_equal(obj.treat_multiples, 'multiple')
     obj.treat_multiples = 'all'
     assert_equal(obj.treat_multiples, 'all')
示例#8
0
    def test_storage(self):
        analyzer = paths.ChannelAnalysis(steps=None, channels=self.channels)
        analyzer._results = self.toy_results
        analyzer.treat_multiples = 'newest'
        storage = paths.Storage(data_filename('test.nc'), 'w')
        storage.tag['analyzer'] = analyzer
        storage.sync()
        storage.close()

        new_store = paths.Storage(data_filename('test.nc'), 'r')
        reloaded = storage.tag['analyzer']
        assert_equal(reloaded._results, self.toy_results)

        if os.path.isfile(data_filename('test.nc')):
            os.remove(data_filename('test.nc'))
    def test_status(self):
        analysis = paths.ChannelAnalysis(steps=None, channels=self.channels)
        analysis._results = self.toy_results

        analysis.treat_multiples = 'newest'
        assert_equal(analysis.status(4), 'b')
        assert_equal(analysis.status(8), 'a')

        analysis.treat_multiples = 'oldest'
        assert_equal(analysis.status(4), 'a')
        assert_equal(analysis.status(8), 'b')

        analysis.treat_multiples = 'multiple'
        assert_equal(analysis.status(4), 'a,b')
        assert_equal(analysis.status(8), 'a,b,c')

        analysis.treat_multiples = 'all'
        assert_equal(analysis.status(4), 'a,b')
        assert_equal(analysis.status(8), 'a,b,c')
    def test_bad_status_number(self):
        analysis = paths.ChannelAnalysis(steps=None, channels=self.channels)
        analysis._results = self.toy_results

        analysis.status(10)
 def test_status_with_none(self):
     analysis = paths.ChannelAnalysis(steps=None, channels=self.channels)
     analysis._results = self.results_with_none
     assert_equal(analysis.status(4), 'None')
    def test_total_time_with_none(self):
        analysis = paths.ChannelAnalysis(steps=None, channels=self.channels)
        analysis._results = self.results_with_none

        total_time = analysis.total_time
        assert_equal(total_time, {'a': 5, 'b': 3, 'None': 3})
 def test_bad_treat_multiples(self):
     obj = paths.ChannelAnalysis(steps=None, channels=self.channels)
     assert_equal(obj.treat_multiples, 'all')
     obj.treat_multiples = 'bad_string'
 def test_empty(self):
     obj = paths.ChannelAnalysis(steps=None, channels=self.channels)
     empty_results = {c: [] for c in list(self.channels.keys()) + [None]}
     assert_equal(obj._results, empty_results)