def make_lsgst_lists(opLabels, fiducialList, germList, maxLengthList): singleOps = pc.circuit_list([(g, ) for g in opLabels]) lgstStrings = pc.list_lgst_circuits(fiducialList, fiducialList, opLabels) lsgst_list = pc.circuit_list([ () ]) #running list of all strings so far if maxLengthList[0] == 0: lsgst_listOfLists = [lgstStrings] maxLengthList = maxLengthList[1:] else: lsgst_listOfLists = [] for maxLen in maxLengthList: lsgst_list += pc.create_circuit_list( "f0+R(germ,N)+f1", f0=fiducialList, f1=fiducialList, germ=germList, N=maxLen, R=pc.repeat_with_max_length, order=('germ', 'f0', 'f1')) lsgst_listOfLists.append( pygsti.remove_duplicates(lgstStrings + lsgst_list)) print("%d LSGST sets w/lengths" % len(lsgst_listOfLists), map(len, lsgst_listOfLists)) return lsgst_listOfLists
def test_grasp_germ_set_optimization_force_strings(self): forceStrs = pc.circuit_list([('Gx',), ('Gy')]) soln = germsel.grasp_germ_set_optimization( self.neighbors, self.germ_set, alpha=0.1, force=forceStrs, **self.options ) for string in forceStrs: self.assertIn(string, soln)
def test_optimize_integer_fiducials_slack_insufficient_fiducials(self): insuff_fids = pc.circuit_list([('Gx',)]) weights = np.ones(len(insuff_fids), 'i') fiducials = fs.optimize_integer_fiducials_slack( self.model, insuff_fids, fixedSlack=0.1, initialWeights=weights, **self.options ) self.assertIsNone(fiducials)
def test_do_lgst_raises_on_bad_fiducials(self): bad_fids = pc.circuit_list([('Gx', ), ('Gx', ), ('Gx', ), ('Gx', )]) with self.assertRaises(ValueError): core.do_lgst(self.ds, bad_fids, bad_fids, self.model, svdTruncateTo=4) # bad fiducials (rank deficient)
def test_bulk_evaltree(self): # Test tree construction circuits = pc.circuit_list([('Gx', ), ('Gy', ), ('Gx', 'Gy'), ('Gy', 'Gy'), ('Gy', 'Gx'), ('Gx', 'Gx', 'Gx'), ('Gx', 'Gy', 'Gx'), ('Gx', 'Gy', 'Gy'), ('Gy', 'Gy', 'Gy'), ('Gy', 'Gx', 'Gx')]) evt, lookup, outcome_lookup = self.model.bulk_evaltree(circuits, maxTreeSize=4) evt, lookup, outcome_lookup = self.model.bulk_evaltree(circuits, minSubtrees=2, maxTreeSize=4) with self.assertNoWarns(): self.model.bulk_evaltree(circuits, minSubtrees=3, maxTreeSize=8)
def setUpClass(cls): super(DirectXTester, cls).setUpClass() cls._tgt = fixtures.model.copy() cls.prepStrs = fixtures.fiducials cls.effectStrs = fixtures.fiducials cls.strs = pc.circuit_list([ (), # always need empty string ('Gx', ), ('Gy', ), ('Gi', ), # need these for includeTargetOps=True ('Gx', 'Gx'), ('Gx', 'Gy', 'Gx') # additional ]) expstrs = pc.create_circuit_list("f0+base+f1", order=['f0', 'f1', 'base'], f0=fixtures.fiducials, f1=fixtures.fiducials, base=cls.strs) cls._ds = pc.generate_fake_data(fixtures.datagen_gateset.copy(), expstrs, 1000, 'multinomial', seed=_SEED)
def setUp(self): super(DataSetConstructionTestCase, self).setUp() self.model = pc.build_explicit_model( [('Q0', )], ['Gi', 'Gx', 'Gy'], ["I(Q0)", "X(pi/2,Q0)", "Y(pi/2,Q0)"]) self.depolGateset = self.model.depolarize(op_noise=0.1) def make_lsgst_lists(opLabels, fiducialList, germList, maxLengthList): singleOps = pc.circuit_list([(g, ) for g in opLabels]) lgstStrings = pc.list_lgst_circuits(fiducialList, fiducialList, opLabels) lsgst_list = pc.circuit_list([ () ]) #running list of all strings so far if maxLengthList[0] == 0: lsgst_listOfLists = [lgstStrings] maxLengthList = maxLengthList[1:] else: lsgst_listOfLists = [] for maxLen in maxLengthList: lsgst_list += pc.create_circuit_list( "f0+R(germ,N)+f1", f0=fiducialList, f1=fiducialList, germ=germList, N=maxLen, R=pc.repeat_with_max_length, order=('germ', 'f0', 'f1')) lsgst_listOfLists.append( pygsti.remove_duplicates(lgstStrings + lsgst_list)) print("%d LSGST sets w/lengths" % len(lsgst_listOfLists), map(len, lsgst_listOfLists)) return lsgst_listOfLists gates = ['Gi', 'Gx', 'Gy'] fiducials = pc.circuit_list([(), ('Gx', ), ('Gy', ), ('Gx', 'Gx'), ('Gx', 'Gx', 'Gx'), ('Gy', 'Gy', 'Gy') ]) # fiducials for 1Q MUB germs = pc.circuit_list([('Gx', ), ('Gy', ), ('Gi', ), ( 'Gx', 'Gy', ), ( 'Gx', 'Gy', 'Gi', ), ( 'Gx', 'Gi', 'Gy', ), ( 'Gx', 'Gi', 'Gi', ), ( 'Gy', 'Gi', 'Gi', ), ( 'Gx', 'Gx', 'Gi', 'Gy', ), ( 'Gx', 'Gy', 'Gy', 'Gi', ), ( 'Gx', 'Gx', 'Gy', 'Gx', 'Gy', 'Gy', )]) maxLengths = [0, 1, 2, 4, 8, 16, 32, 64, 128, 256] self.lsgst_lists = make_lsgst_lists(gates, fiducials, germs, maxLengths) self.circuit_list = self.lsgst_lists[-1] self.dataset = pc.generate_fake_data(self.depolGateset, self.circuit_list, nSamples=1000, sampleError='binomial', seed=100)
def setUp(self): super(LogLTester, self).setUp() self.circuits = construction.circuit_list([('Gx',), ('Gy',), ('Gx', 'Gx')])
def test_build_up_breadth_force_strings(self): forceStrs = pc.circuit_list([('Gx',), ('Gy')]) germs = germsel.build_up_breadth( self.neighbors, self.germ_set, force=forceStrs, **self.options )
def test_optimize_integer_germs_slack_force_strings(self): forceStrs = pc.circuit_list([('Gx',), ('Gy')]) finalGerms = germsel.optimize_integer_germs_slack( self.mdl_target_noisy, self.germ_set, fixedSlack=0.1, force=forceStrs, verbosity=4, )
def setUp(self): super(FiducialPairReductionSmallData, self).setUp() self.preps = pc.circuit_list([('Gx', )]) self.effects = self.preps self.germs = pc.circuit_list([('Gx', ), ('Gy', )]) self.fiducial_pairs = [(0, 0)]
def test_find_sufficient_fiducial_pairs_per_germ_raises_on_insufficient_fiducials( self): insuff_fids = pc.circuit_list([('Gx', )]) with self.assertRaises(ValueError): fpr.find_sufficient_fiducial_pairs_per_germ( self.model, insuff_fids, insuff_fids, self.germs)