Exemple #1
0
 def test_high_photon(self):
     """Test if function raises a ``ValueError`` if ``photon_number`` is so high that it
     cannot correspond to a sample given the constraints of ``max_count_per_mode`` and
     ``modes``"""
     with pytest.raises(ValueError,
                        match="No valid samples can be generated."):
         similarity.event_to_sample(5, 1, 4)
    def get_event_probability_mc(self, event: tuple, samples: int = 1000):
        """
        Calculate approximate probability of the event with Monte Carlo.
        Similar to function sfs.prob_event_mc()

        :param event: a specification of an event. Tuple of length 2
        :param samples: number of Monte Carlo samples.
        :return: the mc approximate probability of the given event
        """
        photons, max_photons_per_mode = event

        prob = 0
        for _ in range(samples):
            sample = sfs.event_to_sample(photons, max_photons_per_mode, self.mode_count)
            prob += self.get_probability(sample)

        prob = prob * sfs.event_cardinality(photons, max_photons_per_mode, self.mode_count) / samples

        return prob
 def test_sample_max_count(self, photon_num, modes_dim, count):
     """Test if function returns a sample that has maximum element not exceeding ``count``."""
     samp = similarity.event_to_sample(photon_num, count, modes_dim)
     assert max(samp) <= count
 def test_sample_sum(self, photon_num, modes_dim, count):
     """Test if function returns a sample that has the correct number of photons."""
     samp = similarity.event_to_sample(photon_num, count, modes_dim)
     assert sum(samp) == photon_num
 def test_sample_length(self, photon_num, modes_dim, count):
     """Test if function returns a sample that is of correct length ``modes_dim``."""
     samp = similarity.event_to_sample(photon_num, count, modes_dim)
     assert len(samp) == modes_dim
 def test_low_count(self):
     """Test if function raises a ``ValueError`` if ``max_count_per_mode`` is negative."""
     with pytest.raises(ValueError, match="Maximum number of photons"):
         similarity.event_to_sample(2, -1, 5)