chemprop_example / chemprop /cli /convert.py
LudwigO's picture
add chemprop files
5716801
Raw
History Blame Contribute Delete
1.76 kB
from argparse import ArgumentError, ArgumentParser, Namespace
import sys
import logging
from pathlib import Path
from chemprop.cli.utils import Subcommand
from chemprop.utils.v1_to_v2 import convert_model_file_v1_to_v2
logger = logging.getLogger(__name__)
class ConvertSubcommand(Subcommand):
COMMAND = "convert"
HELP = "convert a v1 model checkpoint (.pt) to a v2 model checkpoint (.ckpt)"
@classmethod
def add_args(cls, parser: ArgumentParser) -> ArgumentParser:
parser.add_argument(
"-i",
"--input-path",
required=True,
type=Path,
help="The path to a v1 model .pt checkpoint file.",
)
parser.add_argument(
"-o",
"--output-path",
type=Path,
help="The path to which the converted model will be saved. Defaults to 'CURRENT_DIRECTORY/STEM_OF_INPUT_v2.ckpt'",
)
return parser
@classmethod
def func(cls, args: Namespace):
if args.output_path is None:
args.output_path = Path(args.input_path.stem + "_v2.ckpt")
if args.output_path.suffix != ".ckpt":
raise ArgumentError(
argument=None, message=f"Output must be a `.ckpt` file. Got {args.output_path}"
)
logger.info(
f"Converting v1 model checkpoint '{args.input_path}' to v2 model checkpoint '{args.output_path}'..."
)
convert_model_file_v1_to_v2(args.input_path, args.output_path)
if __name__ == "__main__":
parser = ArgumentParser()
parser = ConvertSubcommand.add_args(parser)
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, force=True)
args = parser.parse_args()
ConvertSubcommand.func(args)