ArthurPSmith has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/271551

Change subject: Fixes for nuclides to handle problem of duplicate (and some 
wrong) returns from SPARQL query
......................................................................

Fixes for nuclides to handle problem of duplicate (and some wrong) returns from 
SPARQL query

Change-Id: Ie27c4b8009273a3860fb836862c8a834bd2caa3b
---
M nuclides.py
1 file changed, 25 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/labs/tools/ptable 
refs/changes/51/271551/1

diff --git a/nuclides.py b/nuclides.py
index 76d4622..8e3c586 100644
--- a/nuclides.py
+++ b/nuclides.py
@@ -171,10 +171,15 @@
         query_result = self.get_sparql(hl_query)
         for nuclide_result in query_result:
             nuclide_uri = nuclide_result['nuclide']['value']
+            if nuclide_result['half_life']['value'] == '0':
+                continue  # WDQS bug: values sometimes zero - skip
             if nuclide_uri in nuclides:
-                nuclides[nuclide_uri].half_life = time_in_seconds(
-                    nuclide_result['half_life']['value'],
-                    nuclide_result['half_life_unit']['value'])
+                if nuclides[nuclide_uri].half_life is not None:
+                    print("Warning: half life already set for 
{0}?".format(nuclide_uri))
+                else:
+                    nuclides[nuclide_uri].half_life = time_in_seconds(
+                        nuclide_result['half_life']['value'],
+                        nuclide_result['half_life_unit']['value'])
 
         decay_query = "PREFIX ps: <http://www.wikidata.org/prop/statement/> \
 PREFIX pq: <http://www.wikidata.org/prop/qualifier/> \
@@ -199,6 +204,21 @@
 
         for item_id, nuclide in nuclides.items():
             yield nuclide
+
+    def get_magic_numbers(self):
+        magic_query = "PREFIX wdt: <http://www.wikidata.org/prop/direct/> \
+PREFIX wd: <http://www.wikidata.org/entity/> \
+SELECT ?magic_number WHERE {{ \
+    ?number wdt:P{0} wd:Q{1} ; \
+            wdt:P{2} ?magic_number . \
+}} ORDER by ?magic_number".format(Nuclide.instance_pid, Nuclide.magic_qid,
+            Nuclide.numeric_pid)
+        query_result = self.get_sparql(magic_query)
+        magic_numbers = []
+        for magic_result in query_result:
+            magic_number = magic_result['magic_number']['value']
+            magic_numbers.append(int(magic_number))
+        return magic_numbers
 
 
 class WdqNuclideProvider(WdqBase, NuclideProvider):
@@ -305,6 +325,8 @@
     isotope_qid = 25276  # top-level class under which all isotopes to be found
     stable_qid = 878130  # id for stable isotope
     isomer_qid = 846110  # metastable isomers all instances of this
+    magic_qid = 11606  # magic number of nucleons for stability
+    numeric_pid = 1181
 
     def __init__(self, **kwargs):
         self.decay_modes = []

-- 
To view, visit https://gerrit.wikimedia.org/r/271551
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie27c4b8009273a3860fb836862c8a834bd2caa3b
Gerrit-PatchSet: 1
Gerrit-Project: labs/tools/ptable
Gerrit-Branch: master
Gerrit-Owner: ArthurPSmith <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to