Source code for tdg.references.PRL116045303
import torch
import tdg.conventions
import matplotlib.pyplot as plt
from tdg.references.citation import Citation
citation = Citation(
'Boettcher et al., Phys. Rev. Lett. 116, 045303 (2016)',
'PhysRevLett.116.045303')
[docs]def figure_3():
r'''
Returns a dictionary with keys that are ballpark values of (positive) :math:`\beta\epsilon_B`.
Each value is itself a dictionary with keys:
* ``beta_epsilon`` and ``dbeta_epsilon`` the experimental value and associated uncertainty.
* ``beta_mu``, ``n/n0``, and ``dn/n0``, experimental values for :math:`\beta\mu`, :math:`n/n_0`, and its associated uncertainty. All are the same length.
* ``marker``, ``color`` for plotting.
'''
citation('Data provided by Philipp Lunt')
return {
11: {
'beta_epsilon': 11.0,
'dbeta_epsilon': 0.6,
'marker': 's',
'color': 'green',
} | {
k: v for k, v in zip(
['beta_mu', 'n/n0', 'dn/n0'],
torch.tensor([
[-6.735118576397484, 149.84281204947737, 26.293302019478116, ],
[-6.524240551904406, 186.2364570241275, 20.035782874131804, ],
[-6.311308807641343, 253.05145468736148, 16.049673906447186, ],
[-6.096389040251135, 314.95597208574634, 15.088500380256777, ],
[-5.879370776819866, 397.15394038033253, 14.348292626128975, ],
[-5.66029787113896, 443.2504277159388, 12.826300462909057, ],
[-5.439114475052638, 478.0580426433276, 11.314846615614007, ],
[-5.215992392240354, 504.73014338881393, 9.527282273597658, ],
[-4.991071773971635, 514.1983519323302, 7.457156164813768, ],
[-4.763688921325879, 512.1665757716206, 6.2806124619255845, ],
[-4.534539100967416, 497.62266174789914, 4.548517250486743, ],
[-4.303448982832403, 475.58483492232494, 3.8364633459372595, ],
[-4.0702027751656775, 442.3258879326185, 3.008679312411504, ],
[-3.8348860157335154, 401.63573627337456, 2.44837490906448, ],
[-3.5899774001387272, 361.4687125901555, 2.8793245251391637, ],
]).T
)
},
10: {
'beta_epsilon': 10.0,
'dbeta_epsilon': 0.5,
'marker': 'o',
'color': 'blue',
} | {
k: v for k, v in zip(
['beta_mu', 'n/n0', 'dn/n0'],
torch.tensor([
[-5.668684368848884, 161.4899598080284, 11.309579078462129, ],
[-5.475842033138095, 191.33210739457957, 11.661962118589592, ],
[-5.280982691674757, 221.65170510203464, 9.712110304292127, ],
[-5.084568129233398, 253.0284261861441, 9.227968361707424, ],
[-4.886161975336297, 267.9729697564949, 8.021246430522371, ],
[-4.685921443913573, 288.58860514245197, 7.499772028885729, ],
[-4.4838101263031565, 299.7845199254029, 6.523449691534089, ],
[-4.2799664425060495, 301.3190356216458, 5.391428193010362, ],
[-4.074222998265017, 298.14846625911173, 5.039768618512124, ],
[-3.866790404199607, 286.637025455274, 3.979402259020175, ],
[-3.657399996851307, 274.60285922701854, 3.2790318405328724, ],
[-3.446315112930933, 255.54116902701168, 2.8205160441970785, ],
[-3.2099126050467772, 227.0640863440141, 3.4135233990759617, ],
]).T
)
},
9: {
'beta_epsilon': 9.0,
'dbeta_epsilon': 0.5,
'marker': '^',
'color': 'red',
} | {
k: v for k, v in zip(
['beta_mu', 'n/n0', 'dn/n0'],
torch.tensor([
[-5.075423045147734, 93.34955700697319, 5.6358744249313295, ],
[-4.893402704172006, 105.8909956371967, 5.219718723656884, ],
[-4.709872928932225, 123.10875150292841, 4.658420480299429, ],
[-4.524866419664121, 137.35400413258552, 4.835690421861522, ],
[-4.3375730316821155, 152.57424810801086, 4.678259357614822, ],
[-4.148878935724238, 163.7300274570012, 3.6924112106295603, ],
[-3.9586436903075346, 169.76383290448848, 3.0377537565247774, ],
[-3.7664476716500346, 177.5576891616865, 2.583756127937867, ],
[-3.572587155847854, 176.99974455020734, 2.3386138596677233, ],
[-3.377122377824648, 173.78326228488262, 2.0788348567409707, ],
[-3.179779592998786, 167.35769553362405, 1.9330128673150466, ],
[-2.9746901028407335, 155.42999663405584, 1.5633534099421176, ],
]).T
)
},
8: {
'beta_epsilon': 8.2,
'dbeta_epsilon': 0.4,
'marker': 'v',
'color': 'purple',
} | {
k: v for k, v in zip(
['beta_mu', 'n/n0', 'dn/n0'],
torch.tensor([
[-4.686471136683302, 45.65587977382414, 4.944989566019393, ],
[-4.52622802407167, 63.892753168374156, 4.40305063718617, ],
[-4.36434405779241, 70.6933192246822, 4.6795345299461495, ],
[-4.20101395664012, 82.94520855450313, 3.583723889064882, ],
[-4.036183553188112, 93.70310455140125, 3.618769120646345, ],
[-3.8697969803393564, 102.08370426131866, 3.319419105331962, ],
[-3.7017319511265065, 111.4703585523908, 2.6036427345345143, ],
[-3.5327174448800336, 114.16098652014871, 2.8935507635339786, ],
[-3.3615789556361384, 118.25295682097972, 2.3371602845423642, ],
[-3.1889936743685836, 120.45297812726965, 2.3915691177067635, ],
[-3.0152912238110554, 118.24013389994118, 1.9205123900831174, ],
[-2.83979053861496, 115.30086686162024, 1.8829810103020872, ],
[-2.6573104382733357, 110.41646964848069, 1.7074242680218366, ],
]).T
)
},
7: {
'beta_epsilon': 7.0,
'dbeta_epsilon': 1.0,
'marker': 'D',
'color': 'orange',
} | {
k: v for k, v in zip(
['beta_mu', 'n/n0', 'dn/n0'],
torch.tensor([
[-4.094213591220072, 27.504467619074163, 3.7949232583930366, ],
[-3.92329805249797, 33.57848439435568, 3.9712430394748943, ],
[-3.7508462215949345, 36.66008407556967, 3.1689281839559817, ],
[-3.5761669070964364, 45.41691543548752, 4.013852454034037, ],
[-3.400141455246251, 49.38619279619143, 2.8031138060789202, ],
[-3.2215223666579162, 57.3698042137571, 2.6232086037411486, ],
[-3.041318697114034, 61.723214588044534, 2.360621770513676, ],
[-2.859737674471131, 64.45421515046681, 2.2798523594554956, ],
[-2.6759014720526095, 64.43649613846723, 1.8994020560317102, ],
[-2.489837444343619, 67.80791847303307, 2.0543072535813924, ],
[-2.263620850342295, 58.10651462511223, 1.7817079971880796, ],
[-1.0644628368824594, 29.045275217702027, 1.3504394113928986, ],
[+0.8831190203145646, 13.179675993150354, 0.534592694224321, ],
]).T
)
},
6: {
'beta_epsilon': 6.3,
'dbeta_epsilon': 0.5,
'marker': 's',
'color': 'green',
} | {
k: v for k, v in zip(
['beta_mu', 'n/n0', 'dn/n0'],
torch.tensor([
[-4.159902387491481, 13.242838855201944, 4.569383172288982, ],
[-3.955050221278715, 17.927618344925644, 7.778956536019594, ],
[-3.747156820524394, 21.55215419339827, 5.201432628491921, ],
[-3.536198723981852, 21.587300832961173, 5.632088473492864, ],
[-3.3223376406150913, 24.1719679992373, 4.409065341127081, ],
[-3.1052991200158, 31.552763526694683, 3.101272052808358, ],
[-2.8852898396386997, 36.7850896532069, 2.4929778372386107, ],
[-2.6624309186971113, 38.37059733867796, 1.597611604855687, ],
[-2.436461954187041, 41.47631690725601, 1.4775173056692026, ],
[-2.2075476024941953, 43.87788585698842, 0.8057982733910705, ],
[-1.8309565423460779, 41.42406515971011, 1.0148222426470863, ],
[-0.25160945882129193, 20.09438904364542, 0.9863517815486926, ],
]).T
)
},
5: {
'beta_epsilon': 5.0,
'dbeta_epsilon': 0.4,
'marker': 'o',
'color': 'blue',
} | {
k: v for k, v in zip(
['beta_mu', 'n/n0', 'dn/n0'],
torch.tensor([
[-2.9646894529139884, 15.261554133469703, 1.8689539866067195, ],
[-2.524426750055756, 20.983027980596695, 1.399954697229437, ],
[-2.078251707503179, 22.566596622801494, 0.9468099106659716, ],
[-1.6268565874374217, 21.444832978152213, 0.7166523311885293, ],
[-1.170151031371769, 18.631133309987973, 0.45300810516116846, ],
[-0.7076689577228009, 16.417137545358237, 0.29931121459377147, ],
[-0.24056091332583215, 14.092835037902871, 0.23897339100497866, ],
[+0.23219442877411078, 12.22671083943878, 0.21473131791580677, ],
[+0.7101935510781899, 10.505714757323704, 0.16979871478764588, ],
[+1.1940965291201142, 9.310326851295383, 0.1136419451645325, ],
]).T
)
},
3: {
'beta_epsilon': 3.1,
'dbeta_epsilon': 0.3,
'marker': '^',
'color': 'red',
} | {
k: v for k, v in zip(
['beta_mu', 'n/n0', 'dn/n0'],
torch.tensor([
[-2.3006970966530895, 4.353207229928897, 0.2427786594241568, ],
[-2.038070027453289, 5.42576229559213, 0.21001536313711783, ],
[-1.7721201384503484, 6.768915768682661, 0.19431751658065663, ],
[-1.5029176332176069, 7.884412766511971, 0.1551628610086648, ],
[-1.2303817778711237, 8.580351487456495, 0.12690287925646881, ],
[-0.9546166942652374, 8.731442684073105, 0.10047870429173582, ],
[-0.6755007084471856, 8.664511650798115, 0.08409061540042999, ],
[-0.3930660114719595, 8.526579358318765, 0.06444377714897959, ],
[-0.10756342254769406, 8.399491892811772, 0.05209865736077289, ],
[+0.18133771910620353, 8.21045533961772, 0.05135798340467234, ],
[+0.4734814868040405, 7.911857856600296, 0.04713602265331967, ],
[+0.7690558540723567, 7.750747821833874, 0.040563081728351616, ],
]).T
)
},
2: {
'beta_epsilon': 2.0,
'dbeta_epsilon': 0.2,
'marker': 's',
'color': 'green',
} | {
k: v for k, v in zip(
['beta_mu', 'n/n0', 'dn/n0'],
torch.tensor([
[-2.492708128093199, 2.2434093541061295, 0.5595916581382466, ],
[-2.0025381529301827, 3.406220459593861, 0.3486586648251335, ],
[-1.505157103124757, 3.3303745621187026, 0.26149331810912846, ],
[-1.0011806575559172, 4.392738924531569, 0.17546164306012962, ],
[-0.49031033672173896, 4.721039418794164, 0.12138055282123529, ],
[+0.027354111132248678, 4.590959242910574, 0.09812640295971581, ],
[+0.5518673617420059, 4.3176688795891245, 0.06577985626413069, ],
[+1.0831906594799887, 3.9771390654988474, 0.04413776500520191, ],
[+1.621418404825814, 3.718861022319962, 0.03414930717262667, ],
[+2.166320505871201, 3.5879813079016714, 0.029651593278487397, ],
[+2.7180203281153323, 3.412395268554163, 0.02532225480492139, ],
[+3.2766068443562517, 3.3388702842203797, 0.024134904708402696, ],
[+3.8880193728402284, 3.3217363911169735, 0.022069262066911465, ],
]).T
)
},
1: {
'beta_epsilon': 1.2,
'dbeta_epsilon': 0.1,
'marker': 'o',
'color': 'blue',
} | {
k: v for k, v in zip(
['beta_mu', 'n/n0', 'dn/n0'],
torch.tensor([
[-1.9090703625845107, 1.9084075807809786, 0.3365772022745819, ],
[-1.5654415131942443, 2.1980965339129397, 0.23306747662160604, ],
[-1.2172599927851513, 2.4558292946421165, 0.16134503321176868, ],
[-0.8641762300193542, 2.926172898799768, 0.167948956273203, ],
[-0.5069482684600136, 3.4169877489851057, 0.1327033855140694, ],
[-0.14508520859767604, 3.4747556483973043, 0.11614616020314693, ],
[+0.22104385356445988, 3.655506619036499, 0.0835155112967331, ],
[+0.5920277163627933, 3.5564925740127586, 0.058770251405574896, ],
[+0.9672847964162804, 3.471177913769106, 0.044284903661448397, ],
[+1.347163265861334, 3.428966236967767, 0.04442069420453512, ],
[+1.7311679645864553, 3.4309426524036373, 0.044979392789020474, ],
[+2.119974117984206, 3.420745273493849, 0.04154487204020947, ],
]).T
)
},
0.4: {
'beta_epsilon': 0.45,
'dbeta_epsilon': 0.5,
'marker': '^',
'color': 'red',
} | {
k: v for k, v in zip(
['beta_mu', 'n/n0', 'dn/n0'],
torch.tensor([
[+0.37677404664482606, 1.9350906654360294, 0.060114085371537826, ],
[+1.0214433016964746, 2.088285050542317, 0.039911394596219577, ],
[+1.6756943667110737, 2.145756186651301, 0.030028576093357722, ],
[+2.3395300981998295, 2.118341188074467, 0.02637813161955349, ],
[+3.0130812956382216, 2.0683483505402402, 0.02054482711326208, ],
[+3.6960777726178415, 2.040676255115465, 0.01803472146297546, ],
[+4.388668453900518, 2.0002694342538727, 0.01715569915758431, ],
[+5.090706562350285, 2.0046098841058257, 0.016562418239135075, ],
[+5.802248439032754, 2.016771816949493, 0.014485871504111899, ],
[+6.620720990013623, 2.0459498551921977, 0.01867241712011021, ],
]).T
)
},
}
[docs]def figure_3_reproduction():
r'''
.. plot::
:include-source:
import tdg.references.PRL116045303
import matplotlib.pyplot as plt
fig, ax = tdg.references.PRL116045303.figure_3_reproduction()
fig.tight_layout()
plt.show()
'''
fig, ax = plt.subplots(1,3, figsize=(14,4))
for beta_epsilon, data in figure_3().items():
if beta_epsilon > 6.5:
a = ax[0]
elif beta_epsilon > 2.5:
a = ax[1]
else:
a = ax[2]
# TODO: This is a stand-in for an actually smart number and uncertainty formatter:
be = data["beta_epsilon"]
dbe= int(10*data["dbeta_epsilon"])
estimate = f'{be:.1f}({dbe})'
a.errorbar(data['beta_mu'], data['n/n0'], yerr=data['dn/n0'],
color=data['color'], alpha=0.6, marker=data['marker'], linestyle='none',
label=r'$\beta\epsilon_B$ = ' + estimate,
)
ax[0].set_xlim([-7, 2])
ax[0].set_ylim([0, 600])
ax[1].set_xlim([-4.5, 2])
ax[1].set_ylim([0, 60])
ax[2].set_xlim([-3, 7])
ax[2].set_ylim([0, 6])
for a in ax:
a.set_ylabel(r'$n/n_0$')
a.set_xlabel(r'$\beta\mu$')
a.legend()
return fig, ax
if __name__ == '__main__':
fig, ax = figure_3_reproduction()
fig.tight_layout()
plt.show()