X Tutup
Skip to content

Commit fe985b0

Browse files
authored
Update devaplot.py
1 parent 6cb534b commit fe985b0

File tree

1 file changed

+27
-44
lines changed

1 file changed

+27
-44
lines changed

devaplot.py

Lines changed: 27 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ def float01(x):
3333
return x
3434

3535
parser.add_argument(
36-
'-M',
37-
'--major',
36+
'--threshold',
3837
help='Threshold to include variant at position',
3938
type=float01,
4039
metavar='FLOAT',
@@ -100,7 +99,7 @@ def float01(x):
10099

101100
parser.add_argument(
102101
'-g',
103-
'--gap',
102+
'--gaps',
104103
help='Gap position and size',
105104
type=str,
106105
metavar='INT,INT[,INT,INT[,INT,INT,...]]',
@@ -131,12 +130,10 @@ def float01(x):
131130
)
132131

133132
parser.add_argument(
134-
'-d',
135-
'--depth',
136-
help='Depth of position to report variant',
137-
type=int,
138-
metavar='INT',
139-
default=20,
133+
'depth_file',
134+
help='Depth file from samtools',
135+
type=str,
136+
metavar='depth-file',
140137
)
141138

142139
args = parser.parse_args()
@@ -176,9 +173,9 @@ def float01(x):
176173
parser.error('Size must be integer')
177174

178175
# Check gap
179-
if args.gap:
176+
if args.gaps:
180177
try:
181-
gap = args.gap
178+
gap = args.gaps
182179
gap = gap.split(',')
183180
gap = [float(x) for x in gap]
184181
gap_decimal = [x%1 for x in gap]
@@ -188,14 +185,10 @@ def float01(x):
188185
parser.error('Gap size missing')
189186
gap = [int(x) for x in gap]
190187
gap = [[gap[x], gap[x+1]] for x in range(0, len(gap), 2)]
191-
args.gap = gap
188+
args.gaps = gap
192189
except ValueError:
193190
parser.error('Gap must be integer')
194191

195-
# Check depth
196-
if args.depth < 0:
197-
parser.error('Depth argument must not be negative')
198-
199192
return args
200193

201194

@@ -216,9 +209,9 @@ def parse_vcf(vcf_file, threshold):
216209
ref = line[3]
217210
alt = line[4]
218211
info = dict([
219-
j
220-
if len(j)==2
221-
else j+[""]
212+
j
213+
if len(j)==2
214+
else j+[""]
222215
for j in map(
223216
lambda i: str.split(i, "="), line[7].split(";")
224217
)
@@ -277,10 +270,11 @@ def add_extension(depth_df, ex_len=4):
277270
ex_len Number of position to extend upstream and downstream
278271
"""
279272
var_df = depth_df[depth_df[list("ATCG")].any(axis=1)][["pos"]+list("ATCG")]
273+
extended_depth_df = depth_df.copy()
280274
for i in var_df["pos"]:
281275
stamp = depth_df.loc[depth_df["pos"] == i, list("ATCG")]
282-
depth_df.loc[(depth_df["pos"] >= i-ex_len) & (depth_df["pos"] <= i+ex_len), list("ATCG")] = list(stamp.iloc[0])
283-
return depth_df
276+
extended_depth_df.loc[(depth_df["pos"] >= i-ex_len) & (depth_df["pos"] <= i+ex_len), list("ATCG")] = list(stamp.iloc[0])
277+
return extended_depth_df
284278

285279

286280
def main():
@@ -296,28 +290,29 @@ def main():
296290
depth_df = depth_df.merge(vcf_df, how="left")
297291
if args.gaps:
298292
depth_df = add_gaps(depth_df, args.gaps)
299-
depth_df = add_extension(depth_df, args.extend)
293+
extended_depth_df = add_extension(depth_df, args.extend)
300294
# variant_df, extended_variant_df = make_variant_df(depth_df, args.extend)
301295
if args.figure:
302296
colors = ['#5772B2', '#3A9276', '#F0430F', '#B615D6',] # '#DEE0E3']
303297
# fig = plt.figure(figsize=args.size)
304298
plt.rcParams["figure.dpi"] = args.dpi
305-
ax = depth_df.plot.bar(
299+
ax = extended_depth_df.plot.bar(
306300
x='pos',
301+
y=list("ATCG"),
307302
stacked=True,
308303
color=colors,
309304
figsize=args.size, #(10.5,0.75),
310305
rot=30,
311306
width=1,
312-
ylim=[0,100],
313-
yticks=[0, 50, 100],
307+
ylim=[0.0,1.0],
308+
yticks=[0.0, 0.50, 1.00],
314309
xticks=list(range(0, len(depth_df), args.x_tick)),
315-
# legend=False,
310+
legend=False,
316311
)
317312
ax2 = ax.twinx()
318-
depth_df.plot.line(
313+
extended_depth_df.plot.line(
319314
x='pos',
320-
y='sum_depth',
315+
y='depth',
321316
lw=0.5,
322317
secondary_y=True,
323318
# ylim=[1, max(list(depth_df['sum_depth']).remove(np.inf))],
@@ -332,30 +327,18 @@ def main():
332327
ax.figure.savefig(args.figure, bbox_inches='tight')
333328

334329
if args.table_relative:
335-
relative_variant_df = variant_df[
336-
(variant_df['A'] > 0) | # or
337-
(variant_df['T'] > 0) | # or
338-
(variant_df['C'] > 0) | # or
339-
(variant_df['G'] > 0)
340-
]
341-
relative_variant_df.to_csv(
342-
args.table_relative,
343-
columns=['pos', 'A', 'T', 'C', 'G'],
344-
index=False,
345-
)
346-
347-
if args.table_absolute:
348-
absolute_variant_df = depth_df[
330+
relative_variant_df = depth_df[
349331
(depth_df['A'] > 0) |
350332
(depth_df['T'] > 0) |
351333
(depth_df['C'] > 0) |
352334
(depth_df['G'] > 0)
353335
]
354-
absolute_variant_df.to_csv(
355-
args.table_absolute,
336+
relative_variant_df.to_csv(
337+
args.table_relative,
356338
columns=['pos', 'A', 'T', 'C', 'G'],
357339
index=False,
358340
)
359341

342+
360343
if __name__ == "__main__":
361344
main()

0 commit comments

Comments
 (0)
X Tutup