comparison draw_amr_matrix.py @ 15:487a3c008812 draft

Uploaded
author greg
date Mon, 01 May 2023 17:52:05 +0000
parents c5e80637cf3d
children 7bd48449ee79
comparison
equal deleted inserted replaced
14:c5e80637cf3d 15:487a3c008812
56 def stop_err(msg): 56 def stop_err(msg):
57 sys.stderr.write(msg) 57 sys.stderr.write(msg)
58 sys.exit(1) 58 sys.exit(1)
59 59
60 60
61 def draw_amr_matrix(amr_feature_hits_files, amr_deletions_file, varscan_vcf_file, amr_mutation_regions_bed_file, amr_gene_drug_file, reference, reference_size, mutation_regions_dir, amr_matrix_png_dir, errors, in_test_mode): 61 def draw_amr_matrix(amr_feature_hits_files, amr_deletions_file, varscan_vcf_file, amr_mutation_regions_bed_file, amr_gene_drug_file, reference, reference_size, mutation_regions_dir, amr_matrix_png_dir, errors):
62 efh = open(errors, 'w') 62 efh = open(errors, 'w')
63 ofh = open('process_log', 'w') 63 ofh = open('process_log', 'w')
64 64
65 # Read amr_feature_hits_files. 65 # Read amr_feature_hits_files.
66 amr_feature_hits = pandas.Series(dtype=object) 66 amr_feature_hits = pandas.Series(dtype=object)
190 for deletion_idx, deleted_gene in amr_deletions.iterrows(): 190 for deletion_idx, deleted_gene in amr_deletions.iterrows():
191 amr_to_draw = amr_to_draw.append(pandas.Series(['\u0394' + deleted_gene[3], deleted_gene[5]], name=amr_to_draw.shape[0], index=amr_to_draw.columns)) 191 amr_to_draw = amr_to_draw.append(pandas.Series(['\u0394' + deleted_gene[3], deleted_gene[5]], name=amr_to_draw.shape[0], index=amr_to_draw.columns))
192 ofh.write("\nAfter processing deletions, amr_to_draw: %s\n" % str(amr_to_draw)) 192 ofh.write("\nAfter processing deletions, amr_to_draw: %s\n" % str(amr_to_draw))
193 193
194 ofh.write("\namr_to_draw.shape[0]: %s\n" % str(amr_to_draw.shape[0])) 194 ofh.write("\namr_to_draw.shape[0]: %s\n" % str(amr_to_draw.shape[0]))
195 # I have no idea why, but when running functional test with planemo 195 # I have no idea why, but when running functional tests with planemo
196 # the value of amr_to_draw.shape[0] is 1 even though the tests use the 196 # the value of amr_to_draw.shape[0] is 1 even though the tests use the
197 # exact inputs when running outside of planeo that result in the value 197 # exact inputs when running outside of planeo that result in the value
198 # being 2. So we have to pass this in_test_mode flag in order to get 198 # being 2. So we cannot test with planemo unless we incorporate a hack
199 # functional tests to work. 199 # like a hidden in_test_mode parameter.
200 if in_test_mode == 'true': 200 if amr_to_draw.shape[0] > 1:
201 shape_val = 0
202 else:
203 shape_val = 1
204 if amr_to_draw.shape[0] > shape_val:
205 ofh.write("\nDrawing AMR matrix...\n") 201 ofh.write("\nDrawing AMR matrix...\n")
206 present_genes = amr_to_draw['gene'].unique() 202 present_genes = amr_to_draw['gene'].unique()
207 present_drugs = amr_to_draw['drug'].unique() 203 present_drugs = amr_to_draw['drug'].unique()
208 amr_matrix = pandas.DataFrame(0, index=present_genes, columns=present_drugs) 204 amr_matrix = pandas.DataFrame(0, index=present_genes, columns=present_drugs)
209 for hit_idx, hit in amr_to_draw.iterrows(): 205 for hit_idx, hit in amr_to_draw.iterrows():