コード例 #1
0
ファイル: oldimp.py プロジェクト: FragMAX/FragMAXapp
def _migrate_proc_tool(project: Project, old_paths: OldPaths, tool: str):
    _log(f"MIGRATE PROC TOOL {tool} RESULTS")
    tool_dir = "xdsxscale" if tool == "xds" else tool

    for dset in _dbg_cutoff(project.get_datasets()):
        src_dir = Path(old_paths.process_dir, dset.crystal.id, dset.name,
                       tool_dir)
        if not src_dir.is_dir():
            # no tool results found for this dataset
            continue

        dest_dir = Path(project.get_dataset_process_dir(dset), tool)
        _log(f"{src_dir} -> {dest_dir}")
        _copytree(src_dir, dest_dir)
        update_proc_tool_status(project, tool, dset)
コード例 #2
0
ファイル: filters.py プロジェクト: FragMAX/FragMAXapp
def get_refine_datasets(project: Project, filter: str, refine_tool: str):
    """
    perform datasets filtering for 'structure refinement' jobs

    filters supported:

    'ALL' - all of the project's datasets

    'NEW' - datasets that have not been processes with specified refinement tool yet

    otherwise the filter is expected to be a comma separated list of dataset names
    """
    if filter == "ALL":
        return project.get_datasets()

    if filter == "NEW":
        return _no_results_datasets(project, refine_tool)

    return _dataset_by_ids(project, filter)
コード例 #3
0
ファイル: filters.py プロジェクト: FragMAX/FragMAXapp
def get_proc_datasets(project: Project, filter: str, tool: str):
    """
    perform datasets filtering for 'data processing' jobs

    filters supported:

    'ALL' - all of the project's datasets

    'NEW' - datasets that have not been processes yet with specified tool

    otherwise the filter is expected to be a comma separated list of dataset IDs
    """
    if filter == "ALL":
        return project.get_datasets()

    if filter == "NEW":
        return _no_results_datasets(project, tool)

    return _dataset_by_ids(project, filter)
コード例 #4
0
ファイル: oldimp.py プロジェクト: FragMAX/FragMAXapp
def _migrate_refine(project: Project, old_paths: OldPaths):
    _log("MIGRATE REFINE RESULTS")
    for dset in _dbg_cutoff(project.get_datasets()):
        for proc_tool in ["xds", "xdsapp", "dials"]:
            proc_dir = "xdsxscale" if proc_tool == "xds" else proc_tool
            src_dir = Path(old_paths.results_dir, dset.name, proc_dir)
            if not src_dir.is_dir():
                # no tool results found for this dataset
                continue

            dest_dir = Path(project.get_dataset_results_dir(dset), proc_tool)
            _log(f"{src_dir} -> {dest_dir}")
            # note, we can't use ignore_dangling_symlinks=True
            # here due to https://bugs.python.org/issue38523
            _copytree(src_dir, dest_dir)

        for tool in REFINE_TOOLS:
            update_refine_tool_status(project, tool, dset)

        for tool in LIGFIT_TOOLS:
            _maybe_resync_ligfit_tool(project, tool, dset)
コード例 #5
0
ファイル: pandda.py プロジェクト: FragMAX/FragMAXapp
def _get_best_results(project: Project, proc_tool, refine_tool):
    if proc_tool == "frag":
        proc_tool = None

    if refine_tool == "plex":
        refine_tool = None

    for dataset in project.get_datasets():
        refine_results = _get_refine_results(project, dataset, proc_tool, refine_tool)

        # sort refine results by R-work, R-free and resolution,
        # the result with lowest value(s) is the 'best' one
        best_result = refine_results.order_by(
            lambda r: (r.r_work, r.r_free, r.resolution)
        ).first()

        if best_result is None:
            # no refine results with request proc/refine tool combination
            continue

        yield best_result
コード例 #6
0
ファイル: filters.py プロジェクト: FragMAX/FragMAXapp
def get_ligfit_datasets(project: Project, filter: str,
                        ligfit_tool: Optional[str]):
    """
    perform datasets filtering for 'ligand fitting' jobs

    filters supported:

    'ALL' - all of the project's datasets

    'NEW' - datasets that have not been processes with specified ligand fitting tools yet

    otherwise the filter is expected to be a comma separated list of dataset names
    """
    if filter == "ALL":
        return project.get_datasets()

    if filter == "NEW":
        assert ligfit_tool is not None
        return _no_results_datasets(project, ligfit_tool)

    return _dataset_by_ids(project, filter)
コード例 #7
0
ファイル: filters.py プロジェクト: FragMAX/FragMAXapp
def _no_results_datasets(project: Project, tool: str):
    for dataset in project.get_datasets():
        res = dataset.result.select(tool=tool).first()
        if res is None:
            yield dataset