# 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:
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)
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,