From 56b3d4794abfa6257c6a8a4ed8fcf8b099f7cd98 Mon Sep 17 00:00:00 2001 From: Alessandro Frigeri <alessandro.frigeri@inaf.it> Date: Thu, 9 May 2019 10:55:09 +0200 Subject: [PATCH] updated example --- examples/Apollo11_soils.py | 51 ++++++++++++++++++++++++- moondb/__pycache__/core.cpython-37.pyc | Bin 11087 -> 12111 bytes moondb/core.py | 48 +++++++++++++++++------ 3 files changed, 85 insertions(+), 14 deletions(-) diff --git a/examples/Apollo11_soils.py b/examples/Apollo11_soils.py index 4a40924..9939bce 100644 --- a/examples/Apollo11_soils.py +++ b/examples/Apollo11_soils.py @@ -1,4 +1,48 @@ -import moondb +import moondb,sys + +#s0 = moondb.get_specimens(mn=['Apollo 11',]) + +s = moondb.SpecimenFilter() +s.missionName = ["Apollo 11"] +res = s.get_results() + +apollo11_weight = 0 +for r in res: + if r.weight is not None: + apollo11_weight += float(r.weight.split(' ')[0]) + +print(apollo11_weight) + +s1 = moondb.SpecimenFilter() +s1.missionName = ["Apollo 17"] +res = s1.get_results() + +apollo17_weight = 0 +for r in res: + if r.weight is not None: + apollo17_weight += float(r.weight.split(' ')[0]) + +print(apollo17_weight) + + +moon_missions = moondb.get_missions() + +weight_cum = 0 +for m in moon_missions: + s = moondb.SpecimenFilter() + s.missionName = [ m.name ] + res = s.get_results() + weight = 0 + for r in res: + if r.weight is not None: + weight += float(r.weight.split(' ')[0]) + weight_cum += weight + print("MoonDB holds {:.3f} kg of specimens from {}".format(weight/1000.0,m.name)) + +print("MoonDB contains a total of {:.3f} kg of specimen from the Moon!".format(weight_cum/1000.0)) + +sys.exit(0) + f = moondb.AnalysisFilter() f.mission = ["Apollo 11"] @@ -6,10 +50,13 @@ f.analyte = ["Na2O","CaO"] f.specimenType = ["SOIL"] + results = f.get_results() for r in results: for dr in r.dataResults: - print(dr.variable,dr.value,dr.unit) + print(dr) + #print(dr.laboratory,dr.variable,dr.value,dr.unit) + diff --git a/moondb/__pycache__/core.cpython-37.pyc b/moondb/__pycache__/core.cpython-37.pyc index ac4a12a0619b1cfa4a59c9813c828a38d796c341..0816258664bb2a023d963806c0222da6c1df54df 100644 GIT binary patch delta 3204 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 L6B3*(uWbMTwG_@f delta 2545 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 A`2YX_ diff --git a/moondb/core.py b/moondb/core.py index c2ae961..a062a1c 100644 --- a/moondb/core.py +++ b/moondb/core.py @@ -128,8 +128,8 @@ def _get_resp(path): r = resp.json() #print(r) # To be checked with Peng - if 'result' and 'count' in r: - return r['count'],r['result'] + #if 'result' and 'count' in r: + # return r['count'],r['result'] if 'results' and 'count' in r: return r['count'],r['results'] else: @@ -169,35 +169,37 @@ def get_specimens(sc=None,mn=None,ln=None,sty=None,ste=None): ste: list list of sampling techniques ''' + #print(mn) sp_list = [] if sc: for s in sc: - spec = _get_resp('/specimen/'+s) - sp_list.append(spec) + count,spec = _get_resp('/specimen/'+s) + sp_list.extend(spec) if mn: for n in mn: - spec = _get_resp('/specimenlist/mission/'+n) - sp_list.append(spec) + count,spec = _get_resp('/specimenlist/mission/'+n) + sp_list.extend(spec) if ln: for n in ln: - spec = _get_resp('/specimenlist/mission/'+n) - sp_list.append(spec) + count,spec = _get_resp('/specimenlist/mission/'+n) + sp_list.extend(spec) if sty: for st in sty: - spec = _get_resp('/specimenlist/mission/'+st) - sp_list.append(spec) + count,spec = _get_resp('/specimenlist/mission/'+st) + sp_list.extend(spec) if ste: for st in ste: - spec = _get_resp('/specimenlist/mission/'+st) - sp_list.append(spec) + count,spec = _get_resp('/specimenlist/mission/'+st) + sp_list.extend(spec) sp_obj_list = [] for s in sp_list: # dict unpack + # print(s) s_o = Specimen(**s) sp_obj_list.append(s_o) @@ -272,6 +274,28 @@ def get_samplingtechnique(): pass +class dataFilter: + def __init__(self): + pass + def _toJSON(self): + return json.dumps(self, default=lambda o: o.__dict__,sort_keys=True,separators=(",", ":")) + +@dataclass +class SpecimenFilter: + specimenCode: list = None + missionName: list = None + landmarkName: list = None + specimenType: list = None + samplingTechnique: list = None + + def get_results(self): + #res_list = get_specimens(mn=["Apollo 11"]) + res_list = get_specimens(sc=self.specimenCode, + mn=self.missionName, + ln=self.landmarkName, + sty=self.specimenType, + ste=self.samplingTechnique) + return res_list class AnalysisFilter: def __init__(self): -- GitLab