function load_mnist(dataset::String,anomaly_number::Int;noise=true,normalize=true)
# load data
data = BSON.load(datadir("2d_mnist","$dataset.BSON"))
x = Float32.(data[:data])
# add uniform noise to dequantize data
if noise
x = x .+ rand(Uniform(0,1),size(x))
end
bagids = data[:bagids]
y = data[:labels]
bag_labels = data[:bag_labels]
# split to 0/1 classes
c0 = y .!= anomaly_number
c1 = y .== anomaly_number
bags0 = seqids2bags(bagids[c0[:]])
bags1 = seqids2bags(bagids[c1[:]])
# bag labels
l0 = bag_labels .!= anomaly_number
l1 = bag_labels .== anomaly_number
l_normal = bag_labels[l0]
l_anomaly = bag_labels[l1]
# transform data
# uniform distribution [0,1]
if normalize
x = UCI.normalize(x)
end
# return normal and anomalous bags (and their labels)
(normal = BagNode(ArrayNode(x[:,c0[:]]), bags0), anomaly = BagNode(ArrayNode(x[:,c1[:]]), bags1), l_normal = l_normal, l_anomaly = l_anomaly)
end