29
29
import collections
30
30
import pyopentree
31
31
32
- try :
33
- import vcr
34
- CACHING_AVAILABLE = True
35
- except ImportError :
36
- CACHING_AVAILABLE = False
37
- pass
38
-
39
32
__prog__ = os .path .basename (__file__ )
40
33
__version__ = "1.0.0"
41
34
__description__ = __doc__
@@ -58,14 +51,6 @@ def __init__(self, *args, **kwargs):
58
51
".opentree.cache.yaml" )
59
52
pyopentree .OpenTreeService .__init__ (self , * args , ** kwargs )
60
53
61
- def open_url (self , request ):
62
- if CACHING_AVAILABLE :
63
- with vcr .use_cassette (self .cache_path ,
64
- record_mode = "new_episodes" ):
65
- return pyopentree .OpenTreeService .open_url (self , request )
66
- else :
67
- return pyopentree .OpenTreeService .open_url (self , request )
68
-
69
54
def slice_from (self , slice_from , slice_limit ):
70
55
"""
71
56
- slice_from: 1-based index of where to start slice; defaults to None (=first)
@@ -79,7 +64,7 @@ def slice_from(self, slice_from, slice_limit):
79
64
if slice_start is None :
80
65
slice_to = slice_limit
81
66
else :
82
- slice_to = slice_start + slice_limit
67
+ slice_to = slice_start + slice_limit + 1
83
68
else :
84
69
slice_to = None
85
70
slice_result = slice (slice_from , slice_to )
@@ -108,34 +93,19 @@ def yield_studies(
108
93
citation = citation )
109
94
yield s
110
95
111
- def list_studies (self ,
112
- list_from = None ,
113
- max_studies = None ,
114
- as_table = True ,
115
- table_column_delimiter = "\t " ,
116
- out = sys .stdout ):
117
- for study in self .yield_studies (
118
- list_from = list_from ,
119
- max_studies = max_studies ):
120
- if as_table :
121
- out .write ("{}{}{}\n " .format (
122
- study .doi ,
123
- table_column_delimiter ,
124
- study .citation ))
125
- else :
126
- out .write ("[{}]\n {}\n \n " .format (
127
- study .doi ,
128
- study .citation ))
129
-
130
96
def get_trees (self ,
131
97
doi ,
132
98
schema = "nexml" ):
133
- # verbose
134
- tree_ids = self .studies_find_trees (
135
- study_property = "ot:studyPublication" ,
136
- value = doi ,
137
- exact = True )
138
- print (tree_ids )
99
+ study_query = self .studies_find_studies (
100
+ property_name = "ot:studyPublication" ,
101
+ property_value = doi ,
102
+ exact = True ,
103
+ verbose = False )
104
+ matched_studies = study_query ["matched_studies" ]
105
+ if not matched_studies :
106
+ return None
107
+ else :
108
+ return "OK"
139
109
140
110
def main ():
141
111
"""
@@ -186,16 +156,24 @@ def main():
186
156
187
157
ots = OpenTreeDoiSearcher ()
188
158
if args .subparser_name == "list-studies" :
189
- ots .list_studies (
159
+ out = sys .stdout
160
+ for study in ots .yield_studies (
190
161
list_from = args .list_from ,
191
- max_studies = args .max_studies ,
192
- as_table = args .as_table ,
193
- )
162
+ max_studies = args .max_studies ):
163
+ if args .as_table :
164
+ out .write ("{}\t {}\n " .format (
165
+ study .doi ,
166
+ study .citation ))
167
+ else :
168
+ out .write ("[{}]\n {}\n \n " .format (
169
+ study .doi ,
170
+ study .citation ))
194
171
elif args .subparser_name == "get-trees" :
195
172
# http://dx.doi.org/10.1111/j.1365-294X.2012.05606.x
196
- ots .get_trees (
197
- doi = args .doi ,
198
- schema = args .schema )
173
+ trees_string = ots .get_trees (doi = args .doi , schema = args .schema )
174
+ if trees_string is None :
175
+ sys .exit ("No studies found with DOI: '{}'" .format (args .doi ))
176
+ print (trees_string )
199
177
else :
200
178
parser .print_usage (sys .stderr )
201
179
sys .exit (1 )
0 commit comments