Ejemplo n.º 1
0
#
Planck_h = 4.135667662e-15  # Units of eV s
planck_ratio = math.log(2.0)*Planck_h*1.0e18/(2*math.pi)

nuclide_provider_class = nuclides.SparqlNuclideProvider

nuclide_provider = nuclide_provider_class()

nuclides = nuclide_provider.get_nuclides()


# Should filter out half_life = None, STABLE, or where
# nuclides data already includes this value

for nuclide in nuclides:
    nuclide_data = nndc_data.all_nuclide_data(nuclide.atomic_number, nuclide.neutron_number, nuclide.isomer_index)
    half_life = nuclide_data['half_life']['value']
    half_life_unit = nuclide_data['half_life']['unit']
    uncertainty = nuclide_data['half_life']['uncertainty']
    source_url = nuclide_data['source_url']
    # Fix very small amounts listed as xxe-18 or lower s:
    if (half_life_unit == 's') and (half_life < 1.0e-15):
        half_life_unit = 'as'
        half_life *= 1.0e18
        if uncertainty is not None:
            uncertainty *= 1.0e18

    if half_life_unit == 'eV':
        half_life_unit = 'as'
        new_half_life = planck_ratio/(1.0*half_life)
        if uncertainty is not None:
Ejemplo n.º 2
0
for nuclide in nuclides:
    if nuclide.isomer_index == 0:
        nuclides_by_protons_neutrons['{}_{}'.format(
            nuclide.atomic_number, nuclide.neutron_number)] = nuclide.item_id

# Only write out entries where the data is missing on the wikidata side - or otherwise different...
half_life_file = open('half_life_data.csv', 'w')
decays_file = open('decays_data.csv', 'w')
spin_parity_file = open('spin_parity_data.csv', 'w')
abundance_file = open('abundance_data.csv', 'w')

for nuclide in nuclides:
    z = nuclide.atomic_number
    n = nuclide.neutron_number
    ii = nuclide.isomer_index
    nndc_nuclide = nndc_data.all_nuclide_data(z, n, ii)
    if len(nndc_nuclide) == 0:
        print("Warning: No data found from NNDC for Z={0} N={1} II={2}".format(
            z, n, ii))
        continue
    half_life, hl_unc, time_unit_qid, time_unit_label = transforms.half_life_values(
        nndc_nuclide['half_life'])
    if (time_unit_qid is not None) and (transforms.timespans_differ(
            half_life, time_unit_qid, nuclide.half_life)):
        half_life_file.write("{0},{1},{2},{3},{4},{5},{6}\n".format(
            nuclide.item_id, half_life, hl_unc, time_unit_qid, time_unit_label,
            nuclide.label, nndc_nuclide['source_url']))

    for decay_mode in nndc_nuclide['decay_modes']:
        mode, mode_qid, mode_qid_num, pct, decays_to = transforms.decay_mode_values(
            decay_mode, z, n, nuclides_by_protons_neutrons)
Ejemplo n.º 3
0
nuclides_by_protons_neutrons = {}
for nuclide in nuclides:
    if nuclide.isomer_index == 0:
        nuclides_by_protons_neutrons['{}_{}'.format(nuclide.atomic_number, nuclide.neutron_number)] = nuclide.item_id

# Only write out entries where the data is missing on the wikidata side - or otherwise different...
half_life_file = open('half_life_data.csv', 'w')
decays_file = open('decays_data.csv', 'w')
spin_parity_file = open('spin_parity_data.csv', 'w')
abundance_file = open('abundance_data.csv', 'w')

for nuclide in nuclides:
    z = nuclide.atomic_number
    n = nuclide.neutron_number
    ii = nuclide.isomer_index
    nndc_nuclide = nndc_data.all_nuclide_data(z, n, ii)
    if len(nndc_nuclide) == 0:
        print("Warning: No data found from NNDC for Z={0} N={1} II={2}".format(z, n, ii))
        continue
    half_life, hl_unc, time_unit_qid, time_unit_label = transforms.half_life_values(nndc_nuclide['half_life'])
    if (time_unit_qid is not None) and (transforms.timespans_differ(half_life, time_unit_qid, nuclide.half_life)):
        half_life_file.write("{0},{1},{2},{3},{4},{5},{6}\n".
                             format(nuclide.item_id, half_life, hl_unc, time_unit_qid, time_unit_label,
                                    nuclide.label, nndc_nuclide['source_url']))

    for decay_mode in nndc_nuclide['decay_modes']:
        mode, mode_qid, mode_qid_num, pct, decays_to = transforms.decay_mode_values(decay_mode, z, n,
                                                                                    nuclides_by_protons_neutrons)
        if mode_qid_num not in nuclide.decay_modes:
            decays_file.write("{0},{1},{2},{3},{4},{5},{6}\n".
                              format(nuclide.item_id, mode, mode_qid, pct, decays_to,