示例#1
0
def cypher_diagram(trait: str, pval_threshold: float):
    diagram_nodes = [
        DiagramNode(id=1, meta_node="GwasExposure", label=f"Trait\n{trait}"),
        DiagramNode(id=2, meta_node="Gwas", label="Assoc_trait"),
        DiagramNode(id=3, meta_node="Variant"),
        DiagramNode(id=4, meta_node="Gene"),
        DiagramNode(id=5, meta_node="Drug"),
    ]
    diagram_edges = [
        DiagramEdge(
            from_id=2,
            to_id=1,
            meta_rel="MR_EVE_MR",
            sub_label=f"\npval < {pval_threshold}"
            if pval_threshold is not None else "",
        ),
        DiagramEdge(
            from_id=2,
            to_id=3,
            meta_rel="GWAS_TO_VARIANT",
            sub_label="pval < 1e-8",
        ),
        DiagramEdge(from_id=4, to_id=3, meta_rel="VARIANT_TO_GENE"),
        DiagramEdge(from_id=5, to_id=4),
    ]
    diagram = CypherDiagram(nodes=diagram_nodes, edges=diagram_edges)
    diagram_data = diagram.generate_diagram()
    return diagram_data
示例#2
0
def cypher_diagram(
    exposure_trait: Optional[str],
    outcome_trait: Optional[str],
    pval_threshold: float = 1e-5,
):
    """A diagram of cypher queries."""
    exposure_label = (f"exposure GWAS\n{exposure_trait}"
                      if exposure_trait is not None else "exposure GWAS")
    outcome_label = (f"outcome GWAS\n{outcome_trait}"
                     if outcome_trait is not None else "outcome GWAS")

    diagram_nodes = [
        DiagramNode(id=1, meta_node="Gwas", sub_label=exposure_label),
        DiagramNode(id=2, meta_node="Gwas", sub_label=outcome_label),
    ]
    diagram_edges = [
        DiagramEdge(
            from_id=1,
            to_id=2,
            meta_rel="MR_EVE_MR",
            sub_label=f"p < {pval_threshold}",
        )
    ]

    diagram = CypherDiagram(nodes=diagram_nodes, edges=diagram_edges)
    diagram_data = diagram.generate_diagram()
    return diagram_data
示例#3
0
def cypher_diagram(
    trait: Optional[str],
    efo_term: Optional[str],
    disease_label: Optional[str],
    score_threshold: float,
):
    id = {"gwas": 1, "efo": 2, "disease": 3}
    diagram_nodes = [
        DiagramNode(id=id["gwas"], meta_node="Gwas", sub_label=trait),
        DiagramNode(id=id["efo"], meta_node="Efo", sub_label=efo_term),
        DiagramNode(
            id=id["disease"], meta_node="Disease", sub_label=disease_label
        ),
    ]
    edge_label = (
        f"score > {score_threshold}" if score_threshold is not None else ""
    )
    diagram_edges = [
        DiagramEdge(
            from_id=id["gwas"],
            to_id=id["efo"],
            meta_rel="GWAS_NLP_EFO",
            arrows=False,
            sub_label=edge_label,
        ),
        DiagramEdge(
            from_id=id["efo"],
            to_id=id["disease"],
            meta_rel="MONDO_MAP_EFO",
            arrows=False,
        ),
    ]
    diagram = CypherDiagram(nodes=diagram_nodes, edges=diagram_edges)
    diagram_data = diagram.generate_diagram()
    return diagram_data
示例#4
0
def cypher_diagram(trait: str, cor_coef_threshold: float = 0.8) -> str:
    """A diagram of cypher queries."""
    diagram_nodes = [
        DiagramNode(id=1, meta_node="Gwas", sub_label=trait),
        DiagramNode(id=2, meta_node="Gwas", sub_label="Associated trait"),
    ]
    diagram_edges = [
        DiagramEdge(
            from_id=1,
            to_id=2,
            meta_rel="OBS_COR",
            sub_label=f"abs(cor_coef) > {cor_coef_threshold}",
            arrows=False,
        )
    ]

    diagram = CypherDiagram(nodes=diagram_nodes, edges=diagram_edges)
    diagram_data = diagram.generate_diagram()
    return diagram_data
