コード例 #1
0
def test_split_file_odd(create_dummy_file):
    filename, split_files = create_dummy_file("\n".join(list("abcdefg")))

    split_file(filename, 3)

    read_lines = []
    for filename in split_files:
        assert os.path.exists(filename)
        with open(filename, "r") as fileobj:
            read_lines.append(fileobj.read())
    assert read_lines[0] == "a\nb\nc"
    assert read_lines[1] == "d\ne"
    assert read_lines[2] == "f\ng"
コード例 #2
0
def _multiprocess_smiles(args: argparse.Namespace) -> None:
    def create_cmd(index, filename):
        cmd_args = [
            "aizynthcli",
            "--smiles",
            filename,
            "--config",
            args.config,
            "--output",
            hdf_files[index - 1],
        ]
        if args.policy:
            cmd_args.extend(["--policy", args.policy])
        if args.stocks:
            cmd_args.append("--stocks")
            cmd_args.extend(args.stocks)
        if args.cluster:
            cmd_args.append("--cluster")
        return cmd_args

    if not os.path.exists(args.smiles):
        raise ValueError(
            "For multiprocessing execution the --smiles argument needs to be a filename"
        )

    setup_logger(logging.INFO)
    filenames = split_file(args.smiles, args.nproc)
    hdf_files = [tempfile.mktemp(suffix=".hdf") for _ in range(args.nproc)]
    start_processes(filenames, "aizynthcli", create_cmd)

    if not all(os.path.exists(filename) for filename in hdf_files):
        raise FileNotFoundError(
            "Not all output files produced. Please check the individual log files: 'aizynthcli*.log'"
        )
    cat_hdf_files(hdf_files, args.output or "output.hdf5")