#!/usr/bin/env python """ Pivot queries Type: biogorl-pivot -h For instructions Examples: biogolr-pivot.py -vv -f relation -P subject_category object_category biogolr-pivot.py -vv -f relation -P subject_taxon object_category biogolr-pivot.py -vv -f relation -P subject_taxon is_defined_by """ import argparse from ontobio.golr.golr_associations import pivot_query_as_matrix import networkx as nx from networkx.algorithms.dag import ancestors, descendants from networkx.drawing.nx_pydot import write_dot from prefixcommons.curie_util import expand_uri from ontobio.slimmer import get_minimal_subgraph import yaml import json import logging import plotly.plotly as py import plotly.graph_objs as go def main(): """ Wrapper for OGR """ parser = argparse.ArgumentParser( description='Command line interface to python-ontobio.golr library' """ Provides command line interface onto the ontobio.golr python library, a high level abstraction layer over Monarch and GO solr indices. """, formatter_class=argparse.RawTextHelpFormatter) parser.add_argument('-o', '--outfile', type=str, required=False, help='Path to output file') parser.add_argument('-f', '--facet', type=str, required=True, help='Facet field to query') parser.add_argument('-l', '--legacy_solr', dest='legacy_solr', action='store_true', default=False, help='Set for legacy solr schema (solr3 golr)') parser.add_argument('-q', '--fq', type=json.loads, default={}, required=False, help='Facet query (solr fq) - should be json') parser.add_argument('-Q', '--qargs', type=json.loads, default={}, required=False, help='Query to be passed directly to python golr_associations query') parser.add_argument('-P', '--pivot', nargs='*', type=str, required=False, help='Pivot fields. E.f subject_category object_category, relation') parser.add_argument('-u', '--url', type=str, required=False, help='Solr URL. E.g. http://localhost:8983/solr/golr') parser.add_argument('-v', '--verbosity', default=0, action='count', help='Increase output verbosity') args = parser.parse_args() if args.verbosity >= 2: logging.basicConfig(level=logging.DEBUG) elif args.verbosity == 1: logging.basicConfig(level=logging.INFO) else: logging.basicConfig(level=logging.WARNING) logging.info("Welcome!") r = pivot_query_as_matrix(facet=args.facet, fq=args.fq, facet_pivot_fields=args.pivot, url=args.url, is_go=args.legacy_solr, **args.qargs) print(str(r)) trace = go.Heatmap(z=r['z'], x=r['xaxis'], y=r['yaxis']) data=[trace] py.plot(data, filename='pivot-heatmap') if __name__ == "__main__": main()