示例#5
0
def cypher_diagram(
    xqtl_mode: str,
    exposure_gene: Optional[str],
    outcome_trait: Optional[str],
    variant: Optional[str],
    mr_method: Optional[str],
    qtl_type: Optional[str],
    pval_threshold: float,
):
    if xqtl_mode == "multi_snp_mr":
        diagram_nodes = [
            DiagramNode(id=1, meta_node="Gene", sub_label=exposure_gene),
            DiagramNode(id=2, meta_node="Gwas", sub_label=outcome_trait),
        ]
        diagram_edges = [
            DiagramEdge(
                from_id=1,
                to_id=2,
                meta_rel="XQTL_MULTI_SNP_MR",
                sub_label=f"p < {pval_threshold}\n{mr_method}\n{qtl_type}",
            )
        ]
    else:
        diagram_nodes = [
            DiagramNode(id=1, meta_node="Gene", sub_label=exposure_gene),
            DiagramNode(id=2, meta_node="Gwas", sub_label=outcome_trait),
            DiagramNode(id=3, meta_node="Variant", sub_label=variant),
        ]
        diagram_edges = [
            DiagramEdge(
                from_id=1,
                to_id=2,
                meta_rel="XQTL_SINGLE_SNP_MR_GENE_GWAS",
                sub_label=f"p < {pval_threshold}\n{qtl_type}",
            ),
            DiagramEdge(from_id=3,
                        to_id=1,
                        meta_rel="XQTL_SINGLE_SNP_MR_SNP_GENE"),
        ]
    diagram = CypherDiagram(nodes=diagram_nodes, edges=diagram_edges)
    diagram_data = diagram.generate_diagram()
    return diagram_data
示例#6
0
def cypher_diagram(
    exposure_trait: Optional[str],
    outcome_trait: Optional[str],
    type: str,
    pval_threshold: Optional[float],
):
    edge_label = (
        f"pval < {pval_threshold}" if pval_threshold is not None else ""
    )
    diagram_nodes = [
        DiagramNode(id=1, meta_node="GwasExposure", sub_label=exposure_trait),
        DiagramNode(id=2, meta_node="GwasOutcome", sub_label=outcome_trait),
        DiagramNode(id=3, meta_node="Gwas", sub_label=type.capitalize()),
    ]
    diagram_edges = [
        # r2
        DiagramEdge(
            from_id=1, to_id=2, meta_rel="MR_EVE_MR", sub_label=edge_label
        ),
        # r1
        DiagramEdge(
            from_id=int(r1.at[type, "from_id"]),
            to_id=int(r1.at[type, "to_id"]),
            meta_rel="MR_EVE_MR",
            sub_label=edge_label,
            dashes=True,
        ),
        # r3
        DiagramEdge(
            from_id=int(r3.at[type, "from_id"]),
            to_id=int(r3.at[type, "to_id"]),
            meta_rel="MR_EVE_MR",
            sub_label=edge_label,
            dashes=True,
        ),
    ]

    diagram = CypherDiagram(nodes=diagram_nodes, edges=diagram_edges)
    diagram_data = diagram.generate_diagram()
    return diagram_data
示例#7
0
def cypher_diagram(
    trait: str,
    semmed_predicates: Optional[List[str]],
    pval_threshold: float,
    limit: int,
):
    id = {"gwas": 1, "triple": 2, "lit": 3}
    diagram_nodes = [
        DiagramNode(id=id["gwas"], meta_node="Gwas", sub_label=trait),
        DiagramNode(id=id["lit"], meta_node="Literature"),
        DiagramNode(
            id=id["triple"],
            meta_node="LiteratureTriple",
            sub_label=semmed_predicates[0]
            if semmed_predicates is not None
            else None,
        ),
    ]
    diagram_edges = [
        DiagramEdge(
            from_id=id["gwas"],
            to_id=id["triple"],
            meta_rel="GWAS_TO_LITERATURE_TRIPLE",
        ),
        DiagramEdge(
            from_id=id["gwas"],
            to_id=id["lit"],
            meta_rel="GWAS_TO_LIT",
            arrows=False,
            dashes=True,
        ),
        DiagramEdge(
            from_id=id["triple"], to_id=id["lit"], meta_rel="SEMMEDDB_TO_LIT"
        ),
    ]
    diagram = CypherDiagram(nodes=diagram_nodes, edges=diagram_edges)
    diagram_data = diagram.generate_diagram()
    return diagram_data
示例#8
0
def cypher_diagram(trait: str, pval_threshold: float):
    diagram_nodes = [
        DiagramNode(id=1, meta_node="Gwas", sub_label=f"{trait}"),
        DiagramNode(id=2, meta_node="Variant"),
        DiagramNode(id=3, meta_node="Gene"),
        DiagramNode(id=4, meta_node="Protein"),
        DiagramNode(id=5, meta_node="Pathway"),
    ]
    diagram_edges = [
        DiagramEdge(
            from_id=1,
            to_id=2,
            meta_rel="GWAS_TO_VARIANT",
            sub_label=f"pval < {pval_threshold}"
            if pval_threshold is not None else "",
        ),
        DiagramEdge(from_id=2, to_id=3, meta_rel="VARIANT_TO_GENE"),
        DiagramEdge(from_id=4, to_id=3, meta_rel="PROTEIN_TO_GENE"),
        DiagramEdge(from_id=4, to_id=5, meta_rel="PROTEIN_IN_PATHWAY"),
    ]
    diagram = CypherDiagram(nodes=diagram_nodes, edges=diagram_edges)
    diagram_data = diagram.generate_diagram()
    return diagram_data