nucleardatapy 0.2.0__py3-none-any.whl → 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. nucleardatapy/__init__.py +3 -1
  2. nucleardatapy/astro/setup_gw.py +18 -18
  3. nucleardatapy/astro/setup_mr.py +9 -1
  4. nucleardatapy/astro/setup_mup.py +10 -10
  5. nucleardatapy/corr/setup_EsymDen.py +0 -5
  6. nucleardatapy/corr/setup_EsymLsym.py +50 -17
  7. nucleardatapy/corr/setup_KsatQsat.py +170 -69
  8. nucleardatapy/crust/setup_crust.py +403 -120
  9. nucleardatapy/data/astro/NICER/J0740+6620.dat +1 -0
  10. nucleardatapy/data/crust/2018-PCPFDDG-BSK22.dat +83 -0
  11. nucleardatapy/data/crust/2018-PCPFDDG-BSK24.dat +74 -0
  12. nucleardatapy/data/crust/2018-PCPFDDG-BSK25.dat +130 -0
  13. nucleardatapy/data/crust/2018-PCPFDDG-BSK26.dat +81 -0
  14. nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-NM.dat → 2006-BHF-Av18-E2A-NM.dat} +8 -8
  15. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-SM.dat +11 -0
  16. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-beta0.2.dat +11 -0
  17. nucleardatapy/data/matter/micro/2006-BHF/2006-BHF-Av18-effmass-beta0.4.dat +11 -0
  18. nucleardatapy/data/matter/nep/NEPESkyrme.dat +2 -3
  19. nucleardatapy/data/matter/nep/NEPGSkyrme.dat +7 -0
  20. nucleardatapy/data/matter/nep/NEPSkyrme.dat +4 -2
  21. nucleardatapy/data/matter/nep/NEPxEFT.dat +8 -0
  22. nucleardatapy/data/matter/nep/best67DDSkyrme.dat +28 -0
  23. nucleardatapy/data/matter/nep/best90DDSkyrme.dat +46 -0
  24. nucleardatapy/data/matter/nep/best95DDSkyrme.dat +54 -0
  25. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-NM.dat +996 -996
  26. nucleardatapy/data/matter/pheno/ESkyrme/BSk31-SM.dat +991 -991
  27. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-NM.dat +1002 -0
  28. nucleardatapy/data/matter/pheno/ESkyrme/BSkG4-SM.dat +1002 -0
  29. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-NM.dat +102 -0
  30. nucleardatapy/data/matter/pheno/Skyrme/BSkG1-SM.dat +102 -0
  31. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-NM.dat +102 -0
  32. nucleardatapy/data/matter/pheno/Skyrme/BSkG2-SM.dat +102 -0
  33. nucleardatapy/data/nuclei/masses/Theory/2023-BSkG3.txt +0 -4
  34. nucleardatapy/data/nuclei/masses/Theory/2025-BSkG4.txt +0 -1
  35. nucleardatapy/env.py +1 -1
  36. nucleardatapy/eos/__init__.py +4 -3
  37. nucleardatapy/eos/setupCC.py +429 -0
  38. nucleardatapy/eos/setup_am.py +71 -34
  39. nucleardatapy/eos/setup_am_Beq.py +48 -17
  40. nucleardatapy/eos/setup_am_Leq.py +81 -50
  41. nucleardatapy/fig/__init__.py +29 -7
  42. nucleardatapy/fig/astro_setupGW_fig.py +5 -5
  43. nucleardatapy/fig/astro_setupMR_fig.py +12 -10
  44. nucleardatapy/fig/astro_setupMasses_fig.py +4 -4
  45. nucleardatapy/fig/astro_setupMtov_fig.py +4 -4
  46. nucleardatapy/fig/astro_setupMup_fig.py +5 -5
  47. nucleardatapy/fig/corr_setupEsymDen_fig.py +12 -5
  48. nucleardatapy/fig/corr_setupEsymLsym_fig.py +18 -5
  49. nucleardatapy/fig/corr_setupKsatQsat_fig.py +19 -15
  50. nucleardatapy/fig/crust_setupCrust_fig.py +7 -7
  51. nucleardatapy/fig/eos_setupAMBeq_fig.py +1338 -64
  52. nucleardatapy/fig/eos_setupAMLeq_fig.py +200 -68
  53. nucleardatapy/fig/eos_setupAM_asy_lep_fig.py +364 -0
  54. nucleardatapy/fig/eos_setupAM_asy_nuc_fig.py +337 -0
  55. nucleardatapy/fig/eos_setupAM_asy_tot_fig.py +343 -0
  56. nucleardatapy/fig/eos_setupAM_fig.py +470 -47
  57. nucleardatapy/fig/eos_setupCC_fig.py +240 -0
  58. nucleardatapy/fig/hnuc_setupChart_fig.py +2 -2
  59. nucleardatapy/fig/hnuc_setupRE1LExp_fig.py +4 -4
  60. nucleardatapy/fig/matter_all_fig.py +954 -0
  61. nucleardatapy/fig/matter_setupCheck_fig.py +103 -0
  62. nucleardatapy/fig/matter_setupFFGLep_fig.py +70 -0
  63. nucleardatapy/fig/matter_setupFFGNuc_fig.py +268 -104
  64. nucleardatapy/fig/matter_setupHIC_fig.py +98 -58
  65. nucleardatapy/fig/matter_setupMicroEsym_fig.py +267 -51
  66. nucleardatapy/fig/matter_setupMicro_LP_fig.py +175 -78
  67. nucleardatapy/fig/matter_setupMicro_band_fig.py +116 -47
  68. nucleardatapy/fig/matter_setupMicro_effmass_fig.py +264 -34
  69. nucleardatapy/fig/matter_setupMicro_err_NM_fig.py +41 -18
  70. nucleardatapy/fig/matter_setupMicro_fig.py +332 -98
  71. nucleardatapy/fig/matter_setupMicro_gap_fig.py +219 -92
  72. nucleardatapy/fig/matter_setupNEPStats_fig.py +96 -0
  73. nucleardatapy/fig/matter_setupPhenoEsym_fig.py +201 -61
  74. nucleardatapy/fig/matter_setupPheno_fig.py +392 -85
  75. nucleardatapy/fig/nuc_setupBEExp_chart_fig.py +286 -0
  76. nucleardatapy/fig/nuc_setupBEExp_fig.py +232 -70
  77. nucleardatapy/fig/nuc_setupBETheo_fig.py +344 -0
  78. nucleardatapy/fig/nuc_setupISGMRExp_fig.py +59 -0
  79. nucleardatapy/fig/nuc_setupRchExp_fig.py +139 -0
  80. nucleardatapy/fig/nuc_setupRchTheo_fig.py +143 -0
  81. nucleardatapy/fig/nuc_setupRnpExp_fig.py +88 -0
  82. nucleardatapy/fig/nuc_setupRnpTheo_fig.py +133 -0
  83. nucleardatapy/hello.py +6 -0
  84. nucleardatapy/hnuc/__init__.py +3 -3
  85. nucleardatapy/hnuc/{setup_be1L_exp.py → setup_re1L_exp.py} +6 -6
  86. nucleardatapy/hnuc/{setup_be1Xi_exp.py → setup_re1Xi_exp.py} +5 -5
  87. nucleardatapy/hnuc/{setup_be2L_exp.py → setup_re2L_exp.py} +6 -6
  88. nucleardatapy/matter/__init__.py +14 -13
  89. nucleardatapy/matter/setup_check.py +97 -0
  90. nucleardatapy/matter/setup_ffg.py +72 -38
  91. nucleardatapy/matter/setup_hic.py +91 -74
  92. nucleardatapy/matter/setup_micro.py +1698 -1019
  93. nucleardatapy/matter/setup_micro_band.py +11 -6
  94. nucleardatapy/matter/setup_micro_effmass.py +55 -2
  95. nucleardatapy/matter/setup_micro_esym.py +39 -34
  96. nucleardatapy/matter/setup_micro_gap.py +26 -19
  97. nucleardatapy/matter/setup_micro_lp.py +20 -19
  98. nucleardatapy/matter/setup_nep.py +175 -92
  99. nucleardatapy/matter/{setup_nep_model_dist.py → setup_nep_stat_model.py} +13 -8
  100. nucleardatapy/matter/{setup_nep_dist.py → setup_nep_stat_models.py} +12 -8
  101. nucleardatapy/matter/setup_pheno.py +121 -45
  102. nucleardatapy/matter/setup_pheno_esym.py +14 -19
  103. nucleardatapy/nuc/__init__.py +2 -2
  104. nucleardatapy/nuc/setup_be_exp.py +345 -333
  105. nucleardatapy/nuc/setup_be_theo.py +366 -178
  106. nucleardatapy/nuc/setup_isgmr_exp.py +4 -4
  107. nucleardatapy/nuc/setup_rch_exp.py +49 -6
  108. nucleardatapy/nuc/setup_rch_theo.py +72 -3
  109. nucleardatapy/nuc/{setup_nskin_exp.py → setup_rnp_exp.py} +59 -65
  110. nucleardatapy/nuc/{setup_nskin_theo.py → setup_rnp_theo.py} +35 -39
  111. nucleardatapy-1.0.0.dist-info/METADATA +553 -0
  112. {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info}/RECORD +156 -128
  113. {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info}/WHEEL +1 -1
  114. tests/test_corr_setupKsatQsat.py +3 -1
  115. tests/test_matter_setupMicro.py +37 -10
  116. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-NM.dat +0 -1002
  117. nucleardatapy/data/matter/pheno/ESkyrme/BSkG1-SM.dat +0 -1002
  118. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-NM.dat +0 -1002
  119. nucleardatapy/data/matter/pheno/ESkyrme/BSkG2-SM.dat +0 -1002
  120. nucleardatapy/fig/matter_ENM_fig.py +0 -119
  121. nucleardatapy/fig/matter_ESM_fig.py +0 -119
  122. nucleardatapy/fig/matter_Esym_fig.py +0 -122
  123. nucleardatapy/fig/matter_setupNEPModelDist_fig.py +0 -68
  124. nucleardatapy-0.2.0.dist-info/METADATA +0 -115
  125. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-NM-AV18.dat → 2006-EBHF-NM-AV18.dat} +0 -0
  126. /nucleardatapy/data/LandauParameters/micro/{2006-IBHF-SM-AV18.dat → 2006-EBHF-SM-AV18.dat} +0 -0
  127. /nucleardatapy/data/crust/{2022-crustGMRS-BSK14.dat → 2022-GMRS-BSK14.dat} +0 -0
  128. /nucleardatapy/data/crust/{2022-crustGMRS-BSK16.dat → 2022-GMRS-BSK16.dat} +0 -0
  129. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL59.dat → 2022-GMRS-DHSL59.dat} +0 -0
  130. /nucleardatapy/data/crust/{2022-crustGMRS-DHSL69.dat → 2022-GMRS-DHSL69.dat} +0 -0
  131. /nucleardatapy/data/crust/{2022-crustGMRS-F0.dat → 2022-GMRS-F0.dat} +0 -0
  132. /nucleardatapy/data/crust/{2022-crustGMRS-H1.dat → 2022-GMRS-H1.dat} +0 -0
  133. /nucleardatapy/data/crust/{2022-crustGMRS-H2.dat → 2022-GMRS-H2.dat} +0 -0
  134. /nucleardatapy/data/crust/{2022-crustGMRS-H3.dat → 2022-GMRS-H3.dat} +0 -0
  135. /nucleardatapy/data/crust/{2022-crustGMRS-H4.dat → 2022-GMRS-H4.dat} +0 -0
  136. /nucleardatapy/data/crust/{2022-crustGMRS-H5.dat → 2022-GMRS-H5.dat} +0 -0
  137. /nucleardatapy/data/crust/{2022-crustGMRS-H7.dat → 2022-GMRS-H7.dat} +0 -0
  138. /nucleardatapy/data/crust/{2022-crustGMRS-LNS5.dat → 2022-GMRS-LNS5.dat} +0 -0
  139. /nucleardatapy/data/crust/{2022-crustGMRS-RATP.dat → 2022-GMRS-RATP.dat} +0 -0
  140. /nucleardatapy/data/crust/{2022-crustGMRS-SGII.dat → 2022-GMRS-SGII.dat} +0 -0
  141. /nucleardatapy/data/crust/{2022-crustGMRS-SLY5.dat → 2022-GMRS-SLY5.dat} +0 -0
  142. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-AM.dat → 2006-BHF-Av18-E2A-AM.dat} +0 -0
  143. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-E2A-SM.dat → 2006-BHF-Av18-E2A-SM.dat} +0 -0
  144. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-Esym2-SM.dat → 2006-BHF-Av18-Esym2-SM.dat} +0 -0
  145. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-NM-FreeSpectrum.dat → 2006-BHF-Av18-GAP-NM-FreeSpectrum.dat} +0 -0
  146. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-NM-SelfEnergy.dat → 2006-BHF-Av18-GAP-NM-SelfEnergy.dat} +0 -0
  147. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-SM-FreeSpectrum.dat → 2006-BHF-Av18-GAP-SM-FreeSpectrum.dat} +0 -0
  148. /nucleardatapy/data/matter/micro/2006-BHF/{2006-BHF-GAP-SM-SelfEnergy.dat → 2006-BHF-Av18-GAP-SM-SelfEnergy.dat} +0 -0
  149. /nucleardatapy/data/matter/micro/{2013-QMC-NM.dat → 2013-MBPT-NM.dat} +0 -0
  150. /nucleardatapy/data/matter/micro/{2020-MBPT-NM-DHSL59.dat → 2019-MBPT-NM-DHSL59.dat} +0 -0
  151. /nucleardatapy/data/matter/micro/{2020-MBPT-NM-DHSL69.dat → 2019-MBPT-NM-DHSL69.dat} +0 -0
  152. /nucleardatapy/data/matter/micro/{2020-MBPT-SM-DHSL59.dat → 2019-MBPT-SM-DHSL59.dat} +0 -0
  153. /nucleardatapy/data/matter/micro/{2020-MBPT-SM-DHSL69.dat → 2019-MBPT-SM-DHSL69.dat} +0 -0
  154. /nucleardatapy/data/matter/micro/{2023-MBPT-NM.csv → 2020-MBPT-NM.csv} +0 -0
  155. /nucleardatapy/data/matter/micro/{2023-MBPT-SM.csv → 2020-MBPT-SM.csv} +0 -0
  156. /nucleardatapy/data/nuclei/{nskin → rnp}/208Pb.dat +0 -0
  157. /nucleardatapy/data/nuclei/{nskin → rnp}/48Ca.dat +0 -0
  158. /nucleardatapy/data/{NeutronSkin/ddrhNskin-208Pb.dat → rnp/ddrhrnp-208Pb.dat} +0 -0
  159. /nucleardatapy/data/{NeutronSkin/ddrhNskin-48Ca.dat → rnp/ddrhrnp-48Ca.dat} +0 -0
  160. /nucleardatapy/data/{NeutronSkin/nlrhNskin-208Pb.dat → rnp/nlrhrnp-208Pb.dat} +0 -0
  161. /nucleardatapy/data/{NeutronSkin/nlrhNskin-48Ca.dat → rnp/nlrhrnp-48Ca.dat} +0 -0
  162. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-208Pb.dat → rnp/skyrmernp-208Pb.dat} +0 -0
  163. /nucleardatapy/data/{NeutronSkin/skyrmeNskin-48Ca.dat → rnp/skyrmernp-48Ca.dat} +0 -0
  164. {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info/licenses}/LICENSE +0 -0
  165. {nucleardatapy-0.2.0.dist-info → nucleardatapy-1.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,286 @@
1
+ import numpy as np
2
+ import matplotlib.pyplot as plt
3
+
4
+ import nucleardatapy as nuda
5
+
6
+ def nuc_setupBEExp_chart_lt_fig( pname, table, version, theo_tables ):
7
+ """
8
+ Plot nuclear chart (N versus Z).\
9
+ The plot is 1x1 with:\
10
+ [0]: nuclear chart.
11
+
12
+ :param pname: name of the figure (*.png)
13
+ :type pname: str.
14
+ :param table: table.
15
+ :type table: str.
16
+ :param version: version of table to run on.
17
+ :type version: str.
18
+ :param theo_tables: object instantiated on the reference band.
19
+ :type theo_tables: object.
20
+
21
+ """
22
+ #
23
+ print(f'Plot name: {pname}')
24
+ #
25
+ print('Table:',table)
26
+ #
27
+ # plot
28
+ #
29
+ fig, axs = plt.subplots(1,1)
30
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
31
+ fig.subplots_adjust(left=0.12, bottom=0.15, right=None, top=0.85, wspace=0.3, hspace=0.3)
32
+ #
33
+ axs.set_title(r''+table+' mass table version '+version)
34
+ axs.set_ylabel(r'Z',fontsize='14')
35
+ axs.set_xlabel(r'N',fontsize='14')
36
+ axs.set_xlim([0, 200])
37
+ axs.set_ylim([0, 132])
38
+ axs.text(10,120,'Number of nuclei:')
39
+ #
40
+ # longlive nuclei
41
+ #
42
+ mas = nuda.nuc.setupBEExp( table = table, version = version )
43
+ ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'longlive' )
44
+ axs.scatter( ustbl.sel_nucN, ustbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'grey', label='long-lived ('+str(ustbl.sel_nbNucSel)+')' )
45
+ #axs.text(10,96,'long live: '+str(ustbl.sel_nbNucSel))
46
+ #
47
+ # shortlive nuclei
48
+ #
49
+ mas = nuda.nuc.setupBEExp( table = table, version = version )
50
+ ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'shortlive' )
51
+ axs.scatter( ustbl.sel_nucN, ustbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'r', label='short-lived ('+str(ustbl.sel_nbNucSel)+')' )
52
+ #axs.text(10,88,'short live: '+str(ustbl.sel_nbNucSel))
53
+ #
54
+ # veryshortlive nuclei
55
+ #
56
+ mas = nuda.nuc.setupBEExp( table = table, version = version )
57
+ ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'veryshortlive' )
58
+ axs.scatter( ustbl.sel_nucN, ustbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'b', label='very-short-lived ('+str(ustbl.sel_nbNucSel)+')' )
59
+ #axs.text(10,80,'very short live: '+str(ustbl.sel_nbNucSel))
60
+ #
61
+ # hypershortlive nuclei
62
+ #
63
+ mas = nuda.nuc.setupBEExp( table = table, version = version )
64
+ ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'hypershortlive' )
65
+ axs.scatter( ustbl.sel_nucN, ustbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'g', label='hyper-short-lived ('+str(ustbl.sel_nbNucSel)+')' )
66
+ #axs.text(10,80,'very short live: '+str(ustbl.sel_nbNucSel))
67
+ #
68
+ # unstable nuclei:
69
+ #
70
+ mas = nuda.nuc.setupBEExp( table = table, version = version )
71
+ ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'unstable' )
72
+ #axs.scatter( ustbl.sel_nucN, ustbl.sel_Z, marker='.', s = 1, linewidth=0, color = 'b' )
73
+ axs.text(10,104,'unstable: '+str(ustbl.sel_nbNucSel))
74
+ #
75
+ # drip line nuclei
76
+ #
77
+ legend = 0
78
+ for i,theo_table in enumerate( theo_tables ):
79
+ theo = nuda.nuc.setupBETheo( table = theo_table )
80
+ s2n = theo.S2n( Zmin=1, Zmax = 95 )
81
+ drip_S2n = s2n.drip_S2n( Zmin = 1, Zmax = 95 )
82
+ if legend == 0:
83
+ axs.scatter( drip_S2n.drip_S2n_N, drip_S2n.drip_S2n_Z, marker='o', s = 3, linewidth=0, color = 'purple', label='Drip Lines' )
84
+ legend = 1
85
+ else:
86
+ axs.scatter( drip_S2n.drip_S2n_N, drip_S2n.drip_S2n_Z, marker='o', s = 3, linewidth=0, color = 'purple' )
87
+ s2p = theo.S2p( Nmin=1, Nmax = 150 )
88
+ drip_S2p = s2p.drip_S2p( Nmin = 1, Nmax = 150 )
89
+ axs.scatter( drip_S2p.drip_S2p_N, drip_S2p.drip_S2p_Z, marker='o', s = 3, linewidth=0, color = 'purple' )
90
+ #
91
+ # First and last isotopes
92
+ #
93
+ #iso = ustbl.isotopes( Zmin=1, Zmax = 95 )
94
+ #axs.scatter( iso.isotopes_Nmin, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green', label='Isotope bounds' )
95
+ #axs.scatter( iso.isotopes_Nmax, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green' )
96
+ #
97
+ # stable nuclei:
98
+ #
99
+ mas = nuda.nuc.setupBEExp( table = table, version = version )
100
+ stbl = mas.select( state= 'gs', interp = 'n', nucleus = 'stable' )
101
+ axs.scatter( stbl.sel_nucN, stbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'k' )
102
+ axs.text(10,112,'stable: '+str(stbl.sel_nbNucSel))
103
+ #
104
+ axs.text(49,120,str(ustbl.sel_nbNucSel+stbl.sel_nbNucSel))
105
+ #
106
+ # plot N=Z dotted line
107
+ #
108
+ axs.plot( [0, 130], [0, 130], linestyle='dotted', linewidth=1, color='k')
109
+ axs.text(105,120,'N=Z')
110
+ #
111
+ # plot stable_fit
112
+ #
113
+ N, Z = nuda.stable_fit_Z( Zmin = 1, Zmax = 120 )
114
+ axs.plot( N, Z, linestyle='dashed', linewidth=1, color='k')
115
+ #N, Z = nuda.stable_fit_N( Nmin = 1, Nmax = 200 )
116
+ #axs.plot( N, Z, linestyle='dashed', linewidth=1, color='r')
117
+ #
118
+ # plot shells for isotopes and isotones
119
+ #
120
+ axs = nuda.nuc.plot_shells(axs)
121
+ #
122
+ # set legend
123
+ #
124
+ axs.legend(loc='lower right',fontsize='10')
125
+ #
126
+ # set plot name and close
127
+ #
128
+ if pname is not None:
129
+ plt.savefig(pname, dpi=300)
130
+ plt.close()
131
+ #
132
+
133
+ def nuc_setupBEExp_chart_year_fig( pname, sYear, year_min, year_max ):
134
+ """
135
+ Plot nuclear chart (N versus Z).\
136
+ The plot is 1x1 with:\
137
+ [0]: nuclear chart.
138
+
139
+ :param pname: name of the figure (*.png)
140
+ :type pname: str.
141
+ :param table: table.
142
+ :type table: str.
143
+ :param version: version of table to run on.
144
+ :type version: str.
145
+ :param theo_tables: object instantiated on the reference band.
146
+ :type theo_tables: object.
147
+
148
+ """
149
+ #
150
+ print(f'Plot name: {pname}')
151
+ #
152
+ #print('Table:',table)
153
+ #
154
+ # plot
155
+ #
156
+ fig, axs = plt.subplots(1,1)
157
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
158
+ fig.subplots_adjust(left=0.12, bottom=0.15, right=None, top=0.85, wspace=0.3, hspace=0.3)
159
+ #
160
+ #axs.set_title(r''+table+' mass table version '+version)
161
+ axs.set_ylabel(r'Z')
162
+ axs.set_xlabel(r'N')
163
+ axs.set_xlim([0, 200])
164
+ axs.set_ylim([0, 132])
165
+ #axs.text(10,120,'Number of nuclei:')
166
+ axs.text(10,100,'Year: '+str(year_min)+' to '+str(year_max))
167
+ #
168
+ # nuclei given in argument: sYear
169
+ #
170
+ axs.scatter( sYear.sel_N, sYear.sel_Z, marker='s', s = 3, linewidth=0, color = 'grey' )
171
+ #
172
+ # First and last isotopes
173
+ #
174
+ #iso = ustbl.isotopes( Zmin=1, Zmax = 95 )
175
+ #axs.scatter( iso.isotopes_Nmin, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green', label='Isotope bounds' )
176
+ #axs.scatter( iso.isotopes_Nmax, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green' )
177
+ #
178
+ # plot N=Z dotted line
179
+ #
180
+ axs.plot( [0, 130], [0, 130], linestyle='dotted', linewidth=1, color='k')
181
+ axs.text(105,120,'N=Z')
182
+ #
183
+ # plot stable_fit
184
+ #
185
+ N, Z = nuda.stable_fit_Z( Zmin = 1, Zmax = 120 )
186
+ axs.plot( N, Z, linestyle='dashed', linewidth=1, color='k')
187
+ N, Z = nuda.stable_fit_N( Nmin = 1, Nmax = 170 )
188
+ axs.plot( N, Z, linestyle='dashed', linewidth=1, color='r')
189
+ #
190
+ # plot shells for isotopes and isotones
191
+ #
192
+ axs = nuda.nuc.plot_shells(axs)
193
+ #
194
+ # set legend
195
+ #
196
+ #axs.legend(loc='lower right',fontsize='10')
197
+ #
198
+ # set plot name and close
199
+ #
200
+ if pname is not None:
201
+ plt.savefig(pname, dpi=300)
202
+ plt.close()
203
+ #
204
+
205
+ def nuc_setupBEExp_chart_Rch_fig( pname, table, version, Rch_table ):
206
+ """
207
+ Plot nuclear chart (N versus Z).\
208
+ The plot is 1x1 with:\
209
+ [0]: nuclear chart.
210
+
211
+ :param pname: name of the figure (*.png)
212
+ :type pname: str.
213
+ :param table: table.
214
+ :type table: str.
215
+ :param version: version of table to run on.
216
+ :type version: str.
217
+ :param theo_tables: object instantiated on the reference band.
218
+ :type theo_tables: object.
219
+
220
+ """
221
+ #
222
+ print(f'Plot name: {pname}')
223
+ #
224
+ print('Table:',table)
225
+ #
226
+ # plot
227
+ #
228
+ fig, axs = plt.subplots(1,1)
229
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
230
+ fig.subplots_adjust(left=0.12, bottom=0.15, right=None, top=0.85, wspace=0.3, hspace=0.3)
231
+ #
232
+ axs.set_title(r''+table+' mass table version '+version+' + '+Rch_table+' charge radius table')
233
+ axs.set_ylabel(r'Z')
234
+ axs.set_xlabel(r'N')
235
+ axs.set_xlim([0, 200])
236
+ axs.set_xticks([0,25,50,75,100,125,150,175,200])
237
+ axs.set_ylim([0, 132])
238
+ axs.set_yticks([0,20,40,60,80,100,120])
239
+ axs.text(10,120,'Number of nuclei:')
240
+ #
241
+ # First and last isotopes
242
+ #
243
+ mas = nuda.nuc.setupBEExp( table = table, version = version )
244
+ ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'unstable' )
245
+ iso = ustbl.isotopes( Zmin=1, Zmax = 95 )
246
+ axs.scatter( iso.isotopes_Nmin, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green', label='AME boundaries' )
247
+ axs.scatter( iso.isotopes_Nmax, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green' )
248
+ #
249
+ # stable nuclei:
250
+ #
251
+ mas = nuda.nuc.setupBEExp( table = table, version = version )
252
+ stbl = mas.select( state= 'gs', interp = 'n', nucleus = 'stable' )
253
+ axs.scatter( stbl.sel_nucN, stbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'k' )
254
+ axs.text(10,112,'stable: '+str(stbl.sel_nbNucSel))
255
+ axs.text(60,120,str(ustbl.sel_nbNucSel+stbl.sel_nbNucSel))
256
+ #
257
+ # Charge radii:
258
+ #
259
+ rch = nuda.nuc.setupRchExp( table = Rch_table )
260
+ axs.scatter( rch.nucN, rch.nucZ, marker='s', s = 3, linewidth=0, color = 'blue', label = 'charge radii' )
261
+ #
262
+ # plot N=Z dotted line
263
+ #
264
+ axs.plot( [0, 130], [0, 130], linestyle='dotted', linewidth=1, color='k')
265
+ axs.text(105,120,'N=Z')
266
+ #
267
+ # plot stable_fit
268
+ #
269
+ N, Z = nuda.stable_fit( Zmin = 1, Zmax = 120 )
270
+ axs.plot( N, Z, linestyle='dashed', linewidth=1, color='k')
271
+ #
272
+ # plot shells for isotopes and isotones
273
+ #
274
+ axs = nuda.nuc.plot_shells(axs)
275
+ #
276
+ # set legend
277
+ #
278
+ axs.legend(loc='lower right',fontsize='10')
279
+ #
280
+ # set plot name and close
281
+ #
282
+ if pname is not None:
283
+ plt.savefig(pname, dpi=300)
284
+ plt.close()
285
+ #
286
+
@@ -3,7 +3,7 @@ import matplotlib.pyplot as plt
3
3
 
4
4
  import nucleardatapy as nuda
5
5
 
6
- def nuc_setupBEExp_chart_lt_fig( pname, table, version, theo_tables ):
6
+ def nuc_setupBEExp_year_fig( pname, table, version ):
7
7
  """
8
8
  Plot nuclear chart (N versus Z).\
9
9
  The plot is 1x1 with:\
@@ -20,103 +20,265 @@ def nuc_setupBEExp_chart_lt_fig( pname, table, version, theo_tables ):
20
20
 
21
21
  """
22
22
  #
23
+ print(50*'-')
24
+ print("Enter nuc_setupBEExp_year_fig.py:")
25
+ print(50*'-')
26
+ #
23
27
  print(f'Plot name: {pname}')
24
28
  #
25
29
  print('Table:',table)
26
30
  #
27
- # plot
31
+ # read all the mass table:
32
+ #
33
+ mas = nuda.nuc.setupBEExp( table = table, version = version )
34
+ #
35
+ fig, axs = plt.subplots(1,2)
36
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
37
+ fig.subplots_adjust(left=0.12, bottom=0.15, right=0.95, top=0.85, wspace=0.2, hspace=0.2)
38
+ #
39
+ axs[0].set_title(r''+table+' mass table version '+version)
40
+ axs[0].set_ylabel(r'number of discovered nuclei',fontsize='14')
41
+ axs[0].set_xlabel(r'year',fontsize='14')
42
+ axs[0].set_xlim([1890, 2020])
43
+ #axs.set_yscale('log')
44
+ axs[0].set_ylim([0, 250])
45
+ #axs.text(10,120,'Number of nuclei:')
46
+ #
47
+ axs[0].hist( mas.nucYear, bins=100 )
48
+ #axs.hist( mas.year, bins=100, linestyle='solid', linewidth=1, color='k')
49
+ #axs.plot( mas.dist_year*10, mas.dist_nbNuc, linestyle='solid', linewidth=1, color='k')
50
+ #
51
+ axs[1].set_title(r''+table+' mass table version '+version)
52
+ axs[1].set_xlabel(r'year',fontsize='14')
53
+ axs[1].set_xlim([2000, 2020])
54
+ axs[1].set_ylim([0, 100])
55
+ axs[1].hist( mas.nucYear, bins=100 )
56
+ #
57
+ #axs.legend(loc='lower right',fontsize='10')
58
+ #
59
+ if pname is not None:
60
+ plt.savefig(pname, dpi=200)
61
+ plt.close()
62
+ #
63
+ print(50*'-')
64
+ print("Exit nuc_setupBEExp_year_fig.py:")
65
+ print(50*'-')
66
+ #
67
+
68
+ def nuc_setupBEExp_S2n_fig( pname, tables, versions, Zref = 50 ):
69
+ """
70
+ Plot nuclear chart (N versus Z).\
71
+ The plot is 1x1 with:\
72
+ [0]: nuclear chart.
73
+
74
+ :param pname: name of the figure (*.png)
75
+ :type pname: str.
76
+ :param table: table.
77
+ :type table: str.
78
+ :param version: version of table to run on.
79
+ :type version: str.
80
+ :param theo_tables: object instantiated on the reference band.
81
+ :type theo_tables: object.
82
+
83
+ """
84
+ #
85
+ print(f'Plot name: {pname}')
86
+ #
87
+ print('Tables:',tables)
88
+ print('Zref:',Zref)
28
89
  #
29
90
  fig, axs = plt.subplots(1,1)
30
91
  fig.tight_layout() # Or equivalently, "plt.tight_layout()"
31
- fig.subplots_adjust(left=0.12, bottom=0.15, right=None, top=0.85, wspace=0.3, hspace=0.3)
92
+ fig.subplots_adjust(left=0.14, bottom=0.15, right=0.95, top=0.85, wspace=0.3, hspace=0.3)
32
93
  #
33
- axs.set_title(r''+table+' mass table version '+version)
34
- axs.set_ylabel(r'Z')
35
- axs.set_xlabel(r'N')
36
- axs.set_xlim([0, 200])
37
- axs.set_ylim([0, 132])
38
- axs.text(10,120,'Number of nuclei:')
94
+ axs.set_title(r'Experimental mass tables',fontsize='14')
95
+ axs.set_ylabel(r'$S_{2n}$ (MeV)',fontsize='14')
96
+ axs.set_xlabel(r'N',fontsize='14')
97
+ axs.set_xlim([Zref-5, int(1.85*Zref)])
98
+ axs.set_xticks(np.arange(start=Zref-5,stop=2*Zref,step=5))
99
+ #axs.set_ylim([-10, 10])
100
+ axs.text(int(Zref),10,'For Z='+str(Zref),fontsize='14')
39
101
  #
40
- # longlive nuclei
102
+ # loop over the tables
41
103
  #
42
- mas = nuda.nuc.setupBEExp( table = table, version = version )
43
- ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'longlive' )
44
- axs.scatter( ustbl.sel_nucN, ustbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'grey', label='longlive ('+str(ustbl.sel_nbNucSel)+')' )
45
- #axs.text(10,96,'long live: '+str(ustbl.sel_nbNucSel))
104
+ for i,table in enumerate( tables ):
105
+ #
106
+ version = versions[i]
107
+ mas_exp = nuda.nuc.setupBEExp( table = table, version = version )
108
+ mas_exp2 = mas_exp.select( state = 'gs', interp = 'n' )
109
+ mas_exp3 = mas_exp2.isotopes( Zref = Zref )
110
+ s2n_exp = mas_exp3.S2n( Zref = Zref )
111
+ axs.errorbar( s2n_exp.S2n_N, s2n_exp.S2n_E, yerr=s2n_exp.S2n_E_err, fmt='o', label=table+' '+version )
112
+ #axs.scatter( s2n_exp.S2n_N, s2n_exp.S2n_E, label=exp_table+' '+exp_version )
46
113
  #
47
- # shortlive nuclei
114
+ axs.legend(loc='upper right',fontsize='10', ncol=1)
48
115
  #
49
- mas = nuda.nuc.setupBEExp( table = table, version = version )
50
- ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'shortlive' )
51
- axs.scatter( ustbl.sel_nucN, ustbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'r', label='shortlive ('+str(ustbl.sel_nbNucSel)+')' )
52
- #axs.text(10,88,'short live: '+str(ustbl.sel_nbNucSel))
116
+ if pname is not None:
117
+ plt.savefig(pname, dpi=200)
118
+ plt.close()
53
119
  #
