From a6742a45c9b9c28016d7fd697192d3dd955a15e4 Mon Sep 17 00:00:00 2001 From: Alessandro Frigeri <alessandro.frigeri@inaf.it> Date: Thu, 27 Jun 2019 16:45:30 +0200 Subject: [PATCH] updated examples --- examples/Apollo12_soils.py | 8 +- examples/example1.ipynb | 205 +++++++++++++++--- examples/specimen.py | 18 ++ ...ns_weight.py => total_specimens_weight.py} | 19 +- moondb/__pycache__/__init__.cpython-37.pyc | Bin 481 -> 476 bytes moondb/__pycache__/core.cpython-37.pyc | Bin 12107 -> 13484 bytes moondb/__pycache__/helpers.cpython-37.pyc | Bin 227 -> 222 bytes moondb/core.py | 64 +++++- 8 files changed, 254 insertions(+), 60 deletions(-) mode change 100644 => 100755 examples/specimen.py rename examples/{specimens_weight.py => total_specimens_weight.py} (55%) diff --git a/examples/Apollo12_soils.py b/examples/Apollo12_soils.py index ddc0da4..e7c2faa 100644 --- a/examples/Apollo12_soils.py +++ b/examples/Apollo12_soils.py @@ -1,6 +1,6 @@ -import moondb,sys - +#!/usr/bin/env python3 +import moondb,sys # Let's setup the data filter f = moondb.AnalysisFilter() @@ -11,8 +11,10 @@ f.specimenType = ["SOIL"] results = f.get_results() for r in results: + print('\nDataset: ',r.dataset) + print('Lab,Specie,value') for dr in r.dataResults: - print(dr.laboratory,dr.variable,dr.value,dr.unit) + print(",".join([dr.laboratory,dr.variable,dr.value+dr.unit])) diff --git a/examples/example1.ipynb b/examples/example1.ipynb index d3c69fa..c30e54f 100644 --- a/examples/example1.ipynb +++ b/examples/example1.ipynb @@ -1,111 +1,246 @@ { "cells": [ { - "cell_type": "code", - "execution_count": 9, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "import moondb" + "## MoonDB Jupyter notebook workbook\n", + "#### Alessandro Frigeri, IAPS/INAF, Rome Italy\n", + "\n", + "\n" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 104, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'name': 'Apollo 11'}\n", - "{'name': 'Apollo 12'}\n", - "{'name': 'Apollo 14'}\n", - "{'name': 'Apollo 15'}\n", - "{'name': 'Apollo 16'}\n", - "{'name': 'Apollo 17'}\n", - "{'name': 'Luna 16'}\n", - "{'name': 'Luna 20'}\n", - "{'name': 'Luna 24'}\n" + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n", + "/home/alf/gitwrk/pymoondb/moondb/__init__.py\n" ] } ], "source": [ - "m = moondb.get_missions()" + "# First we import the moondb module\n", + "%load_ext autoreload\n", + "%autoreload 2\n", + "\n", + "%aimport moondb\n", + "\n", + "print(moondb.__file__)" ] }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 105, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "['Apollo 11',\n", + " 'Apollo 12',\n", + " 'Apollo 14',\n", + " 'Apollo 15',\n", + " 'Apollo 16',\n", + " 'Apollo 17',\n", + " 'Luna 16',\n", + " 'Luna 20',\n", + " 'Luna 24']" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "f = moondb.Filter()\n", - "#f.specimenType = [\"SOIL\"]\n", - "results = f.get_results()" + "# Let's get a list of the missions in MoonDB\n", + "\n", + "mlist = moondb.get_missions()\n", + "\n", + "[m.name for m in mlist]" ] }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MoonDB holds 2991 specimens from Apollo 17.\n" + ] + } + ], + "source": [ + "# Now, we want to know how many specimens are available from the Apollo 17 missions\n", + "\n", + "f = moondb.SpecimenFilter()\n", + "mission = 'Apollo 17'\n", + "f.missionName = [ mission ]\n", + "results = f.get_results()\n", + "specimen_list = [r for r in results]\n", + "\n", + "print(\"MoonDB holds {} specimens from Apollo 17.\".format(len(specimen_list)))" + ] + }, + { + "cell_type": "code", + "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "37034" + "['COMPOSITE',\n", + " 'ROCK',\n", + " 'ROCK/Basalt/Ilmenite Basalt',\n", + " 'ROCK/Basalt/Unclassified Basalt',\n", + " 'ROCK/Breccia/Fragmental Breccia',\n", + " 'ROCK/Breccia/Impact Melt Breccia',\n", + " 'ROCK/Breccia/Regolith Breccia',\n", + " 'ROCK/Breccia/Unclassified Breccia',\n", + " 'ROCK/Crustal/Crustal:Cataclasite',\n", + " 'ROCK/Crustal/Crustal:Norite',\n", + " 'ROCK/Crustal/Crustal:Troctolite',\n", + " 'SOIL/Soil:1-2mm',\n", + " 'SOIL/Soil:2-4mm',\n", + " 'SOIL/Soil:4-10mm',\n", + " 'SOIL/Soil:<1mm',\n", + " 'SOIL/Soil:Unsieved',\n", + " 'Unknown']" ] }, - "execution_count": 34, + "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "len(results)" + "# Get a list of type of specimen of Apollo 17 available in MoonDB\n", + "s_list = [s.specimenType for s in specimen_list]\n", + "list(sorted(set(s_list)))" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": { + "scrolled": true + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'analysisCode': '15100,3#3#0158', 'analyzedMaterial': 'WHOLE ROCK', 'comment': '0.97 g, 950C', 'dataset': 'IRVING, 1972#TABLE 1', 'citation': 'IRVING, 1972', 'dataResults': [{'unit': 'ppm', 'laboratory': 'UNKNOWN', 'variable': 'H', 'methodName': 'UNKNOWN', 'methodComment': 'COMBUSTION (NEW LINE, YIELDING LOW BLANKS)', 'value': '90.0', 'methodCode': 'UNKNOWN'}, {'unit': 'per mil', 'laboratory': 'UNKNOWN', 'variable': 'DELTA_D', 'methodName': 'UNKNOWN', 'methodComment': 'COMBUSTION (NEW LINE, YIELDING LOW BLANKS)', 'value': '-554.0', 'methodCode': 'UNKNOWN'}, {'unit': 'ppm', 'laboratory': 'UNKNOWN', 'variable': 'C', 'methodName': 'UNKNOWN', 'methodComment': 'COMBUSTION (NEW LINE, YIELDING LOW BLANKS)', 'value': '99.0', 'methodCode': 'UNKNOWN'}, {'unit': 'per mil', 'laboratory': 'UNKNOWN', 'variable': 'DELTA_C13', 'methodName': 'UNKNOWN', 'methodComment': 'COMBUSTION (NEW LINE, YIELDING LOW BLANKS)', 'value': '7.9', 'methodCode': 'UNKNOWN'}]}\n" + "2991\n" ] } ], "source": [ - "an = print(results[0])" + "#\n", + "# Let's see the analyses done on the first specimen\n", + "#\n", + "\n", + "s_list = [s for s in specimen_list]\n", + "\n", + "print(len(s_list))\n", + "\n", + "s0 = s_list[0]\n", + "\n", + "an_list = [a for a in s0.get_analyses()]" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 109, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[result of MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY (code MC-ICP-MS), result of MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY (code MC-ICP-MS), result of MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY (code MC-ICP-MS), result of MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY (code MC-ICP-MS), result of MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY (code MC-ICP-MS), result of MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY (code MC-ICP-MS), result of MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY (code MC-ICP-MS), result of MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY (code MC-ICP-MS), result of CACULATED (code CALC)]\n" + ] + } + ], + "source": [ + "# now we check the results of the first analysis\n", + "\n", + "#result_of\n", + "\n", + "print(an_list[0].dataResultsObj)" + ] }, { "cell_type": "code", - "execution_count": 32, - "metadata": {}, + "execution_count": 103, + "metadata": { + "scrolled": true + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "None\n" + "Apollo 17 specimen: 76535,16\n", + "Result: Os 8.5 ppb (MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY)\n", + "Result: Ir 55.0 ppb (MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY)\n", + "Result: Ru 81.0 ppb (MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY)\n", + "Result: Pt 54.0 ppb (MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY)\n", + "Result: Pd 89.0 ppb (MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY)\n", + "Result: Re 9.0 ppb (MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY)\n", + "Result: Re187_Os188 5.1 Not Applicable (MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY)\n", + "Result: Os187_Os188 0.1511 Not Applicable (MULTICOLLECTOR INDUCTIVELY COUPLED PLASMA MASS SPECTROMETRY)\n", + "Result: G_Os(T) -348.0 Not Applicable (CACULATED)\n" ] } ], "source": [ - "print(anaobj)" + "\n", + "\n", + "\n", + "print(mission+\" specimen: \",s0.specimenName)\n", + "for r in an_list[0].dataResultsObj:\n", + " print('Result: {} {} {} ({})'.format(r.variable,r.value,r.unit,r.methodName))" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, @@ -130,7 +265,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.7.3" } }, "nbformat": 4, diff --git a/examples/specimen.py b/examples/specimen.py old mode 100644 new mode 100755 index 9aa96f1..d295d5f --- a/examples/specimen.py +++ b/examples/specimen.py @@ -1,4 +1,22 @@ +#!/usr/bin/env python3 + import moondb s_12023 = moondb.get_specimens(sc=['12023'])[0] +#print(s_12023) + +child = moondb.get_specimens(sc=['12023,114'])[0] + +#print(' A N A L Y S E S ') +a = child.get_analyses() + + +print(a[0]) + +a0_results = a[0].dataResultsObj + + +print('Result: {} {} {}'.format(a0_results[0].variable,a0_results[0].value,a0_results[0].unit,a0_results[0].methodName)) + + diff --git a/examples/specimens_weight.py b/examples/total_specimens_weight.py similarity index 55% rename from examples/specimens_weight.py rename to examples/total_specimens_weight.py index 7e446da..8acd814 100644 --- a/examples/specimens_weight.py +++ b/examples/total_specimens_weight.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + import moondb,sys @@ -16,22 +18,7 @@ for m in moon_missions: 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)) - - -f = moondb.AnalysisFilter() -f.mission = ["Apollo 11"] -f.analyte = ["Na2O","CaO"] -f.specimenType = ["SOIL"] - - - -results = f.get_results() +print("\nMoonDB contains a total of {:.3f} kg of specimen from the Moon!".format(weight_cum/1000.0)) -for r in results: - for dr in r.dataResults: - print(dr) - #print(dr.laboratory,dr.variable,dr.value,dr.unit) - diff --git a/moondb/__pycache__/__init__.cpython-37.pyc b/moondb/__pycache__/__init__.cpython-37.pyc index 4ec4ae538fe0135d4b4557ef750fe953cfffc882..adf878aed3b8987b69e4ea9b800bebce4a87163d 100644 GIT binary patch delta 74 zcmaFJe21CGiI<m)fq{Wx#}1L$jXVX622m`@`9-Nw>=~&!1*t{FD;bJd7#JYLFCG1i Z{M=Oi#GEw!^vsg-qHO(w%E=oU4FCdK78w8l delta 79 zcmcb^{E(T)iI<m)fq{Wxf%%!3jXVX6rngv<^NUiW*fUad3Q~)TS27f_GB7}hUxxY_ f`MIh3i8*Qd>6s<vMcMiVl_eSZdAgI=Fd6^=oRb)& diff --git a/moondb/__pycache__/core.cpython-37.pyc b/moondb/__pycache__/core.cpython-37.pyc index 563654845ade61e7230a3d4fbc4a3b2f8ef6331a..96bb62901a8a7c6de0f215953d4f30ea33a80d2e 100644 GIT binary patch delta 6255 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 delta 4958 zcmZ3Jc{+~IiI<m)fq{WRsN`0Rrt(BS3C6aG>bCWa3@HpL%sHI7Tv1$LHe(KV6t_D= z3QG!W3quNPGgA~#Du+8m3R?<$3quNfGgC8T6fanWBZaetA%znx!spJA!j;0^!jQt< z%oN4%&XB^B!rQ`-!rROgCE(7G!k5C|!jQt>%oHW)&X6LIBG|%^BG}9nRWIbukRp^K z+`^C|+{_du?9PxPk|Nr|kRsa56eZ%$kRp~M-olU~-pmvw>dufNks{f`kRsX46eX4- zl_K535G9@>lOo%~5G9c!mm=T75G9$SkfPYa5G9qOl%m|i5G9@BouZPW+QJwmlcJWQ z-og+io1&4T*}@Pdm!g%TUEjhGC7+^`qT9j{rI4bRqTj+0rI=!nV%WkErIccnV%)+I zrJQ1tV%owGrIKQnV&1|KrRvU*Vv%Cm!jNLw%oL>t4hyRk>lTI-Yj9YoyECNNq}aAF zq}VnyMQNmJrr2dOO<*c&N|kM9h|)^cXl97gPO(pCOx2FB*GX|maZG1Q)sELqaRLkJ zrRt|RH#0Iaq-rlPSjZ4%SmBUr=)w?d5oMHWl;R@EkisCz5M`WdoZ>3U5M`2ToZ=?Q z5M`QboZ>FY5M`FCpK6lgk!qT1*381lFoCh~K{!LId5UL>Q#w<MS1)6fMXG+PWvWFp zBiN2q3$Srk5Vxf>L|IozrE0k_#0o{(q*^bqO|{9gTgb@BFoCJi4`fiPH5NmlW~49% zGids}1f?=RO~zZCDTyVC$vKI|#gl(9wX3o+FfgoSC}L+|VECo0pOK%Ns-KvXrk|c! zQeKp;Ur<?+k)NkKc|Nl|qsZj_%uXsG^_q-DYzzz#O<<ix91IK$x7g$3i%W{)<HaVc zvN#)Zf>eOgHbe!;0tgGFwups+fkBvofuR`0;9%rnDq@+ukXLf@CYE$Y*2z+=C3*rN z{rn6J44O<}+oD(t@-y>FAZCC~0~vISHL*B6yF_X79##czZjcrp5Wze7Ijg>z5Qqs@ ziXcFmiuf297$iZqgBV;)EQ}m5$W+7!atCAGWPT2{$(y($S%Mif1tyDgpK|omWGh0l z0c5rah!6$&oh2u;7};%L3&D0tFfcHvf$Wl*T*oWVR3tI^AHU1wOg?jP&_g{}1PWF( zuN8qp&~oxoK6eF>EcQSz0)?>kWF3Ath;i6sh9f?{D7By{KHhfnBz{$QG+%)10h?2# z0P+vm=?DVs33&zv1`CiUK=BTWE)J$5`N{wI8z8nqVhE=v94A)^Dokz_(IMm!=gItn z-uM)O9Oyc^N>GaoKPWOVFgT$3K@l7o`a;%3`NMN^zYt#Mfg;0u@-HDTLVoa_+%F^_ z2#FIc>57OLQDR_V@Idp864*BqB1S~{CUA1Th!Z}Cf_xJ^`J#v;K1HAy37woTB1VyK zlo=Qp0?>S;4ED`kQF{YW^1sEBoS%}a$qX(Fic~=f6(o!;&qPl45hEB)F_X88c@Xkg z++=xibuyBg3IhW}1d?}{Ihcx6CjaA?oV-jtn5f7}o-8M!W{EAMB622}1<szJ@+Apm z9}@!u0|#S~+T>aZ10D{?yu_T!;>==Awy4RS9M%E1xItxqP-<~$PD!z!CJS0|c8fDU zzBnhpq&PkvDOeG<s53Ayq#@a&KDk!Hw*D4NX<lYY6jx4SQhrflNq$k~EsnCpqRhmk zoYW|;+|-hc{1m^$+|(#u2-`V7H#aq}<Q8jLVooVsg>!yNDyEByv_SC;b^(F_`&gTS zfguy*77nPFwI?e`W+<Yny2TP-T9lImQU+4Rz*uBBd8MSc7Md#V_~eY#<m~vO)Z&7C zkYZ4s#K6eKRAjPQPD+W9(QvY(bfAd|xSY=_&d<|iE;0Z)%orrXScDW<Ah+G(j89K3 z0h?Ab`H-|aqvK=+Ny*8~GRkhuAPp?psg=dI*udT|)?~cJn1XJAU_8i{`23`-)Z~)* zjQsrU9+0!3esBXD*D9lKXAd%tH77qYrMSoqR8unEVgbc4x_KNR<Bal?vigyX@!b4M zMw4005o88iVnIP_Udk=D)QXbSyp$q|$!ZF^thX5Rip(cRDM-no1sE^Lf5io<$(gyS zdBu|_Pf{>vXXaw$V=4-rd_keU-V78tpxmj+UIeN&iY!3_h9CkIh(#cG7kPoWppe#N zj^fD8EH2K>&nqqh2Ps=_d}c{%F1j~(K-R)kUIcjsRM#^wvM};7axe-piZK?2GcYhD zPd=xZ5e2rMxd`OFB2euGwojAw7JG3?Jh-kl2iYG2A_74{z*=0ApOl4er69;km`_V8 z3sQ@3GfbYKB*GXq`IKVh<bO&Mk;oQ-su-w6MWFm&glb7qB*;3nz!U>pk(gVMlbM%Z zlA4^6mswbvTKpJdPc+z`yUOA=$o7B=e^Tt3Y@i~=^crGf%;ZFsoD{HWERf&<#{{SZ zE(!xBB9<tQL{Py|l3EOQe-u+<-Yv#N^q>L9229~+P;7we3s7wEFmi$7B5v|2Ma#)K zs;2SCmVt`KB2b7!-5<rCn2U&zD5k{RqF4q7hA5UqEYTqh3M;Uk#hJyB;-vT	Q%` zMb!$W!O;zB)WJ>9ftfyep_-@(TG)dVa!z7iN^W9Nb}<tp14A(^Nr61U#mL84lsNg7 znrB!dDCWTaV2<L2>4?t*m21p7xy3~ZAbB*?!65`w%LOtV5<+Z@T#Q_d9E?RtlRMQ_ zZ4kN;EO0p@3i53+ddd(483Zi~lEHO~472iNH4R+_kaircL{Ni5Y;v(iyDUf%Br3sn zaM<J|<|d^i+DS4pFnpdYt{I^X%AL1ZQ%Z9Sim{t^i#@(1-z(VPPh#>cO(h3xl@zEL zh1h~>Ur`DJ1A{2Y2cVn}YDgBPfZE%WMYXaRB_}s%$+Jm;LQ;D2QZ45+9}v?QMEHRS ze-Hs`C1|o0g@V|iCVWvLh*bn4AUZ)w7}6fS#Zi=63`tw4uDHbw3fUq^J*Yg{Pun;E z%@bgg<v@mlTKCxOC@KNTBFqJ|KtWnmz`(#DJ^7-xC}RP%1;aVnL?=X42Bbk2M8F+d zq%nD}j=UtOQH>N@U{gRbrZf4fPKQ=1$VZGtpqdw5Q91(ygDE2eLs13;14EU@WJW!) z$@-e2&PAZAu_z0qk+~=vWF@E)EXoB5FhPpnJP;deZ=nbjc_y2`>h5KNl;og#KZ*-f zu|S#*nv6x7Al*FZg*!+i*z{X0DVfP7MWE`g$Qfk43y1(|0_V$H9H8z<PGWMZCI_TF z2P*c9ib0A%E%Yd+q7-l;G}+KlUIZMnU;-R4pl~;zoMPyJwOs~w0!Rr`P$Be|GB7Y` zgHj(T#5ou_I5?P#N+-WItnvZ7O&8<<JrJP-3Qs00g(^<Rg8ZDEd<8=zO~xWnQq*Mi z0|8C@B3qC`P-cnZ0ktwRlk^G_i;7c=^e1mL60NrZ6=LA_7PzmST3iImv$wdD^K)`i zlS{yr9XNcz6(lG(fP1Aypzb21!U9(&;F2C(HiHXJP(!Z>6dy&P22c^AN(C2upf*5} zC&*c$ptuLuhDA{zel&=P0TFQ^A|6D5i!@NHu_zhD1?5a|+ARWw61Zu2i!t{WV_Fe7 zxt4*{fRnH_hy@N}a6RuZd7rUFJt)AUzy%(xwgeaQx0rKM^KLN}8%8nZ=77TwoB+^! zitre^#bJ}1pHiBWY6ptz;tFtc7SuTxVB}!rVdP=rVCG{J;uR9&<A6dgJ{CS^K3--H TW)4;k2@Yls7B0KVX(ny}1aPx* diff --git a/moondb/__pycache__/helpers.cpython-37.pyc b/moondb/__pycache__/helpers.cpython-37.pyc index c7e04cde9e47a478e03dff61959bf3d407710eb1..9c6fa48130fde75483ad9a95d797f6f6d62d5f4d 100644 GIT binary patch delta 44 zcmaFNc#o0CiI<m)fq{V`yG0~+B2T}Fwthx_ZmND_PMUstW=VNbwthk7#4Y*&2P6%S delta 49 zcmcb|_?VH$iI<m)fq{Xc;>GEhi9G$12KpKKxvBbzIcfUonI+{#+4=>QB^mj7x)ayy F0|0nP5TF16 diff --git a/moondb/core.py b/moondb/core.py index 8083d63..9272b71 100644 --- a/moondb/core.py +++ b/moondb/core.py @@ -2,17 +2,19 @@ # # (c) 2019 Alessandro Frigeri, Istituto Nazionale di Astrofisica # -# MoonDB Python module -# https://realpython.com/api-integration-in-python/ +# pymoondb: MoonDB Python module + import sys import json import urllib.parse import urllib3,socket import logging -from dataclasses import dataclass +from dataclasses import dataclass, field from collections import namedtuple +#from dataclasses import dataclass, field + import requests #import attr @@ -35,6 +37,35 @@ class Landmark: point = "POINT ({} {})" return point.format(self.longitude,self.latitude) +@dataclass +class Result: + unit: str + laboratory: str + variable: str + methodName: str + methodComment:str + value: str + methodCode: str + + def __repr__(self): + return "result of "+self.methodName+" (code "+self.methodCode+")" + +@dataclass +class Analysis: + analysisCode: str + analyzedMaterial: str + comment: str + dataset: str + citation: str + dataResults: list = field(default_factory=list) + dataResultsObj: list = field(default_factory=list) + + def __repr__(self): + return "Analysis:"+self.analysisCode+" on "+self.analyzedMaterial+" material" + + def __str__(self): + return self.analysisCode+" on "+self.analyzedMaterial + @dataclass class Specimen: specimenCode: str @@ -52,6 +83,28 @@ class Specimen: pristinityDate: str description: str + def get_analyses(self): + an_obj_list = [] + n,an_list = _get_resp('/data/specimen/'+self.specimenCode) + for a in an_list: + r_o_list = [] + for r in a['dataResults']: + r_o = Result(**r) + r_o_list.append(r_o) + #print(r_o) + a['dataResultsObj'] = r_o_list + an_o = Analysis(**a) + an_obj_list.append(an_o) + return an_obj_list + + + + + + +@dataclass +class People: + name: str class SpecimenType: def __init__(self,name): @@ -99,8 +152,8 @@ class AnalyisMethod: def __init__(self,name): self.name = name -class Analysis: - __slots__ = ('analysisCode','analyzedMaterial','comment','dataset','citation','dataResults') +#class Analysis: +# __slots__ = ('analysisCode','analyzedMaterial','comment','dataset','citation','dataResults') class DataResult: __slots__ = ('unit', 'laboratory', 'variable', 'methodName', 'methodComment', 'value', 'methodCode') @@ -199,7 +252,6 @@ def get_specimens(sc=None,mn=None,ln=None,sty=None,ste=None): for s in sp_list: # dict unpack - # print(s) s_o = Specimen(**s) sp_obj_list.append(s_o) -- GitLab