コード例 #1
0
        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
コード例 #2
0
ファイル: test_germselection.py プロジェクト: silky/pyGSTi
 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)
コード例 #3
0
 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)
コード例 #4
0
 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)
コード例 #5
0
ファイル: test_model.py プロジェクト: silky/pyGSTi
 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)
コード例 #6
0
ファイル: test_directx.py プロジェクト: silky/pyGSTi
 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)
コード例 #7
0
    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)
コード例 #8
0
 def setUp(self):
     super(LogLTester, self).setUp()
     self.circuits = construction.circuit_list([('Gx',), ('Gy',), ('Gx', 'Gx')])
コード例 #9
0
ファイル: test_germselection.py プロジェクト: silky/pyGSTi
 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
     )
コード例 #10
0
ファイル: test_germselection.py プロジェクト: silky/pyGSTi
 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,
     )
コード例 #11
0
 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)]
コード例 #12
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)