Atomic Mass Evaluation (2016)¶
Loading the Atomic Mass Evaluation 2016 (AME2016) is easy withNucML. The AME2016 library is originally split into three tables:
mass16
rct1-16
rct2-16
For information on the contents including units and calculation methods please refer to the AME2016 website here.
Original AME Tables¶
To load any of these tables simply start by importing the nucml.datasets module:
[2]:
# # Prototype
# import sys
# sys.path.append("../..")
[1]:
import nucml.datasets as nuc_data
The mass16 table contains precise atomic masses, mass excess information, the binding energy per nucleon, and the beta decay energy. As a table id, NucML added the Element_w_A feature so that joining with other tables is easier. Let us load and print the first few rows of the mass16 table:
[3]:
mass16 = nuc_data.load_ame(file="mass16")
mass16.head()
INFO:root:AME: Reading and loading the Atomic Mass Evaluation file from:
C:/Users/Pedro/Desktop/ML_Nuclear_Data/AME/CSV_Files\AME_mass16.csv
[3]:
| N | Z | A | EL | O | Mass_Excess | dMass_Excess | Binding_Energy | dBinding_Energy | B_Decay_Energy | dB_Decay_Energy | Atomic_Mass_Micro | dAtomic_Mass_Micro | Element_w_A | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 0 | 1 | n | Other | 8071.31713 | 0.00046 | 0.000 | 0.0 | 782.347 | 0.0 | 1.008665e+06 | 0.00049 | 1n |
| 1 | 0 | 1 | 1 | H | Other | 7288.97061 | 0.00009 | 0.000 | 0.0 | NaN | NaN | 1.007825e+06 | 0.00009 | 1H |
| 2 | 1 | 1 | 2 | H | Other | 13135.72176 | 0.00011 | 1112.283 | 0.0 | NaN | NaN | 2.014102e+06 | 0.00012 | 2H |
| 3 | 2 | 1 | 3 | H | Other | 14949.80993 | 0.00022 | 2827.265 | 0.0 | 18.592 | 0.0 | 3.016049e+06 | 0.00023 | 3H |
| 4 | 1 | 2 | 3 | He | Other | 14931.21793 | 0.00021 | 2572.680 | 0.0 | -13736.000 | 2000.0 | 3.016029e+06 | 0.00022 | 3He |
Similarly, we can load the rct1 and rct2 table.
[4]:
rct1 = nuc_data.load_ame(file="rct1")
rct1.head()
INFO:root:AME: Reading and loading the Atomic Mass Evaluation file from:
C:/Users/Pedro/Desktop/ML_Nuclear_Data/AME/CSV_Files\AME_rct1.csv
[4]:
| S(2n) | dS(2n) | S(2p) | dS(2p) | Q(a) | dQ(a) | Q(2B-) | dQ(2B-) | Q(ep) | dQ(ep) | Q(B-n) | dQ(B-n) | Element_w_A | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1n |
| 1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1H |
| 2 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2H |
| 3 | 8481.79 | 0.0 | NaN | NaN | NaN | NaN | -13717.0 | 2000.0 | NaN | NaN | NaN | NaN | 3H |
| 4 | NaN | NaN | 7718.04 | 0.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 3He |
[5]:
rct2 = nuc_data.load_ame(file="rct2")
rct2.head()
INFO:root:AME: Reading and loading the Atomic Mass Evaluation file from:
C:/Users/Pedro/Desktop/ML_Nuclear_Data/AME/CSV_Files\AME_rct2.csv
[5]:
| S(n) | dS(n) | S(p) | dS(p) | Q(4B-) | dQ(4B-) | Q(d,a) | dQ(d,a) | Q(p,a) | dQ(p,a) | Q(n,a) | dQ(n,a) | Element_w_A | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0.00 | 0.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1n |
| 1 | NaN | NaN | 0.00 | 0.0 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1H |
| 2 | 2224.57 | 0.0 | 2224.57 | 0.0 | NaN | NaN | 23846.53 | 0.0 | NaN | NaN | NaN | NaN | 2H |
| 3 | 6257.23 | 0.0 | NaN | NaN | NaN | NaN | 17589.30 | 0.0 | 19813.86 | 0.0 | NaN | NaN | 3H |
| 4 | NaN | NaN | 5493.47 | 0.0 | NaN | NaN | 18353.05 | 0.0 | NaN | NaN | 20577.62 | 0.0 | 3He |
You can join all tables using the Element_w_A feature or you can simply use the nuc_data module to load the merged file:
[6]:
ame = nuc_data.load_ame(file="merged")
ame.head()
INFO:root:AME: Reading and loading Atomic Mass Evaluation files from:
C:/Users/Pedro/Desktop/ML_Nuclear_Data/AME/CSV_Files\AME_all_merged.csv
[6]:
| N | Z | A | EL | O | Mass_Excess | dMass_Excess | Binding_Energy | dBinding_Energy | B_Decay_Energy | ... | Q(n,np) | Q(n,d) | Q(n,2n) | Q(n,t) | Q(n,3He) | Q(d,t) | Q(d,3He) | Q(3He,t) | Q(3He,a) | Q(t,a) | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 0 | 1 | n | Other | 8071.31713 | 0.00046 | 0.000 | 0.0 | 782.347 | ... | NaN | NaN | -0.00 | NaN | NaN | 6257.229 | NaN | 763.755 | 20577.6194 | NaN |
| 1 | 0 | 1 | 1 | H | Other | 7288.97061 | 0.00009 | 0.000 | 0.0 | NaN | ... | -0.00 | 2224.566 | NaN | NaN | NaN | NaN | 5493.4744 | NaN | NaN | 19813.8649 |
| 2 | 1 | 1 | 2 | H | Other | 13135.72176 | 0.00011 | 1112.283 | 0.0 | NaN | ... | -2224.57 | -0.004 | -2224.57 | 6257.2311 | NaN | 4032.659 | 3268.9044 | NaN | 18353.0494 | 17589.2949 |
| 3 | 2 | 1 | 3 | H | Other | 14949.80993 | 0.00022 | 2827.265 | 0.0 | 18.592 | ... | NaN | NaN | -6257.23 | 0.0011 | NaN | -0.001 | NaN | 0.000 | 14320.3894 | NaN |
| 4 | 1 | 2 | 3 | He | Other | 14931.21793 | 0.00021 | 2572.680 | 0.0 | -13736.000 | ... | -5493.47 | -3268.904 | NaN | 763.7511 | 0.0004 | NaN | 0.0044 | -13754.592 | NaN | 14320.3949 |
5 rows × 65 columns
Processed AME Tables¶
In later sections, you will learn that the EXFOR database by itself does not contain many features for an ML model to use. The AME database contains a lot of useful information about every isotope that could potentially be useful if joined with EXFOR. Before doing this we need to bring the AME tables into an acceptable state.
There are many missing values in the table. When preparing a dataset for ML there are a couple of strategies to deal with this. You can simply drop all rows with missing values but this means a big loss of information. Another option is filling the values with the mean of the features in the dataset. This latter option does not take into account the nature of the database.
While you can personally start preparing and manipulating the AME tables, NucML offers a set of preprocessed files that are ready to use. Let us explore those.
[7]:
ame_imputed = nuc_data.load_ame(imputed_nan=True, file="merged")
ame_imputed.head()
INFO:root:AME: Reading and loading Atomic Mass Evaluation files from:
C:/Users/Pedro/Desktop/ML_Nuclear_Data/AME/CSV_Files\AME_all_merged_no_NaN.csv
[7]:
| N | Z | A | EL | O | Mass_Excess | dMass_Excess | Binding_Energy | dBinding_Energy | B_Decay_Energy | ... | Q(n,np) | Q(n,d) | Q(n,2n) | Q(n,t) | Q(n,3He) | Q(d,t) | Q(d,3He) | Q(3He,t) | Q(3He,a) | Q(t,a) | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 0 | 1 | n | Other | 8071.31713 | 0.00046 | 0.000 | 0.0 | 782.347000 | ... | 2224.150559 | 4448.716559 | -0.000000 | 2086.042238 | -58069.878992 | 6257.229000 | 7717.624959 | 763.755000 | 20577.61940 | 22038.015459 |
| 1 | 0 | 1 | 1 | H | Other | 7288.97061 | 0.00009 | 0.000 | 0.0 | -1025.364331 | ... | -0.000000 | 2224.566000 | -3814.015333 | 4171.487739 | -43552.362241 | 2443.213754 | 5493.474400 | -1043.956338 | 16763.60400 | 19813.864900 |
| 2 | 1 | 1 | 2 | H | Other | 13135.72176 | 0.00011 | 1112.283 | 0.0 | 3792.058759 | ... | -2224.570000 | -0.004000 | -2224.570000 | 6257.231100 | -29034.845490 | 4032.659000 | 3268.904400 | 3773.466748 | 18353.04940 | 17589.294900 |
| 3 | 2 | 1 | 3 | H | Other | 14949.80993 | 0.00022 | 2827.265 | 0.0 | 18.592000 | ... | -2224.570000 | -0.004000 | -6257.230000 | 0.001100 | -14517.328738 | -0.001000 | 3268.904400 | 0.000000 | 14320.38940 | 17589.294900 |
| 4 | 1 | 2 | 3 | He | Other | 14931.21793 | 0.00021 | 2572.680 | 0.0 | -13736.000000 | ... | -5493.470000 | -3268.904000 | -12107.357125 | 763.751100 | 0.000400 | -5850.128069 | 0.004400 | -13754.592000 | 8470.26224 | 14320.394900 |
5 rows × 65 columns
The imputed_nan option allows you to load the imputed AME table. This file was created by using linear interpolation feature-wise. For isotopes that do not have enough information, the mean of the feature is used to fill the values.
The EXFOR database contains many experimental campaigns performed on natural targets. The AME database does not contain any information on natural data understandably. NucML offers two AME tables with natural data, one imputed and one raw. You can load them using:
[8]:
ame_natural = nuc_data.load_ame(natural=True, file="merged")
ame_natural.head()
INFO:root:AME: Reading and loading Atomic Mass Evaluation files from:
C:/Users/Pedro/Desktop/ML_Nuclear_Data/AME/CSV_Files\AME_Natural_Properties_w_NaN.csv
[8]:
| N | Z | A | EL | O | Mass_Excess | dMass_Excess | Binding_Energy | dBinding_Energy | B_Decay_Energy | ... | Q(n,t) | Q(n,3He) | Q(d,t) | Q(d,3He) | Q(3He,t) | Q(3He,a) | Q(t,a) | Neutrons | Mass_Number | Flag | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 0 | 1 | n | Other | 8071.31713 | 0.00046 | 0.000 | 0.000 | 782.347 | ... | NaN | NaN | 6257.229 | NaN | 763.755 | 20577.6194 | NaN | 1 | 1 | I |
| 1 | 6 | 1 | 7 | H | -nn | 49135.00000 | 1004.00000 | 940.000 | 143.000 | 23062.000 | ... | NaN | NaN | 5445.229 | NaN | 23043.408 | 19765.6194 | NaN | 6 | 7 | I |
| 2 | 5 | 1 | 6 | H | -3n | 41875.72100 | 254.12700 | 961.639 | 42.354 | 24283.626 | ... | NaN | NaN | 7169.189 | NaN | 24265.034 | 21489.5794 | NaN | 5 | 6 | I |
| 3 | 4 | 1 | 5 | H | -nn | 32892.44400 | 89.44300 | 1336.359 | 17.889 | 21661.211 | ... | NaN | NaN | 6457.229 | NaN | 21642.619 | 20777.6194 | NaN | 4 | 5 | I |
| 4 | 3 | 1 | 4 | H | -n | 24621.12700 | 100.00000 | 1720.449 | 25.000 | 22196.211 | ... | NaN | NaN | 7857.229 | NaN | 22177.619 | 22177.6194 | NaN | 3 | 4 | I |
5 rows × 67 columns
[9]:
ame_natural_imputed = nuc_data.load_ame(imputed_nan=True, natural=True, file="merged")
ame_natural_imputed.head()
INFO:root:AME: Reading and loading Atomic Mass Evaluation files from:
C:/Users/Pedro/Desktop/ML_Nuclear_Data/AME/CSV_Files\AME_Natural_Properties_no_NaN.csv
[9]:
| N | Z | A | EL | O | Mass_Excess | dMass_Excess | Binding_Energy | dBinding_Energy | B_Decay_Energy | ... | Q(n,t) | Q(n,3He) | Q(d,t) | Q(d,3He) | Q(3He,t) | Q(3He,a) | Q(t,a) | Neutrons | Mass_Number | Flag | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 0 | 1 | n | Other | 8071.317130 | 0.000460 | 0.000000 | 0.000000 | 782.347000 | ... | 0.000000 | 0.0 | 6257.229000 | 0.00000 | 763.755000 | 20577.619400 | 0.000000 | 1 | 1 | I |
| 1 | 0 | 1 | 1 | H | Other | -2437.418042 | -308.875124 | 1124.312708 | -43.336286 | -5842.787372 | ... | 5065.377773 | 0.0 | 1666.915910 | 4540.08726 | -5861.379204 | 15987.306327 | 18860.477844 | -1 | 0 | N |
| 2 | 0 | 1 | 1 | H | Other | 7288.970610 | 0.000090 | 0.000000 | 0.000000 | -1025.364293 | ... | 4171.487772 | 0.0 | 2443.213634 | 5493.47440 | -1043.956164 | 16763.604053 | 19813.864900 | 0 | 1 | I |
| 3 | 1 | 1 | 2 | H | Other | 13135.721760 | 0.000110 | 1112.283000 | 0.000000 | 3792.058787 | ... | 6257.231100 | 0.0 | 4032.659000 | 3268.90440 | 3773.466876 | 18353.049400 | 17589.294900 | 1 | 2 | I |
| 4 | 2 | 1 | 3 | H | Other | 14949.809930 | 0.000220 | 2827.265000 | 0.000000 | 18.592000 | ... | 0.001100 | 0.0 | -0.001000 | 3268.90440 | 0.000000 | 14320.389400 | 17589.294900 | 2 | 3 | I |
5 rows × 67 columns
These tables are offered for you to get started and no guarantees are made. It is your responsibility to check the consistency and if needed create a new version of the table. We welcome collaboration so feel free to contribute by opening up a pull request.