From 473f0271b2eff2acc0b343d89a2358be18ea23fc Mon Sep 17 00:00:00 2001 From: sepro Date: Mon, 13 Mar 2017 16:29:29 +0100 Subject: [PATCH] added docs for plot_network --- docs/helper.md | 11 ++++++++++- docs/images/plot_network.png | Bin 0 -> 60457 bytes helper/plot_network.py | 13 ++++++++++--- 3 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 docs/images/plot_network.png diff --git a/docs/helper.md b/docs/helper.md index 604534c..bd509ea 100644 --- a/docs/helper.md +++ b/docs/helper.md @@ -35,11 +35,20 @@ derived from the *Sorghum bicolor* case study, in included in the repository. ### plot_network Script that plots the co-expression neighborhood for a specific gene. A PCC cutoff of 0.7 is included by default, -but users can override this setting using the --cutoff parameter. +but users can override this setting using the --cutoff parameter. Matplotlib and networkx are required for this +script. # To draw plot to screen using a PCC cutoff of >= 0.8 python3 plot_network.py --cutoff 0.8 + # Save as png + python3 plot_network.py --cutoff 0.8 --png output.png + + # Set png dpi (for publication) + python3 plot_network.py --cutoff 0.8 --png output.png --dpi 900 + + + ![matrix example](images/plot_network.png "Example of plotted network") ### matrix_heatmap.py diff --git a/docs/images/plot_network.png b/docs/images/plot_network.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6538fa87a7b925d54031891a861f9de2f71bf5 GIT binary patch literal 60457 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

wu$P?z)H7k5p+Ts=ae8t*+} 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 MOA7DK-17au0C)fU9RL6T literal 0 HcmV?d00001 diff --git a/helper/plot_network.py b/helper/plot_network.py index 1751a81..06f0efa 100644 --- a/helper/plot_network.py +++ b/helper/plot_network.py @@ -8,7 +8,7 @@ DEBUG = True -def plot_network(filename, gene, cutoff=0.7): +def plot_network(filename, gene, cutoff=0.7, png=None, dpi=300): """ Function to load a co-expression network from LSTrAP and plot the neighborhood for one gene. @@ -89,7 +89,11 @@ def plot_network(filename, gene, cutoff=0.7): nx.draw_networkx_labels(graph, pos, {k: k for k in valid_genes}, font_size=16, alpha=0.5) plt.axis('off') - plt.show() + if png is None: + plt.show() + else: + plt.savefig(png, format='png', dpi=dpi) + print("Wrote output to %s" % png) if __name__ == "__main__": @@ -100,10 +104,13 @@ def plot_network(filename, gene, cutoff=0.7): parser.add_argument('--cutoff', help='PCC cutoff to use (default = 0.7)', default=0.7, type=float) + parser.add_argument('--png', help='save output as png file (default: None, don\'t write png to file)', default=None) + parser.add_argument('--dpi', help='dpi for the output (default = 300)', default=300, type=float) + parser.set_defaults(show_labels=True) # Parse arguments and start script args = parser.parse_args() - plot_network(args.filename, args.gene, cutoff=args.cutoff) + plot_network(args.filename, args.gene, cutoff=args.cutoff, png=args.png, dpi=args.dpi)