54
- # veryshortlive nuclei
120
+
121
+ def nuc_setupBEExp_S2p_fig( pname, tables, versions, Nref = 50 ):
122
+ """
123
+ Plot nuclear chart (N versus Z).\
124
+ The plot is 1x1 with:\
125
+ [0]: nuclear chart.
126
+
127
+ :param pname: name of the figure (*.png)
128
+ :type pname: str.
129
+ :param table: table.
130
+ :type table: str.
131
+ :param version: version of table to run on.
132
+ :type version: str.
133
+ :param theo_tables: object instantiated on the reference band.
134
+ :type theo_tables: object.
135
+
136
+ """
55
137
  #
56
- mas = nuda.nuc.setupBEExp( table = table, version = version )
57
- ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'veryshortlive' )
58
- axs.scatter( ustbl.sel_nucN, ustbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'b', label='veryshortlive ('+str(ustbl.sel_nbNucSel)+')' )
59
- #axs.text(10,80,'very short live: '+str(ustbl.sel_nbNucSel))
138
+ print(f'Plot name: {pname}')
60
139
  #
61
- # unstable nuclei:
140
+ print('Tables:',tables)
141
+ print('Nref:',Nref)
62
142
  #
63
- mas = nuda.nuc.setupBEExp( table = table, version = version )
64
- ustbl = mas.select( state= 'gs', interp = 'n', nucleus = 'unstable' )
65
- #axs.scatter( ustbl.sel_nucN, ustbl.sel_Z, marker='.', s = 1, linewidth=0, color = 'b' )
66
- axs.text(10,104,'unstable: '+str(ustbl.sel_nbNucSel))
67
- #
68
- # drip line nuclei
69
- #
70
- legend = 0
71
- for i,theo_table in enumerate( theo_tables ):
72
- theo = nuda.nuc.setupBETheo( table = theo_table )
73
- s2n = theo.S2n( Zmin=1, Zmax = 95 )
74
- drip_S2n = s2n.drip_S2n( Zmin = 1, Zmax = 95 )
75
- if legend == 0:
76
- axs.scatter( drip_S2n.drip_S2n_N, drip_S2n.drip_S2n_Z, marker='o', s = 3, linewidth=0, color = 'green', label='Drip Lines' )
77
- legend = 1
78
- else:
79
- axs.scatter( drip_S2n.drip_S2n_N, drip_S2n.drip_S2n_Z, marker='o', s = 3, linewidth=0, color = 'green' )
80
- s2p = theo.S2p( Nmin=1, Nmax = 150 )
81
- drip_S2p = s2p.drip_S2p( Nmin = 1, Nmax = 150 )
82
- axs.scatter( drip_S2p.drip_S2p_N, drip_S2p.drip_S2p_Z, marker='o', s = 3, linewidth=0, color = 'green' )
83
- #
84
- # First and last isotopes
85
- #
86
- #iso = ustbl.isotopes( Zmin=1, Zmax = 95 )
87
- #axs.scatter( iso.isotopes_Nmin, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green', label='Isotope bounds' )
88
- #axs.scatter( iso.isotopes_Nmax, iso.isotopes_Z, marker='s', s = 3, linewidth=0, color = 'green' )
89
- #
90
- # stable nuclei:
143
+ fig, axs = plt.subplots(1,1)
144
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
145
+ fig.subplots_adjust(left=0.14, bottom=0.15, right=0.95, top=0.85, wspace=0.3, hspace=0.3)
91
146
  #
