Skip to content

Commit

Permalink
This should be putting a huge dent in #158 - the config files now wil…
Browse files Browse the repository at this point in the history
…l NOT duplicate information when the 'daijin' option is invoked
  • Loading branch information
lucventurini committed Mar 27, 2019
1 parent 111f2aa commit eceac03
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 21 deletions.
14 changes: 7 additions & 7 deletions Mikado/configuration/configurator.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,12 @@ def set_default(instance, properties, simple_comment=False):
for prop, subschema in properties.items():
if instance is None:
instance = dict()
if "$ref" in subschema:
# Automatically resolve and load the reference
assert resolver is not None
properties[prop] = resolver.resolve(subschema["$ref"])[1]
subschema = properties[prop]

# if "$ref" in subschema:
# # Automatically resolve and load the reference
# assert resolver is not None
# properties[prop] = resolver.resolve(subschema["$ref"])[1]
# subschema = properties[prop]
#
if "default" in subschema:
instance.setdefault(prop, subschema["default"])
elif prop not in instance:
Expand Down Expand Up @@ -107,7 +107,7 @@ def set_defaults(validator, properties, instance, schema):
instance = set_default(instance, properties, simple_comment=simple)

return jsonschema.validators.extend(
validator_class, {"properties": set_defaults},
validator_class, {"properties": set_defaults, "resolver": resolver},
)


Expand Down
27 changes: 14 additions & 13 deletions Mikado/configuration/daijin_configurator.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from ..exceptions import InvalidJson
from ..utilities.log_utils import create_default_logger
import sys
import jsonref


def _substitute_conf(schema):
Expand All @@ -29,21 +30,21 @@ def _substitute_conf(schema):
return schema


def create_daijin_validator():
def create_daijin_validator(simple=True):

with io.TextIOWrapper(resource_stream("Mikado.configuration", "configuration_blueprint.json")) as _:
schema = json.load(_)

resolver = jsonschema.RefResolver.from_schema(schema)
cname = resource_filename("Mikado.configuration", "configuration_blueprint.json")

# We have to repeate twice the ending configuration (bug in jsonref?)
baseuri = "file://" + os.path.join(os.path.dirname(cname), os.path.basename(os.path.dirname(cname)))
with io.TextIOWrapper(resource_stream("Mikado.configuration",
"daijin_schema.json")) as blue:
blue_print = json.load(blue)
blue_print = jsonref.load(blue,
jsonschema=True,
base_uri=baseuri)

_substitute_conf(blue_print)
validator = extend_with_default(jsonschema.Draft4Validator,
resolver=resolver,
simple=True)
# _substitute_conf(blue_print)
validator = extend_with_default(jsonschema.Draft7Validator,
simple=simple)
validator = validator(blue_print)

return validator
Expand Down Expand Up @@ -72,9 +73,9 @@ def check_config(config, logger=None):
sys.exit(1)


def create_daijin_base_config():
def create_daijin_base_config(simple=True):

validator = create_daijin_validator()
validator = create_daijin_validator(simple=simple)
conf = dict()
validator.validate(conf)

Expand Down Expand Up @@ -200,7 +201,7 @@ def create_daijin_config(args, level="ERROR", piped=False):

logger = create_default_logger("daijin_config", level=level)

config = create_daijin_base_config()
config = create_daijin_base_config(simple=(not args.full))
assert "reference" in config, config.keys()
# print(config)
config["reference"]["genome"] = args.genome
Expand Down
1 change: 1 addition & 0 deletions Mikado/daijin/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ def create_config_parser():
runtime.add_argument("-c", "--cluster_config",
type=str, default=None,
help="Cluster configuration file to write to.")
parser.add_argument("--full", action="store_true", default=False)
runtime.add_argument("--threads", "-t", action="store", metavar="N", type=int, default=4,
help="""Maximum number of threads per job. Default: %(default)s""")
runtime.add_argument("-od", "--out-dir", dest="out_dir", default=None, required=False,
Expand Down
1 change: 1 addition & 0 deletions Mikado/tests/test_system_calls.py
Original file line number Diff line number Diff line change
Expand Up @@ -1023,6 +1023,7 @@ def test_daijin_config(self):
namespace.transcriptome = ""
namespace.name = "Daijin"
namespace.threads = 1
namespace.full = False

for iteration in range(20):
with self.subTest(iteration=iteration):
Expand Down
3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@ tabulate
ujson
simplejson
pandas
jsonref>=0.2
pytest-cov
pysam >= 0.15.1
pysam>=0.15.1

0 comments on commit eceac03

Please sign in to comment.