blob: 37bc22bdf0b3c5d628ce47eddd8927a8e6daaaa8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
require_relative '../lib/lazar.rb'
include OpenTox
$mongo.database.drop
$gridfs = $mongo.database.fs
#get list of bundle URIs
bundles = JSON.parse(RestClientWrapper.get('https://data.enanomapper.net/bundle?media=application%2Fjson'))["dataset"]
bundles.each do |bundle|
uri = bundle["URI"]
nanoparticles = JSON.parse(RestClientWrapper.get(bundle["dataset"]+"?media=application%2Fjson"))["dataEntry"]
features = JSON.parse(RestClientWrapper.get(bundle["property"]+"?media=application%2Fjson"))["feature"]
nanoparticles.each do |np|
nanoparticle = Nanoparticle.find_or_create_by(
:name => np["values"]["https://data.enanomapper.net/identifier/name"],
:source => np["compound"]["URI"],
)
nanoparticle.bundles << uri
nanoparticle.bundles.uniq!
np["composition"].each do |comp|
case comp["relation"]
when "HAS_CORE"
nanoparticle.core = comp["component"]["compound"]["URI"]
when "HAS_COATING"
nanoparticle.coating << comp["component"]["compound"]["URI"]
end
end if np["composition"]
np["values"].each do |u,v|
if u.match(/property/)
name, unit, source = nil
features.each do |uri,feat|
if u.match(/#{uri}/)
name = feat["title"]
unit = feat["units"]
source = uri
end
end
feature = Feature.find_or_create_by(
:name => name,
:unit => unit,
:source => source
)
end
v.each{|value| nanoparticle.parse_ambit_value feature, value} if v.is_a? Array
end
nanoparticle.save!
end
end
|