Mercurial > repos > jay > gaiac_precision
diff gaiac_ratio_scatter_plot/gaiac_ratio_scatter_plot.py @ 0:287d6cc86582 draft
planemo upload for repository https://github.com/jaidevjoshi83/gaiac.git commit c29a769ed165f313a6410925be24f776652a9663-dirty
author | jay |
---|---|
date | Thu, 15 May 2025 14:45:45 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gaiac_ratio_scatter_plot/gaiac_ratio_scatter_plot.py Thu May 15 14:45:45 2025 +0000 @@ -0,0 +1,142 @@ +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +import seaborn as sns +import argparse +#%matplotlib inline + +def ScatterPlot(InFile, PlotingOptionforx, PlotingOptionfory, xclm1, xclm2, yclm1, yclm2,outfile, plottitle,fig_height, fig_width, clm_lab_y, clm_lab_x): + + df = pd.read_csv(InFile, sep="\t") + clm_list = df.columns.tolist() + + if PlotingOptionforx == 'simple': + dfx = df[clm_list[int(xclm1)-1]] + + elif PlotingOptionforx == 'advance': + dfx = pd.DataFrame() + dfx['ratiox'] = df[clm_list[int(xclm1)-1]]/df[clm_list[int(xclm2)-1]] + + if PlotingOptionfory == 'simple': + dfy = df[clm_list[int(yclm1)-1]] + + elif PlotingOptionfory == 'advance': + dfy = pd.DataFrame() + dfy['ratioy'] = df[clm_list[int(yclm1)-1]]/df[clm_list[int(yclm2)-1]] + + df = pd.concat([dfx, dfy], axis=1) + + print (df) + + df.columns.tolist()[0] + + #plt.figure(figsize=(8,6)) + plt.figure(figsize=(int(fig_width),int(fig_height))) + g = sns.lmplot(x=df.columns.tolist()[0], y=df.columns.tolist()[1],data=df,lowess=True,aspect=1.1,ci=None, scatter_kws={"s": 100}) + g.set(ylabel=clm_lab_y, xlabel=clm_lab_x) + #plt.show() + plt.savefig(outfile,dpi=300,bbox_inches="tight") + +if __name__=="__main__": + + parser = argparse.ArgumentParser(description="Generate a customized plot from a .tsv file with specified plotting options.") + + parser.add_argument( + "-I", "--infile", + required=True, + help="Input .tsv file containing the data to be plotted." + ) + + parser.add_argument( + "-px", "--plotting_option_for_x", + required=True, + help="Plotting option for the X-axis (e.g., line, scatter)." + ) + + parser.add_argument( + "-py", "--plotting_option_for_y", + required=True, + help="Plotting option for the Y-axis (e.g., line, scatter)." + ) + + parser.add_argument( + "-c1", "--x_column_1", + required=True, + help="Column name in the .tsv file for the primary X-axis data." + ) + + parser.add_argument( + "-c2", "--x_column_2", + required=False, + default=None, + help="Optional second column name for the X-axis." + ) + + parser.add_argument( + "-c3", "--y_column_1", + required=True, + help="Column name in the .tsv file for the primary Y-axis data." + ) + + parser.add_argument( + "-c4", "--y_column_2", + required=False, + default=None, + help="Optional second column name for the Y-axis." + ) + + parser.add_argument( + "-O", "--output", + required=False, + default='Out.png', + help="Output file name for the generated plot image (default: Out.png)." + ) + + parser.add_argument( + "-T", "--title", + required=False, + default='Time Series plot', + help="Title of the plot (default: 'Time Series plot')." + ) + + parser.add_argument( + "-H", "--height", + required=False, + default='14', + help="Height of the plot figure in inches (default: 14)." + ) + + parser.add_argument( + "-W", "--width", + required=False, + default='12', + help="Width of the plot figure in inches (default: 12)." + ) + + parser.add_argument( + "-Y", "--ylab", + required=False, + default='Y label', + help="Label for the Y-axis (default: 'Y label')." + ) + + parser.add_argument( + "-X", "--xlab", + required=False, + default='X label (time)', + help="Label for the X-axis (default: 'X label (time)')." + ) + + args = parser.parse_args() + + ScatterPlot(args.infile, args.plotting_option_for_x, args.plotting_option_for_y, args.x_column_1, args.x_column_2, args.y_column_1, args.y_column_2, args.output, args.title, args.height, args.width, args.ylab, args.xlab) + + + + + + + + + +