92
- mas = nuda.nuc.setupBEExp( table = table, version = version )
93
- stbl = mas.select( state= 'gs', interp = 'n', nucleus = 'stable' )
94
- axs.scatter( stbl.sel_nucN, stbl.sel_nucZ, marker='s', s = 3, linewidth=0, color = 'k' )
95
- axs.text(10,112,'stable: '+str(stbl.sel_nbNucSel))
147
+ axs.set_title(r'Experimental mass tables',fontsize='14')
148
+ axs.set_ylabel(r'$S_{2p}$ (MeV)',fontsize='14')
149
+ axs.set_xlabel(r'Z',fontsize='14')
150
+ axs.set_xlim([0.4*Nref, 1.2*Nref])
151
+ axs.set_xticks(np.arange(start=int(0.4*Nref),stop=1.2*Nref,step=5))
152
+ #axs.set_ylim([-10, 10])
153
+ axs.text(int(0.7*Nref),10,'For N='+str(Nref),fontsize='14')
154
+ #
155
+ # loop over the tables
96
156
  #
97
- axs.text(60,120,str(ustbl.sel_nbNucSel+stbl.sel_nbNucSel))
157
+ for i,table in enumerate( tables ):
158
+ #
159
+ version = versions[i]
160
+ mas_exp = nuda.nuc.setupBEExp( table = table, version = version )
161
+ mas_exp2 = mas_exp.select( state = 'gs', interp = 'n' )
162
+ mas_exp3 = mas_exp2.isotones( Nref = Nref )
163
+ s2p_exp = mas_exp3.S2p( Nref = Nref )
164
+ axs.errorbar( s2p_exp.S2p_Z, s2p_exp.S2p_E, yerr=s2p_exp.S2p_E_err, fmt='o', label=table+' '+version )
165
+ #axs.scatter( s2p_exp.S2p_Z, s2p_exp.S2p_E, label=table+' '+version )
98
166
  #
