bolognese 0.6.4 → 0.6.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/bolognese/crossref.rb +6 -6
- data/lib/bolognese/datacite.rb +5 -5
- data/lib/bolognese/datacite_utils.rb +5 -2
- data/lib/bolognese/utils.rb +5 -14
- data/lib/bolognese/version.rb +1 -1
- data/spec/cli_spec.rb +6 -0
- data/spec/crossref_spec.rb +1 -1
- data/spec/datacite_spec.rb +27 -3
- data/spec/fixtures/datacite_missing_creator.xml +32 -0
- data/spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/multiple_licenses.yml +186 -0
- data/spec/utils_spec.rb +1 -27
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52deb6793101a56d9a824b036aff219ba58327eb
|
4
|
+
data.tar.gz: 9f96c1a7a6920e9395f92969822bc44064fdf179
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 893420085b143cff1dd78cbbc5ed96f34cc0497a9a998249076ba2372957bc87c0b0d48873572b10cf628e9b01df8ec0adb6d2580440afcf8c3e8037be6f49bf
|
7
|
+
data.tar.gz: 32378cb92d547a7ecb33f4a69a8e794ca0649a82865552b35794e8f7bb6af14a047fc84a6512cf6dea6df2195664977784a67e263eed1c4fde55d6d6b8b61702
|
data/Gemfile.lock
CHANGED
data/lib/bolognese/crossref.rb
CHANGED
@@ -132,14 +132,14 @@ module Bolognese
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def name
|
135
|
-
|
135
|
+
parse_attributes(bibliographic_metadata.dig("titles", "title"))
|
136
136
|
end
|
137
137
|
|
138
138
|
def alternate_name
|
139
139
|
if bibliographic_metadata.fetch("publisher_item", nil).present?
|
140
|
-
|
140
|
+
parse_attributes(bibliographic_metadata.dig("publisher_item", "item_number"))
|
141
141
|
else
|
142
|
-
|
142
|
+
parse_attributes(bibliographic_metadata.fetch("item_number", nil))
|
143
143
|
end
|
144
144
|
end
|
145
145
|
|
@@ -155,7 +155,7 @@ module Bolognese
|
|
155
155
|
def license
|
156
156
|
access_indicator = Array.wrap(program_metadata).find { |m| m["name"] == "AccessIndicators" }
|
157
157
|
if access_indicator.present?
|
158
|
-
|
158
|
+
parse_attributes(access_indicator["license_ref"])
|
159
159
|
else
|
160
160
|
nil
|
161
161
|
end
|
@@ -173,7 +173,7 @@ module Bolognese
|
|
173
173
|
person = bibliographic_metadata.dig("contributors", "person_name")
|
174
174
|
Array.wrap(person).select { |a| a["contributor_role"] == contributor_role }.map do |a|
|
175
175
|
{ "@type" => "Person",
|
176
|
-
"@id" =>
|
176
|
+
"@id" => parse_attributes(a["ORCID"]),
|
177
177
|
"givenName" => a["given_name"],
|
178
178
|
"familyName" => a["surname"] }.compact
|
179
179
|
end.presence
|
@@ -214,7 +214,7 @@ module Bolognese
|
|
214
214
|
if journal_metadata.present?
|
215
215
|
{ "@type" => "Periodical",
|
216
216
|
"name" => journal_metadata["full_title"],
|
217
|
-
"issn" =>
|
217
|
+
"issn" => parse_attributes(journal_metadata.fetch("issn", nil)) }.compact
|
218
218
|
else
|
219
219
|
nil
|
220
220
|
end
|
data/lib/bolognese/datacite.rb
CHANGED
@@ -86,7 +86,7 @@ module Bolognese
|
|
86
86
|
end
|
87
87
|
|
88
88
|
def alternate_name
|
89
|
-
metadata.dig("alternateIdentifiers", "alternateIdentifier"
|
89
|
+
parse_attributes(metadata.dig("alternateIdentifiers", "alternateIdentifier"))
|
90
90
|
end
|
91
91
|
|
92
92
|
def description
|
@@ -99,7 +99,7 @@ module Bolognese
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def license
|
102
|
-
metadata.dig("rightsList", "rights", "rightsURI")
|
102
|
+
parse_attributes(Array.wrap(metadata.dig("rightsList", "rights")), content: "rightsURI")
|
103
103
|
end
|
104
104
|
|
105
105
|
def keywords
|
@@ -113,8 +113,8 @@ module Bolognese
|
|
113
113
|
end
|
114
114
|
|
115
115
|
def editor
|
116
|
-
editors = metadata.dig("contributors", "contributor")
|
117
|
-
|
116
|
+
editors = Array.wrap(metadata.dig("contributors", "contributor"))
|
117
|
+
.select { |r| r["contributorType"] == "Editor" }
|
118
118
|
get_authors(editors).presence
|
119
119
|
end
|
120
120
|
|
@@ -135,7 +135,7 @@ module Bolognese
|
|
135
135
|
|
136
136
|
def funding_reference
|
137
137
|
Array.wrap(metadata.dig("fundingReferences", "fundingReference")).map do |f|
|
138
|
-
funder_id =
|
138
|
+
funder_id = parse_attributes(f["funderIdentifier"])
|
139
139
|
{ "@type" => "Organization",
|
140
140
|
"@id" => normalize_id(funder_id),
|
141
141
|
"name" => f["funderName"] }.compact
|
@@ -46,13 +46,14 @@ module Bolognese
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def as_datacite
|
49
|
-
if
|
49
|
+
if validation_errors.blank?
|
50
50
|
datacite_xml
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
54
|
def validation_errors
|
55
55
|
@validation_errors ||= schema.validate(Nokogiri::XML(datacite_xml))
|
56
|
+
.map { |error| error.to_s }
|
56
57
|
end
|
57
58
|
|
58
59
|
def insert_work(xml)
|
@@ -219,7 +220,9 @@ module Bolognese
|
|
219
220
|
return xml unless license.present?
|
220
221
|
|
221
222
|
xml.rightsList do
|
222
|
-
|
223
|
+
Array.wrap(license).each do |lic|
|
224
|
+
xml.rights(LICENSE_NAMES[lic], 'rightsURI' => lic)
|
225
|
+
end
|
223
226
|
end
|
224
227
|
end
|
225
228
|
|
data/lib/bolognese/utils.rb
CHANGED
@@ -66,25 +66,16 @@ module Bolognese
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
def parse_attributes(element)
|
70
|
-
|
71
|
-
element
|
72
|
-
elsif element.is_a?(Hash)
|
73
|
-
element.fetch("__content__", nil)
|
74
|
-
elsif element.is_a?(Array)
|
75
|
-
element.map { |e| e.fetch("__content__", nil) }
|
76
|
-
else
|
77
|
-
nil
|
78
|
-
end
|
79
|
-
end
|
69
|
+
def parse_attributes(element, options={})
|
70
|
+
content = options[:content] || "__content__"
|
80
71
|
|
81
|
-
def parse_attribute(element)
|
82
72
|
if element.is_a?(String)
|
83
73
|
element
|
84
74
|
elsif element.is_a?(Hash)
|
85
|
-
element.fetch(
|
75
|
+
element.fetch(content, nil)
|
86
76
|
elsif element.is_a?(Array)
|
87
|
-
element.
|
77
|
+
a = element.map { |e| e.fetch(content, nil) }.uniq
|
78
|
+
a.length == 1 ? a.first : a
|
88
79
|
else
|
89
80
|
nil
|
90
81
|
end
|
data/lib/bolognese/version.rb
CHANGED
data/spec/cli_spec.rb
CHANGED
@@ -150,6 +150,12 @@ describe Bolognese::CLI do
|
|
150
150
|
subject.options = { to: "bibtex" }
|
151
151
|
expect { subject.convert file }.to output(/@article{https:\/\/doi.org\/10.5438\/4k3m-nyvg/).to_stdout
|
152
152
|
end
|
153
|
+
|
154
|
+
it 'to datacite invalid' do
|
155
|
+
file = fixture_path + "datacite_missing_creator.xml"
|
156
|
+
subject.options = { to: "datacite" }
|
157
|
+
expect { subject.convert file }.to output(/http:\/\/datacite.org\/schema\/kernel-4/).to_stdout
|
158
|
+
end
|
153
159
|
end
|
154
160
|
|
155
161
|
# context "unsupported format" do
|
data/spec/crossref_spec.rb
CHANGED
@@ -122,7 +122,7 @@ describe Bolognese::Crossref, vcr: true do
|
|
122
122
|
expect(subject.date_modified).to eq("2016-08-02T12:42:41Z")
|
123
123
|
expect(subject.page_start).to eq("1")
|
124
124
|
expect(subject.page_end).to eq("7")
|
125
|
-
expect(subject.is_part_of).to eq("@type"=>"Periodical", "name"=>"Pulmonary Medicine", "issn"=>"2090-1836")
|
125
|
+
expect(subject.is_part_of).to eq("@type"=>"Periodical", "name"=>"Pulmonary Medicine", "issn"=>["2090-1836", "2090-1844"])
|
126
126
|
expect(subject.provider).to eq("@type"=>"Organization", "name"=>"Crossref")
|
127
127
|
end
|
128
128
|
|
data/spec/datacite_spec.rb
CHANGED
@@ -52,7 +52,7 @@ describe Bolognese::Datacite, vcr: true do
|
|
52
52
|
expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-4")
|
53
53
|
end
|
54
54
|
|
55
|
-
it "
|
55
|
+
it "date" do
|
56
56
|
id = "https://doi.org/10.4230/lipics.tqc.2013.93"
|
57
57
|
subject = Bolognese::Datacite.new(id: id)
|
58
58
|
expect(subject.id).to eq("https://doi.org/10.4230/lipics.tqc.2013.93")
|
@@ -68,7 +68,24 @@ describe Bolognese::Datacite, vcr: true do
|
|
68
68
|
expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-2.1")
|
69
69
|
end
|
70
70
|
|
71
|
-
it "
|
71
|
+
it "multiple licenses" do
|
72
|
+
id = "https://doi.org/10.5281/ZENODO.48440"
|
73
|
+
subject = Bolognese::Datacite.new(id: id)
|
74
|
+
expect(subject.id).to eq("https://doi.org/10.5281/zenodo.48440")
|
75
|
+
expect(subject.type).to eq("SoftwareSourceCode")
|
76
|
+
expect(subject.additional_type).to eq("Software")
|
77
|
+
expect(subject.resource_type_general).to eq("Software")
|
78
|
+
expect(subject.author).to eq([{"@type"=>"Agent", "Name"=>"Kristian Garza"}])
|
79
|
+
expect(subject.name).to eq("Analysis Tools for Crossover Experiment of UI using Choice Architecture")
|
80
|
+
expect(subject.description).to start_with("<p> </p>\n\n<p>This tools are used to analyse the data produced by the Crosssover Experiment")
|
81
|
+
expect(subject.license).to eq(["info:eu-repo/semantics/openAccess", "https://creativecommons.org/licenses/by-nc-sa/4.0/"])
|
82
|
+
expect(subject.date_published).to eq("2016-03-27")
|
83
|
+
expect(subject.publisher).to eq("@type"=>"Organization", "name"=>"Zenodo")
|
84
|
+
expect(subject.provider).to eq("@type"=>"Organization", "name"=>"DataCite")
|
85
|
+
expect(subject.schema_version).to eq("http://datacite.org/schema/kernel-3")
|
86
|
+
end
|
87
|
+
|
88
|
+
it "funding schema version 3" do
|
72
89
|
id = "https://doi.org/10.5281/ZENODO.1239"
|
73
90
|
subject = Bolognese::Datacite.new(id: id)
|
74
91
|
expect(subject.id).to eq("https://doi.org/10.5281/zenodo.1239")
|
@@ -139,6 +156,13 @@ describe Bolognese::Datacite, vcr: true do
|
|
139
156
|
expect(subject.citation).to eq([{"@type"=>"CreativeWork", "@id"=>"https://doi.org/10.1371/journal.ppat.1000446"}])
|
140
157
|
expect(subject.provider).to eq("@type"=>"Organization", "name"=>"DataCite")
|
141
158
|
end
|
159
|
+
|
160
|
+
it "missing creator" do
|
161
|
+
string = IO.read(fixture_path + "datacite_missing_creator.xml")
|
162
|
+
subject = Bolognese::Datacite.new(string: string)
|
163
|
+
expect(subject.id).to eq("https://doi.org/10.5438/4k3m-nyvg")
|
164
|
+
expect(subject.validation_errors).to eq(["Element '{http://datacite.org/schema/kernel-4}creators': Missing child element(s). Expected is ( {http://datacite.org/schema/kernel-4}creator )."])
|
165
|
+
end
|
142
166
|
end
|
143
167
|
|
144
168
|
context "get metadata as datacite xml 4.0" do
|
@@ -176,7 +200,7 @@ describe Bolognese::Datacite, vcr: true do
|
|
176
200
|
id = "https://doi.org/10.5438/6423"
|
177
201
|
subject = Bolognese::Datacite.new(id: id, schema_version: "http://datacite.org/schema/kernel-4")
|
178
202
|
expect(subject.id).to eq("https://doi.org/10.5438/6423")
|
179
|
-
|
203
|
+
expect(subject.validation_errors).to be_empty
|
180
204
|
datacite = Maremma.from_xml(subject.as_datacite).fetch("resource", {})
|
181
205
|
expect(datacite.fetch("xsi:schemaLocation", "").split(" ").first).to eq("http://datacite.org/schema/kernel-4")
|
182
206
|
expect(datacite.fetch("fundingReferences")).to eq("fundingReference"=>{"funderName"=>"European Commission", "funderIdentifier"=>{"funderIdentifierType"=>"Crossref Funder ID", "__content__"=>"https://doi.org/10.13039/501100000780"}})
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-4" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4/metadata.xsd">
|
3
|
+
<identifier identifierType="DOI">10.5438/4K3M-NYVG</identifier>
|
4
|
+
<titles>
|
5
|
+
<title>Eating your own Dog Food</title>
|
6
|
+
</titles>
|
7
|
+
<publisher>DataCite</publisher>
|
8
|
+
<publicationYear>2016</publicationYear>
|
9
|
+
<resourceType resourceTypeGeneral="Text">BlogPosting</resourceType>
|
10
|
+
<alternateIdentifiers>
|
11
|
+
<alternateIdentifier alternateIdentifierType="Local accession number">MS-49-3632-5083</alternateIdentifier>
|
12
|
+
</alternateIdentifiers>
|
13
|
+
<subjects>
|
14
|
+
<subject>datacite</subject>
|
15
|
+
<subject>doi</subject>
|
16
|
+
<subject>metadata</subject>
|
17
|
+
</subjects>
|
18
|
+
<dates>
|
19
|
+
<date dateType="Created">2016-12-20</date>
|
20
|
+
<date dateType="Issued">2016-12-20</date>
|
21
|
+
<date dateType="Updated">2016-12-20</date>
|
22
|
+
</dates>
|
23
|
+
<relatedIdentifiers>
|
24
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">10.5438/0012</relatedIdentifier>
|
25
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="References">10.5438/55E5-T5C0</relatedIdentifier>
|
26
|
+
<relatedIdentifier relatedIdentifierType="DOI" relationType="IsPartOf">10.5438/0000-00SS</relatedIdentifier>
|
27
|
+
</relatedIdentifiers>
|
28
|
+
<version>1.0</version>
|
29
|
+
<descriptions>
|
30
|
+
<description descriptionType="Abstract">Eating your own dog food is a slang term to describe that an organization should itself use the products and services it provides. For DataCite this means that we should use DOIs with appropriate metadata and strategies for long-term preservation for...</description>
|
31
|
+
</descriptions>
|
32
|
+
</resource>
|
@@ -0,0 +1,186 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://doi.org/10.5281/zenodo.48440
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Maremma - https://github.com/datacite/maremma
|
12
|
+
Accept:
|
13
|
+
- application/vnd.datacite.datacite+xml
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 303
|
17
|
+
message: ''
|
18
|
+
headers:
|
19
|
+
Server:
|
20
|
+
- Apache-Coyote/1.1
|
21
|
+
Vary:
|
22
|
+
- Accept
|
23
|
+
Location:
|
24
|
+
- http://data.datacite.org/10.5281%2Fzenodo.48440
|
25
|
+
Expires:
|
26
|
+
- Wed, 22 Feb 2017 23:30:53 GMT
|
27
|
+
Content-Type:
|
28
|
+
- text/html;charset=utf-8
|
29
|
+
Content-Length:
|
30
|
+
- '179'
|
31
|
+
Date:
|
32
|
+
- Wed, 22 Feb 2017 22:50:12 GMT
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: |-
|
36
|
+
<html><head><title>Handle Redirect</title></head>
|
37
|
+
<body><a href="http://data.datacite.org/10.5281%2Fzenodo.48440">http://data.datacite.org/10.5281%2Fzenodo.48440</a></body></html>
|
38
|
+
http_version:
|
39
|
+
recorded_at: Wed, 22 Feb 2017 22:50:13 GMT
|
40
|
+
- request:
|
41
|
+
method: get
|
42
|
+
uri: http://data.datacite.org/10.5281%2Fzenodo.48440
|
43
|
+
body:
|
44
|
+
encoding: US-ASCII
|
45
|
+
string: ''
|
46
|
+
headers:
|
47
|
+
User-Agent:
|
48
|
+
- Maremma - https://github.com/datacite/maremma
|
49
|
+
Accept:
|
50
|
+
- application/vnd.datacite.datacite+xml
|
51
|
+
response:
|
52
|
+
status:
|
53
|
+
code: 301
|
54
|
+
message: ''
|
55
|
+
headers:
|
56
|
+
Server:
|
57
|
+
- openresty/1.11.2.2
|
58
|
+
Date:
|
59
|
+
- Wed, 22 Feb 2017 22:50:13 GMT
|
60
|
+
Content-Type:
|
61
|
+
- text/html
|
62
|
+
Content-Length:
|
63
|
+
- '191'
|
64
|
+
Connection:
|
65
|
+
- keep-alive
|
66
|
+
Location:
|
67
|
+
- https://data.datacite.org/10.5281%2Fzenodo.48440
|
68
|
+
body:
|
69
|
+
encoding: UTF-8
|
70
|
+
string: "<html>\r\n<head><title>301 Moved Permanently</title></head>\r\n<body
|
71
|
+
bgcolor=\"white\">\r\n<center><h1>301 Moved Permanently</h1></center>\r\n<hr><center>openresty/1.11.2.2</center>\r\n</body>\r\n</html>\r\n"
|
72
|
+
http_version:
|
73
|
+
recorded_at: Wed, 22 Feb 2017 22:50:13 GMT
|
74
|
+
- request:
|
75
|
+
method: get
|
76
|
+
uri: https://data.datacite.org/10.5281%2Fzenodo.48440
|
77
|
+
body:
|
78
|
+
encoding: US-ASCII
|
79
|
+
string: ''
|
80
|
+
headers:
|
81
|
+
User-Agent:
|
82
|
+
- Maremma - https://github.com/datacite/maremma
|
83
|
+
Accept:
|
84
|
+
- application/vnd.datacite.datacite+xml
|
85
|
+
response:
|
86
|
+
status:
|
87
|
+
code: 200
|
88
|
+
message: ''
|
89
|
+
headers:
|
90
|
+
Server:
|
91
|
+
- openresty/1.11.2.2
|
92
|
+
Date:
|
93
|
+
- Wed, 22 Feb 2017 22:50:13 GMT
|
94
|
+
Content-Type:
|
95
|
+
- application/vnd.datacite.datacite+xml
|
96
|
+
Content-Length:
|
97
|
+
- '2773'
|
98
|
+
Connection:
|
99
|
+
- keep-alive
|
100
|
+
Cache-Control:
|
101
|
+
- no-transform, max-age=3600
|
102
|
+
Last-Modified:
|
103
|
+
- Mon, 04 Apr 2016 15:04:32 GMT
|
104
|
+
Vary:
|
105
|
+
- Accept
|
106
|
+
Access-Control-Allow-Origin:
|
107
|
+
- "*"
|
108
|
+
Access-Control-Allow-Methods:
|
109
|
+
- GET, POST, OPTIONS
|
110
|
+
body:
|
111
|
+
encoding: UTF-8
|
112
|
+
string: |
|
113
|
+
<resource xmlns="http://datacite.org/schema/kernel-3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd">
|
114
|
+
<identifier identifierType="DOI">10.5281/zenodo.48440</identifier>
|
115
|
+
<creators>
|
116
|
+
<creator>
|
117
|
+
<creatorName>Kristian Garza</creatorName>
|
118
|
+
</creator>
|
119
|
+
</creators>
|
120
|
+
<titles>
|
121
|
+
<title>Analysis Tools for Crossover Experiment of UI using Choice Architecture</title>
|
122
|
+
</titles>
|
123
|
+
<publisher>Zenodo</publisher>
|
124
|
+
<publicationYear>2016</publicationYear>
|
125
|
+
<subjects>
|
126
|
+
<subject>choice architecture</subject>
|
127
|
+
<subject>crossover experiment</subject>
|
128
|
+
<subject>hci</subject>
|
129
|
+
</subjects>
|
130
|
+
<dates>
|
131
|
+
<date dateType="Issued">2016-03-27</date>
|
132
|
+
</dates>
|
133
|
+
<resourceType resourceTypeGeneral="Software"/>
|
134
|
+
<alternateIdentifiers>
|
135
|
+
<alternateIdentifier alternateIdentifierType="URL">http://zenodo.org/record/48440</alternateIdentifier>
|
136
|
+
</alternateIdentifiers>
|
137
|
+
<relatedIdentifiers>
|
138
|
+
<relatedIdentifier relationType="IsSupplementTo" relatedIdentifierType="URL">https://github.com/kjgarza/frame_experiment_analysis/tree/v1.0</relatedIdentifier>
|
139
|
+
</relatedIdentifiers>
|
140
|
+
<rightsList>
|
141
|
+
<rights rightsURI="info:eu-repo/semantics/openAccess">Open Access</rights>
|
142
|
+
<rights rightsURI="https://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike</rights>
|
143
|
+
</rightsList>
|
144
|
+
<descriptions>
|
145
|
+
<description descriptionType="Abstract"><p>&nbsp;</p>
|
146
|
+
|
147
|
+
<p>This tools are used to analyse the data produced by the Crosssover Experiment I designed to test Choice Architecture techniques as UI interventions in a SEEk4Science data catalogue. It contains:</p>
|
148
|
+
|
149
|
+
<p>- Data structures for the experimental data.<br />
|
150
|
+
- Visualisation functions<br />
|
151
|
+
- Analysis functions</p>
|
152
|
+
|
153
|
+
<p>## Installation</p>
|
154
|
+
|
155
|
+
<p>- R<br />
|
156
|
+
- python<br />
|
157
|
+
- ipython 4</p>
|
158
|
+
|
159
|
+
<p>Clone and use.</p>
|
160
|
+
|
161
|
+
<p>## Usage</p>
|
162
|
+
|
163
|
+
<p><br />
|
164
|
+
```python<br />
|
165
|
+
source(&#39;parallel_plot.r&#39;)<br />
|
166
|
+
with(z, parallelset(trt,response, freq=count, alpha=0.2))<br />
|
167
|
+
```</p>
|
168
|
+
|
169
|
+
<p><br />
|
170
|
+
## Contributing</p>
|
171
|
+
|
172
|
+
<p>1. Fork it!<br />
|
173
|
+
2. Create your feature branch: `git checkout -b my-new-feature`<br />
|
174
|
+
3. Commit your changes: `git commit -am &#39;Add some feature&#39;`<br />
|
175
|
+
4. Push to the branch: `git push origin my-new-feature`<br />
|
176
|
+
5. Submit a pull request :D</p>
|
177
|
+
|
178
|
+
<p><br />
|
179
|
+
## License</p>
|
180
|
+
|
181
|
+
<p>This work supports my PhD Thesis at University of Manchester.</p></description>
|
182
|
+
</descriptions>
|
183
|
+
</resource>
|
184
|
+
http_version:
|
185
|
+
recorded_at: Wed, 22 Feb 2017 22:50:13 GMT
|
186
|
+
recorded_with: VCR 3.0.3
|
data/spec/utils_spec.rb
CHANGED
@@ -41,38 +41,12 @@ describe Bolognese::Crossref, vcr: true do
|
|
41
41
|
it "array" do
|
42
42
|
element = [{ "__content__" => "10.5061/DRYAD.8515" }]
|
43
43
|
response = subject.parse_attributes(element)
|
44
|
-
expect(response).to eq(["10.5061/DRYAD.8515"])
|
45
|
-
end
|
46
|
-
|
47
|
-
it "nil" do
|
48
|
-
element = nil
|
49
|
-
response = subject.parse_attributes(element)
|
50
|
-
expect(response).to be_nil
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
context "parse attribute" do
|
55
|
-
it "string" do
|
56
|
-
element = "10.5061/DRYAD.8515"
|
57
|
-
response = subject.parse_attribute(element)
|
58
|
-
expect(response).to eq("10.5061/DRYAD.8515")
|
59
|
-
end
|
60
|
-
|
61
|
-
it "hash" do
|
62
|
-
element = { "__content__" => "10.5061/DRYAD.8515" }
|
63
|
-
response = subject.parse_attribute(element)
|
64
|
-
expect(response).to eq("10.5061/DRYAD.8515")
|
65
|
-
end
|
66
|
-
|
67
|
-
it "array" do
|
68
|
-
element = [{ "__content__" => "10.5061/DRYAD.8515" }]
|
69
|
-
response = subject.parse_attribute(element)
|
70
44
|
expect(response).to eq("10.5061/DRYAD.8515")
|
71
45
|
end
|
72
46
|
|
73
47
|
it "nil" do
|
74
48
|
element = nil
|
75
|
-
response = subject.
|
49
|
+
response = subject.parse_attributes(element)
|
76
50
|
expect(response).to be_nil
|
77
51
|
end
|
78
52
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bolognese
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Fenner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: maremma
|
@@ -343,6 +343,7 @@ files:
|
|
343
343
|
- spec/fixtures/crossref.bib
|
344
344
|
- spec/fixtures/crossref.xml
|
345
345
|
- spec/fixtures/datacite.xml
|
346
|
+
- spec/fixtures/datacite_missing_creator.xml
|
346
347
|
- spec/fixtures/schema_org.json
|
347
348
|
- spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/as_bibtex.yml
|
348
349
|
- spec/fixtures/vcr_cassettes/Bolognese_CLI/convert_from_id/crossref/as_crossref.yml
|
@@ -419,6 +420,7 @@ files:
|
|
419
420
|
- spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Funding_schema_version_3.yml
|
420
421
|
- spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Funding_schema_version_4.yml
|
421
422
|
- spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/Schema_org_JSON.yml
|
423
|
+
- spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata/multiple_licenses.yml
|
422
424
|
- spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_bibtex/BlogPosting.yml
|
423
425
|
- spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_bibtex/Dataset.yml
|
424
426
|
- spec/fixtures/vcr_cassettes/Bolognese_Datacite/get_metadata_as_datacite_xml_4_0/Dataset.yml
|