Skip to content

Commit

Permalink
Folder configuration parameter added
Browse files Browse the repository at this point in the history
  • Loading branch information
Julian-Theis committed May 18, 2021
1 parent d7d785f commit 5e72678
Show file tree
Hide file tree
Showing 48 changed files with 297 additions and 43 deletions.
25 changes: 18 additions & 7 deletions avatar/evaluation.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import os
import argparse
from util.playout import readVariantFile
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

Expand Down Expand Up @@ -41,15 +42,25 @@ def intersection(lst1, lst2):
return list(set(ls1) & set(ls2))

def load_data(system, suffix, job, strategy=None):
f_train = os.path.join(WORK_PATH, "data", "variants", system + "_train.txt")
f_test = os.path.join(WORK_PATH, "data", "variants", system + "_test.txt")
f_pop = os.path.join(WORK_PATH, "data", "variants", system + "_pop.txt")
f_eval = os.path.join(WORK_PATH, "data", "avatar", "train_data", system + "_eval.txt")

if strategy is None:
f_gan = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + ".txt")
if DATA_PATH is None:
f_train = os.path.join(WORK_PATH, "data", "variants", system + "_train.txt")
f_test = os.path.join(WORK_PATH, "data", "variants", system + "_test.txt")
f_pop = os.path.join(WORK_PATH, "data", "variants", system + "_pop.txt")
f_eval = os.path.join(WORK_PATH, "data", "avatar", "train_data", system + "_eval.txt")
if strategy is None:
f_gan = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + ".txt")
else:
f_gan = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_" + strategy + ".txt")
else:
f_gan = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_" + strategy + ".txt")
f_train = os.path.join(DATA_PATH, "variants", system + "_train.txt")
f_test = os.path.join(DATA_PATH, "variants", system + "_test.txt")
f_pop = os.path.join(DATA_PATH, "variants", system + "_pop.txt")
f_eval = os.path.join(DATA_PATH, "avatar", "train_data", system + "_eval.txt")
if strategy is None:
f_gan = os.path.join(DATA_PATH, "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + ".txt")
else:
f_gan = os.path.join(DATA_PATH, "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_" + strategy + ".txt")


train = readVariantFile(f_train, unique=False)
Expand Down
19 changes: 14 additions & 5 deletions avatar/generalization.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
from pm4py.evaluation.replay_fitness import factory as replay_factory
from pm4py.evaluation.precision import factory as precision_factory

from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

def readFile(f_name1, f_name2, unique=False):
Expand Down Expand Up @@ -95,12 +97,19 @@ def convertToCsv(traces, to_path):
pn = args.pn
strategy = args.strategy

train_file = os.path.join(WORK_PATH, "data", "variants", system + "_train.txt")
gen_file = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_" + strategy + ".txt")
csv_file = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_" + strategy + "_generalization.csv")
xes_file = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_" + strategy + "_generalization.xes")
if DATA_PATH is None:
train_file = os.path.join(WORK_PATH, "data", "variants", system + "_train.txt")
gen_file = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_" + strategy + ".txt")
csv_file = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_" + strategy + "_generalization.csv")
xes_file = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_" + strategy + "_generalization.xes")
pn_file = os.path.join(WORK_PATH, "data", "pns", system, pn)
else:
train_file = os.path.join(DATA_PATH, "variants", system + "_train.txt")
gen_file = os.path.join(DATA_PATH, "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_" + strategy + ".txt")
csv_file = os.path.join(DATA_PATH, "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_" + strategy + "_generalization.csv")
xes_file = os.path.join(DATA_PATH, "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_" + strategy + "_generalization.xes")
pn_file = os.path.join(DATA_PATH, "pns", system, pn)

pn_file = os.path.join(WORK_PATH, "data", "pns", system, pn)

""" READ FILES AND CONVERT TO XES """
traces = readFile(train_file,gen_file, unique=True)
Expand Down
14 changes: 12 additions & 2 deletions avatar/relgan/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from avatar.relgan.utils.text_process import text_precess
from avatar.relgan.utils.utils import pp
import avatar.relgan.models as models
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

Expand Down Expand Up @@ -62,8 +63,14 @@ def main(given_args=None):
parser.add_argument('--gen-emb-dim', default=32, type=int, help="generator embedding dimension")
parser.add_argument('--dis-emb-dim', default=64, type=int, help="TOTAL discriminator embedding dimension")
parser.add_argument('--num-rep', default=64, type=int, help="number of discriminator embedded representations")

if DATA_PATH is None:
def_dir = os.path.join(WORK_PATH, "data", "avatar", "sgans")
else:
def_dir = os.path.join(DATA_PATH, "avatar", "sgans")

parser.add_argument('--data-dir',
default=os.path.join(WORK_PATH, "data", "avatar", "sgans"), ## Refer her to where data is stored. Such as /data/julian/data/relgan/data
default=def_dir,
type=str,
help='Where data data is stored')

Expand All @@ -78,7 +85,10 @@ def main(given_args=None):

#data_file = os.path.join(args.data_dir, "..", "train_data", '{}.txt'.format(args.dataset))

seq_vocab_file = os.path.join(WORK_PATH, "data", "variants", str(args.dataset) + "_train.txt")
if DATA_PATH is None:
seq_vocab_file = os.path.join(WORK_PATH, "data", "variants", str(args.dataset) + "_train.txt")
else:
seq_vocab_file = os.path.join(DATA_PATH, "variants", str(args.dataset) + "_train.txt")

if args.dataset == 'pb_system_4_1_10':
args.batch_size = 32
Expand Down
15 changes: 12 additions & 3 deletions avatar/sampling.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from avatar.util.LoadRelgan import LoadRelgan
from avatar.util.MHGAN import MHGAN
from avatar.util.util import writeToFile, readTraces
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

Expand Down Expand Up @@ -54,16 +55,24 @@
print("****** SAMPLE FOR SUFFIX ", suffix, " ******")
relgan = LoadRelgan(system=system, suffix=suffix, job=job)

f_out = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_naive.txt")
if DATA_PATH is None:
f_out = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_naive.txt")
else:
f_out = os.path.join(DATA_PATH, "avatar", "variants",system + "_relgan_" + str(suffix) + "_j" + str(job) + "_naive.txt")

print("Start NAIVE SAMPLING")
gen_samples = relgan.generate(n_samples=n_samples)
print("Generated samples - shape:", gen_samples.shape)
print("Writing to file", f_out)
writeToFile(relgan, f_out, gen_samples)

elif strategy == "mh":
eval_path = os.path.join(WORK_PATH, "data", "avatar", "train_data", system + "_eval.txt")
f_out = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_mh.txt")
if DATA_PATH is None:
eval_path = os.path.join(WORK_PATH, "data", "avatar", "train_data", system + "_eval.txt")
f_out = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_mh.txt")
else:
eval_path = os.path.join(DATA_PATH, "avatar", "train_data", system + "_eval.txt")
f_out = os.path.join(DATA_PATH, "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job) + "_mh.txt")

tf.reset_default_graph()
print("****** SAMPLE FOR SUFFIX ", suffix, " ******")
Expand Down
47 changes: 37 additions & 10 deletions avatar/training.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,29 @@
from avatar.util.LoadRelgan import LoadRelgan
from avatar.evaluation import load_data, evaluate
from avatar.util.util import writeToFile
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

def find_num_sentences(system):
file = os.path.join(WORK_PATH, "data", "avatar", "train_data", system + ".txt")
if DATA_PATH is None:
file = os.path.join(WORK_PATH, "data", "avatar", "train_data", system + ".txt")
else:
file = os.path.join(DATA_PATH, "avatar", "train_data", system + ".txt")

return str(sum(1 for _ in open(file)))

def split_train_eval(system, ratio=0.1):
print("*** Splitting System", system, " to train and evaluation with ratio ", str(ratio), "***")

load_file = os.path.join(WORK_PATH, "data", "variants", str(system) + "_train.txt")
train_out = os.path.join(WORK_PATH, "data", "avatar", "train_data", str(system) + ".txt")
eval_out = os.path.join(WORK_PATH, "data", "avatar", "train_data", str(system) + "_eval.txt")
if DATA_PATH is None:
load_file = os.path.join(WORK_PATH, "data", "variants", str(system) + "_train.txt")
train_out = os.path.join(WORK_PATH, "data", "avatar", "train_data", str(system) + ".txt")
eval_out = os.path.join(WORK_PATH, "data", "avatar", "train_data", str(system) + "_eval.txt")
else:
load_file = os.path.join(DATA_PATH, "variants", str(system) + "_train.txt")
train_out = os.path.join(DATA_PATH, "avatar", "train_data", str(system) + ".txt")
eval_out = os.path.join(DATA_PATH, "avatar", "train_data", str(system) + "_eval.txt")

all_sequences = readVariantFile(load_file, unique=False)
indices = np.arange(0, len(all_sequences))
Expand Down Expand Up @@ -100,7 +110,10 @@ def split_train_eval(system, ratio=0.1):
cwd = os.path.dirname(os.path.abspath(__file__))
rootdir = cwd + "/.."

outdir = os.path.join(WORK_PATH, "data", "avatar", "sgans", system, str(job_id))
if DATA_PATH is None:
outdir = os.path.join(WORK_PATH, "data", "avatar", "sgans", system, str(job_id))
else:
outdir = os.path.join(DATA_PATH, "avatar", "sgans", system, str(job_id))

args = [
# Architecture
Expand Down Expand Up @@ -166,7 +179,10 @@ def split_train_eval(system, ratio=0.1):
print("****** SAMPLE FOR SUFFIX ", suffix, " ******")
relgan = LoadRelgan(system=system, suffix=suffix, job=job_id)

f_out = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job_id) + ".txt")
if DATA_PATH is None:
f_out = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job_id) + ".txt")
else:
f_out = os.path.join(DATA_PATH, "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job_id) + ".txt")
print("Start sampling")
gen_samples = relgan.generate(n_samples=n_samples)
print(gen_samples.shape)
Expand All @@ -178,13 +194,20 @@ def split_train_eval(system, ratio=0.1):
train, test, eval, pop, _ = load_data(system, "1", job_id)
results = dict()
for suffix in ranges:
f_gan = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job_id) + ".txt")
if DATA_PATH is None:
f_gan = os.path.join(WORK_PATH, "data", "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job_id) + ".txt")
else:
f_gan = os.path.join(DATA_PATH, "avatar", "variants", system + "_relgan_" + str(suffix) + "_j" + str(job_id) + ".txt")
gan = readVariantFile(f_gan, unique=True)
res = evaluate(suffix, train, test, eval, pop, gan)
results[suffix] = res

iw = json.dumps(results)
f = open(os.path.join(WORK_PATH, "data", "avatar", "sgans", system, str(job_id), "evaluations_relgan_" + str(system) + "_" + str(job_id) + ".json"), "w")
if DATA_PATH is None:
f = open(os.path.join(WORK_PATH, "data", "avatar", "sgans", system, str(job_id), "evaluations_relgan_" + str(system) + "_" + str(job_id) + ".json"), "w")
else:
f = open(os.path.join(DATA_PATH, "avatar", "sgans", system, str(job_id), "evaluations_relgan_" + str(system) + "_" + str(job_id) + ".json"), "w")

f.write(iw)
f.close()

Expand Down Expand Up @@ -221,8 +244,12 @@ def split_train_eval(system, ratio=0.1):
rank_id -= 1

iw = json.dumps(ranks)
f = open(os.path.join(WORK_PATH, "data", "avatar", "sgans", system, str(job_id),
"suffix_ranks_relgan_" + str(system) + "_" + str(job_id) + ".json"), "w")
if DATA_PATH is None:
f = open(os.path.join(WORK_PATH, "data", "avatar", "sgans", system, str(job_id),
"suffix_ranks_relgan_" + str(system) + "_" + str(job_id) + ".json"), "w")
else:
f = open(os.path.join(DATA_PATH, "avatar", "sgans", system, str(job_id),
"suffix_ranks_relgan_" + str(system) + "_" + str(job_id) + ".json"), "w")
f.write(iw)
f.close()
print("Ranks saved to file.")
6 changes: 5 additions & 1 deletion avatar/util/LoadRelgan.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,16 @@
import json
import os
import time
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

class LoadRelgan():
def __init__(self, system, suffix, job):
path = os.path.join(WORK_PATH, "data", "avatar","sgans", system, str(job), "tf_logs", "ckpt")
if DATA_PATH is None:
path = os.path.join(WORK_PATH, "data", "avatar","sgans", system, str(job), "tf_logs", "ckpt")
else:
path = os.path.join(DATA_PATH, "avatar", "sgans", system, str(job), "tf_logs", "ckpt")

saver = tf.train.import_meta_graph(os.path.join(path, system + ".adv_model-" + str(suffix) + ".meta"))

Expand Down
Empty file added conf/__init__.py
Empty file.
1 change: 1 addition & 0 deletions conf/settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DATA_PATH = "C:\\data"
21 changes: 18 additions & 3 deletions processes/conformancechecker.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,15 @@
from pm4py.evaluation.replay_fitness import factory as replay_factory
from pm4py.evaluation.precision import factory as precision_factory
from pm4py.evaluation.generalization import factory as generalization_factory
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

def main(system, miner):
log = xes_importer.import_log(os.path.join("data/variants/", str(system) + "_train.xes"))
if DATA_PATH is None:
log = xes_importer.import_log(os.path.join(WORK_PATH, "data", "variants", str(system) + "_train.xes"))
else:
log = xes_importer.import_log(os.path.join(DATA_PATH, "variants", str(system) + "_train.xes"))

bestmodel = None
bestfit = None
Expand All @@ -21,9 +27,18 @@ def main(system, miner):
gen_bestPrec = None
gen_bestGen = 0

for file in os.listdir("data/pns/" + str(system) + "/"):
if DATA_PATH is None:
dir = os.listdir(os.path.join(WORK_PATH, "data", "pns", str(system)))
else:
dir = os.listdir(os.path.join(DATA_PATH, "pns", str(system)))

for file in dir:
if system in file and miner in file:
path = os.path.join("data/pns/", str(system), file)
if DATA_PATH is None:
path = os.path.join(WORK_PATH, "data", "pns", str(system), file)
else:
path = os.path.join(DATA_PATH, "pns", str(system), file)

print("Checking conformance of file:", path)

net, initial_marking, final_marking = pnml_importer.import_net(path)
Expand Down
18 changes: 13 additions & 5 deletions processes/playout.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from pm4py.objects.petri.importer import pnml as pnml_importer
from pm4py.algo.simulation.playout.versions import basic_playout as playout
from util.playout import readVariantFile, getMaxVariantLength
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

Expand Down Expand Up @@ -60,11 +61,18 @@ def str2bool(v):
n_traces = int(args.traces)
eval_only = str2bool(args.eval_only)

f_pop = os.path.join(WORK_PATH, "data", "variants", str(system) + "_pop.txt")
f_train = os.path.join(WORK_PATH, "data", "variants", str(system) + "_train.txt")
f_test = os.path.join(WORK_PATH, "data", "variants", str(system) + "_test.txt")
f_out = os.path.join(WORK_PATH, "data", "variants", pn + ".txt")
f_pn = os.path.join(WORK_PATH, "data", "pns", system, pn)
if DATA_PATH is None:
f_pop = os.path.join(WORK_PATH, "data", "variants", str(system) + "_pop.txt")
f_train = os.path.join(WORK_PATH, "data", "variants", str(system) + "_train.txt")
f_test = os.path.join(WORK_PATH, "data", "variants", str(system) + "_test.txt")
f_out = os.path.join(WORK_PATH, "data", "variants", pn + ".txt")
f_pn = os.path.join(WORK_PATH, "data", "pns", system, pn)
else:
f_pop = os.path.join(DATA_PATH, "variants", str(system) + "_pop.txt")
f_train = os.path.join(DATA_PATH, "variants", str(system) + "_train.txt")
f_test = os.path.join(DATA_PATH, "variants", str(system) + "_test.txt")
f_out = os.path.join(DATA_PATH, "variants", pn + ".txt")
f_pn = os.path.join(DATA_PATH, "pns", system, pn)

seq_len = getMaxVariantLength(f_pop)
n_decimal = 8
Expand Down
4 changes: 4 additions & 0 deletions systems/playout/pa_system_10_2.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
from util.playout import standard_playout
import os
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())