99
- # plot N=Z dotted line
167
+ axs.legend(loc='upper right',fontsize='10', ncol=1)
168
+ #
169
+ if pname is not None:
170
+ plt.savefig(pname, dpi=200)
171
+ plt.close()
100
172
  #
101
- axs.plot( [0, 130], [0, 130], linestyle='dotted', linewidth=1, color='k')
102
- axs.text(105,120,'N=Z')
173
+
174
+ def nuc_setupBEExp_D3n_fig( pname, tables, versions, Zref = 50 ):
175
+ """
176
+ Plot nuclear chart (N versus Z).\
177
+ The plot is 1x1 with:\
178
+ [0]: nuclear chart.
179
+
180
+ :param pname: name of the figure (*.png)
181
+ :type pname: str.
182
+ :param table: table.
183
+ :type table: str.
184
+ :param version: version of table to run on.
185
+ :type version: str.
186
+ :param theo_tables: object instantiated on the reference band.
187
+ :type theo_tables: object.
188
+
189
+ """
103
190
  #
104
- # plot stable_fit
191
+ print(f'Plot name: {pname}')
105
192
  #
106
- N, Z = nuda.stable_fit( Zmin = 1, Zmax = 120 )
107
- axs.plot( N, Z, linestyle='dashed', linewidth=1, color='k')
193
+ print('Tables:',tables)
194
+ print('Zref:',Zref)
108
195
  #
