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
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
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
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
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
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
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
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