if __name__ == "__main__":
Expand Down
4 changes: 4 additions & 0 deletions systems/playout/pa_system_11_3.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
from util.playout import standard_playout
import os
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

if __name__ == "__main__":
pn = "data/systems/pa_system_11_3.pnml"
Expand Down
4 changes: 4 additions & 0 deletions systems/playout/pa_system_1_5.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
from util.playout import standard_playout
import os
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

if __name__ == "__main__":
pn = "data/systems/pa_system_1_5.pnml"
Expand Down
4 changes: 4 additions & 0 deletions systems/playout/pa_system_2_3.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
from util.playout import standard_playout
import os
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

if __name__ == "__main__":
pn = "data/systems/pa_system_2_3.pnml"
Expand Down
4 changes: 4 additions & 0 deletions systems/playout/pa_system_4_3.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
from util.playout import standard_playout
import os
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

if __name__ == "__main__":
pn = "data/systems/pa_system_4_3.pnml"
Expand Down
4 changes: 4 additions & 0 deletions systems/playout/pa_system_5_5.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
from util.playout import standard_playout
import os
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

if __name__ == "__main__":
pn = "data/systems/pa_system_5_5.pnml"
Expand Down
4 changes: 4 additions & 0 deletions systems/playout/pa_system_6_3.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
from util.playout import standard_playout
import os
from conf.settings import DATA_PATH

WORK_PATH = os.path.abspath(os.getcwd())

if __name__ == "__main__":
pn = "data/systems/pa_system_6_3.pnml"
Expand Down
Loading

0 comments on commit 5e72678

Please sign in to comment.