pyGSTi 0.9.12__cp38-cp38-win32.whl → 0.9.13__cp38-cp38-win32.whl
Sign up to get free protection for your applications and to get access to all the features.
- pyGSTi-0.9.13.dist-info/METADATA +185 -0
- {pyGSTi-0.9.12.dist-info → pyGSTi-0.9.13.dist-info}/RECORD +211 -220
- {pyGSTi-0.9.12.dist-info → pyGSTi-0.9.13.dist-info}/WHEEL +1 -1
- pygsti/_version.py +2 -2
- pygsti/algorithms/contract.py +1 -1
- pygsti/algorithms/core.py +62 -35
- pygsti/algorithms/fiducialpairreduction.py +95 -110
- pygsti/algorithms/fiducialselection.py +17 -8
- pygsti/algorithms/gaugeopt.py +2 -2
- pygsti/algorithms/germselection.py +87 -77
- pygsti/algorithms/mirroring.py +0 -388
- pygsti/algorithms/randomcircuit.py +165 -1333
- pygsti/algorithms/rbfit.py +0 -234
- pygsti/baseobjs/basis.py +94 -396
- pygsti/baseobjs/errorgenbasis.py +0 -132
- pygsti/baseobjs/errorgenspace.py +0 -10
- pygsti/baseobjs/label.py +52 -168
- pygsti/baseobjs/opcalc/fastopcalc.cp38-win32.pyd +0 -0
- pygsti/baseobjs/opcalc/fastopcalc.pyx +2 -2
- pygsti/baseobjs/polynomial.py +13 -595
- pygsti/baseobjs/protectedarray.py +72 -132
- pygsti/baseobjs/statespace.py +1 -0
- pygsti/circuits/__init__.py +1 -1
- pygsti/circuits/circuit.py +753 -504
- pygsti/circuits/circuitconstruction.py +0 -4
- pygsti/circuits/circuitlist.py +47 -5
- pygsti/circuits/circuitparser/__init__.py +8 -8
- pygsti/circuits/circuitparser/fastcircuitparser.cp38-win32.pyd +0 -0
- pygsti/circuits/circuitstructure.py +3 -3
- pygsti/circuits/cloudcircuitconstruction.py +27 -14
- pygsti/data/datacomparator.py +4 -9
- pygsti/data/dataset.py +51 -46
- pygsti/data/hypothesistest.py +0 -7
- pygsti/drivers/bootstrap.py +0 -49
- pygsti/drivers/longsequence.py +46 -10
- pygsti/evotypes/basereps_cython.cp38-win32.pyd +0 -0
- pygsti/evotypes/chp/opreps.py +0 -61
- pygsti/evotypes/chp/statereps.py +0 -32
- pygsti/evotypes/densitymx/effectcreps.cpp +9 -10
- pygsti/evotypes/densitymx/effectreps.cp38-win32.pyd +0 -0
- pygsti/evotypes/densitymx/effectreps.pyx +1 -1
- pygsti/evotypes/densitymx/opreps.cp38-win32.pyd +0 -0
- pygsti/evotypes/densitymx/opreps.pyx +2 -2
- pygsti/evotypes/densitymx/statereps.cp38-win32.pyd +0 -0
- pygsti/evotypes/densitymx/statereps.pyx +1 -1
- pygsti/evotypes/densitymx_slow/effectreps.py +7 -23
- pygsti/evotypes/densitymx_slow/opreps.py +16 -23
- pygsti/evotypes/densitymx_slow/statereps.py +10 -3
- pygsti/evotypes/evotype.py +39 -2
- pygsti/evotypes/stabilizer/effectreps.cp38-win32.pyd +0 -0
- pygsti/evotypes/stabilizer/effectreps.pyx +0 -4
- pygsti/evotypes/stabilizer/opreps.cp38-win32.pyd +0 -0
- pygsti/evotypes/stabilizer/opreps.pyx +0 -4
- pygsti/evotypes/stabilizer/statereps.cp38-win32.pyd +0 -0
- pygsti/evotypes/stabilizer/statereps.pyx +1 -5
- pygsti/evotypes/stabilizer/termreps.cp38-win32.pyd +0 -0
- pygsti/evotypes/stabilizer/termreps.pyx +0 -7
- pygsti/evotypes/stabilizer_slow/effectreps.py +0 -22
- pygsti/evotypes/stabilizer_slow/opreps.py +0 -4
- pygsti/evotypes/stabilizer_slow/statereps.py +0 -4
- pygsti/evotypes/statevec/effectreps.cp38-win32.pyd +0 -0
- pygsti/evotypes/statevec/effectreps.pyx +1 -1
- pygsti/evotypes/statevec/opreps.cp38-win32.pyd +0 -0
- pygsti/evotypes/statevec/opreps.pyx +2 -2
- pygsti/evotypes/statevec/statereps.cp38-win32.pyd +0 -0
- pygsti/evotypes/statevec/statereps.pyx +1 -1
- pygsti/evotypes/statevec/termreps.cp38-win32.pyd +0 -0
- pygsti/evotypes/statevec/termreps.pyx +0 -7
- pygsti/evotypes/statevec_slow/effectreps.py +0 -3
- pygsti/evotypes/statevec_slow/opreps.py +0 -5
- pygsti/extras/__init__.py +0 -1
- pygsti/extras/drift/signal.py +1 -1
- pygsti/extras/drift/stabilityanalyzer.py +3 -1
- pygsti/extras/interpygate/__init__.py +12 -0
- pygsti/extras/interpygate/core.py +0 -36
- pygsti/extras/interpygate/process_tomography.py +44 -10
- pygsti/extras/rpe/rpeconstruction.py +0 -2
- pygsti/forwardsims/__init__.py +1 -0
- pygsti/forwardsims/forwardsim.py +50 -93
- pygsti/forwardsims/mapforwardsim.py +78 -20
- pygsti/forwardsims/mapforwardsim_calc_densitymx.cp38-win32.pyd +0 -0
- pygsti/forwardsims/mapforwardsim_calc_densitymx.pyx +65 -66
- pygsti/forwardsims/mapforwardsim_calc_generic.py +91 -13
- pygsti/forwardsims/matrixforwardsim.py +72 -17
- pygsti/forwardsims/termforwardsim.py +9 -111
- pygsti/forwardsims/termforwardsim_calc_stabilizer.cp38-win32.pyd +0 -0
- pygsti/forwardsims/termforwardsim_calc_statevec.cp38-win32.pyd +0 -0
- pygsti/forwardsims/termforwardsim_calc_statevec.pyx +0 -651
- pygsti/forwardsims/torchfwdsim.py +265 -0
- pygsti/forwardsims/weakforwardsim.py +2 -2
- pygsti/io/__init__.py +1 -2
- pygsti/io/mongodb.py +0 -2
- pygsti/io/stdinput.py +6 -22
- pygsti/layouts/copalayout.py +10 -12
- pygsti/layouts/distlayout.py +0 -40
- pygsti/layouts/maplayout.py +103 -25
- pygsti/layouts/matrixlayout.py +99 -60
- pygsti/layouts/prefixtable.py +1534 -52
- pygsti/layouts/termlayout.py +1 -1
- pygsti/modelmembers/instruments/instrument.py +3 -3
- pygsti/modelmembers/instruments/tpinstrument.py +2 -2
- pygsti/modelmembers/modelmember.py +0 -17
- pygsti/modelmembers/operations/__init__.py +3 -4
- pygsti/modelmembers/operations/affineshiftop.py +206 -0
- pygsti/modelmembers/operations/composederrorgen.py +1 -1
- pygsti/modelmembers/operations/composedop.py +1 -24
- pygsti/modelmembers/operations/denseop.py +5 -5
- pygsti/modelmembers/operations/eigpdenseop.py +2 -2
- pygsti/modelmembers/operations/embeddederrorgen.py +1 -1
- pygsti/modelmembers/operations/embeddedop.py +0 -1
- pygsti/modelmembers/operations/experrorgenop.py +5 -2
- pygsti/modelmembers/operations/fullarbitraryop.py +1 -0
- pygsti/modelmembers/operations/fullcptpop.py +2 -2
- pygsti/modelmembers/operations/fulltpop.py +28 -6
- pygsti/modelmembers/operations/fullunitaryop.py +5 -4
- pygsti/modelmembers/operations/lindbladcoefficients.py +93 -78
- pygsti/modelmembers/operations/lindbladerrorgen.py +268 -441
- pygsti/modelmembers/operations/linearop.py +7 -27
- pygsti/modelmembers/operations/opfactory.py +1 -1
- pygsti/modelmembers/operations/repeatedop.py +1 -24
- pygsti/modelmembers/operations/staticstdop.py +1 -1
- pygsti/modelmembers/povms/__init__.py +3 -3
- pygsti/modelmembers/povms/basepovm.py +7 -36
- pygsti/modelmembers/povms/complementeffect.py +4 -9
- pygsti/modelmembers/povms/composedeffect.py +0 -320
- pygsti/modelmembers/povms/computationaleffect.py +1 -1
- pygsti/modelmembers/povms/computationalpovm.py +3 -1
- pygsti/modelmembers/povms/effect.py +3 -5
- pygsti/modelmembers/povms/marginalizedpovm.py +3 -81
- pygsti/modelmembers/povms/tppovm.py +74 -2
- pygsti/modelmembers/states/__init__.py +2 -5
- pygsti/modelmembers/states/composedstate.py +0 -317
- pygsti/modelmembers/states/computationalstate.py +3 -3
- pygsti/modelmembers/states/cptpstate.py +4 -4
- pygsti/modelmembers/states/densestate.py +10 -8
- pygsti/modelmembers/states/fullpurestate.py +0 -24
- pygsti/modelmembers/states/purestate.py +1 -1
- pygsti/modelmembers/states/state.py +5 -6
- pygsti/modelmembers/states/tpstate.py +28 -10
- pygsti/modelmembers/term.py +3 -6
- pygsti/modelmembers/torchable.py +50 -0
- pygsti/modelpacks/_modelpack.py +1 -1
- pygsti/modelpacks/smq1Q_ZN.py +3 -1
- pygsti/modelpacks/smq2Q_XXYYII.py +2 -1
- pygsti/modelpacks/smq2Q_XY.py +3 -3
- pygsti/modelpacks/smq2Q_XYI.py +2 -2
- pygsti/modelpacks/smq2Q_XYICNOT.py +3 -3
- pygsti/modelpacks/smq2Q_XYICPHASE.py +3 -3
- pygsti/modelpacks/smq2Q_XYXX.py +1 -1
- pygsti/modelpacks/smq2Q_XYZICNOT.py +3 -3
- pygsti/modelpacks/smq2Q_XYZZ.py +1 -1
- pygsti/modelpacks/stdtarget.py +0 -121
- pygsti/models/cloudnoisemodel.py +1 -2
- pygsti/models/explicitcalc.py +3 -3
- pygsti/models/explicitmodel.py +3 -13
- pygsti/models/fogistore.py +5 -3
- pygsti/models/localnoisemodel.py +1 -2
- pygsti/models/memberdict.py +0 -12
- pygsti/models/model.py +801 -68
- pygsti/models/modelconstruction.py +4 -4
- pygsti/models/modelnoise.py +2 -2
- pygsti/models/modelparaminterposer.py +1 -1
- pygsti/models/oplessmodel.py +1 -1
- pygsti/models/qutrit.py +15 -14
- pygsti/objectivefns/objectivefns.py +75 -140
- pygsti/objectivefns/wildcardbudget.py +2 -7
- pygsti/optimize/__init__.py +1 -0
- pygsti/optimize/arraysinterface.py +28 -0
- pygsti/optimize/customcg.py +0 -12
- pygsti/optimize/customlm.py +129 -323
- pygsti/optimize/customsolve.py +2 -2
- pygsti/optimize/optimize.py +0 -84
- pygsti/optimize/simplerlm.py +841 -0
- pygsti/optimize/wildcardopt.py +19 -598
- pygsti/protocols/confidenceregionfactory.py +28 -14
- pygsti/protocols/estimate.py +31 -14
- pygsti/protocols/gst.py +238 -142
- pygsti/protocols/modeltest.py +19 -12
- pygsti/protocols/protocol.py +9 -37
- pygsti/protocols/rb.py +450 -79
- pygsti/protocols/treenode.py +8 -2
- pygsti/protocols/vb.py +108 -206
- pygsti/protocols/vbdataframe.py +1 -1
- pygsti/report/factory.py +0 -15
- pygsti/report/fogidiagram.py +1 -17
- pygsti/report/modelfunction.py +12 -3
- pygsti/report/mpl_colormaps.py +1 -1
- pygsti/report/plothelpers.py +11 -3
- pygsti/report/report.py +16 -0
- pygsti/report/reportables.py +41 -37
- pygsti/report/templates/offline/pygsti_dashboard.css +6 -0
- pygsti/report/templates/offline/pygsti_dashboard.js +12 -0
- pygsti/report/workspace.py +2 -14
- pygsti/report/workspaceplots.py +328 -505
- pygsti/tools/basistools.py +9 -36
- pygsti/tools/edesigntools.py +124 -96
- pygsti/tools/fastcalc.cp38-win32.pyd +0 -0
- pygsti/tools/fastcalc.pyx +35 -81
- pygsti/tools/internalgates.py +151 -15
- pygsti/tools/jamiolkowski.py +5 -5
- pygsti/tools/lindbladtools.py +19 -11
- pygsti/tools/listtools.py +0 -114
- pygsti/tools/matrixmod2.py +1 -1
- pygsti/tools/matrixtools.py +173 -339
- pygsti/tools/nameddict.py +1 -1
- pygsti/tools/optools.py +154 -88
- pygsti/tools/pdftools.py +0 -25
- pygsti/tools/rbtheory.py +3 -320
- pygsti/tools/slicetools.py +64 -12
- pyGSTi-0.9.12.dist-info/METADATA +0 -157
- pygsti/algorithms/directx.py +0 -711
- pygsti/evotypes/qibo/__init__.py +0 -33
- pygsti/evotypes/qibo/effectreps.py +0 -78
- pygsti/evotypes/qibo/opreps.py +0 -376
- pygsti/evotypes/qibo/povmreps.py +0 -98
- pygsti/evotypes/qibo/statereps.py +0 -174
- pygsti/extras/rb/__init__.py +0 -13
- pygsti/extras/rb/benchmarker.py +0 -957
- pygsti/extras/rb/dataset.py +0 -378
- pygsti/extras/rb/io.py +0 -814
- pygsti/extras/rb/simulate.py +0 -1020
- pygsti/io/legacyio.py +0 -385
- pygsti/modelmembers/povms/denseeffect.py +0 -142
- {pyGSTi-0.9.12.dist-info → pyGSTi-0.9.13.dist-info}/LICENSE +0 -0
- {pyGSTi-0.9.12.dist-info → pyGSTi-0.9.13.dist-info}/top_level.txt +0 -0
@@ -27,6 +27,7 @@ from pygsti.circuits.circuitlist import CircuitList as _CircuitList
|
|
27
27
|
from pygsti.objectivefns.objectivefns import PoissonPicDeltaLogLFunction as _PoissonPicDeltaLogLFunction
|
28
28
|
from pygsti.objectivefns.objectivefns import Chi2Function as _Chi2Function
|
29
29
|
from pygsti.objectivefns.objectivefns import FreqWeightedChi2Function as _FreqWeightedChi2Function
|
30
|
+
from pygsti.models.explicitmodel import ExplicitOpModel as _ExplicitOpModel
|
30
31
|
|
31
32
|
|
32
33
|
# NON-MARKOVIAN ERROR BARS
|
@@ -482,9 +483,15 @@ class ConfidenceRegionFactory(_NicelySerializable):
|
|
482
483
|
label = projection_type
|
483
484
|
|
484
485
|
model = self.parent.models[self.model_lbl]
|
485
|
-
|
486
|
-
|
487
|
-
|
486
|
+
|
487
|
+
if projection_type != 'none':
|
488
|
+
nongauge_space, gauge_space = model.compute_nongauge_and_gauge_spaces()
|
489
|
+
self.nNonGaugeParams = nongauge_space.shape[1]
|
490
|
+
self.nGaugeParams = model.num_params - self.nNonGaugeParams
|
491
|
+
else:
|
492
|
+
# no projection means we take the entire space as non-gauge
|
493
|
+
self.nNonGaugeParams = model.num_params
|
494
|
+
self.nGaugeParams = 0
|
488
495
|
|
489
496
|
#Project Hessian onto non-gauge space
|
490
497
|
if projection_type == 'none':
|
@@ -691,13 +698,13 @@ class ConfidenceRegionFactory(_NicelySerializable):
|
|
691
698
|
sub_crf.project_hessian('none')
|
692
699
|
crfv = sub_crf.view(level)
|
693
700
|
|
694
|
-
operationCIs = _np.concatenate([crfv.retrieve_profile_likelihood_confidence_intervals(gl).
|
701
|
+
operationCIs = _np.concatenate([crfv.retrieve_profile_likelihood_confidence_intervals(gl).ravel()
|
695
702
|
for gl in model.operations])
|
696
703
|
return _np.sqrt(_np.sum(operationCIs**2))
|
697
704
|
|
698
705
|
#Run Minimization Algorithm
|
699
706
|
startM = _np.zeros((self.nNonGaugeParams, self.nGaugeParams), 'd')
|
700
|
-
x0 = startM.
|
707
|
+
x0 = startM.ravel()
|
701
708
|
print_obj_func = _opt.create_objfn_printer(_objective_func)
|
702
709
|
minSol = _opt.minimize(_objective_func, x0,
|
703
710
|
method=method, maxiter=maxiter,
|
@@ -727,7 +734,7 @@ class ConfidenceRegionFactory(_NicelySerializable):
|
|
727
734
|
self.circuit_list_lbl, projected_hessian, 0.0)
|
728
735
|
sub_crf.project_hessian('none')
|
729
736
|
crfv = sub_crf.view(level)
|
730
|
-
operationCIs = _np.concatenate([crfv.retrieve_profile_likelihood_confidence_intervals(gl).
|
737
|
+
operationCIs = _np.concatenate([crfv.retrieve_profile_likelihood_confidence_intervals(gl).ravel()
|
731
738
|
for gl in model.operations])
|
732
739
|
op_intrinsic_err = _np.sqrt(_np.mean(operationCIs**2))
|
733
740
|
|
@@ -738,7 +745,7 @@ class ConfidenceRegionFactory(_NicelySerializable):
|
|
738
745
|
self.circuit_list_lbl, projected_hessian, 0.0)
|
739
746
|
sub_crf.project_hessian('none')
|
740
747
|
crfv = sub_crf.view(level)
|
741
|
-
spamCIs = _np.concatenate([crfv.retrieve_profile_likelihood_confidence_intervals(sl).
|
748
|
+
spamCIs = _np.concatenate([crfv.retrieve_profile_likelihood_confidence_intervals(sl).ravel()
|
742
749
|
for sl in _itertools.chain(iter(model.preps),
|
743
750
|
iter(model.povms))])
|
744
751
|
spam_intrinsic_err = _np.sqrt(_np.mean(spamCIs**2))
|
@@ -755,9 +762,9 @@ class ConfidenceRegionFactory(_NicelySerializable):
|
|
755
762
|
sub_crf.project_hessian('none')
|
756
763
|
crfv = sub_crf.view(level)
|
757
764
|
|
758
|
-
operationCIs = _np.concatenate([crfv.retrieve_profile_likelihood_confidence_intervals(gl).
|
765
|
+
operationCIs = _np.concatenate([crfv.retrieve_profile_likelihood_confidence_intervals(gl).ravel()
|
759
766
|
for gl in model.operations])
|
760
|
-
spamCIs = _np.concatenate([crfv.retrieve_profile_likelihood_confidence_intervals(sl).
|
767
|
+
spamCIs = _np.concatenate([crfv.retrieve_profile_likelihood_confidence_intervals(sl).ravel()
|
761
768
|
for sl in _itertools.chain(iter(model.preps),
|
762
769
|
iter(model.povms))])
|
763
770
|
op_err = _np.sqrt(_np.mean(operationCIs**2))
|
@@ -1068,11 +1075,18 @@ class ConfidenceRegionFactoryView(object):
|
|
1068
1075
|
else:
|
1069
1076
|
# copy objects because we add eps to them below
|
1070
1077
|
typ, lbl = dependency
|
1071
|
-
if
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1078
|
+
if isinstance(mdl, _ExplicitOpModel):
|
1079
|
+
if typ == "gate": modelObj = mdl.operations[lbl]
|
1080
|
+
elif typ == "prep": modelObj = mdl.preps[lbl]
|
1081
|
+
elif typ == "povm": modelObj = mdl.povms[lbl]
|
1082
|
+
elif typ == "instrument": modelObj = mdl.instruments[lbl]
|
1083
|
+
else: raise ValueError("Invalid dependency type: %s" % typ)
|
1084
|
+
else:
|
1085
|
+
if typ == "gate": modelObj = mdl.operation_blks['gates'][lbl]
|
1086
|
+
elif typ == "prep": modelObj = mdl.prep_blks['layers'][lbl]
|
1087
|
+
elif typ == "povm": modelObj = mdl.povm_blks['layers'][lbl]
|
1088
|
+
elif typ == "instrument": modelObj = mdl.instrument_blks['layers'][lbl]
|
1089
|
+
else: raise ValueError("Invalid dependency type: %s" % typ)
|
1076
1090
|
all_gpindices.extend(modelObj.gpindices_as_array())
|
1077
1091
|
|
1078
1092
|
vec0 = mdl.to_vector()
|
pygsti/protocols/estimate.py
CHANGED
@@ -87,7 +87,6 @@ class Estimate(_MongoSerializable):
|
|
87
87
|
|
88
88
|
@classmethod
|
89
89
|
def _create_obj_from_doc_and_mongodb(cls, doc, mongodb, quick_load=False):
|
90
|
-
#def from_mongodb(cls, mongodb_collection, doc_id, ):
|
91
90
|
ret = cls.__new__(cls)
|
92
91
|
_MongoSerializable.__init__(ret, doc.get('_id', None))
|
93
92
|
ret.__dict__.update(_io.read_auxtree_from_mongodb_doc(mongodb, doc, 'auxfile_types', quick_load=quick_load))
|
@@ -277,7 +276,10 @@ class Estimate(_MongoSerializable):
|
|
277
276
|
Model
|
278
277
|
"""
|
279
278
|
goparams_list = [goparams] if hasattr(goparams, 'keys') else goparams
|
280
|
-
|
279
|
+
if goparams_list:
|
280
|
+
return goparams_list[0].get('model', self.models['final iteration estimate'])
|
281
|
+
else:
|
282
|
+
return None
|
281
283
|
|
282
284
|
def add_gaugeoptimized(self, goparams, model=None, label=None, comm=None, verbosity=None):
|
283
285
|
"""
|
@@ -331,8 +333,14 @@ class Estimate(_MongoSerializable):
|
|
331
333
|
label = "go%d" % i; i += 1
|
332
334
|
if (label not in self._gaugeopt_suite.gaugeopt_argument_dicts) and \
|
333
335
|
(label not in self.models): break
|
334
|
-
|
335
|
-
|
336
|
+
if hasattr(goparams, 'keys'):
|
337
|
+
goparams_list = [goparams]
|
338
|
+
elif goparams is None:
|
339
|
+
goparams_list = []
|
340
|
+
#since this will be empty much of the code/iteration below will
|
341
|
+
#be skipped.
|
342
|
+
else:
|
343
|
+
goparams_list = goparams
|
336
344
|
ordered_goparams = []
|
337
345
|
last_gs = None
|
338
346
|
|
@@ -350,11 +358,14 @@ class Estimate(_MongoSerializable):
|
|
350
358
|
printer = _VerbosityPrinter.create_printer(max_vb, printer_comm)
|
351
359
|
printer.log("-- Adding Gauge Optimized (%s) --" % label)
|
352
360
|
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
361
|
+
if model is not None:
|
362
|
+
last_gs = model # just use user-supplied result
|
363
|
+
#sort the parameters by name for consistency
|
364
|
+
for gop in goparams_list:
|
365
|
+
ordered_goparams.append(_collections.OrderedDict(
|
366
|
+
[(k, gop[k]) for k in sorted(list(gop.keys()))]))
|
367
|
+
else:
|
368
|
+
for i, gop in enumerate(goparams_list):
|
358
369
|
from ..algorithms import gaugeopt_to_target as _gaugeopt_to_target
|
359
370
|
default_model = default_target_model = False
|
360
371
|
gop = gop.copy() # so we don't change the caller's dict
|
@@ -398,14 +409,20 @@ class Estimate(_MongoSerializable):
|
|
398
409
|
if default_model: del gop['model']
|
399
410
|
if default_target_model: del gop['target_model']
|
400
411
|
|
401
|
-
|
402
|
-
|
403
|
-
|
412
|
+
#sort the parameters by name for consistency
|
413
|
+
ordered_goparams.append(_collections.OrderedDict(
|
414
|
+
[(k, gop[k]) for k in sorted(list(gop.keys()))]))
|
404
415
|
|
405
416
|
assert(last_gs is not None)
|
406
417
|
self.models[label] = last_gs
|
407
|
-
|
408
|
-
|
418
|
+
|
419
|
+
if goparams_list: #only do this if goparams_list wasn't empty to begin with.
|
420
|
+
#which would be the case except for the special case where the label is 'none'.
|
421
|
+
self._gaugeopt_suite.gaugeopt_argument_dicts[label] = ordered_goparams \
|
422
|
+
if len(goparams_list) > 1 else ordered_goparams[0]
|
423
|
+
else:
|
424
|
+
self._gaugeopt_suite.gaugeopt_argument_dicts[label] = None
|
425
|
+
|
409
426
|
|
410
427
|
def add_confidence_region_factory(self,
|
411
428
|
model_label='final iteration estimate',
|