New: cli command 'update' (upgraded piece from compute)
Mod: database without empty tables
This commit is contained in:
parent
193e1991f4
commit
b19c310a98
@ -64,31 +64,104 @@ def version():
|
|||||||
def anisotropy():
|
def anisotropy():
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
@anisotropy.command(
|
@anisotropy.command(
|
||||||
help = "Initialize project in cwd"
|
help = "Initialize new anisotropy project."
|
||||||
)
|
)
|
||||||
def init():
|
@click.option(
|
||||||
|
"-P", "--path", "path",
|
||||||
|
default = os.getcwd(),
|
||||||
|
help = "Specify directory to use (instead of cwd)"
|
||||||
|
)
|
||||||
|
def init(path):
|
||||||
from anisotropy import env
|
from anisotropy import env
|
||||||
from anisotropy.core.utils import setupLogger
|
from anisotropy.core.main import Database
|
||||||
from anisotropy.core.main import logger, Database
|
|
||||||
|
|
||||||
setupLogger(logger, logging.INFO)
|
if not os.path.exist(path) or not os.path.isdir(path):
|
||||||
|
click.echo(f"Cannot find directory { path }")
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
cwd = os.getcwd()
|
|
||||||
wds = [ "build", "logs" ]
|
wds = [ "build", "logs" ]
|
||||||
|
|
||||||
for wd in wds:
|
for wd in wds:
|
||||||
os.makedirs(os.path.join(cwd, wd), exist_ok = True)
|
os.makedirs(os.path.join(path, wd), exist_ok = True)
|
||||||
|
|
||||||
shutil.copy(env["CONFIG"], os.path.join(cwd, "anisotropy.toml"), follow_symlinks = True)
|
shutil.copy(env["CONFIG"], os.path.join(path, "anisotropy.toml"), follow_symlinks = True)
|
||||||
|
|
||||||
db = Database(env["db_name"], cwd)
|
db = Database(env["db_name"], path)
|
||||||
db.setup()
|
db.setup()
|
||||||
|
|
||||||
logger.info(f"Initialized anisotropy project in { cwd }")
|
click.echo(f"Initialized anisotropy project in { path }")
|
||||||
|
|
||||||
|
|
||||||
@anisotropy.command(
|
@anisotropy.command(
|
||||||
help = """Computes cases by chain (mesh -> flow)
|
help = "Load parameters from configuration file and update database."
|
||||||
|
)
|
||||||
|
@click.option(
|
||||||
|
"-f", "--force", "force",
|
||||||
|
is_flag = True,
|
||||||
|
default = False,
|
||||||
|
help = "Overwrite existing entries"
|
||||||
|
)
|
||||||
|
@click.option(
|
||||||
|
"-p", "--param", "params",
|
||||||
|
metavar = "key=value",
|
||||||
|
multiple = True,
|
||||||
|
cls = KeyValueOption,
|
||||||
|
help = "Specify control parameters to update (type, direction, theta)"
|
||||||
|
)
|
||||||
|
@click.option(
|
||||||
|
"-P", "--path", "path",
|
||||||
|
default = os.getcwd(),
|
||||||
|
help = "Specify directory to use (instead of cwd)"
|
||||||
|
)
|
||||||
|
def update(force, params, path):
|
||||||
|
from anisotropy import env
|
||||||
|
from anisotropy.core.main import Anisotropy, Database
|
||||||
|
|
||||||
|
env.update(
|
||||||
|
LOG = os.path.join(path, "logs"),
|
||||||
|
BUILD = os.path.join(path, "build"),
|
||||||
|
CONFIG = os.path.join(path, "anisotropy.toml"),
|
||||||
|
db_path = path
|
||||||
|
)
|
||||||
|
|
||||||
|
args = dict()
|
||||||
|
|
||||||
|
for param in params:
|
||||||
|
args.update(param)
|
||||||
|
|
||||||
|
|
||||||
|
model = Anisotropy()
|
||||||
|
model.db = Database(env["db_name"], env["db_path"])
|
||||||
|
|
||||||
|
click.echo("Configuring database ...")
|
||||||
|
model.db.setup()
|
||||||
|
|
||||||
|
if model.db.isempty() or update:
|
||||||
|
paramsAll = model.loadFromScratch(env["CONFIG"])
|
||||||
|
|
||||||
|
if args.get("type"):
|
||||||
|
paramsAll = [ entry for entry in paramsAll if args["type"] == entry["structure"]["type"] ]
|
||||||
|
|
||||||
|
if args.get("direction"):
|
||||||
|
paramsAll = [ entry for entry in paramsAll if args["direction"] == entry["structure"]["direction"] ]
|
||||||
|
|
||||||
|
if args.get("theta"):
|
||||||
|
paramsAll = [ entry for entry in paramsAll if args["theta"] == entry["structure"]["theta"] ]
|
||||||
|
|
||||||
|
for entry in paramsAll:
|
||||||
|
model.db.update(entry)
|
||||||
|
|
||||||
|
click.echo("{} entries was updated.".format(len(paramsAll)))
|
||||||
|
|
||||||
|
else:
|
||||||
|
click.echo("Database was not modified.")
|
||||||
|
|
||||||
|
|
||||||
|
@anisotropy.command(
|
||||||
|
help = """Compute cases by chain (mesh -> flow)
|
||||||
|
|
||||||
Control parameters: type, direction, theta (each parameter affects on a queue)
|
Control parameters: type, direction, theta (each parameter affects on a queue)
|
||||||
"""
|
"""
|
||||||
@ -111,12 +184,6 @@ def init():
|
|||||||
default = False,
|
default = False,
|
||||||
help = "Overwrite existing entries"
|
help = "Overwrite existing entries"
|
||||||
)
|
)
|
||||||
@click.option(
|
|
||||||
"-u", "--update", "update",
|
|
||||||
is_flag = True,
|
|
||||||
default = False,
|
|
||||||
help = "Update db parameters from config"
|
|
||||||
)
|
|
||||||
@click.option(
|
@click.option(
|
||||||
"-p", "--param", "params",
|
"-p", "--param", "params",
|
||||||
metavar = "key=value",
|
metavar = "key=value",
|
||||||
@ -129,7 +196,7 @@ def init():
|
|||||||
default = os.getcwd(),
|
default = os.getcwd(),
|
||||||
help = "Specify directory to use (instead of cwd)"
|
help = "Specify directory to use (instead of cwd)"
|
||||||
)
|
)
|
||||||
def compute(stage, nprocs, force, update, params, path):
|
def compute(stage, nprocs, force, params, path):
|
||||||
from anisotropy import env
|
from anisotropy import env
|
||||||
from anisotropy.core.main import Anisotropy, Database, logger
|
from anisotropy.core.main import Anisotropy, Database, logger
|
||||||
from anisotropy.core.utils import setupLogger, timer, parallel
|
from anisotropy.core.utils import setupLogger, timer, parallel
|
||||||
@ -157,30 +224,9 @@ def compute(stage, nprocs, force, update, params, path):
|
|||||||
model = Anisotropy()
|
model = Anisotropy()
|
||||||
model.db = Database(env["db_name"], env["db_path"])
|
model.db = Database(env["db_name"], env["db_path"])
|
||||||
|
|
||||||
logger.info("Configuring database ...")
|
logger.info("Loading database ...")
|
||||||
model.db.setup()
|
model.db.setup()
|
||||||
|
|
||||||
if model.db.isempty() or update:
|
|
||||||
paramsAll = model.loadFromScratch(env["CONFIG"])
|
|
||||||
|
|
||||||
if args.get("type"):
|
|
||||||
paramsAll = [ entry for entry in paramsAll if args["type"] == entry["structure"]["type"] ]
|
|
||||||
|
|
||||||
if args.get("direction"):
|
|
||||||
paramsAll = [ entry for entry in paramsAll if args["direction"] == entry["structure"]["direction"] ]
|
|
||||||
|
|
||||||
if args.get("theta"):
|
|
||||||
paramsAll = [ entry for entry in paramsAll if args["theta"] == entry["structure"]["theta"] ]
|
|
||||||
|
|
||||||
for entry in paramsAll:
|
|
||||||
model.db.update(entry)
|
|
||||||
|
|
||||||
logger.info("{} entries was updated.".format(len(paramsAll)))
|
|
||||||
|
|
||||||
else:
|
|
||||||
logger.info("Database was not modified.")
|
|
||||||
|
|
||||||
|
|
||||||
###
|
###
|
||||||
def computeCase(stage, type, direction, theta):
|
def computeCase(stage, type, direction, theta):
|
||||||
case = Anisotropy()
|
case = Anisotropy()
|
||||||
|
@ -288,8 +288,8 @@ class Database(object):
|
|||||||
return tabID
|
return tabID
|
||||||
|
|
||||||
def _updateSubMesh(self, src: dict, queryMain, meshID):
|
def _updateSubMesh(self, src: dict, queryMain, meshID):
|
||||||
if not src:
|
#if not src:
|
||||||
return
|
# return
|
||||||
|
|
||||||
raw = deepcopy(src)
|
raw = deepcopy(src)
|
||||||
|
|
||||||
@ -312,8 +312,8 @@ class Database(object):
|
|||||||
query.execute()
|
query.execute()
|
||||||
|
|
||||||
def _updateMeshResult(self, src: dict, queryMain, meshID):
|
def _updateMeshResult(self, src: dict, queryMain, meshID):
|
||||||
if not src:
|
#if not src:
|
||||||
return
|
# return
|
||||||
|
|
||||||
raw = deepcopy(src)
|
raw = deepcopy(src)
|
||||||
|
|
||||||
@ -359,8 +359,8 @@ class Database(object):
|
|||||||
return tabID
|
return tabID
|
||||||
|
|
||||||
def _updateFlowApproximation(self, src: dict, queryMain, flowID):
|
def _updateFlowApproximation(self, src: dict, queryMain, flowID):
|
||||||
if not src:
|
#if not src:
|
||||||
return
|
# return
|
||||||
|
|
||||||
raw = deepcopy(src)
|
raw = deepcopy(src)
|
||||||
|
|
||||||
@ -382,8 +382,8 @@ class Database(object):
|
|||||||
query.execute()
|
query.execute()
|
||||||
|
|
||||||
def _updateFlowResult(self, src: dict, queryMain, flowID):
|
def _updateFlowResult(self, src: dict, queryMain, flowID):
|
||||||
if not src:
|
#if not src:
|
||||||
return
|
# return
|
||||||
|
|
||||||
raw = deepcopy(src)
|
raw = deepcopy(src)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user