Exemplo n.º 1
0
async def test_get_mutation_info_database():
    item = js.Item(
        run_type="mutations",
        args={
            "job_id": "4a21dd",
            "job_type": "database",
            "protein_id": "O00522",
            "mutations": "E567Q",
        },
    )
    loop = asyncio.get_running_loop()
    mutation_info_list = await get_mutation_info(item)
    mutation_info_list = await loop.run_in_executor(None,
                                                    resolve_mutation_info,
                                                    mutation_info_list)
    assert len(mutation_info_list) >= 2
    for idx, mutation_info in enumerate(mutation_info_list):
        if idx == 0:
            assert mutation_info.coi == COI.CORE
        else:
            assert mutation_info.coi == COI.INTERFACE
        assert Path(config.DATA_DIR).joinpath(
            mutation_info.structure_file).is_file()
        protein_info = extract_protein_info(mutation_info)
        _validate_protein_info(protein_info, mutation_info)
Exemplo n.º 2
0
async def test_elaspic2_collect_loop(mock_update_mutation_scores):
    el2_web_url = urljoin(config.ELASPIC2_URL, "jobs/229764931")

    mutation_info_list = [
        MutationInfo(
            1,
            structure_file="1MFG.pdb",
            chain_id="A",
            mutation="G1A",
            protein_id="1mfg-local",
            coi=COI.CORE,
            el2_web_url=el2_web_url,
        ),
        MutationInfo(
            1,
            structure_file="1MFG.pdb",
            chain_id="A",
            mutation="G1A",
            protein_id="1mfg-local",
            coi=COI.INTERFACE,
            el2_web_url=el2_web_url,
        ),
    ]

    mutation_info_wscores_list = [
        mutation_info_list[0]._replace(
            protbert_score=0.011648587882518768,
            proteinsolver_score=0.7335909865796566,
            el2_score=0.3672627929817027,
        ),
        mutation_info_list[1]._replace(
            protbert_score=0.019379954785108566,
            proteinsolver_score=0.6837433353066444,
            el2_score=-0.969817502829359,
        ),
    ]

    item = js.Item(
        run_type="mutations",
        args={
            "job_id": "unk",
            "job_type": "database",
            "protein_id": "XXX",
            "mutations": "G1A,G1C",
        },
    )
    item.el2_mutation_info_list.extend(mutation_info_list)

    ds = js.DataStructures()
    await ds.elaspic2_running_queue.put(item)

    with return_on_call(
            "elaspic_rest_api.jobsubmitter.elaspic2.asyncio.sleep"):
        await js.elaspic2_collect_loop(ds)

    mock_update_mutation_scores.assert_called_once_with(
        item.args["job_type"], mutation_info_wscores_list)
Exemplo n.º 3
0
def parse_input_data(
        data_in: DataIn) -> List[Tuple[js.Item, js.Item, Set[js.Item]]]:
    items_list = []
    for data in data_in.mutations:
        args: js.Args = data.dict()  # type: ignore
        args["job_id"] = data_in.job_id
        args["job_email"] = data_in.job_email
        args["job_type"] = data_in.job_type
        validate_args(args)
        s = js.Item(run_type="sequence", args=args)
        m = js.Item(run_type="model", args=args)
        muts = set()
        for mutation in args["mutations"].split(","):
            args1 = args.copy()
            args1["mutations"] = mutation
            mut = js.Item(run_type="mutations", args=args1)
            muts.add(mut)
        items_list.append((s, m, muts))
    return items_list
Exemplo n.º 4
0
def test_send_admin_email_it():
    item = js.Item(
        run_type="mutations",
        args={
            "job_id": "test-send-job-failed-email",
            "job_type": "mutations",
            "protein_id": "4dkl",
            "mutations": "G1A",
        },
    )
    return_code = js.email.send_admin_email(
        item, system_command="echo 'hello world'", restarting=False
    )
    assert not return_code
Exemplo n.º 5
0
def test_send_admin_email(sendmail: MagicMock, restarting: bool):
    item = js.Item(
        run_type="mutations",
        args={
            "job_id": "test-send-job-failed-email",
            "job_type": "mutations",
            "protein_id": "4dkl",
            "mutations": "G1A",
        },
    )
    return_code = js.email.send_admin_email(
        item, system_command="echo 'hello world'", restarting=restarting
    )
    assert not return_code
    assert sendmail.calledonce()
Exemplo n.º 6
0
async def test_get_mutation_info_local():
    item = js.Item(
        run_type="mutations",
        args={
            "job_id": 1,
            "job_type": "local",
            "protein_id": "d822d7",
            "mutations": "P37A"
        },
    )
    loop = asyncio.get_running_loop()
    mutation_info_list = await get_mutation_info(item)
    mutation_info_list = await loop.run_in_executor(None,
                                                    resolve_mutation_info,
                                                    mutation_info_list)
    assert len(mutation_info_list) >= 2
    for idx, mutation_info in enumerate(mutation_info_list):
        assert Path(mutation_info.structure_file).is_file()
        if idx == 0:
            assert mutation_info.coi == COI.CORE
        else:
            assert mutation_info.coi == COI.INTERFACE
        protein_info = extract_protein_info(mutation_info)
        _validate_protein_info(protein_info, mutation_info)