109
- # plot shells for isotopes and isotones
196
+ fig, axs = plt.subplots(1,1)
197
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
198
+ fig.subplots_adjust(left=0.14, bottom=0.15, right=0.95, top=0.85, wspace=0.3, hspace=0.3)
110
199
  #
111
- axs = nuda.nuc.plot_shells(axs)
200
+ axs.set_title(r'Experimental mass tables',fontsize='14')
201
+ axs.set_ylabel(r'$\Delta_{3n}$ (MeV)',fontsize='14')
202
+ axs.set_xlabel(r'N',fontsize='14')
203
+ axs.set_xlim([Zref-5, int(1.85*Zref)])
204
+ axs.set_xticks(np.arange(start=Zref-5,stop=2*Zref,step=5))
205
+ #axs.set_ylim([-10, 10])
206
+ axs.text(int(Zref),1.0,'For Z='+str(Zref),fontsize='14')
112
207
  #
113
- # set legend
208
+ # loop over the tables
114
209
  #
115
- axs.legend(loc='lower right',fontsize='10')
210
+ for i,table in enumerate( tables ):
211
+ #
212
+ version = versions[i]
213
+ # plot nuclear chart:
214
+ mas_exp = nuda.nuc.setupBEExp( table = table, version = version )
215
+ mas_exp2 = mas_exp.select( state = 'gs', interp = 'n' )
216
+ mas_exp3 = mas_exp2.isotopes( Zref = Zref )
217
+ D3n_exp = mas_exp3.D3n( Zref = Zref )
218
+ axs.errorbar( D3n_exp.D3n_N_even, D3n_exp.D3n_E_even, yerr=D3n_exp.D3n_E_err_even, fmt='o', label=table+' '+version )
219
+ axs.errorbar( D3n_exp.D3n_N_odd, D3n_exp.D3n_E_odd, yerr=D3n_exp.D3n_E_err_odd, fmt='o', label=table+' '+version )
220
+ #axs.scatter( d3n_exp.D3n_N_even, d3n_exp.D3n_E_even, label=table+' '+version+'(even)' )
221
+ #axs.scatter( d3n_exp.D3n_N_odd, d3n_exp.D3n_E_odd, label=table+' '+version+'(odd)' )
116
222
  #
