From 027a0bf51324c4b45f511c299b2f3caf6245f252 Mon Sep 17 00:00:00 2001 From: Gittinger Date: Wed, 4 Sep 2019 14:17:27 -0600 Subject: [PATCH 1/8] Making database changes for dac --- packages/slycat/web/server/__init__.py | 53 +++++++++++++++++--------- packages/slycat/web/server/handlers.py | 23 +++++++++++ 2 files changed, 57 insertions(+), 19 deletions(-) diff --git a/packages/slycat/web/server/__init__.py b/packages/slycat/web/server/__init__.py index 6b877503b..84e2f775c 100644 --- a/packages/slycat/web/server/__init__.py +++ b/packages/slycat/web/server/__init__.py @@ -20,6 +20,7 @@ import threading import base64 import six +import time config = {} cache_it = Cache(seconds=1000000) # 277.777778 hours @@ -296,17 +297,19 @@ def put_model_arrayset(database, model, aid, input=False): :return: """ with get_model_lock(model["_id"]): + model = database.get('model',model["_id"]) slycat.web.server.update_model(database, model, message="Starting array set %s." % (aid)) - storage = uuid.uuid4().hex - with slycat.web.server.hdf5.lock: - with slycat.web.server.hdf5.create(storage) as file: - arrayset = slycat.hdf5.start_arrayset(file) - database.save({"_id": storage, "type": "hdf5"}) - model["artifact:%s" % aid] = storage - model["artifact-types"][aid] = "hdf5" - if input: - model["input-artifacts"] = list(set(model["input-artifacts"] + [aid])) - database.save(model) + storage = uuid.uuid4().hex + with slycat.web.server.hdf5.lock: + with slycat.web.server.hdf5.create(storage) as file: + arrayset = slycat.hdf5.start_arrayset(file) + database.save({"_id": storage, "type": "hdf5"}) + model = database.get('model',model["_id"]) + model["artifact:%s" % aid] = storage + model["artifact-types"][aid] = "hdf5" + if input: + model["input-artifacts"] = list(set(model["input-artifacts"] + [aid])) + database.save(model) def put_model_array(database, model, aid, array_index, attributes, dimensions): @@ -322,11 +325,12 @@ def put_model_array(database, model, aid, array_index, attributes, dimensions): :return: """ with get_model_lock(model["_id"]): + model = database.get('model', model['_id']) slycat.web.server.update_model(database, model, message="Starting array set %s array %s." % (aid, array_index)) - storage = model["artifact:%s" % aid] - with slycat.web.server.hdf5.lock: - with slycat.web.server.hdf5.open(storage, "r+") as file: - slycat.hdf5.ArraySet(file).start_array(array_index, dimensions, attributes) + storage = model["artifact:%s" % aid] + with slycat.web.server.hdf5.lock: + with slycat.web.server.hdf5.open(storage, "r+") as file: + slycat.hdf5.ArraySet(file).start_array(array_index, dimensions, attributes) def put_model_arrayset_data(database, model, aid, hyperchunks, data): @@ -355,6 +359,7 @@ def put_model_arrayset_data(database, model, aid, hyperchunks, data): data = iter(data) with get_model_lock(model["_id"]): + model = database.get('model', model['_id']) slycat.web.server.update_model(database, model, message="Storing data to array set %s." % (aid)) with slycat.web.server.hdf5.lock: @@ -448,11 +453,21 @@ def get_model_lock(model_id): def put_model_parameter(database, model, aid, value, input=False): with get_model_lock(model["_id"]): - model["artifact:%s" % aid] = value - model["artifact-types"][aid] = "json" - if input: - model["input-artifacts"] = list(set(model["input-artifacts"] + [aid])) - database.save(model) + try: + model = database.get('model',model['_id']) + model["artifact:%s" % aid] = value + model["artifact-types"][aid] = "json" + if input: + model["input-artifacts"] = list(set(model["input-artifacts"] + [aid])) + database.save(model) + except Exception as e: + time.sleep(1) + model = database.get('model',model['_id']) + model["artifact:%s" % aid] = value + model["artifact-types"][aid] = "json" + if input: + model["input-artifacts"] = list(set(model["input-artifacts"] + [aid])) + database.save(model) def delete_model_parameter(database, model, aid): diff --git a/packages/slycat/web/server/handlers.py b/packages/slycat/web/server/handlers.py index 83dfbf5ff..52b5012ef 100644 --- a/packages/slycat/web/server/handlers.py +++ b/packages/slycat/web/server/handlers.py @@ -1031,6 +1031,29 @@ def put_model_inputs(mid): slycat.web.server.put_model_inputs(database, model, source, deep_copy) +@cherrypy.tools.json_in(on=True) +def put_project_data_parameter(did, aid): + database = slycat.web.server.database.couchdb.connect() + project_data = database.get("project-data", did) + project = database.get("project", project_data["project"]) + slycat.web.server.authentication.require_project_writer(project) + + value = require_json_parameter("value") + input = require_boolean_json_parameter("input") + with slycat.web.server.database.couchdb.db_lock: + try: + slycat.web.server.put_project_data_parameter(database, project_data, aid, value, input) + except Exception: + time.sleep(1) + database = slycat.web.server.database.couchdb.connect() + project_data = database.get("project_data", did) + project = database.get("project", project_data["project"]) + slycat.web.server.authentication.require_project_writer(project) + + value = require_json_parameter("value") + input = require_boolean_json_parameter("input") + slycat.web.server.put_project_data_parameter(database, project_data, aid, value, input) + @cherrypy.tools.json_in(on=True) def put_model_parameter(mid, aid): From 551cfb31760b81dd9dc1dbf8025d298a7873d91b Mon Sep 17 00:00:00 2001 From: Gittinger Date: Fri, 6 Sep 2019 12:16:48 -0600 Subject: [PATCH 2/8] Adding model locks and updating model all over --- packages/slycat/web/server/handlers.py | 140 +++++++++--------- .../slycat-dac/dac-generic-file-parser.py | 36 +++++ 2 files changed, 109 insertions(+), 67 deletions(-) diff --git a/packages/slycat/web/server/handlers.py b/packages/slycat/web/server/handlers.py index 52b5012ef..f780d4b27 100644 --- a/packages/slycat/web/server/handlers.py +++ b/packages/slycat/web/server/handlers.py @@ -480,38 +480,42 @@ def create_project_data(mid, aid, file): content_type = "text/csv" database = slycat.web.server.database.couchdb.connect() model = database.get("model", mid) - project = database.get("project", model["project"]) - pid = project["_id"] - timestamp = time.time() - formatted_timestamp = datetime.datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S') - did = uuid.uuid4().hex - #TODO review how we pass files to this - # our file got passed as a list by someone... - if isinstance(file, list): - file = file[0] - #TODO review how we pass aids to this - # if true we are using the new file naming structure - if len(aid) > 1: - # looks like we got passed a list(list()) lets extract the name - if isinstance(aid[1], list): - aid[1] = aid[1][0] - # for backwards compatibility for not passing the file name - else: - aid.append("unnamed_file") - data = { - "_id": did, - "type": "project_data", - "file_name": formatted_timestamp + "_" + aid[1], - "data_table": aid[0], - "project": pid, - "mid": [mid], - "created": datetime.datetime.utcnow().isoformat(), - "creator": cherrypy.request.login, - } - if "project_data" not in model: - model["project_data"] = [] - model["project_data"].append(did) - database.save(model) + + with slycat.web.server.get_model_lock(model["_id"]): + project = database.get("project", model["project"]) + pid = project["_id"] + timestamp = time.time() + formatted_timestamp = datetime.datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S') + did = uuid.uuid4().hex + + #TODO review how we pass files to this + # our file got passed as a list by someone... + if isinstance(file, list): + file = file[0] + #TODO review how we pass aids to this + # if true we are using the new file naming structure + if len(aid) > 1: + # looks like we got passed a list(list()) lets extract the name + if isinstance(aid[1], list): + aid[1] = aid[1][0] + # for backwards compatibility for not passing the file name + else: + aid.append("unnamed_file") + data = { + "_id": did, + "type": "project_data", + "file_name": formatted_timestamp + "_" + aid[1], + "data_table": aid[0], + "project": pid, + "mid": [mid], + "created": datetime.datetime.utcnow().isoformat(), + "creator": cherrypy.request.login, + } + if "project_data" not in model: + model["project_data"] = [] + model["project_data"].append(did) + model = database.get('model', model["_id"]) + database.save(model) database.save(data) database.put_attachment(data, filename="content", content_type=content_type, content=file) cherrypy.log.error("[MICROSERVICE] Added project data %s." % data["file_name"]) @@ -676,43 +680,45 @@ def model_sensitive_command(mid, type, command): def put_model(mid): database = slycat.web.server.database.couchdb.connect() model = database.get("model", mid) - project = database.get("project", model["project"]) - slycat.web.server.authentication.require_project_writer(project) - - save_model = False - for key, value in cherrypy.request.json.items(): - if key not in ["name", "description", "state", "result", "progress", "message", "started", "finished", - "marking", "bookmark"]: - cherrypy.log.error("slycat.web.server.handlers.py put_model", - "cherrypy.HTTPError 400 unknown model parameter: %s" % key) - raise cherrypy.HTTPError("400 Unknown model parameter: %s" % key) + with slycat.web.server.get_model_lock(model["_id"]): + project = database.get("project", model["project"]) + slycat.web.server.authentication.require_project_writer(project) - if key in ["started", "finished"]: - try: - datetime.datetime.strptime(value, "%Y-%m-%dT%H:%M:%S.%f") - except: + save_model = False + for key, value in cherrypy.request.json.items(): + if key not in ["name", "description", "state", "result", "progress", "message", "started", "finished", + "marking", "bookmark"]: cherrypy.log.error("slycat.web.server.handlers.py put_model", - "cherrypy.HTTPError 400 timestamp fields must use ISO-8601.") - raise cherrypy.HTTPError("400 Timestamp fields must use ISO-8601.") - - if value != model.get(key): - model[key] = value - save_model = True - - # Revisit this, how booksmark IDs get added to model - - #if key == "bookmark": - # model[key].append(value) - # save_model = True - #else: - # model[key] = value - # save_model = True - - model[key] = value - save_model = True - - if save_model: - database.save(model) + "cherrypy.HTTPError 400 unknown model parameter: %s" % key) + raise cherrypy.HTTPError("400 Unknown model parameter: %s" % key) + + if key in ["started", "finished"]: + try: + datetime.datetime.strptime(value, "%Y-%m-%dT%H:%M:%S.%f") + except: + cherrypy.log.error("slycat.web.server.handlers.py put_model", + "cherrypy.HTTPError 400 timestamp fields must use ISO-8601.") + raise cherrypy.HTTPError("400 Timestamp fields must use ISO-8601.") + + if value != model.get(key): + model[key] = value + save_model = True + + # Revisit this, how booksmark IDs get added to model + + #if key == "bookmark": + # model[key].append(value) + # save_model = True + #else: + # model[key] = value + # save_model = True + + model[key] = value + save_model = True + + if save_model: + model = database.get('model', model["_id"]) + database.save(model) def post_model_finish(mid): diff --git a/web-server/plugins/slycat-dac/dac-generic-file-parser.py b/web-server/plugins/slycat-dac/dac-generic-file-parser.py index 8cac4baed..233a23926 100644 --- a/web-server/plugins/slycat-dac/dac-generic-file-parser.py +++ b/web-server/plugins/slycat-dac/dac-generic-file-parser.py @@ -228,14 +228,18 @@ def parse(database, model, input, files, aids, **kwargs): # table parser (original csv parser) parsed = [parse_file(file) for file in files] for (attributes, dimensions, data), aid in zip(parsed, aids): + model = database.get('model', model["_id"]) slycat.web.server.put_model_arrayset(database, model, aid, input) + model = database.get('model', model["_id"]) slycat.web.server.put_model_array(database, model, aid, array_col, attributes, dimensions) + model = database.get('model', model["_id"]) slycat.web.server.put_model_arrayset_data(database, model, aid, "%s/.../..." % array_col, data) elif list_file: # list file (one string per row) # get strings in list list_data = parse_list_file(files[0]) # put list in slycat database as a model parameter + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, aids[0], list_data, input) else: @@ -243,8 +247,11 @@ def parse(database, model, input, files, aids, **kwargs): attributes, dimensions, data = parse_mat_file(files[0]) aid = aids[0] if (array_col == 0): + model = database.get('model', model["_id"]) slycat.web.server.put_model_arrayset(database, model, aid, input) + model = database.get('model', model["_id"]) slycat.web.server.put_model_array(database, model, aid, array_col, attributes, dimensions) + model = database.get('model', model["_id"]) slycat.web.server.put_model_arrayset_data(database, model, aid, "%s/0/..." % array_col, [data]) end = time.time() @@ -258,6 +265,7 @@ def parse_gen_zip(database, model, input, files, aids, **kwargs): cherrypy.log.error("DAC Gen Zip parser started.") # push progress for wizard polling to database + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-polling-progress", ["Extracting ...", 10.0]) # keep a parsing error log to help user correct input data @@ -266,6 +274,7 @@ def parse_gen_zip(database, model, input, files, aids, **kwargs): parse_error_log.append("Notes:") # start parse log + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["Progress", "\n".join(parse_error_log)]) @@ -279,11 +288,13 @@ def parse_gen_zip(database, model, input, files, aids, **kwargs): except Exception as e: # couldn't open zip file, report to user + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-polling-progress", ["Error", "couldn't read zip file (too large or corrupted)."]) # record no data message in front of parser log parse_error_log.append("Error: couldn't read .zip file (too large or corrupted).") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["No Data", "\n".join(parse_error_log)]) @@ -326,11 +337,13 @@ def parse_gen_zip(database, model, input, files, aids, **kwargs): else: + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-polling-progress", ["Error", "variable files must have .var extension"]) # record no data message in front of parser log parse_error_log.append("Error -- variable files must have .var extension.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["No Data", "\n".join(parse_error_log)]) @@ -348,11 +361,13 @@ def parse_gen_zip(database, model, input, files, aids, **kwargs): else: + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-polling-progress", ["Error", "time series files must have .time extension"]) # record no data message in front of parser log parse_error_log.append("Error -- time series files must have .time extension.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["No Data", "\n".join(parse_error_log)]) @@ -370,17 +385,20 @@ def parse_gen_zip(database, model, input, files, aids, **kwargs): else: + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-polling-progress", ["Error", "distance matrix files must have .dist extension"]) # record no data message in front of parser log parse_error_log.append("Error -- distance matrix files must have .dist extension.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["No Data", "\n".join(parse_error_log)]) raise Exception("distance matrix files must have .dist extension.") parse_error_log.append("Successfully identified DAC generic format files.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["Progress", "\n".join(parse_error_log)]) @@ -392,6 +410,7 @@ def parse_gen_zip(database, model, input, files, aids, **kwargs): if var_meta_file != "": # push progress for wizard polling to database + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-polling-progress", ["Extracting ...", 20.0]) # parse variables.meta file @@ -412,11 +431,13 @@ def parse_gen_zip(database, model, input, files, aids, **kwargs): # quit if headers are un-recognized if not headers_OK: + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-polling-progress", ["Error", "variables.meta file has incorrect headers"]) # record no data message in front of parser log parse_error_log.append("Error -- variables.meta file has incorrect headers.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["No Data", "\n".join(parse_error_log)]) @@ -429,6 +450,7 @@ def parse_gen_zip(database, model, input, files, aids, **kwargs): "missing variable_*.var file(s)") parse_error_log.append("Checked DAC variable file names.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["Progress", "\n".join(parse_error_log)]) @@ -438,6 +460,7 @@ def parse_gen_zip(database, model, input, files, aids, **kwargs): "missing variable_*.time file(s)") parse_error_log.append("Checked DAC time file names.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["Progress", "\n".join(parse_error_log)]) @@ -447,17 +470,20 @@ def parse_gen_zip(database, model, input, files, aids, **kwargs): "missing variable_*.dist file(s)") parse_error_log.append("Checked DAC distance file names.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["Progress", "\n".join(parse_error_log)]) else: + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-polling-progress", ["Error", "variables.meta file not found"]) # record no data message in front of parser log parse_error_log.append("Error -- variables.meta file not found.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["No Data", "\n".join(parse_error_log)]) @@ -483,11 +509,13 @@ def check_file_names (database, model, parse_error_log, # quit if files do not match if not files_found: + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-polling-progress", ["Error", error_msg]) # record no data message in front of parser log parse_error_log.append("Error -- " + error_msg + ".") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["No Data", "\n".join(parse_error_log)]) @@ -512,10 +540,12 @@ def parse_gen_zip_thread(database, model, zip_ref, parse_error_log, meta_column_names, meta_rows = parse_table_file(zip_ref.read(dac_file)) parse_error_log.append("Read " + str(len(meta_rows)) + " datapoints.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["Progress", "\n".join(parse_error_log)]) # push progress for wizard polling to database + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-polling-progress", ["Extracting ...", 30.0]) # parse var files @@ -526,10 +556,12 @@ def parse_gen_zip_thread(database, model, zip_ref, parse_error_log, variable.append(numpy.array(data)) parse_error_log.append("Parsed " + str(num_vars) + " DAC variable files.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["Progress", "\n".join(parse_error_log)]) # push progress for wizard polling to database + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-polling-progress", ["Extracting ...", 45.0]) # parse time files @@ -540,10 +572,12 @@ def parse_gen_zip_thread(database, model, zip_ref, parse_error_log, time_steps.append(list(data)) parse_error_log.append("Parsed " + str(num_vars) + " DAC time files.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["Progress", "\n".join(parse_error_log)]) # push progress for wizard polling to database + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-polling-progress", ["Extracting ...", 60.0]) # parse distance files @@ -554,6 +588,7 @@ def parse_gen_zip_thread(database, model, zip_ref, parse_error_log, var_dist.append(numpy.array(data)) parse_error_log.append("Parsed " + str(num_vars) + " DAC distance files.") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["Progress", "\n".join(parse_error_log)]) @@ -566,6 +601,7 @@ def parse_gen_zip_thread(database, model, zip_ref, parse_error_log, parse_error_log.insert(2, "Each test has " + str(num_vars) + " digitizer time series.\n") + model = database.get('model', model["_id"]) slycat.web.server.put_model_parameter(database, model, "dac-parse-log", ["Progress", "\n".join(parse_error_log)]) From 585c68793b74b299adf191b6e39ef9922df41d1f Mon Sep 17 00:00:00 2001 From: Gittinger Date: Fri, 6 Sep 2019 14:39:37 -0600 Subject: [PATCH 3/8] Fixing model overwrite --- packages/slycat/web/server/handlers.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/slycat/web/server/handlers.py b/packages/slycat/web/server/handlers.py index f780d4b27..b64f9abdb 100644 --- a/packages/slycat/web/server/handlers.py +++ b/packages/slycat/web/server/handlers.py @@ -685,6 +685,7 @@ def put_model(mid): slycat.web.server.authentication.require_project_writer(project) save_model = False + model = database.get('model', model["_id"]) for key, value in cherrypy.request.json.items(): if key not in ["name", "description", "state", "result", "progress", "message", "started", "finished", "marking", "bookmark"]: @@ -713,11 +714,10 @@ def put_model(mid): # model[key] = value # save_model = True - model[key] = value - save_model = True + # model[key] = value + # save_model = True if save_model: - model = database.get('model', model["_id"]) database.save(model) From afbf243b4f4daf07a0a157827f9c98788a41a9ee Mon Sep 17 00:00:00 2001 From: Spurs20 <22457841+Spurs20@users.noreply.github.com> Date: Thu, 12 Sep 2019 10:05:31 -0600 Subject: [PATCH 4/8] Delete cars_bad.csv --- data/cars_bad.csv | 407 ---------------------------------------------- 1 file changed, 407 deletions(-) delete mode 100644 data/cars_bad.csv diff --git a/data/cars_bad.csv b/data/cars_bad.csv deleted file mode 100644 index 77a463b8f..000000000 --- a/data/cars_bad.csv +++ /dev/null @@ -1,407 +0,0 @@ -Model,MPG,Cylinders,Displacement,Horsepower,Weight,Year,Year, -chevrolet chevelle malibu,18,8,307,130,3504,12,70,1 -buick skylark 320,15,8,350,165,3693,11.5,70,1 -plymouth satellite,18,8,318,150,3436,11,70,1 -amc rebel sst,16,8,304,150,3433,12,70,1 -ford torino,17,8,302,140,3449,10.5,70,1 -ford galaxie 500,15,8,429,198,4341,10,70,1 -chevrolet impala,14,8,454,220,4354,9,70,1 -plymouth fury iii,14,8,440,215,4312,8.5,70,1 -pontiac catalina,14,8,455,225,4425,10,70,1 -amc ambassador dpl,15,8,390,190,3850,8.5,70,1 -citroen ds-21 pallas,NaN,4,133,115,3090,17.5,70,2 -chevrolet chevelle concours (sw),NaN,8,350,165,4142,11.5,70,1 -ford torino (sw),NaN,8,351,153,4034,11,70,1 -plymouth satellite (sw),NaN,8,383,175,4166,10.5,70,1 -amc rebel sst (sw),NaN,8,360,175,3850,11,70,1 -dodge challenger se,15,8,383,170,3563,10,70,1 -plymouth 'cuda 340,14,8,340,160,3609,8,70,1 -ford mustang boss 302,NaN,8,302,140,3353,8,70,1 -chevrolet monte carlo,15,8,400,150,3761,9.5,70,1 -buick estate wagon (sw),14,8,455,225,3086,10,70,1 -toyota corona mark ii,24,4,113,95,2372,15,70,3 -plymouth duster,22,6,198,95,2833,15.5,70,1 -amc hornet,18,6,199,97,2774,15.5,70,1 -ford maverick,21,6,200,85,2587,16,70,1 -datsun pl510,27,4,97,88,2130,14.5,70,3 -volkswagen 1131 deluxe sedan,26,4,97,46,1835,20.5,70,2 -peugeot 504,25,4,110,87,2672,17.5,70,2 -audi 100 ls,24,4,107,90,2430,14.5,70,2 -saab 99e,25,4,104,95,2375,17.5,70,2 -bmw 2002,26,4,121,113,2234,12.5,70,2 -amc gremlin,21,6,199,90,2648,15,70,1 -ford f250,10,8,360,215,4615,14,70,1 -chevy c20,10,8,307,200,4376,15,70,1 -dodge d200,11,8,318,210,4382,13.5,70,1 -hi 1200d,9,8,304,193,4732,18.5,70,1 -datsun pl510,27,4,97,88,2130,14.5,71,3 -chevrolet vega 2300,28,4,140,90,2264,15.5,71,1 -toyota corona,25,4,113,95,2228,14,71,3 -ford pinto,25,4,98,NaN,2046,19,71,1 -volkswagen super beetle 117,NaN,4,97,48,1978,20,71,2 -amc gremlin,19,6,232,100,2634,13,71,1 -plymouth satellite custom,16,6,225,105,3439,15.5,71,1 -chevrolet chevelle malibu,17,6,250,100,3329,15.5,71,1 -ford torino 500,19,6,250,88,3302,15.5,71,1 -amc matador,18,6,232,100,3288,15.5,71,1 -chevrolet impala,14,8,350,165,4209,12,71,1 -pontiac catalina brougham,14,8,400,175,4464,11.5,71,1 -ford galaxie 500,14,8,351,153,4154,13.5,71,1 -plymouth fury iii,14,8,318,150,4096,13,71,1 -dodge monaco (sw),12,8,383,180,4955,11.5,71,1 -ford country squire (sw),13,8,400,170,4746,12,71,1 -pontiac safari (sw),13,8,400,175,5140,12,71,1 -amc hornet sportabout (sw),18,6,258,110,2962,13.5,71,1 -chevrolet vega (sw),22,4,140,72,2408,19,71,1 -pontiac firebird,19,6,250,100,3282,15,71,1 -ford mustang,18,6,250,88,3139,14.5,71,1 -mercury capri 2000,23,4,122,86,2220,14,71,1 -opel 1900,28,4,116,90,2123,14,71,2 -peugeot 304,30,4,79,70,2074,19.5,71,2 -fiat 124b,30,4,88,76,2065,14.5,71,2 -toyota corolla 1200,31,4,71,65,1773,19,71,3 -datsun 1200,35,4,72,69,1613,18,71,3 -volkswagen model 111,27,4,97,60,1834,19,71,2 -plymouth cricket,26,4,91,70,1955,20.5,71,1 -toyota corona hardtop,24,4,113,95,2278,15.5,72,3 -dodge colt hardtop,25,4,97.5,80,2126,17,72,1 -volkswagen type 3,23,4,97,54,2254,23.5,72,2 -chevrolet vega,20,4,140,90,2408,19.5,72,1 -ford pinto runabout,21,4,122,86,2226,16.5,72,1 -chevrolet impala,13,8,350,165,4274,12,72,1 -pontiac catalina,14,8,400,175,4385,12,72,1 -plymouth fury iii,15,8,318,150,4135,13.5,72,1 -ford galaxie 500,14,8,351,153,4129,13,72,1 -amc ambassador sst,17,8,304,150,3672,11.5,72,1 -mercury marquis,11,8,429,208,4633,11,72,1 -buick lesabre custom,13,8,350,155,4502,13.5,72,1 -oldsmobile delta 88 royale,12,8,350,160,4456,13.5,72,1 -chrysler newport royal,13,8,400,190,4422,12.5,72,1 -mazda rx2 coupe,19,3,70,97,2330,13.5,72,3 -amc matador (sw),15,8,304,150,3892,12.5,72,1 -chevrolet chevelle concours (sw),13,8,307,130,4098,14,72,1 -ford gran torino (sw),13,8,302,140,4294,16,72,1 -plymouth satellite custom (sw),14,8,318,150,4077,14,72,1 -volvo 145e (sw),18,4,121,112,2933,14.5,72,2 -volkswagen 411 (sw),22,4,121,76,2511,18,72,2 -peugeot 504 (sw),21,4,120,87,2979,19.5,72,2 -renault 12 (sw),26,4,96,69,2189,18,72,2 -ford pinto (sw),22,4,122,86,2395,16,72,1 -datsun 510 (sw),28,4,97,92,2288,17,72,3 -toyouta corona mark ii (sw),23,4,120,97,2506,14.5,72,3 -dodge colt (sw),28,4,98,80,2164,15,72,1 -toyota corolla 1600 (sw),27,4,97,88,2100,16.5,72,3 -buick century 350,13,8,350,175,4100,13,73,1 -amc matador,14,8,304,150,3672,11.5,73,1 -chevrolet malibu,13,8,350,145,3988,13,73,1 -ford gran torino,14,8,302,137,4042,14.5,73,1 -dodge coronet custom,15,8,318,150,3777,12.5,73,1 -mercury marquis brougham,12,8,429,198,4952,11.5,73,1 -chevrolet caprice classic,13,8,400,150,4464,12,73,1 -ford ltd,13,8,351,158,4363,13,73,1 -plymouth fury gran sedan,14,8,318,150,4237,14.5,73,1 -chrysler new yorker brougham,13,8,440,215,4735,11,73,1 -buick electra 225 custom,12,8,455,225,4951,11,73,1 -amc ambassador brougham,13,8,360,175,3821,11,73,1 -plymouth valiant,18,6,225,105,3121,16.5,73,1 -chevrolet nova custom,16,6,250,100,3278,18,73,1 -amc hornet,18,6,232,100,2945,16,73,1 -ford maverick,18,6,250,88,3021,16.5,73,1 -plymouth duster,23,6,198,95,2904,16,73,1 -volkswagen super beetle,26,4,97,46,1950,21,73,2 -chevrolet impala,11,8,400,150,4997,14,73,1 -ford country,12,8,400,167,4906,12.5,73,1 -plymouth custom suburb,13,8,360,170,4654,13,73,1 -oldsmobile vista cruiser,12,8,350,180,4499,12.5,73,1 -amc gremlin,18,6,232,100,2789,15,73,1 -toyota carina,20,4,97,88,2279,19,73,3 -chevrolet vega,21,4,140,72,2401,19.5,73,1 -datsun 610,22,4,108,94,2379,16.5,73,3 -maxda rx3,18,3,70,90,2124,13.5,73,3 -ford pinto,19,4,122,85,2310,18.5,73,1 -mercury capri v6,21,6,155,107,2472,14,73,1 -fiat 124 sport coupe,26,4,98,90,2265,15.5,73,2 -chevrolet monte carlo s,15,8,350,145,4082,13,73,1 -pontiac grand prix,16,8,400,230,4278,9.5,73,1 -fiat 128,29,4,68,49,1867,19.5,73,2 -opel manta,24,4,116,75,2158,15.5,73,2 -audi 100ls,20,4,114,91,2582,14,73,2 -volvo 144ea,19,4,121,112,2868,15.5,73,2 -dodge dart custom,15,8,318,150,3399,11,73,1 -saab 99le,24,4,121,110,2660,14,73,2 -toyota mark ii,20,6,156,122,2807,13.5,73,3 -oldsmobile omega,11,8,350,180,3664,11,73,1 -plymouth duster,20,6,198,95,3102,16.5,74,1 -ford maverick,21,6,200,NaN,2875,17,74,1 -amc hornet,19,6,232,100,2901,16,74,1 -chevrolet nova,15,6,250,100,3336,17,74,1 -datsun b210,31,4,79,67,1950,19,74,3 -ford pinto,26,4,122,80,2451,16.5,74,1 -toyota corolla 1200,32,4,71,65,1836,21,74,3 -chevrolet vega,25,4,140,75,2542,17,74,1 -chevrolet chevelle malibu classic,16,6,250,100,3781,17,74,1 -amc matador,16,6,258,110,3632,18,74,1 -plymouth satellite sebring,18,6,225,105,3613,16.5,74,1 -ford gran torino,16,8,302,140,4141,14,74,1 -buick century luxus (sw),13,8,350,150,4699,14.5,74,1 -dodge coronet custom (sw),14,8,318,150,4457,13.5,74,1 -ford gran torino (sw),14,8,302,140,4638,16,74,1 -amc matador (sw),14,8,304,150,4257,15.5,74,1 -audi fox,29,4,98,83,2219,16.5,74,2 -volkswagen dasher,26,4,79,67,1963,15.5,74,2 -opel manta,26,4,97,78,2300,14.5,74,2 -toyota corona,31,4,76,52,1649,16.5,74,3 -datsun 710,32,4,83,61,2003,19,74,3 -dodge colt,28,4,90,75,2125,14.5,74,1 -fiat 128,24,4,90,75,2108,15.5,74,2 -fiat 124 tc,26,4,116,75,2246,14,74,2 -honda civic,24,4,120,97,2489,15,74,3 -subaru,26,4,108,93,2391,15.5,74,3 -fiat x1.9,31,4,79,67,2000,16,74,2 -plymouth valiant custom,19,6,225,95,3264,16,75,1 -chevrolet nova,18,6,250,105,3459,16,75,1 -mercury monarch,15,6,250,72,3432,21,75,1 -ford maverick,15,6,250,72,3158,19.5,75,1 -pontiac catalina,16,8,400,170,4668,11.5,75,1 -chevrolet bel air,15,8,350,145,4440,14,75,1 -plymouth grand fury,16,8,318,150,4498,14.5,75,1 -ford ltd,14,8,351,148,4657,13.5,75,1 -buick century,17,6,231,110,3907,21,75,1 -chevroelt chevelle malibu,16,6,250,105,3897,18.5,75,1 -amc matador,15,6,258,110,3730,19,75,1 -plymouth fury,18,6,225,95,3785,19,75,1 -buick skyhawk,21,6,231,110,3039,15,75,1 -chevrolet monza 2+2,20,8,262,110,3221,13.5,75,1 -ford mustang ii,13,8,302,129,3169,12,75,1 -toyota corolla,29,4,97,75,2171,16,75,3 -ford pinto,23,4,140,83,2639,17,75,1 -amc gremlin,20,6,232,100,2914,16,75,1 -pontiac astro,23,4,140,78,2592,18.5,75,1 -toyota corona,24,4,134,96,2702,13.5,75,3 -volkswagen dasher,25,4,90,71,2223,16.5,75,2 -datsun 710,24,4,119,97,2545,17,75,3 -ford pinto,18,6,171,97,2984,14.5,75,1 -volkswagen rabbit,29,4,90,70,1937,14,75,2 -amc pacer,19,6,232,90,3211,17,75,1 -audi 100ls,23,4,115,95,2694,15,75,2 -peugeot 504,23,4,120,88,2957,17,75,2 -volvo 244dl,22,4,121,98,2945,14.5,75,2 -saab 99le,25,4,121,115,2671,13.5,75,2 -honda civic cvcc,33,4,91,53,1795,17.5,75,3 -fiat 131,28,4,107,86,2464,15.5,76,2 -opel 1900,25,4,116,81,2220,16.9,76,2 -capri ii,25,4,140,92,2572,14.9,76,1 -dodge colt,26,4,98,79,2255,17.7,76,1 -renault 12tl,27,4,101,83,2202,15.3,76,2 -chevrolet chevelle malibu classic,17.5,8,305,140,4215,13,76,1 -dodge coronet brougham,16,8,318,150,4190,13,76,1 -amc matador,15.5,8,304,120,3962,13.9,76,1 -ford gran torino,14.5,8,351,152,4215,12.8,76,1 -plymouth valiant,22,6,225,100,3233,15.4,76,1 -chevrolet nova,22,6,250,105,3353,14.5,76,1 -ford maverick,24,6,200,81,3012,17.6,76,1 -amc hornet,22.5,6,232,90,3085,17.6,76,1 -chevrolet chevette,29,4,85,52,2035,22.2,76,1 -chevrolet woody,24.5,4,98,60,2164,22.1,76,1 -vw rabbit,29,4,90,70,1937,14.2,76,2 -honda civic,33,4,91,53,1795,17.4,76,3 -dodge aspen se,20,6,225,100,3651,17.7,76,1 -ford granada ghia,18,6,250,78,3574,21,76,1 -pontiac ventura sj,18.5,6,250,110,3645,16.2,76,1 -amc pacer d/l,17.5,6,258,95,3193,17.8,76,1 -volkswagen rabbit,29.5,4,97,71,1825,12.2,76,2 -datsun b-210,32,4,85,70,1990,17,76,3 -toyota corolla,28,4,97,75,2155,16.4,76,3 -ford pinto,26.5,4,140,72,2565,13.6,76,1 -volvo 245,20,4,130,102,3150,15.7,76,2 -plymouth volare premier v8,13,8,318,150,3940,13.2,76,1 -peugeot 504,19,4,120,88,3270,21.9,76,2 -toyota mark ii,19,6,156,108,2930,15.5,76,3 -mercedes-benz 280s,16.5,6,168,120,3820,16.7,76,2 -cadillac seville,16.5,8,350,180,4380,12.1,76,1 -chevy c10,13,8,350,145,4055,12,76,1 -ford f108,13,8,302,130,3870,15,76,1 -dodge d100,13,8,318,150,3755,14,76,1 -honda accord cvcc,31.5,4,98,68,2045,18.5,77,3 -buick opel isuzu deluxe,30,4,111,80,2155,14.8,77,1 -renault 5 gtl,36,4,79,58,1825,18.6,77,2 -plymouth arrow gs,25.5,4,122,96,2300,15.5,77,1 -datsun f-10 hatchback,33.5,4,85,70,1945,16.8,77,3 -chevrolet caprice classic,17.5,8,305,145,3880,12.5,77,1 -oldsmobile cutlass supreme,17,8,260,110,4060,19,77,1 -dodge monaco brougham,15.5,8,318,145,4140,13.7,77,1 -mercury cougar brougham,15,8,302,130,4295,14.9,77,1 -chevrolet concours,17.5,6,250,110,3520,16.4,77,1 -buick skylark,20.5,6,231,105,3425,16.9,77,1 -plymouth volare custom,19,6,225,100,3630,17.7,77,1 -ford granada,18.5,6,250,98,3525,19,77,1 -pontiac grand prix lj,16,8,400,180,4220,11.1,77,1 -chevrolet monte carlo landau,15.5,8,350,170,4165,11.4,77,1 -chrysler cordoba,15.5,8,400,190,4325,12.2,77,1 -ford thunderbird,16,8,351,149,4335,14.5,77,1 -volkswagen rabbit custom,29,4,97,78,1940,14.5,77,2 -pontiac sunbird coupe,24.5,4,151,88,2740,16,77,1 -toyota corolla liftback,26,4,97,75,2265,18.2,77,3 -ford mustang ii 2+2,25.5,4,140,89,2755,15.8,77,1 -chevrolet chevette,30.5,4,98,63,2051,17,77,1 -dodge colt m/m,33.5,4,98,83,2075,15.9,77,1 -subaru dl,30,4,97,67,1985,16.4,77,3 -volkswagen dasher,30.5,4,97,78,2190,14.1,77,2 -datsun 810,22,6,146,97,2815,14.5,77,3 -bmw 320i,21.5,4,121,110,2600,12.8,77,2 -mazda rx-4,21.5,3,80,110,2720,13.5,77,3 -volkswagen rabbit custom diesel,43.1,4,90,48,1985,21.5,78,2 -ford fiesta,36.1,4,98,66,1800,14.4,78,1 -mazda glc deluxe,32.8,4,78,52,1985,19.4,78,3 -datsun b210 gx,39.4,4,85,70,2070,18.6,78,3 -honda civic cvcc,36.1,4,91,60,1800,16.4,78,3 -oldsmobile cutlass salon brougham,19.9,8,260,110,3365,15.5,78,1 -dodge diplomat,19.4,8,318,140,3735,13.2,78,1 -mercury monarch ghia,20.2,8,302,139,3570,12.8,78,1 -pontiac phoenix lj,19.2,6,231,105,3535,19.2,78,1 -chevrolet malibu,20.5,6,200,95,3155,18.2,78,1 -ford fairmont (auto),20.2,6,200,85,2965,15.8,78,1 -ford fairmont (man),25.1,4,140,88,2720,15.4,78,1 -plymouth volare,20.5,6,225,100,3430,17.2,78,1 -amc concord,19.4,6,232,90,3210,17.2,78,1 -buick century special,20.6,6,231,105,3380,15.8,78,1 -mercury zephyr,20.8,6,200,85,3070,16.7,78,1 -dodge aspen,18.6,6,225,110,3620,18.7,78,1 -amc concord d/l,18.1,6,258,120,3410,15.1,78,1 -chevrolet monte carlo landau,19.2,8,305,145,3425,13.2,78,1 -buick regal sport coupe (turbo),17.7,6,231,165,3445,13.4,78,1 -ford futura,18.1,8,302,139,3205,11.2,78,1 -dodge magnum xe,17.5,8,318,140,4080,13.7,78,1 -chevrolet chevette,30,4,98,68,2155,16.5,78,1 -toyota corona,27.5,4,134,95,2560,14.2,78,3 -datsun 510,27.2,4,119,97,2300,14.7,78,3 -dodge omni,30.9,4,105,75,2230,14.5,78,1 -toyota celica gt liftback,21.1,4,134,95,2515,14.8,78,3 -plymouth sapporo,23.2,4,156,105,2745,16.7,78,1 -oldsmobile starfire sx,23.8,4,151,85,2855,17.6,78,1 -datsun 200-sx,23.9,4,119,97,2405,14.9,78,3 -audi 5000,20.3,5,131,103,2830,15.9,78,2 -volvo 264gl,17,6,163,125,3140,13.6,78,2 -saab 99gle,21.6,4,121,115,2795,15.7,78,2 -peugeot 604sl,16.2,6,163,133,3410,15.8,78,2 -volkswagen scirocco,31.5,4,89,71,1990,14.9,78,2 -honda accord lx,29.5,4,98,68,2135,16.6,78,3 -pontiac lemans v6,21.5,6,231,115,3245,15.4,79,1 -mercury zephyr 6,19.8,6,200,85,2990,18.2,79,1 -ford fairmont 4,22.3,4,140,88,2890,17.3,79,1 -amc concord dl 6,20.2,6,232,90,3265,18.2,79,1 -dodge aspen 6,20.6,6,225,110,3360,16.6,79,1 -chevrolet caprice classic,17,8,305,130,3840,15.4,79,1 -ford ltd landau,17.6,8,302,129,3725,13.4,79,1 -mercury grand marquis,16.5,8,351,138,3955,13.2,79,1 -dodge st. regis,18.2,8,318,135,3830,15.2,79,1 -buick estate wagon (sw),16.9,8,350,155,4360,14.9,79,1 -ford country squire (sw),15.5,8,351,142,4054,14.3,79,1 -chevrolet malibu classic (sw),19.2,8,267,125,3605,15,79,1 -chrysler lebaron town @ country (sw),18.5,8,360,150,3940,13,79,1 -vw rabbit custom,31.9,4,89,71,1925,14,79,2 -maxda glc deluxe,34.1,4,86,65,1975,15.2,79,3 -dodge colt hatchback custom,35.7,4,98,80,1915,14.4,79,1 -amc spirit dl,27.4,4,121,80,2670,15,79,1 -mercedes benz 300d,25.4,5,183,77,3530,20.1,79,2 -cadillac eldorado,23,8,350,125,3900,17.4,79,1 -peugeot 504,27.2,4,141,71,3190,24.8,79,2 -oldsmobile cutlass salon brougham,23.9,8,260,90,3420,22.2,79,1 -plymouth horizon,34.2,4,105,70,2200,13.2,79,1 -plymouth horizon tc3,34.5,4,105,70,2150,14.9,79,1 -datsun 210,31.8,4,85,65,2020,19.2,79,3 -fiat strada custom,37.3,4,91,69,2130,14.7,79,2 -buick skylark limited,28.4,4,151,90,2670,16,79,1 -chevrolet citation,28.8,6,173,115,2595,11.3,79,1 -oldsmobile omega brougham,26.8,6,173,115,2700,12.9,79,1 -pontiac phoenix,33.5,4,151,90,2556,13.2,79,1 -vw rabbit,41.5,4,98,76,2144,14.7,80,2 -toyota corolla tercel,38.1,4,89,60,1968,18.8,80,3 -chevrolet chevette,32.1,4,98,70,2120,15.5,80,1 -datsun 310,37.2,4,86,65,2019,16.4,80,3 -chevrolet citation,28,4,151,90,2678,16.5,80,1 -ford fairmont,26.4,4,140,88,2870,18.1,80,1 -amc concord,24.3,4,151,90,3003,20.1,80,1 -dodge aspen,19.1,6,225,90,3381,18.7,80,1 -audi 4000,34.3,4,97,78,2188,15.8,80,2 -toyota corona liftback,29.8,4,134,90,2711,15.5,80,3 -mazda 626,31.3,4,120,75,2542,17.5,80,3 -datsun 510 hatchback,37,4,119,92,2434,15,80,3 -toyota corolla,32.2,4,108,75,2265,15.2,80,3 -mazda glc,46.6,4,86,65,2110,17.9,80,3 -dodge colt,27.9,4,156,105,2800,14.4,80,1 -datsun 210,40.8,4,85,65,2110,19.2,80,3 -vw rabbit c (diesel),44.3,4,90,48,2085,21.7,80,2 -vw dasher (diesel),43.4,4,90,48,2335,23.7,80,2 -audi 5000s (diesel),36.4,5,121,67,2950,19.9,80,2 -mercedes-benz 240d,30,4,146,67,3250,21.8,80,2 -honda civic 1500 gl,44.6,4,91,67,1850,13.8,80,3 -renault lecar deluxe,40.9,4,85,NaN,1835,17.3,80,2 -subaru dl,33.8,4,97,67,2145,18,80,3 -vokswagen rabbit,29.8,4,89,62,1845,15.3,80,2 -datsun 280-zx,32.7,6,168,132,2910,11.4,80,3 -mazda rx-7 gs,23.7,3,70,100,2420,12.5,80,3 -triumph tr7 coupe,35,4,122,88,2500,15.1,80,2 -ford mustang cobra,23.6,4,140,NaN,2905,14.3,80,1 -honda accord,32.4,4,107,72,2290,17,80,3 -plymouth reliant,27.2,4,135,84,2490,15.7,81,1 -buick skylark,26.6,4,151,84,2635,16.4,81,1 -dodge aries wagon (sw),25.8,4,156,92,2620,14.4,81,1 -chevrolet citation,23.5,6,173,110,2725,12.6,81,1 -plymouth reliant,30,4,135,84,2385,12.9,81,1 -toyota starlet,39.1,4,79,58,1755,16.9,81,3 -plymouth champ,39,4,86,64,1875,16.4,81,1 -honda civic 1300,35.1,4,81,60,1760,16.1,81,3 -subaru,32.3,4,97,67,2065,17.8,81,3 -datsun 210 mpg,37,4,85,65,1975,19.4,81,3 -toyota tercel,37.7,4,89,62,2050,17.3,81,3 -mazda glc 4,34.1,4,91,68,1985,16,81,3 -plymouth horizon 4,34.7,4,105,63,2215,14.9,81,1 -ford escort 4w,34.4,4,98,65,2045,16.2,81,1 -ford escort 2h,29.9,4,98,65,2380,20.7,81,1 -volkswagen jetta,33,4,105,74,2190,14.2,81,2 -renault 18i,34.5,4,100,NaN,2320,15.8,81,2 -honda prelude,33.7,4,107,75,2210,14.4,81,3 -toyota corolla,32.4,4,108,75,2350,16.8,81,3 -datsun 200sx,32.9,4,119,100,2615,14.8,81,3 -mazda 626,31.6,4,120,74,2635,18.3,81,3 -peugeot 505s turbo diesel,28.1,4,141,80,3230,20.4,81,2 -saab 900s,NaN,4,121,110,2800,15.4,81,2 -volvo diesel,30.7,6,145,76,3160,19.6,81,2 -toyota cressida,25.4,6,168,116,2900,12.6,81,3 -datsun 810 maxima,24.2,6,146,120,2930,13.8,81,3 -buick century,22.4,6,231,110,3415,15.8,81,1 -oldsmobile cutlass ls,26.6,8,350,105,3725,19,81,1 -ford granada gl,20.2,6,200,88,3060,17.1,81,1 -chrysler lebaron salon,17.6,6,225,85,3465,16.6,81,1 -chevrolet cavalier,28,4,112,88,2605,19.6,82,1 -chevrolet cavalier wagon,27,4,112,88,2640,18.6,82,1 -chevrolet cavalier 2-door,34,4,112,88,2395,18,82,1 -pontiac j2000 se hatchback,31,4,112,85,2575,16.2,82,1 -dodge aries se,29,4,135,84,2525,16,82,1 -pontiac phoenix,27,4,151,90,2735,18,82,1 -ford fairmont futura,24,4,140,92,2865,16.4,82,1 -amc concord dl,23,4,151,NaN,3035,20.5,82,1 -volkswagen rabbit l,36,4,105,74,1980,15.3,82,2 -mazda glc custom l,37,4,91,68,2025,18.2,82,3 -mazda glc custom,31,4,91,68,1970,17.6,82,3 -plymouth horizon miser,38,4,105,63,2125,14.7,82,1 -mercury lynx l,36,4,98,70,2125,17.3,82,1 -nissan stanza xe,36,4,120,88,2160,14.5,82,3 -honda accord,36,4,107,75,2205,14.5,82,3 -toyota corolla,34,4,108,70,2245,16.9,82,3 -honda civic,38,4,91,67,1965,15,82,3 -honda civic (auto),32,4,91,67,1965,15.7,82,3 -datsun 310 gx,38,4,91,67,1995,16.2,82,3 -buick century limited,25,6,181,110,2945,16.4,82,1 -oldsmobile cutlass ciera (diesel),38,6,262,85,3015,17,82,1 -chrysler lebaron medallion,26,4,156,92,2585,14.5,82,1 -ford granada l,22,6,232,112,2835,14.7,82,1 -toyota celica gt,32,4,144,96,2665,13.9,82,3 -dodge charger 2.2,36,4,135,84,2370,13,82,1 -chevrolet camaro,27,4,151,90,2950,17.3,82,1 -ford mustang gl,27,4,140,86,2790,15.6,82,1 -vw pickup,44,4,97,52,2130,24.6,82,2 -dodge rampage,32,4,135,84,2295,11.6,82,1 -ford ranger,28,4,120,79,2625,18.6,82,1 -chevy s-10,31,4,119,82,2720,19.4,82,1 \ No newline at end of file From c7b280e2ae62dcd35bd49bbbf4e2821a71d568b2 Mon Sep 17 00:00:00 2001 From: Spurs20 <22457841+Spurs20@users.noreply.github.com> Date: Thu, 12 Sep 2019 10:05:41 -0600 Subject: [PATCH 5/8] Delete cars_new.csv --- data/cars_new.csv | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 data/cars_new.csv diff --git a/data/cars_new.csv b/data/cars_new.csv deleted file mode 100644 index 57c309fd6..000000000 --- a/data/cars_new.csv +++ /dev/null @@ -1,4 +0,0 @@ -Model,MPG,Cylinders,Displacement,Horsepower,Weight,Acceleration -chevrolet chevelle malibu,18,8,307,130,3504,12 -buick skylark 320,15,8,350,165,3693,11.5 -other car,15,8,350,165,3693,11.5 \ No newline at end of file From 3f5604af359643ae032434e94253bac51627dc9d Mon Sep 17 00:00:00 2001 From: Spurs20 <22457841+Spurs20@users.noreply.github.com> Date: Thu, 12 Sep 2019 10:10:52 -0600 Subject: [PATCH 6/8] Delete dakota_tabular_anon.dat From 405464ac261c4aab78c1dcae10249b2932be180f Mon Sep 17 00:00:00 2001 From: Spurs20 <22457841+Spurs20@users.noreply.github.com> Date: Thu, 12 Sep 2019 10:12:31 -0600 Subject: [PATCH 7/8] Delete package.json --- package.json | 169 --------------------------------------------------- 1 file changed, 169 deletions(-) delete mode 100644 package.json diff --git a/package.json b/package.json deleted file mode 100644 index 83a38df94..000000000 --- a/package.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "name": "slycat", - "version": "1.0.0", - "scripts": { - "dev": "node --max_old_space_size=4096 ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --config webpack.dev.js", - "watch": "node --max_old_space_size=4096 ./node_modules/webpack/bin/webpack.js --config webpack.watch.js --watch", - "prod": "webpack --config webpack.prod.js", - "test": "jest", - "update-tests": "jest -u", - "test-coverage": "jest --coverage", - "modules": "webpack --display-modules --config webpack.prod.js", - "precommit-msg": "echo 'Pre-commit checks...' && exit 0" - }, - "pre-commit": [ - "precommit-msg", - "test" - ], - "main": "index.js", - "repository": "git@github.com:sandialabs/slycat.git", - "author": "Alex M. Sielicki ", - "license": "MIT", - "dependencies": { - "bootstrap": "4.3.1", - "d3": "3.5.17", - "font-awesome": "4.7.0", - "he": "1.2.0", - "jquery": "3.4.1", - "jquery-knob": "1.2.11", - "jquery-ui": "1.12.1", - "knockout": "3.5.0", - "knockout-mapping": "2.6.0", - "layout": "git+https://github.com/GedMarc/layout.git#v1.7.0.2", - "lodash": "4.17.15", - "papaparse": "5.0.1", - "popper.js": "1.15.0", - "react": "16.8.6", - "react-dom": "16.8.6", - "react-ga": "2.6.0", - "react-redux": "7.1.0", - "redux": "4.0.4", - "redux-logger": "3.0.6", - "redux-thunk": "2.3.0", - "slickgrid": "2.4.11", - "three": "0.107.0", - "three-stl-loader": "1.0.6", - "three-trackballcontrols": "0.0.8", - "urijs": "1.19.1" - }, - "devDependencies": { - "@babel/cli": "^7.5.5", - "@babel/core": "^7.5.5", - "@babel/plugin-proposal-class-properties": "^7.5.5", - "@babel/plugin-proposal-object-rest-spread": "^7.5.5", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-transform-runtime": "^7.5.5", - "@babel/preset-env": "^7.5.5", - "@babel/preset-react": "^7.0.0", - "@babel/preset-typescript": "^7.3.3", - "@types/core-js": "^2.5.2", - "@types/enzyme": "^3.10.3", - "@types/jest": "^24.0.16", - "@types/jquery": "^3.3.30", - "@types/jsdom": "^12.2.4", - "@types/node": "^12.6.7", - "@types/react": "^16.8.24", - "@types/react-dom": "^16.8.5", - "@types/react-test-renderer": "^16.8.3", - "@types/sinon": "^7.0.13", - "autoprefixer": "^9.6.1", - "babel-eslint": "^10.0.2", - "babel-jest": "^24.8.0", - "babel-loader": "^8.0.5", - "babel-plugin-module-resolver": "^3.2.0", - "babelify": "^10.0.0", - "clean-webpack-plugin": "^3.0.0", - "copy-webpack-plugin": "^5.0.4", - "css-loader": "^3.1.0", - "enzyme": "^3.10.0", - "enzyme-adapter-react-16": "^1.14.0", - "enzyme-to-json": "^3.3.5", - "eslint": "^6.1.0", - "eslint-plugin-react": "^7.14.3", - "file-loader": "^4.1.0", - "html-loader": "^0.5.5", - "html-webpack-plugin": "4.0.0-beta.7", - "imports-loader": "^0.8.0", - "jest": "^24.8.0", - "jest-fetch-mock": "^2.1.2", - "less": "^3.9.0", - "less-loader": "^5.0.0", - "node-fetch-polyfill": "^2.0.6", - "node-sass": "^4.12.0", - "postcss-loader": "^3.0.0", - "pre-commit": "^1.2.2", - "precss": "^4.0.0", - "react-test-renderer": "^16.8.6", - "sass-loader": "^7.1.0", - "sinon": "^7.3.2", - "style-loader": "^0.23.1", - "typescript": "^3.5.3", - "url-loader": "^2.1.0", - "webpack": "^4.38.0", - "webpack-bundle-analyzer": "^3.4.1", - "webpack-cli": "^3.3.6", - "webpack-dev-server": "^3.7.2", - "webpack-merge": "^4.2.1", - "webpack-node-modules-list": "^0.4.1", - "webpack-visualizer-plugin": "^0.1.11", - "whatwg-fetch": "^3.0.0" - }, - "jshintConfig": { - "bitwise": true, - "curly": true, - "eqeqeq": true, - "forin": false, - "freeze": true, - "immed": true, - "latedef": true, - "newcap": true, - "noarg": true, - "noempty": true, - "nonew": false, - "plusplus": false, - "quotmark": true, - "undef": true, - "strict": true, - "trailing": true, - "unused": true, - "asi": false, - "boss": false, - "debug": true, - "eqnull": false, - "evil": false, - "expr": false, - "funcscope": true, - "globalstrict": true, - "iterator": false, - "lastsemic": false, - "laxbreak": false, - "laxcomma": false, - "loopfunc": false, - "multistr": false, - "proto": false, - "scripturl": false, - "smarttabs": false, - "shadow": false, - "sub": true, - "supernew": false, - "validthis": true, - "browser": true, - "couch": false, - "devel": true, - "dojo": false, - "jquery": true, - "mootools": false, - "node": true, - "nonstandard": false, - "phantom": true, - "prototypejs": false, - "rhino": false, - "wsh": false, - "maxerr": 100, - "predef": [ - "require" - ], - "indent": 2, - "esversion": 6 - } -} From 16677675b1b6d506d7cd81e838796335e6e8fae7 Mon Sep 17 00:00:00 2001 From: Matthew Letter Date: Wed, 18 Sep 2019 13:12:25 -0600 Subject: [PATCH 8/8] Revert "Delete package.json" This reverts commit 405464ac261c4aab78c1dcae10249b2932be180f. --- package.json | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 package.json diff --git a/package.json b/package.json new file mode 100644 index 000000000..83a38df94 --- /dev/null +++ b/package.json @@ -0,0 +1,169 @@ +{ + "name": "slycat", + "version": "1.0.0", + "scripts": { + "dev": "node --max_old_space_size=4096 ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --config webpack.dev.js", + "watch": "node --max_old_space_size=4096 ./node_modules/webpack/bin/webpack.js --config webpack.watch.js --watch", + "prod": "webpack --config webpack.prod.js", + "test": "jest", + "update-tests": "jest -u", + "test-coverage": "jest --coverage", + "modules": "webpack --display-modules --config webpack.prod.js", + "precommit-msg": "echo 'Pre-commit checks...' && exit 0" + }, + "pre-commit": [ + "precommit-msg", + "test" + ], + "main": "index.js", + "repository": "git@github.com:sandialabs/slycat.git", + "author": "Alex M. Sielicki ", + "license": "MIT", + "dependencies": { + "bootstrap": "4.3.1", + "d3": "3.5.17", + "font-awesome": "4.7.0", + "he": "1.2.0", + "jquery": "3.4.1", + "jquery-knob": "1.2.11", + "jquery-ui": "1.12.1", + "knockout": "3.5.0", + "knockout-mapping": "2.6.0", + "layout": "git+https://github.com/GedMarc/layout.git#v1.7.0.2", + "lodash": "4.17.15", + "papaparse": "5.0.1", + "popper.js": "1.15.0", + "react": "16.8.6", + "react-dom": "16.8.6", + "react-ga": "2.6.0", + "react-redux": "7.1.0", + "redux": "4.0.4", + "redux-logger": "3.0.6", + "redux-thunk": "2.3.0", + "slickgrid": "2.4.11", + "three": "0.107.0", + "three-stl-loader": "1.0.6", + "three-trackballcontrols": "0.0.8", + "urijs": "1.19.1" + }, + "devDependencies": { + "@babel/cli": "^7.5.5", + "@babel/core": "^7.5.5", + "@babel/plugin-proposal-class-properties": "^7.5.5", + "@babel/plugin-proposal-object-rest-spread": "^7.5.5", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-transform-runtime": "^7.5.5", + "@babel/preset-env": "^7.5.5", + "@babel/preset-react": "^7.0.0", + "@babel/preset-typescript": "^7.3.3", + "@types/core-js": "^2.5.2", + "@types/enzyme": "^3.10.3", + "@types/jest": "^24.0.16", + "@types/jquery": "^3.3.30", + "@types/jsdom": "^12.2.4", + "@types/node": "^12.6.7", + "@types/react": "^16.8.24", + "@types/react-dom": "^16.8.5", + "@types/react-test-renderer": "^16.8.3", + "@types/sinon": "^7.0.13", + "autoprefixer": "^9.6.1", + "babel-eslint": "^10.0.2", + "babel-jest": "^24.8.0", + "babel-loader": "^8.0.5", + "babel-plugin-module-resolver": "^3.2.0", + "babelify": "^10.0.0", + "clean-webpack-plugin": "^3.0.0", + "copy-webpack-plugin": "^5.0.4", + "css-loader": "^3.1.0", + "enzyme": "^3.10.0", + "enzyme-adapter-react-16": "^1.14.0", + "enzyme-to-json": "^3.3.5", + "eslint": "^6.1.0", + "eslint-plugin-react": "^7.14.3", + "file-loader": "^4.1.0", + "html-loader": "^0.5.5", + "html-webpack-plugin": "4.0.0-beta.7", + "imports-loader": "^0.8.0", + "jest": "^24.8.0", + "jest-fetch-mock": "^2.1.2", + "less": "^3.9.0", + "less-loader": "^5.0.0", + "node-fetch-polyfill": "^2.0.6", + "node-sass": "^4.12.0", + "postcss-loader": "^3.0.0", + "pre-commit": "^1.2.2", + "precss": "^4.0.0", + "react-test-renderer": "^16.8.6", + "sass-loader": "^7.1.0", + "sinon": "^7.3.2", + "style-loader": "^0.23.1", + "typescript": "^3.5.3", + "url-loader": "^2.1.0", + "webpack": "^4.38.0", + "webpack-bundle-analyzer": "^3.4.1", + "webpack-cli": "^3.3.6", + "webpack-dev-server": "^3.7.2", + "webpack-merge": "^4.2.1", + "webpack-node-modules-list": "^0.4.1", + "webpack-visualizer-plugin": "^0.1.11", + "whatwg-fetch": "^3.0.0" + }, + "jshintConfig": { + "bitwise": true, + "curly": true, + "eqeqeq": true, + "forin": false, + "freeze": true, + "immed": true, + "latedef": true, + "newcap": true, + "noarg": true, + "noempty": true, + "nonew": false, + "plusplus": false, + "quotmark": true, + "undef": true, + "strict": true, + "trailing": true, + "unused": true, + "asi": false, + "boss": false, + "debug": true, + "eqnull": false, + "evil": false, + "expr": false, + "funcscope": true, + "globalstrict": true, + "iterator": false, + "lastsemic": false, + "laxbreak": false, + "laxcomma": false, + "loopfunc": false, + "multistr": false, + "proto": false, + "scripturl": false, + "smarttabs": false, + "shadow": false, + "sub": true, + "supernew": false, + "validthis": true, + "browser": true, + "couch": false, + "devel": true, + "dojo": false, + "jquery": true, + "mootools": false, + "node": true, + "nonstandard": false, + "phantom": true, + "prototypejs": false, + "rhino": false, + "wsh": false, + "maxerr": 100, + "predef": [ + "require" + ], + "indent": 2, + "esversion": 6 + } +}