JsonGrinder.jl
JsonGrinder is a collection of routines that facilitates conversion of JSON documents into structures used by Mill.jl project.
Motivation
Imagine that you want to train a classifier on data looking like this
{
"ind1": 1,
"inda": 0,
"logp": 6.01,
"lumo": -2.184,
"mutagenic": 1,
"atoms": [
{
"element": "c",
"atom_type": 22,
"charge": -0.118,
"bonds": [
{
"bond_type": 7,
"element": "c",
"atom_type": 22,
"charge": -0.118
},
{
"bond_type": 1,
"element": "h",
"atom_type": 3,
"charge": 0.141
},
{
"bond_type": 7,
"element": "c",
"atom_type": 22,
"charge": -0.118
}
]
},
⋮
{
"element": "c",
"atom_type": 27,
"charge": 0.012,
"bonds": [
{
"bond_type": 7,
"element": "c",
"atom_type": 22,
"charge": -0.118
},
{
"bond_type": 7,
"element": "c",
"atom_type": 27,
"charge": -0.089
},
{
"bond_type": 7,
"element": "c",
"atom_type": 22,
"charge": -0.118
}
]
}
]
},
and the task is to predict the value in key mutagenic
(in this sample it's 1
) from the rest of the JSON.
With most machine learning libraries assuming your data being stored as tensors of a fixed dimension, or a sequence, you will have a bad time. Contrary, JsonGrider.jl
assumes your data to be stored in a flexible JSON format and tries to automate most labor using reasonable default, but it still gives you an option to control and tweak almost everything. JsonGrinder.jl
is built on top of Mill.jl which itself is built on top of Flux.jl (we do not reinvent the wheel). Although JsonGrinder was designed for JSON files, you can easily adapt it to XML, Protocol Buffers, MessagePack, and other similar structures
There are four steps to create a classifier once you load the data.
- Create a schema of JSON files (using
sch = JsonGrinder.schema
). - Create an extractor converting JSONs to Mill structures (
extractor = suggestextractor(sch))
). Schemasch
from previous step is very helpful, as it helps to identify, how to convert nodes (Dict
,Array
) to (Mill.ProductNode
andMill.BagNode
) and how to convert values in leaves to (Float32
,Vector{Float32}
,String
,Categorical
). - Extract your JSON files into Mill structures using extractor
extractbatch(extractor, samples)
- Create a model for your JSONs, which can be easily done by (using
model = reflectinmodel(sch, extractor,...)
) - Use your favourite methods to train the model, it is 100% compatible with
Flux.jl
tooling.
The first three steps are handled by JsonGrinder.jl
, the fourth step by Mill.jl
and the fourth by a combination of Mill.jl
and Flux.jl
.
Authors see the biggest advantage in the model
being hierarchical and reflecting the JSON structure. Thanks to Mill.jl
, it can handle missing values at all levels.
Example
Our idealized workflow is demonstrated in examples/mutagenesis.jl
determining mutagenicity on Salmonella typhimurium and it looks as follows (for many datasets which fits in memory it's sufficient just to change the key with labels (labelkey
) and names of files to use the example on them):
using Flux, MLDataPattern, Mill, JsonGrinder, JSON, Statistics, IterTools, StatsBase, ThreadTools
using JsonGrinder: suggestextractor, ExtractDict
using Mill: reflectinmodel
samples = Vector{Dict}(open(JSON.parse, "../data/mutagenesis/data.json"))
metadata = open(JSON.parse, "data/mutagenesis/meta.json")
labelkey = metadata["label"]
val_num = metadata["val_samples"]
test_num = metadata["test_samples"]
minibatchsize = 100
iterations = 1_000
neurons = 20 # neurons per layer
targets = map(i -> i[labelkey], samples)
foreach(i -> delete!(i, labelkey), samples)
train_indices = 1:length(samples)-val_num-test_num
val_indices = length(samples)-val_num-test_num+1:length(samples)-test_num
test_indices = length(samples)-test_num+1:length(samples)
#####
# Create the schema and extractor
#####
sch = JsonGrinder.schema(samples)
extractor = suggestextractor(sch)
#####
# Convert samples to Mill structure and extract targets
#####
data = tmap(extractor, samples)
labelnames = unique(targets)
#####
# Create the model
#####
model = reflectinmodel(sch, extractor,
k -> Dense(k, neurons, relu),
d -> meanmax_aggregation(d),
fsm = Dict("" => k -> Dense(k, length(labelnames))),
)
#####
# Train the model
#####
function minibatch()
idx = sample(1:length(data[train_indices]), minibatchsize, replace = false)
reduce(catobs, data[idx]), Flux.onehotbatch(targets[idx], labelnames)
end
accuracy(x,y) = mean(labelnames[Flux.onecold(model(x).data)] .== y)
trainset = reduce(catobs, data[train_indices])
valset = reduce(catobs, data[val_indices])
testset = reduce(catobs, data[test_indices])
cb = () -> begin
train_acc = accuracy(trainset, targets[train_indices])
val_acc = accuracy(valset, targets[val_indices])
test_acc = accuracy(testset, targets[test_indices])
println("accuracy: train = $train_acc, val = $val_acc, test = $test_acc")
end
ps = Flux.params(model)
loss = (x,y) -> Flux.logitcrossentropy(model(x).data, y)
Flux.Optimise.train!(loss, ps, repeatedly(minibatch, iterations), ADAM(), cb = Flux.throttle(cb, 2))
###############################################################
# Classify test set
###############################################################
probs = softmax(model(testset).data)
o = Flux.onecold(probs)
pred_classes = labelnames[o]
print(mean(pred_classes .== targets[test_indices]))
# we see the accuracy is around 79% on test set
#predicted classes for test set
print(pred_classes)
#gt classes for test set
print(targets[test_indices])
# probabilities for test set
print(probs)
A walkthrough of the example
Here we include libraries and load the data.
using Flux, MLDataPattern, Mill, JsonGrinder, JSON, Statistics, IterTools, StatsBase, ThreadTools
using JsonGrinder: suggestextractor, ExtractDict
using Mill: reflectinmodel
samples = Vector{Dict}(open(JSON.parse, "../../data/mutagenesis/data.json"))
188-element Array{Dict,1}: Dict{String,Any}("ind1" => 1,"lumo" => -1.246,"inda" => 0,"logp" => 4.23,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117)],"charge" => -0.117), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.117)],"charge" => 0.142), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.013), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.087)],"charge" => -0.087), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.087), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117)],"charge" => 0.013), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.013), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.143)],"charge" => -0.117), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.143), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => 0.013)],"charge" => -0.117), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.117)],"charge" => 0.143), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.117)],"charge" => 0.143), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.087), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.117), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.143)],"charge" => -0.117) … Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.388), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.388)],"charge" => 0.812), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.812)],"charge" => -0.388), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.812)],"charge" => -0.388), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.087), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.117), Dict{String,Any}("element" => "c","atom_type" => 195,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.087), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => 0.013)],"charge" => -0.087), Dict{String,Any}("element" => "c","atom_type" => 195,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.087), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117)],"charge" => 0.013), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => 0.013), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.117), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.117), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.117)],"charge" => 0.142), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.117)],"charge" => 0.143), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.117)],"charge" => 0.142)]) Dict{String,Any}("ind1" => 1,"lumo" => -1.387,"inda" => 0,"logp" => 4.62,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.812), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.168)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.011), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.118), Dict{String,Any}("element" => "c","atom_type" => 29,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 29,"charge" => 0.011)],"charge" => 0.011), Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.061), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.061), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.011), Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.388), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.388)],"charge" => 0.812), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.812)],"charge" => -0.388), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.812)],"charge" => -0.388), Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.061), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.061), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.061), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.168)],"charge" => 0.011), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.142) … Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => 0.011)],"charge" => 0.061), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => 0.011)],"charge" => 0.061), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => 0.011)],"charge" => 0.061), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => 0.011), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.011)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 29,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 29,"charge" => 0.011), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.011), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.011), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.118), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.011), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => 0.011), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.168)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => 0.011)],"charge" => -0.168)]) Dict{String,Any}("ind1" => 0,"lumo" => -1.034,"inda" => 0,"logp" => 2.68,"mutagenic" => 0,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.132), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128)],"charge" => -0.128), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.128)],"charge" => 0.132), Dict{String,Any}("element" => "c","atom_type" => 29,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 29,"charge" => 0.002)],"charge" => 0.002), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.002), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.132)],"charge" => -0.128), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.132)],"charge" => -0.128), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.202), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.132)],"charge" => -0.128), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 32,"charge" => -0.779)],"charge" => 0.202), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.202), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.002), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.132)],"charge" => -0.128), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.128)],"charge" => 0.132), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.128)],"charge" => 0.132) … Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.801)],"charge" => -0.398), Dict{String,Any}("element" => "h","atom_type" => 1,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 32,"charge" => -0.779)],"charge" => 0.332), Dict{String,Any}("element" => "h","atom_type" => 1,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 32,"charge" => -0.779)],"charge" => 0.332), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.002), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.132)],"charge" => -0.128), Dict{String,Any}("element" => "c","atom_type" => 29,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 29,"charge" => 0.002), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128)],"charge" => 0.002), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.002), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.132), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128)],"charge" => -0.128), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.128), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.801)],"charge" => -0.128), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.128)],"charge" => 0.132), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.128)],"charge" => 0.132), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.128)],"charge" => 0.132)]) Dict{String,Any}("ind1" => 1,"lumo" => -1.598,"inda" => 0,"logp" => 6.26,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.138), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.122)],"charge" => -0.121), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.091), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009)],"charge" => -0.091), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.091), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.122)],"charge" => 0.009), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.009), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091)],"charge" => 0.009), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091)],"charge" => 0.009), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.808), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009)],"charge" => -0.121), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.122), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.138)],"charge" => -0.121), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.138)],"charge" => -0.122), Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => 0.009), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.059), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.059)],"charge" => -0.091), Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.059), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.059)],"charge" => -0.091) … Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091)],"charge" => 0.059), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091)],"charge" => 0.059), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091)],"charge" => 0.059), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091)],"charge" => 0.059), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.091), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009)],"charge" => -0.091), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.091), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.122)],"charge" => 0.009), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.138)],"charge" => -0.122), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.138), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121)],"charge" => -0.121), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.138), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009)],"charge" => -0.121), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.091), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121)],"charge" => 0.009)]) Dict{String,Any}("ind1" => 1,"lumo" => -3.172,"inda" => 0,"logp" => 2.4,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.81), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.141), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.111)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.81)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.141)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.011), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.81)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 29,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.111), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 29,"charge" => 0.011)],"charge" => 0.011), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.141), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.141), Dict{String,Any}("element" => "c","atom_type" => 14,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.54), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => 0.111), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => 0.111)],"charge" => 0.56), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "c","atom_type" => 14,"charge" => 0.56)],"charge" => -0.54) … Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.81)],"charge" => -0.39), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.81)],"charge" => -0.39), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 14,"charge" => 0.56), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.011)],"charge" => 0.111), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.81)],"charge" => -0.39), Dict{String,Any}("element" => "c","atom_type" => 29,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.111), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 29,"charge" => 0.011), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.011), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.011), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.81), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.141)],"charge" => -0.119), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.141), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.141), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.011), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 14,"charge" => 0.56), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.111)]) Dict{String,Any}("ind1" => 1,"lumo" => -1.487,"inda" => 0,"logp" => 4.69,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.141), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => -0.118), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.141), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012)],"charge" => -0.118), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.118), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.088), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.012), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.088)],"charge" => -0.088), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.141), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.142), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.088), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.012), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.141)],"charge" => -0.118), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012)],"charge" => -0.118) … Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.389), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.389)],"charge" => 0.811), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.811)],"charge" => -0.389), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.811)],"charge" => -0.389), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.088)],"charge" => 0.012), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.088), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012)],"charge" => -0.088), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.088), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.012), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.118), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.141), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.142), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.142)]) Dict{String,Any}("ind1" => 1,"lumo" => -1.546,"inda" => 0,"logp" => 6.26,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.138), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.122)],"charge" => -0.121), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.091), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009)],"charge" => -0.091), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.091), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.122)],"charge" => 0.009), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.009), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091)],"charge" => 0.009), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091)],"charge" => 0.009), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.138), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009)],"charge" => -0.121), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.122), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.138)],"charge" => -0.121), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.808)],"charge" => -0.122), Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => 0.009), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.059), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.059)],"charge" => -0.091), Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.059), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.059)],"charge" => -0.091) … Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091)],"charge" => 0.059), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091)],"charge" => 0.059), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091)],"charge" => 0.059), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.091)],"charge" => 0.059), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.091), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009)],"charge" => -0.091), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.091), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.122)],"charge" => 0.009), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.138)],"charge" => -0.122), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.138), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121)],"charge" => -0.121), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.138), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.009)],"charge" => -0.121), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.091), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.121)],"charge" => 0.009)]) Dict{String,Any}("ind1" => 1,"lumo" => -1.749,"inda" => 0,"logp" => 1.84,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.084), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.176), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.084)],"charge" => -0.084), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.435), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.084), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.054)],"charge" => -0.054), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.054), Dict{String,Any}("bond_type" => 7,"element" => "n","atom_type" => 35,"charge" => -0.725), Dict{String,Any}("bond_type" => 7,"element" => "n","atom_type" => 35,"charge" => -0.725)],"charge" => 0.435), Dict{String,Any}("element" => "n","atom_type" => 35,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.435), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.084)],"charge" => -0.725), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "n","atom_type" => 35,"charge" => -0.725), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.176), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.046)],"charge" => -0.084), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.084)],"charge" => 0.176), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.054), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.084), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.176)],"charge" => -0.084), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.084), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.296), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.176)],"charge" => -0.084), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.084), Dict{String,Any}("bond_type" => 7,"element" => "n","atom_type" => 35,"charge" => -0.725), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.176)],"charge" => 0.296), Dict{String,Any}("element" => "n","atom_type" => 35,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.296), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.435)],"charge" => -0.725) … Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.354), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.354), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.084)],"charge" => 0.845), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.845)],"charge" => -0.354), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.845)],"charge" => -0.354), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.084), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.845), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.054)],"charge" => -0.084), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.084), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.054), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.046)],"charge" => -0.054), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.084), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.054), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.084)],"charge" => 0.046), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.046), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.084), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.176)],"charge" => -0.084), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.084)],"charge" => 0.176), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.084)],"charge" => 0.176), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.084)],"charge" => 0.176)]) Dict{String,Any}("ind1" => 1,"lumo" => -1.607,"inda" => 0,"logp" => 4.34,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.141), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.141), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.011)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.011), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.089), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.011), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.011), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.011), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.089)],"charge" => -0.089), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.141), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.142), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.089), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.262), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.011), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.011), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "o","atom_type" => 45,"charge" => -0.638)],"charge" => 0.262), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.262), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.141), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.011)],"charge" => -0.119) … Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.812)],"charge" => -0.388), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.812)],"charge" => -0.388), Dict{String,Any}("element" => "h","atom_type" => 8,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "o","atom_type" => 45,"charge" => -0.638)],"charge" => 0.412), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.089)],"charge" => 0.011), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.089), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.011), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.011)],"charge" => -0.089), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.089), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.011), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.011), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.119), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.141), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.142), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.142)]) Dict{String,Any}("ind1" => 1,"lumo" => -2.791,"inda" => 0,"logp" => 4.18,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.816), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => -0.115), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.816), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => -0.115), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.015), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.145)],"charge" => -0.115), Dict{String,Any}("element" => "c","atom_type" => 29,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.085), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 28,"charge" => 0.015)],"charge" => 0.015), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.145), Dict{String,Any}("element" => "c","atom_type" => 28,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 28,"charge" => 0.015), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 28,"charge" => 0.015), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.015), Dict{String,Any}("element" => "c","atom_type" => 28,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 28,"charge" => 0.015), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 29,"charge" => 0.015), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.015), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 28,"charge" => 0.015), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.146)],"charge" => -0.115), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.145)],"charge" => -0.115), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.145)],"charge" => -0.115) … Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.085), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.015), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.816)],"charge" => -0.384), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.816)],"charge" => -0.384), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.816)],"charge" => -0.384), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.015), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.015), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 28,"charge" => 0.015)],"charge" => -0.085), Dict{String,Any}("element" => "c","atom_type" => 28,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 28,"charge" => 0.015), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.085), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.015), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 28,"charge" => 0.015), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.145)],"charge" => -0.115), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.145), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.145), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.015), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.816)],"charge" => -0.115)]) ⋮ Dict{String,Any}("ind1" => 1,"lumo" => -2.032,"inda" => 0,"logp" => 3.01,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => 0.017), Dict{String,Any}("bond_type" => 4,"element" => "o","atom_type" => 45,"charge" => -0.634), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.077), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.083)],"charge" => 0.206), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.017), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.083)],"charge" => 0.017), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.113), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.146), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.017)],"charge" => -0.113), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.113), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.017), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.146)],"charge" => -0.113), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.113), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.083), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114)],"charge" => 0.017), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.017), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.017), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.083)],"charge" => -0.083), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.083), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.113), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.113)],"charge" => 0.017), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.017), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.146)],"charge" => -0.113), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.113), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.017), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.146)],"charge" => -0.114), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.017), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.113), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.816)],"charge" => -0.114) … Dict{String,Any}("element" => "o","atom_type" => 45,"bonds" => Any[Dict{String,Any}("bond_type" => 5,"element" => "c","atom_type" => 10,"charge" => 0.017), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 8,"charge" => 0.416)],"charge" => -0.634), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => 0.017)],"charge" => 0.067), Dict{String,Any}("element" => "h","atom_type" => 8,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "o","atom_type" => 45,"charge" => -0.634)],"charge" => 0.416), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.017), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.083)],"charge" => 0.017), Dict{String,Any}("element" => "h","atom_type" => 8,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "o","atom_type" => 45,"charge" => -0.634)],"charge" => 0.416), Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => 0.017), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.067), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.067), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.083)],"charge" => -0.083), Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.083), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => 0.206), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.067), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.067)],"charge" => -0.083), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.146), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.017)],"charge" => -0.113), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.113), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.113), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.083)],"charge" => 0.017), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.083), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.017), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.017)],"charge" => -0.083)]) Dict{String,Any}("ind1" => 1,"lumo" => -1.208,"inda" => 0,"logp" => 5.28,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.126), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.134), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.126)],"charge" => -0.126), Dict{String,Any}("element" => "c","atom_type" => 29,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.004), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 29,"charge" => 0.004), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.004)],"charge" => 0.004), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.004), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.096), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.126)],"charge" => 0.004), Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => 0.004), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.096), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.054), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.054)],"charge" => -0.096), Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.096), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.054), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.054), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => 0.004)],"charge" => -0.096), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.126), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.134), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.004)],"charge" => -0.126), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.126), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.126), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.805)],"charge" => -0.126), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.126), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.004), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.134)],"charge" => -0.126), Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.126), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.395), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.396)],"charge" => 0.805), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.805)],"charge" => -0.395) … Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.126), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.004), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.096)],"charge" => 0.004), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.096)],"charge" => 0.054), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.096)],"charge" => 0.054), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.096)],"charge" => 0.054), Dict{String,Any}("element" => "c","atom_type" => 29,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 29,"charge" => 0.004), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.004), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.004)],"charge" => 0.004), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.096), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.004), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.126)],"charge" => 0.004), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.004), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.126), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.134)],"charge" => -0.126), Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => 0.004), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.054), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.054), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.096)],"charge" => -0.096), Dict{String,Any}("element" => "c","atom_type" => 10,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.096), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.054), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.054), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => 0.004)],"charge" => -0.096), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => -0.096), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.004), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.126)],"charge" => 0.004)]) Dict{String,Any}("ind1" => 1,"lumo" => -1.729,"inda" => 0,"logp" => 5.87,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.109), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.152), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.109)],"charge" => -0.109), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.109), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.152), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.021)],"charge" => -0.108), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.108), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.021), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.152)],"charge" => -0.109), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.109), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.079), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.109)],"charge" => 0.021), Dict{String,Any}("element" => "c","atom_type" => 195,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.021), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.079), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.079)],"charge" => -0.079), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.108)],"charge" => 0.152), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.109)],"charge" => 0.152), Dict{String,Any}("element" => "c","atom_type" => 195,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.079), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.079), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.109)],"charge" => -0.079), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.079), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.079), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.109)],"charge" => -0.079), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.079), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.079), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.109)],"charge" => -0.079) … Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.109)],"charge" => 0.152), Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.109), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.378), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.378)],"charge" => 0.822), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.822)],"charge" => -0.378), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.822)],"charge" => -0.378), Dict{String,Any}("element" => "c","atom_type" => 195,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.079), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.021), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.079)],"charge" => -0.079), Dict{String,Any}("element" => "c","atom_type" => 195,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.079), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.079), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.109)],"charge" => -0.079), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 195,"charge" => -0.079), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.109), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.152)],"charge" => -0.109), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.109)],"charge" => 0.152), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.109)],"charge" => 0.152), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.109)],"charge" => 0.152)]) Dict{String,Any}("ind1" => 1,"lumo" => -1.585,"inda" => 0,"logp" => 4.69,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => -0.118), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.141), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012)],"charge" => -0.118), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.811)],"charge" => -0.118), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.088), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.012), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.088)],"charge" => -0.088), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.141), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.088), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.012), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.118), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012)],"charge" => -0.118), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.142) … Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.389), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.389)],"charge" => 0.811), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.811)],"charge" => -0.389), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.811)],"charge" => -0.389), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.088)],"charge" => 0.012), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.088), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012)],"charge" => -0.088), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.088), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.012), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.012), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.141)],"charge" => -0.118), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.142), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.141), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.141)]) Dict{String,Any}("ind1" => 0,"lumo" => -2.434,"inda" => 0,"logp" => 2.55,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.146), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114)],"charge" => -0.114), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.146), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.016)],"charge" => -0.114), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.817)],"charge" => -0.114), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.817)],"charge" => -0.114), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.146), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.016)],"charge" => -0.114), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.114)],"charge" => 0.146), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.114)],"charge" => 0.146), Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.384), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.384)],"charge" => 0.817), Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.383), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.384)],"charge" => 0.817), Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.383), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.383), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.114)],"charge" => 0.817) … Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.817)],"charge" => -0.384), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.817)],"charge" => -0.383), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.817)],"charge" => -0.383), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.016)],"charge" => 0.016), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.016), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114)],"charge" => 0.016), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.016), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.146)],"charge" => -0.114), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.114), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.146)],"charge" => -0.114), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.114)],"charge" => 0.146), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.114)],"charge" => 0.146), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.114)],"charge" => 0.146)]) Dict{String,Any}("ind1" => 1,"lumo" => -2.871,"inda" => 0,"logp" => 4.18,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.149), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112)],"charge" => -0.112), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.018), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.148), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112)],"charge" => -0.112), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.082), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112)],"charge" => 0.018), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.018), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.018), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.082)],"charge" => -0.082), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.112)],"charge" => 0.149), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.112)],"charge" => 0.148), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.082), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112)],"charge" => 0.018), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.018), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.149)],"charge" => -0.112), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.149), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.018)],"charge" => -0.112), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.112)],"charge" => 0.149) … Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.082), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112)],"charge" => 0.018), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.819)],"charge" => -0.381), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.819)],"charge" => -0.381), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.819)],"charge" => -0.381), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.082), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.018), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.018)],"charge" => -0.082), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.082), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112)],"charge" => 0.018), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.018), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.149)],"charge" => -0.112), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.112)],"charge" => 0.149), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.112)],"charge" => 0.149), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.018), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.112), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.149)],"charge" => -0.112)]) Dict{String,Any}("ind1" => 1,"lumo" => -1.361,"inda" => 0,"logp" => 3.95,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.812), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => -0.118), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.011), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => 0.011)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.168), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => 0.011)],"charge" => -0.168), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.168), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.011), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 29,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 29,"charge" => 0.011)],"charge" => 0.011), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.142), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.142), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.142) … Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.388), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.388)],"charge" => 0.812), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.812)],"charge" => -0.388), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.812)],"charge" => -0.388), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 10,"charge" => 0.011), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.011)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 29,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 29,"charge" => 0.011), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.011), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 29,"charge" => 0.011), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.119), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.119), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.118), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.142)],"charge" => -0.119), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.118)],"charge" => 0.142), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.142), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.119)],"charge" => 0.142)]) Dict{String,Any}("ind1" => 0,"lumo" => -1.598,"inda" => 0,"logp" => 1.65,"mutagenic" => 0,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.145), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => -0.115), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "n","atom_type" => 35,"charge" => -0.524), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.145), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.015)],"charge" => -0.115), Dict{String,Any}("element" => "n","atom_type" => 35,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.266)],"charge" => -0.524), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "n","atom_type" => 35,"charge" => -0.524), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.145)],"charge" => 0.266), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => 0.266), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.145), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.015)],"charge" => -0.115), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.145), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => 0.266)],"charge" => 0.145), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.145), Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.384), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.384), Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.816), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.816)],"charge" => -0.384), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.816)],"charge" => -0.384), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.015), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.145)],"charge" => -0.115), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.015)],"charge" => 0.015), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.015), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.015), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.015), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.816), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => -0.115), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.115), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.145)],"charge" => -0.115), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.145), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.145), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.115)],"charge" => 0.145)]) Dict{String,Any}("ind1" => 1,"lumo" => -2.159,"inda" => 0,"logp" => 2.72,"mutagenic" => 1,"atoms" => Any[Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.143), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.116), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.116)],"charge" => -0.116), Dict{String,Any}("element" => "c","atom_type" => 26,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.086), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 21,"charge" => -0.086), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.116)],"charge" => -0.086), Dict{String,Any}("element" => "c","atom_type" => 21,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 21,"charge" => -0.086), Dict{String,Any}("bond_type" => 1,"element" => "n","atom_type" => 38,"charge" => 0.813), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 26,"charge" => -0.086)],"charge" => 0.014), Dict{String,Any}("element" => "c","atom_type" => 21,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 21,"charge" => 0.014), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 26,"charge" => -0.086), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.114)],"charge" => -0.086), Dict{String,Any}("element" => "n","atom_type" => 38,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 21,"charge" => 0.014), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.387), Dict{String,Any}("bond_type" => 2,"element" => "o","atom_type" => 40,"charge" => -0.387)],"charge" => 0.813), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.813)],"charge" => -0.387), Dict{String,Any}("element" => "o","atom_type" => 40,"bonds" => Any[Dict{String,Any}("bond_type" => 2,"element" => "n","atom_type" => 38,"charge" => 0.813)],"charge" => -0.387), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.116)],"charge" => 0.143), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.116)],"charge" => 0.143), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.116)],"charge" => 0.143) … Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.116)],"charge" => 0.144), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 22,"charge" => -0.116)],"charge" => 0.143), Dict{String,Any}("element" => "h","atom_type" => 3,"bonds" => Any[Dict{String,Any}("bond_type" => 1,"element" => "c","atom_type" => 21,"charge" => -0.086)],"charge" => 0.114), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.116), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.086), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.116)],"charge" => 0.014), Dict{String,Any}("element" => "c","atom_type" => 27,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 26,"charge" => -0.086), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.014), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 26,"charge" => -0.086)],"charge" => -0.086), Dict{String,Any}("element" => "c","atom_type" => 26,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => -0.086), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 21,"charge" => 0.014), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.116)],"charge" => -0.086), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 26,"charge" => -0.086), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.116), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.143)],"charge" => -0.116), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 27,"charge" => 0.014), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.143), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.116)],"charge" => -0.116), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.116), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.144), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.116)],"charge" => -0.116), Dict{String,Any}("element" => "c","atom_type" => 22,"bonds" => Any[Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 22,"charge" => -0.116), Dict{String,Any}("bond_type" => 7,"element" => "c","atom_type" => 26,"charge" => -0.086), Dict{String,Any}("bond_type" => 1,"element" => "h","atom_type" => 3,"charge" => 0.143)],"charge" => -0.116)])
we load metadata, which store which class is to be predicted and how many samples to be used for validation and for testing
metadata = open(JSON.parse, "../../data/mutagenesis/meta.json")
val_num = metadata["val_samples"]
test_num = metadata["test_samples"]
minibatchsize = 100
iterations = 1_000
neurons = 20 # neurons per layer
labelkey = metadata["label"]
"mutagenic"
we see that label to be predicted is mutagenic
.
We create labels and remove them from data, such that we do not use them as features. We also prepare indices of train, test and validation data here.
targets = map(i -> i[labelkey], samples)
foreach(i -> delete!(i, labelkey), samples)
train_indices = 1:length(samples)-val_num-test_num
val_indices = length(samples)-val_num-test_num+1:length(samples)-test_num
test_indices = length(samples)-test_num+1:length(samples)
145:188
We create the schema of data
sch = JsonGrinder.schema(samples)
[Dict] (updated = 188) ├── atoms: [List] (updated = 188) │ └── [Dict] (updated = 4893) │ ⋮ ├─── ind1: [Scalar - Int64], 2 unique values, updated = 188 ├─── inda: [Scalar - Int64], 2 unique values, updated = 188 ├─── logp: [Scalar - Float64,Int64], 107 unique values, updated = 188 └─── lumo: [Scalar - Float64], 177 unique values, updated = 188
Then we use it to create the extractor converting jsons to Mill structure. The suggestextractor
is executed below with default setting, but it allows you heavy customization.
extractor = suggestextractor(sch)
Dict ├── atoms: Array of │ └── Dict │ ⋮ ├─── ind1: Categorical d = 3 ├─── inda: Categorical d = 3 ├─── logp: Float32 └─── lumo: Float32
We convert jsons to mill data samples.
data = tmap(extractor, samples)
labelnames = unique(targets)
2-element Array{Int64,1}: 1 0
We create the model reflecting structure of the data
model = reflectinmodel(sch, extractor,
k -> Dense(k, neurons, relu),
d -> meanmax_aggregation(d),
fsm = Dict("" => k -> Dense(k, length(labelnames))),
)
ProductModel … ↦ ArrayModel(Dense(62, 2)) ├── atoms: BagModel … ↦ ⟨SegmentedMean(20), SegmentedMax(20)⟩ ↦ ArrayModel(Dense(41, 20, relu)) │ └── ProductModel … ↦ ArrayModel(Dense(61, 20, relu)) │ ⋮ ├─── ind1: ArrayModel(Dense(3, 20, relu)) ⋮ └─── lumo: ArrayModel(identity)
individual arguments of reflectinmodel
are explained in Mill.jl documentation
Lastly, we define few handy functions.
function minibatch()
idx = sample(1:length(data[train_indices]), minibatchsize, replace = false)
reduce(catobs, data[idx]), Flux.onehotbatch(targets[idx], labelnames)
end
accuracy(x,y) = mean(labelnames[Flux.onecold(model(x).data)] .== y)
trainset = reduce(catobs, data[train_indices])
valset = reduce(catobs, data[val_indices])
testset = reduce(catobs, data[test_indices])
cb = () -> begin
train_acc = accuracy(trainset, targets[train_indices])
val_acc = accuracy(valset, targets[val_indices])
test_acc = accuracy(testset, targets[test_indices])
println("accuracy: train = $train_acc, val = $val_acc, test = $test_acc")
end
ps = Flux.params(model)
loss = (x,y) -> Flux.logitcrossentropy(model(x).data, y)
#13 (generic function with 1 method)
and then we can start trining
julia> Flux.Optimise.train!(loss, ps, repeatedly(minibatch, iterations), ADAM(), cb = Flux.throttle(cb, 2))
accuracy: train = 0.39, val = 0.2727272727272727, test = 0.3181818181818182
accuracy: train = 0.61, val = 0.7727272727272727, test = 0.6818181818181818
accuracy: train = 0.61, val = 0.7727272727272727, test = 0.6818181818181818
accuracy: train = 0.61, val = 0.7727272727272727, test = 0.6818181818181818
accuracy: train = 0.66, val = 0.7954545454545454, test = 0.6818181818181818
accuracy: train = 0.76, val = 0.8181818181818182, test = 0.7727272727272727
accuracy: train = 0.86, val = 0.8409090909090909, test = 0.8636363636363636
accuracy: train = 0.85, val = 0.8181818181818182, test = 0.8863636363636364
accuracy: train = 0.87, val = 0.7954545454545454, test = 0.9090909090909091
accuracy: train = 0.88, val = 0.7954545454545454, test = 0.8181818181818182
accuracy: train = 0.9, val = 0.7727272727272727, test = 0.8863636363636364
accuracy: train = 0.93, val = 0.7727272727272727, test = 0.8636363636363636
accuracy: train = 0.94, val = 0.7954545454545454, test = 0.8863636363636364
accuracy: train = 0.94, val = 0.7727272727272727, test = 0.8636363636363636
accuracy: train = 0.94, val = 0.75, test = 0.8636363636363636
accuracy: train = 0.94, val = 0.75, test = 0.8636363636363636
accuracy: train = 0.94, val = 0.75, test = 0.8636363636363636
accuracy: train = 0.95, val = 0.75, test = 0.8636363636363636
accuracy: train = 0.95, val = 0.75, test = 0.8636363636363636
accuracy: train = 0.96, val = 0.75, test = 0.8409090909090909
accuracy: train = 0.96, val = 0.75, test = 0.8409090909090909
accuracy: train = 0.97, val = 0.75, test = 0.8181818181818182
accuracy: train = 0.98, val = 0.75, test = 0.8181818181818182
accuracy: train = 0.98, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.98, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.98, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.98, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.97, val = 0.7272727272727273, test = 0.7954545454545454
accuracy: train = 0.98, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.98, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.98, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.98, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.99, val = 0.75, test = 0.7727272727272727
accuracy: train = 0.98, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.96, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.98, val = 0.7727272727272727, test = 0.7954545454545454
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.96, val = 0.7727272727272727, test = 0.7954545454545454
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.75, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.98, val = 0.7954545454545454, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7954545454545454, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.75, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.75, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.75, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7954545454545454, test = 0.7727272727272727
accuracy: train = 0.98, val = 0.7954545454545454, test = 0.7954545454545454
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.99, val = 0.7727272727272727, test = 0.7727272727272727
We can see the accuracy rising and obtaining over 98% on training set quite quickly, and on validation and test set we get over 70%.
Last part is inference on test data
julia> probs = softmax(model(testset).data)
2×44 Array{Float32,2}:
1.0 1.0 0.37354 … 0.93399 0.00894586 1.0
3.81216f-17 3.51654f-13 0.62646 0.0660105 0.991054 7.89205f-18
julia> o = Flux.onecold(probs)
44-element Array{Int64,1}:
1
1
2
2
1
1
1
1
1
1
⋮
1
2
1
1
1
1
1
2
1
julia> pred_classes = labelnames[o]
44-element Array{Int64,1}:
1
1
0
0
1
1
1
1
1
1
⋮
1
0
1
1
1
1
1
0
1
julia> print(mean(pred_classes .== targets[test_indices]))
0.7727272727272727
pred_classes
contains the predictions for our test set.
We can look at individual samples. For instance, first sample in te test_samples[2]
is
{
"ind1": 1,
"inda": 0,
"logp": 3.92,
"lumo": -3.406,
"mutagenic": 1,
"atoms": [
{
"element": "c",
"atom_type": 22,
"charge": -0.109,
"bonds": [
{
"bond_type": 1,
"element": "h",
"atom_type": 3,
"charge": 0.151
},
...
{
"bond_type": 7,
"element": "c",
"atom_type": 22,
"charge": -0.109
}
]
}
...
]
}
and the corresponding classification is
julia> pred_classes[1]
1
if you want to see the probability distribution, it can be obtained by applying softmax
to the output of the network.
julia> softmax(model(testset[1]).data)
2×1 Array{Float32,2}:
1.0
3.8121555f-17
so we can see that the probability that given sample is mutagenetic
is almost 1.
This concludes a simple classifier for JSON data.
But keep in mind the framework is general and given its ability to embed hierarchical data into fixed-size vectors, it can be used for classification, regression, and various other ML tasks.