Skip to content
Snippets Groups Projects
Commit 1e77a7f7 authored by Alessandro Frigeri's avatar Alessandro Frigeri
Browse files

Scaffolding the module

parent dca675b8
Branches
No related tags found
No related merge requests found
include README.md
include examples/*
...@@ -4,6 +4,14 @@ MoonDB is a NASA-funded quality-controlled data system that will preserve, digit ...@@ -4,6 +4,14 @@ MoonDB is a NASA-funded quality-controlled data system that will preserve, digit
PyMoonDB is a python client to the Application Program Interface made available by the MoonDB project. PyMoonDB is a python client to the Application Program Interface made available by the MoonDB project.
# Installation
Within the directory where setup.py is placed, type:
pip install -e .
To use (with caution), simply do::
>>> import funniest
>>> print funniest.joke()
File moved
from .core import *
from .helpers import *
File added
File added
File added
...@@ -88,13 +88,11 @@ class AnalysisMethod: ...@@ -88,13 +88,11 @@ class AnalysisMethod:
return self.name return self.name
class AnalyisMethod: class AnalyisMethod:
def __init__(self,name): def __init__(self,name):
self.name = name self.name = name
def _url(path): def _url(path):
print(urllib.parse.quote(path)) print(urllib.parse.quote(path))
return "http://api.moondb.org" + urllib.parse.quote(path) return "http://api.moondb.org" + urllib.parse.quote(path)
...@@ -125,55 +123,6 @@ def _get_resp(path): ...@@ -125,55 +123,6 @@ def _get_resp(path):
return count,r['result'] return count,r['result']
def get_specimen(sc=None,mn=None,ln=None,sty=None,ste=None):
'''
Get specimen by:
- specimen code - sc
- mission name - mn
- landmark name - ln
- speciment type - sty
- sampling technique - ste
'''
sp_list = []
if sc:
for s in sc:
count,spec = _get_resp('/specimen/'+s)
sp_list.extend(spec)
if mn:
for n in mn:
count,spec = _get_resp('/specimenlist/mission/'+n)
sp_list.extend(spec)
if ln:
for n in ln:
count,spec = _get_resp('/specimenlist/mission/'+n)
sp_list.extend(spec)
if sty:
for st in sty:
count,spec = _get_resp('/specimenlist/mission/'+st)
sp_list.extend(spec)
if ste:
for st in ste:
count,spec = _get_resp('/specimenlist/mission/'+st)
sp_list.extend(spec)
from collections import namedtuple
sp_obj_list = []
for s in sp_list:
s_obj = namedtuple("Specimen", s.keys())(*s.values())
sp_obj_list.append(s_obj)
return sp_obj_list
def _json_object_hook(d): def _json_object_hook(d):
return namedtuple('X', d.keys())(*d.values()) return namedtuple('X', d.keys())(*d.values())
...@@ -181,85 +130,6 @@ def json2obj(data): ...@@ -181,85 +130,6 @@ def json2obj(data):
return json.loads(data, object_hook=_json_object_hook) return json.loads(data, object_hook=_json_object_hook)
def get_missions():
missions = []
resp = requests.get(_url('/authorities/missions/'))
_check_resp(resp)
for m_item in resp.json()['results']:
missions.append( Mission(m_item['name'] ))
return missions
## Controlled Vocabularies
def get_specimentypes():
st_list = []
count,st = _get_resp('/cv/specimentypes')
for s in st:
stobj = SpecimenType(s['name'])
st_list.append(stobj)
return st_list
def get_samplingtechniques():
st_list = []
count,st = _get_resp('/cv/samplingtechniques')
for s in st:
stobj = SamplingTechnique(s['name'])
st_list.append(stobj)
return st_list
def get_analyzedmaterials():
st_list = []
count,st = _get_resp('/cv/analyzedmaterials')
for s in st:
stobj = AnalyzedMaterial(s['name'])
st_list.append(stobj)
return st_list
def get_analytes():
analytes = []
count,an = _get_resp('/cv/analyzedmaterials')
for a in an:
analytes.append( Analyte(m_item['name'] ))
return analytes
def get_analysismethods():
am_list = []
count,am = _get_resp('/cv/analysismethods')
for a in am:
aobj = AnalysisMethod(s['name'])
am_list.append(aobj)
return am_list
def get_landmark():
pass
def get_samplingtechnique():
pass
class Filter:
def __init__(self):
self.mission = []
self.landmark = []
self.specimenType = []
self.samplingTechnique = []
self.analyzedMaterial = []
self.analyte = []
self.analysisMethod = []
def _toJSON(self):
return json.dumps(self, default=lambda o: o.__dict__,sort_keys=True,separators=(",", ":"))
def get_results(self):
resp = requests.get(_url('/data/'+self._toJSON() ))
res_list = []
for r in resp.json()['results']:
rd = dict(r)
res_list.append(rd)
return res_list
if __name__ == "__main__": if __name__ == "__main__":
m = get_missions() m = get_missions()
f = Filter() f = Filter()
......
#!/usr/bin/python3
#
# (c) 2019 Alessandro Frigeri, Istituto Nazionale di Astrofisica
#
# MoonDB Python module
def get_specimen(sc=None,mn=None,ln=None,sty=None,ste=None):
'''
Get specimen by:
- specimen code - sc
- mission name - mn
- landmark name - ln
- speciment type - sty
- sampling technique - ste
'''
sp_list = []
if sc:
for s in sc:
count,spec = _get_resp('/specimen/'+s)
sp_list.extend(spec)
if mn:
for n in mn:
count,spec = _get_resp('/specimenlist/mission/'+n)
sp_list.extend(spec)
if ln:
for n in ln:
count,spec = _get_resp('/specimenlist/mission/'+n)
sp_list.extend(spec)
if sty:
for st in sty:
count,spec = _get_resp('/specimenlist/mission/'+st)
sp_list.extend(spec)
if ste:
for st in ste:
count,spec = _get_resp('/specimenlist/mission/'+st)
sp_list.extend(spec)
from collections import namedtuple
sp_obj_list = []
for s in sp_list:
s_obj = namedtuple("Specimen", s.keys())(*s.values())
sp_obj_list.append(s_obj)
return sp_obj_list
def get_missions():
missions = []
resp = requests.get(_url('/authorities/missions/'))
_check_resp(resp)
for m_item in resp.json()['results']:
missions.append( Mission(m_item['name'] ))
return missions
## Controlled Vocabularies
def get_specimentypes():
st_list = []
count,st = _get_resp('/cv/specimentypes')
for s in st:
stobj = SpecimenType(s['name'])
st_list.append(stobj)
return st_list
def get_samplingtechniques():
st_list = []
count,st = _get_resp('/cv/samplingtechniques')
for s in st:
stobj = SamplingTechnique(s['name'])
st_list.append(stobj)
return st_list
def get_analyzedmaterials():
st_list = []
count,st = _get_resp('/cv/analyzedmaterials')
for s in st:
stobj = AnalyzedMaterial(s['name'])
st_list.append(stobj)
return st_list
def get_analytes():
analytes = []
count,an = _get_resp('/cv/analyzedmaterials')
for a in an:
analytes.append( Analyte(m_item['name'] ))
return analytes
def get_analysismethods():
am_list = []
count,am = _get_resp('/cv/analysismethods')
for a in am:
aobj = AnalysisMethod(s['name'])
am_list.append(aobj)
return am_list
def get_landmark():
pass
def get_samplingtechnique():
pass
class Filter:
def __init__(self):
self.mission = []
self.landmark = []
self.specimenType = []
self.samplingTechnique = []
self.analyzedMaterial = []
self.analyte = []
self.analysisMethod = []
def _toJSON(self):
return json.dumps(self, default=lambda o: o.__dict__,sort_keys=True,separators=(",", ":"))
def get_results(self):
resp = requests.get(_url('/data/'+self._toJSON() ))
res_list = []
for r in resp.json()['results']:
rd = dict(r)
res_list.append(rd)
return res_list
setup.py 0 → 100644
from setuptools import setup
def readme():
with open('README.md') as f:
return f.read()
setup(name='moondb',
version='0.1',
description='Accessing the MoonDB lunar sample database',
url='https://www.ict.inaf.it/gitlab/alessandro.frigeri/python-moondb',
author='Alessandro Frigeri',
author_email='Alessandro.Frigeri@inaf.it',
license='MIT',
packages=['moondb'],
install_requires=[
'markdown',
'requests',
'urllib3'
],
zip_safe=False)
import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
import sample
from unittest import TestCase
import moondb
class TestMoonDB(TestCase):
def test_is_string(self):
s = funniest.joke()
self.assertTrue(isinstance(s, basestring))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment