Source code for dxtbx.serialize.load
from __future__ import annotations
import json
import os
from dxtbx.model.crystal import CrystalFactory
from dxtbx.serialize.imageset import imageset_from_dict
[docs]
def imageset(filename):
"""Load the given JSON file.
Params:
infile The input filename
Returns:
The models
"""
# If the input is a string then open and read from that file
filename = os.path.abspath(filename)
directory = os.path.dirname(filename)
with open(filename) as infile:
return imageset_from_dict(json.load(infile), directory=directory)
[docs]
def crystal(infile):
"""Load the given JSON file.
Params:
infile The input filename or file object
Returns:
The models
"""
# If the input is a string then open and read from that file
if isinstance(infile, str):
with open(infile) as infile:
return CrystalFactory.from_dict(json.loads(infile.read()))
# Otherwise assume the input is a file and read from it
else:
return CrystalFactory.from_dict(json.loads(infile.read()))
[docs]
def experiment_list(infile, check_format=True):
"""Load an experiment list from a serialized format."""
# Resolve recursive import
from dxtbx.model.experiment_list import ExperimentListFactory
if infile and hasattr(infile, "__fspath__"):
infile = (
infile.__fspath__()
) # Resolve file system path (PEP-519) object to string.
return ExperimentListFactory.from_serialized_format(
infile, check_format=check_format
)