117
- # set plot name and close
223
+ axs.legend(loc='upper right',fontsize='10', ncol=1)
118
224
  #
119
225
  if pname is not None:
120
- plt.savefig(pname, dpi=300)
226
+ plt.savefig(pname, dpi=200)
121
227
  plt.close()
122
228
  #
229
+
230
+ def nuc_setupBEExp_D3p_fig( pname, tables, versions, Nref = 50 ):
231
+ """
232
+ Plot nuclear chart (N versus Z).\
233
+ The plot is 1x1 with:\
234
+ [0]: nuclear chart.
235
+
236
+ :param pname: name of the figure (*.png)
237
+ :type pname: str.
238
+ :param table: table.
239
+ :type table: str.
240
+ :param version: version of table to run on.
241
+ :type version: str.
242
+ :param theo_tables: object instantiated on the reference band.
243
+ :type theo_tables: object.
244
+
245
+ """
246
+ #
247
+ print(f'Plot name: {pname}')
248
+ #
249
+ print('Tables:',tables)
250
+ print('Nref:',Nref)
251
+ #
252
+ fig, axs = plt.subplots(1,1)
253
+ fig.tight_layout() # Or equivalently, "plt.tight_layout()"
254
+ fig.subplots_adjust(left=0.14, bottom=0.15, right=0.95, top=0.85, wspace=0.3, hspace=0.3)
255
+ #
256
+ axs.set_title(r'Experimental mass tables',fontsize='14')
257
+ axs.set_ylabel(r'$\Delta_{3p}$ (MeV)',fontsize='14')
258
+ axs.set_xlabel(r'Z',fontsize='14')
259
+ axs.set_xlim([0.4*Nref, 1.2*Nref])
260
+ axs.set_xticks(np.arange(start=int(0.4*Nref),stop=1.2*Nref,step=5))
261
+ #axs.set_ylim([-10, 10])
262
+ axs.text(int(0.7*Nref),1.4,'For N='+str(Nref),fontsize='14')
263
+ #
264
+ # loop over the tables
265
+ #
266
+ for i,table in enumerate( tables ):
267
+ #
268
+ version = versions[i]
269
+ # plot nuclear chart:
270
+ mas_exp = nuda.nuc.setupBEExp( table = table, version = version )
271
+ mas_exp2 = mas_exp.select( state = 'gs', interp = 'n' )
272
+ mas_exp3 = mas_exp2.isotones( Nref = Nref )
273
+ D3p_exp = mas_exp3.D3p( Nref = Nref )
274
+ axs.errorbar( D3p_exp.D3p_Z_even, D3p_exp.D3p_E_even, yerr=D3p_exp.D3p_E_err_even, fmt='o', label=table+' '+version )
275
+ axs.errorbar( D3p_exp.D3p_Z_odd, D3p_exp.D3p_E_odd, yerr=D3p_exp.D3p_E_err_odd, fmt='o', label=table+' '+version )
276
+ #axs.scatter( d3p_exp.D3p_Z_even, d3p_exp.D3p_E_even, label=table+' '+version+'(even)' )
277
+ #axs.scatter( d3p_exp.D3p_Z_odd, d3p_exp.D3p_E_odd, label=table+' '+version+'(odd)' )
278
+ #
279
+ axs.legend(loc='upper right',fontsize='10', ncol=1)
280
+ #
281
+ if pname is not None:
282
+ plt.savefig(pname, dpi=200)
283
+ plt.close()
284
+ #