Skip to content

Commit f331f4c

Browse files
author
Curtis Layton
committed
modifies plotSingleClusterBindingCurve.py to accept either single ClusterIDs (individually as command line arguments with -i) or a one-ClusterID-per-line flat file of ClusterIDs (with -if)
1 parent 6bc3a0a commit f331f4c

18 files changed

+46
-22
lines changed

bin/binTimes.py

100644100755
File mode changed.

bin/bootStrapFitFile.py

100644100755
File mode changed.

bin/bootStrapFits.py

100644100755
File mode changed.

bin/compressBarcodes.py

100644100755
File mode changed.

bin/evaluateBackgroundFitting.py

100644100755
File mode changed.

bin/findFmaxDist.py

100644100755
File mode changed.

bin/findSeqDistribution.py

100644100755
File mode changed.

bin/fitBackgroundTile.py

100644100755
File mode changed.

bin/fitOnOffRates.py

100644100755
File mode changed.

bin/fitRatesPerCluster.py

100644100755
File mode changed.

bin/normalizeSeries.py

100644100755
File mode changed.

bin/pickleToTabDelimited.py

100644100755
File mode changed.

bin/plotOffrateCurve.py

100644100755
File mode changed.

bin/plotSingleClusterBindingCurve.py

100644100755
+46-22
Original file line numberDiff line numberDiff line change
@@ -35,41 +35,65 @@
3535

3636
#set up command line argument parser
3737
parser = argparse.ArgumentParser(description='bootstrap fits')
38-
parser.add_argument('-b', '--binding_curves', required=True, metavar=".CPseries.pkl",
38+
parser.add_argument('-b', '--binding_curves', required=True, metavar='.CPseries.pkl',
3939
help='file containining the binding curve information')
40-
parser.add_argument('-f', '--single_cluster_fits', required=True, metavar=".CPfitted.pkl",
40+
parser.add_argument('-f', '--single_cluster_fits', required=True, metavar='CPfitted.pkl',
4141
help='file containining the single cluster fits')
42-
parser.add_argument('-c', '--concentrations', required=True, metavar="concentrations.txt",
42+
parser.add_argument('-c', '--concentrations', required=True, metavar='concentrations.txt',
4343
help='text file giving the associated concentrations')
44-
parser.add_argument('-i', '--cluster', required=True, metavar="clusterID",
45-
help='cluster Id for which to plot')
46-
47-
parser.add_argument('-out', '--out_file',
48-
help='output filename. default is "cluster_X.binding_curve.pdf"')
49-
44+
parser.add_argument('-i', '--cluster', required=False, metavar='clusterID', action='append',
45+
help='individual clusterIDs to plot')
46+
parser.add_argument('-if', '--cluster_file', required=False, metavar='clusterID file', help='text file containing clusterIDs to plot, one-per-line')
47+
parser.add_argument('-out', '--out_dir', default='plots',
48+
help='output directory. default is "plots"')
5049

5150

5251
if __name__ == '__main__':
5352
args = parser.parse_args()
5453

54+
if not len(sys.argv) > 1: # Print help if this script is called with no arguments (equivalent to -h)
55+
parser.print_help()
56+
5557
bindingCurveFilename = args.binding_curves
5658
singleClusterFilename = args.single_cluster_fits
57-
cluster = args.cluster
58-
59+
60+
# Read in cluster file
61+
clusters = []
62+
if args.cluster_file is not None:
63+
with open(args.cluster_file) as f:
64+
clusters = f.readlines()
65+
clusters = [line.strip() for line in clusters] # Strip trailing newline characters and whitespace
66+
67+
# Add any individual clusterIDs that were passed in with -i
68+
if args.cluster is not None:
69+
clusters += args.cluster
70+
71+
if len(clusters) <= 0:
72+
sys.exit('ERROR: No clusterIDs were passed in. Use -i or -if to indicate which clusterIDs should be plotted. Exiting...')
73+
5974
# load data
6075
concentrations = np.loadtxt(args.concentrations)
6176
bindingSeries = pd.read_pickle(bindingCurveFilename)
6277
fittedSingles = pd.read_pickle(singleClusterFilename)
6378

64-
# plot
65-
fig = plt.figure(figsize=(4,3))
66-
ax = fig.add_subplot(111)
67-
fitParameters = pd.DataFrame(columns=['fmax', 'dG', 'fmin'])
68-
fitFun.plotFitCurve(concentrations,
69-
bindingSeries.loc[cluster],
70-
fittedSingles.loc[cluster],
71-
fitParameters, ax=ax)
79+
# Prepare the output directory
80+
try:
81+
os.makedirs(args.out_dir)
82+
except OSError:
83+
if not os.path.isdir(args.out_dir):
84+
raise
7285

73-
if args.out_file is None:
74-
args.out_file = 'cluster_%s.binding_curve.pdf'%cluster
75-
plt.savefig( args.out_file)
86+
# Iterate through each ClusterID
87+
for currClusterID in clusters:
88+
89+
# plot
90+
fig = plt.figure(figsize=(4,3))
91+
ax = fig.add_subplot(111)
92+
fitParameters = pd.DataFrame(columns=['fmax', 'dG', 'fmin'])
93+
plotFun.plotFitCurve(concentrations,
94+
bindingSeries.loc[currClusterID],
95+
fittedSingles.loc[currClusterID],
96+
fitParameters, ax=ax)
97+
98+
currOutputFilename = os.path.join(args.out_dir, 'cluster_%s.binding_curve.pdf'%currClusterID)
99+
plt.savefig(currOutputFilename)

bin/plotVariantBindingCurve.py

100644100755
File mode changed.

bin/processData.py

100644100755
File mode changed.

bin/seqfun.py

100644100755
File mode changed.

bin/singleClusterFits.py

100644100755
File mode changed.

0 commit comments

Comments
 (0)