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.2, 'dbeta_epsilon': 0.1, '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()