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.

  1. Create a schema of JSON files (using sch = JsonGrinder.schema).
  2. Create an extractor converting JSONs to Mill structures (extractor = suggestextractor(sch))). Schema sch from previous step is very helpful, as it helps to identify, how to convert nodes (Dict, Array) to (Mill.ProductNode and Mill.BagNode) and how to convert values in leaves to (Float32, Vector{Float32}, String, Categorical).
  3. Extract your JSON files into Mill structures using extractor extractbatch(extractor, samples)
  4. Create a model for your JSONs, which can be easily done by (using model = reflectinmodel(sch, extractor,...))
  5. 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.jldetermining 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 first 10 samples
print(pred_classes)
#gt classes for first 10 samples
print(ground_truth_classes)
# probabilities of first 10 samples
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.61, val = 0.7727272727272727, test = 0.6818181818181818
accuracy: train = 0.61, val = 0.7727272727272727, test = 0.6818181818181818
accuracy: train = 0.65, val = 0.7727272727272727, test = 0.7045454545454546
accuracy: train = 0.73, val = 0.75, test = 0.8409090909090909
accuracy: train = 0.74, val = 0.7727272727272727, test = 0.8181818181818182
accuracy: train = 0.81, val = 0.75, test = 0.8863636363636364
accuracy: train = 0.84, val = 0.6818181818181818, test = 0.7954545454545454
accuracy: train = 0.9, val = 0.75, test = 0.8181818181818182
accuracy: train = 0.92, val = 0.7954545454545454, test = 0.8409090909090909
accuracy: train = 0.94, val = 0.7954545454545454, 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.93, val = 0.7272727272727273, test = 0.8409090909090909
accuracy: train = 0.94, val = 0.7272727272727273, 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.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.94, val = 0.75, test = 0.8409090909090909
accuracy: train = 0.94, val = 0.75, test = 0.8409090909090909
accuracy: train = 0.94, val = 0.75, test = 0.8636363636363636
accuracy: train = 0.95, val = 0.75, test = 0.8636363636363636
accuracy: train = 0.96, val = 0.7045454545454546, test = 0.8181818181818182
accuracy: train = 0.96, val = 0.7045454545454546, test = 0.7954545454545454
accuracy: train = 0.96, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.96, val = 0.7272727272727273, test = 0.7954545454545454
accuracy: train = 0.96, val = 0.7272727272727273, test = 0.7954545454545454
accuracy: train = 0.97, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.96, val = 0.7272727272727273, test = 0.7954545454545454
accuracy: train = 0.96, val = 0.7272727272727273, test = 0.7954545454545454
accuracy: train = 0.96, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.96, val = 0.7272727272727273, test = 0.7954545454545454
accuracy: train = 0.97, val = 0.7045454545454546, test = 0.8181818181818182
accuracy: train = 0.97, val = 0.75, test = 0.7727272727272727
accuracy: train = 0.96, val = 0.7272727272727273, test = 0.7954545454545454
accuracy: train = 0.96, val = 0.7272727272727273, test = 0.7727272727272727
accuracy: train = 0.96, val = 0.7272727272727273, test = 0.7727272727272727
accuracy: train = 0.96, val = 0.7272727272727273, test = 0.7727272727272727
accuracy: train = 0.96, val = 0.7272727272727273, test = 0.7727272727272727
accuracy: train = 0.97, val = 0.7272727272727273, test = 0.7954545454545454
accuracy: train = 0.96, val = 0.75, test = 0.7727272727272727
accuracy: train = 0.97, val = 0.7045454545454546, test = 0.8181818181818182
accuracy: train = 0.97, val = 0.75, test = 0.7727272727272727
accuracy: train = 0.97, val = 0.75, test = 0.7727272727272727
accuracy: train = 0.96, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.98, val = 0.75, test = 0.7727272727272727
accuracy: train = 0.97, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.98, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.97, val = 0.75, test = 0.7727272727272727
accuracy: train = 0.96, val = 0.7727272727272727, test = 0.7954545454545454
accuracy: train = 0.97, val = 0.7727272727272727, test = 0.7727272727272727
accuracy: train = 0.97, val = 0.7727272727272727, test = 0.7954545454545454
accuracy: train = 0.97, val = 0.7727272727272727, test = 0.7954545454545454
accuracy: train = 0.98, val = 0.7727272727272727, test = 0.7954545454545454
accuracy: train = 0.97, val = 0.7727272727272727, test = 0.7954545454545454
accuracy: train = 0.98, val = 0.7727272727272727, test = 0.7954545454545454
accuracy: train = 0.97, val = 0.75, test = 0.7954545454545454
accuracy: train = 0.97, val = 0.7727272727272727, test = 0.8181818181818182
accuracy: train = 0.98, val = 0.7727272727272727, test = 0.8181818181818182
accuracy: train = 0.98, val = 0.7727272727272727, test = 0.8181818181818182
accuracy: train = 0.98, val = 0.7727272727272727, test = 0.8181818181818182
accuracy: train = 0.98, val = 0.7727272727272727, test = 0.8181818181818182
accuracy: train = 0.98, val = 0.7727272727272727, test = 0.8181818181818182
accuracy: train = 0.98, val = 0.7727272727272727, test = 0.8181818181818182
accuracy: train = 0.97, val = 0.7727272727272727, test = 0.8181818181818182
accuracy: train = 0.98, val = 0.7727272727272727, test = 0.8181818181818182

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.747354  …  0.902423   0.135826  1.0
 4.76709f-12  2.69321f-7  0.252646     0.0975767  0.864174  5.2728f-11

julia> o = Flux.onecold(probs)
44-element Array{Int64,1}:
 1
 1
 1
 2
 1
 1
 1
 1
 1
 1
 ⋮
 2
 1
 1
 1
 1
 1
 1
 2
 1

julia> pred_classes = labelnames[o]
44-element Array{Int64,1}:
 1
 1
 1
 0
 1
 1
 1
 1
 1
 1
 ⋮
 0
 1
 1
 1
 1
 1
 1
 0
 1

julia> print(mean(pred_classes .== targets[test_indices]))
0.8181818181818182

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
 4.767093f-12

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.