lazar 1.1.0 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lazar.gemspec +1 -0
- data/lib/import.rb +4 -5
- data/lib/lazar.rb +2 -0
- data/lib/model.rb +10 -6
- data/lib/overwrite.rb +1 -1
- data/lib/rest-client-wrapper.rb +1 -0
- data/scripts/mol2mmol-log10.rb +19 -0
- data/test/Rpackages.rb +14 -0
- data/test/compound.rb +4 -2
- data/test/setup.rb +1 -0
- data/test/validation-regression.rb +1 -1
- metadata +20 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4e7ee9c1cb08576d2bb23d8e8e44986d2dba9f9b
|
4
|
+
data.tar.gz: a88d6469cf221fb10d159498d6c35620cfcd3fe8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9dcd28f5b1ccbf93135a0aad1fef42e6dde4c765e5addb94f624a4e2e08d25c3dadf238c68b0e58d4ec36ad8700ad02fcc7fe66d54665c0316df36829b8f302
|
7
|
+
data.tar.gz: d91ea1ea8684ee5aecff7663081a424ec2ffea66a6149c102c9074a80d57c3aa22d71e4a71ab91d4958260175238bd984bacd71a28b406b815b25102f8c2469f
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.3
|
data/lazar.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
# specify any dependencies here; for example:
|
21
21
|
s.add_runtime_dependency 'bundler'
|
22
22
|
s.add_runtime_dependency 'rest-client'
|
23
|
+
s.add_runtime_dependency 'addressable'
|
23
24
|
s.add_runtime_dependency 'nokogiri'
|
24
25
|
s.add_runtime_dependency 'rserve-client'
|
25
26
|
s.add_runtime_dependency 'mongoid'
|
data/lib/import.rb
CHANGED
@@ -10,18 +10,17 @@ module OpenTox
|
|
10
10
|
def self.import
|
11
11
|
# time critical step: JSON parsing (>99%), Oj brings only minor speed gains (~1%)
|
12
12
|
datasets = {}
|
13
|
-
bundles = JSON.parse(RestClientWrapper.get('https://data.enanomapper.net/bundle
|
13
|
+
bundles = JSON.parse(RestClientWrapper.get('https://data.enanomapper.net/bundle', {}, {accept: :json}))["dataset"]
|
14
14
|
bundles.each do |bundle|
|
15
15
|
datasets[bundle["URI"]] = Dataset.find_or_create_by(:source => bundle["URI"],:name => bundle["title"].strip)
|
16
16
|
$logger.debug bundle["title"].strip
|
17
|
-
nanoparticles = JSON.parse(RestClientWrapper.get(bundle["dataset"]
|
17
|
+
nanoparticles = JSON.parse(RestClientWrapper.get(bundle["dataset"], {}, {accept: :json}))["dataEntry"]
|
18
18
|
nanoparticles.each_with_index do |np,n|
|
19
19
|
core_id = nil
|
20
20
|
coating_ids = []
|
21
21
|
np["composition"].each do |c|
|
22
22
|
uri = c["component"]["compound"]["URI"]
|
23
|
-
|
24
|
-
data = JSON.parse(RestClientWrapper.get "https://data.enanomapper.net/query/compound/url/all?media=application/json&search=#{uri}")
|
23
|
+
data = JSON.parse(RestClientWrapper.get("https://data.enanomapper.net/query/compound/url/all?search=#{uri}", {}, {accept: :json}))
|
25
24
|
source = data["dataEntry"][0]["compound"]["URI"]
|
26
25
|
smiles = data["dataEntry"][0]["values"]["https://data.enanomapper.net/feature/http%3A%2F%2Fwww.opentox.org%2Fapi%2F1.1%23SMILESDefault"]
|
27
26
|
names = []
|
@@ -52,7 +51,7 @@ module OpenTox
|
|
52
51
|
nanoparticle.dataset_ids << datasets[bundle_uri].id
|
53
52
|
end
|
54
53
|
|
55
|
-
studies = JSON.parse(RestClientWrapper.get(File.join(np["compound"]["URI"],"study")))["study"]
|
54
|
+
studies = JSON.parse(RestClientWrapper.get(File.join(np["compound"]["URI"],"study"), {}, {accept: :json}))["study"]
|
56
55
|
studies.each do |study|
|
57
56
|
dataset = datasets[np["bundles"].keys.first]
|
58
57
|
proteomics_features = {}
|
data/lib/lazar.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require "bundler/setup"
|
3
3
|
require "rest-client"
|
4
|
+
require 'addressable'
|
4
5
|
require 'yaml'
|
5
6
|
require 'json'
|
6
7
|
require 'logger'
|
@@ -49,6 +50,7 @@ rlib = File.expand_path(File.join(File.dirname(__FILE__),"..","R"))
|
|
49
50
|
# http://stackoverflow.com/questions/19619582/number-of-processors-cores-in-command-line
|
50
51
|
NR_CORES = `getconf _NPROCESSORS_ONLN`.to_i
|
51
52
|
R = Rserve::Connection.new
|
53
|
+
R.eval ".libPaths('#{rlib}')"
|
52
54
|
R.eval "
|
53
55
|
suppressPackageStartupMessages({
|
54
56
|
library(labeling,lib=\"#{rlib}\")
|
data/lib/model.rb
CHANGED
@@ -46,15 +46,18 @@ module OpenTox
|
|
46
46
|
model.prediction_feature_id = prediction_feature.id
|
47
47
|
model.training_dataset_id = training_dataset.id
|
48
48
|
model.name = "#{prediction_feature.name} (#{training_dataset.name})"
|
49
|
-
#
|
49
|
+
# git or gem versioning
|
50
50
|
dir = File.dirname(__FILE__)
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
51
|
+
path = File.expand_path("../", File.expand_path(dir))
|
52
|
+
if Dir.exists?(dir+"/.git")
|
53
|
+
commit = `git rev-parse HEAD`.chomp
|
54
|
+
branch = `git rev-parse --abbrev-ref HEAD`.chomp
|
55
|
+
url = `git config --get remote.origin.url`.chomp
|
55
56
|
model.version = {:url => url, :branch => branch, :commit => commit}
|
56
57
|
else
|
57
|
-
|
58
|
+
version = File.open(path+"/VERSION", &:gets).chomp
|
59
|
+
url = "https://rubygems.org/gems/lazar/versions/"+version
|
60
|
+
model.version = {:url => url, :branch => "gem", :commit => version}
|
58
61
|
end
|
59
62
|
|
60
63
|
# set defaults#
|
@@ -395,6 +398,7 @@ module OpenTox
|
|
395
398
|
include Mongoid::Timestamps
|
396
399
|
|
397
400
|
field :endpoint, type: String
|
401
|
+
field :qmrf, type: Hash
|
398
402
|
field :species, type: String
|
399
403
|
field :source, type: String
|
400
404
|
field :unit, type: String
|
data/lib/overwrite.rb
CHANGED
data/lib/rest-client-wrapper.rb
CHANGED
@@ -26,6 +26,7 @@ module OpenTox
|
|
26
26
|
|
27
27
|
define_singleton_method method do |uri,payload={},headers={},waiting_task=nil|
|
28
28
|
|
29
|
+
uri = Addressable::URI.encode(uri)
|
29
30
|
# check input
|
30
31
|
bad_request_error "Headers are not a hash: #{headers.inspect} for #{uri}." unless headers==nil or headers.is_a?(Hash)
|
31
32
|
headers[:subjectid] ||= @@subjectid
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require_relative '../lib/lazar.rb'
|
3
|
+
include OpenTox
|
4
|
+
newfile = ARGV[0].sub(/.csv/,"_mmol_log10.csv")
|
5
|
+
p newfile
|
6
|
+
CSV.open(newfile, "wb") do |csv|
|
7
|
+
CSV.read(ARGV[0]).each do |line|
|
8
|
+
smi,mol = line
|
9
|
+
if mol.numeric?
|
10
|
+
c = Compound.from_smiles smi
|
11
|
+
#delog = 10**(-1*mol.to_f) #if values already -log10 but mol
|
12
|
+
mmol = mol.to_f*1000
|
13
|
+
log = -Math.log10(mmol)
|
14
|
+
csv << [smi, log]
|
15
|
+
else
|
16
|
+
csv << [smi, mol.gsub(/mol/,'mmol')]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/test/Rpackages.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require_relative "setup.rb"
|
2
|
+
|
3
|
+
class LazarRpackagesTest < MiniTest::Test
|
4
|
+
|
5
|
+
def test_user_packages_installed
|
6
|
+
packages = ["caret", "randomForest", "ggplot2", "pls", "doMC", "gridExtra", "foreach", "iterators", "stringi"]
|
7
|
+
packages.each do |p|
|
8
|
+
r = R.eval "require(#{p})"
|
9
|
+
assert_equal 1, r.payload[0]
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
data/test/compound.rb
CHANGED
@@ -61,7 +61,9 @@ print c.sdf
|
|
61
61
|
|
62
62
|
def test_chemblid
|
63
63
|
c = OpenTox::Compound.from_inchi "InChI=1S/C6H6/c1-2-4-6-5-3-1/h1-6H"
|
64
|
-
assert_equal "
|
64
|
+
assert_equal "CHEMBL1531487", c.chemblid
|
65
|
+
c = OpenTox::Compound.from_smiles "OC[C@](c1onc(n1)c1ncn2c1CN(C)C(=O)c1c2cccc1Cl)(O)C"
|
66
|
+
assert_equal "CHEMBL145418", c.chemblid
|
65
67
|
end
|
66
68
|
|
67
69
|
def test_sdf_storage
|
@@ -108,7 +110,7 @@ print c.sdf
|
|
108
110
|
|
109
111
|
def test_molecular_weight
|
110
112
|
c = OpenTox::Compound.from_smiles "CC(=O)CC(C)C"
|
111
|
-
assert_equal 100.15888, c.molecular_weight
|
113
|
+
assert_equal 100.15888, c.molecular_weight.round(5)
|
112
114
|
end
|
113
115
|
|
114
116
|
def test_physchem
|
data/test/setup.rb
CHANGED
@@ -5,6 +5,7 @@ require_relative '../lib/lazar.rb'
|
|
5
5
|
include OpenTox
|
6
6
|
#$mongo.database.drop
|
7
7
|
#$gridfs = $mongo.database.fs # recreate GridFS indexes
|
8
|
+
PhysChem.descriptors
|
8
9
|
TEST_DIR ||= File.expand_path(File.dirname(__FILE__))
|
9
10
|
DATA_DIR ||= File.join(TEST_DIR,"data")
|
10
11
|
training_dataset = Dataset.where(:name => "Protein Corona Fingerprinting Predicts the Cellular Interaction of Gold and Silver Nanoparticles").first
|
@@ -84,7 +84,7 @@ class ValidationRegressionTest < MiniTest::Test
|
|
84
84
|
repeated_cv = RepeatedCrossValidation.create model
|
85
85
|
repeated_cv.crossvalidations.each do |cv|
|
86
86
|
assert cv.r_squared > 0.34, "R^2 (#{cv.r_squared}) should be larger than 0.034"
|
87
|
-
assert cv.rmse <
|
87
|
+
assert cv.rmse < 1.5, "RMSE (#{cv.rmse}) should be smaller than 0.5"
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lazar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christoph Helma, Martin Guetlein, Andreas Maunz, Micha Rautenberg, David Vorgrimmler,
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-04-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -39,6 +39,20 @@ dependencies:
|
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: addressable
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
42
56
|
- !ruby/object:Gem::Dependency
|
43
57
|
name: nokogiri
|
44
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -155,6 +169,8 @@ files:
|
|
155
169
|
- scripts/mg2mmol.rb
|
156
170
|
- scripts/mirror-enm2test.rb
|
157
171
|
- scripts/mmol2-log10.rb
|
172
|
+
- scripts/mol2mmol-log10.rb
|
173
|
+
- test/Rpackages.rb
|
158
174
|
- test/all.rb
|
159
175
|
- test/compound.rb
|
160
176
|
- test/data/EPAFHM.csv
|
@@ -221,11 +237,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
221
237
|
version: '0'
|
222
238
|
requirements: []
|
223
239
|
rubyforge_project: lazar
|
224
|
-
rubygems_version: 2.
|
240
|
+
rubygems_version: 2.6.8
|
225
241
|
signing_key:
|
226
242
|
specification_version: 4
|
227
243
|
summary: Lazar framework
|
228
244
|
test_files:
|
245
|
+
- test/Rpackages.rb
|
229
246
|
- test/all.rb
|
230
247
|
- test/compound.rb
|
231
248
|
- test/data/EPAFHM.csv
|