Skip to content

Commit 57c9456

Browse files
authored
Merge pull request #80 from AlexandrovLab/development
Development
2 parents b756143 + e22de79 commit 57c9456

File tree

6 files changed

+30
-18
lines changed

6 files changed

+30
-18
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ Analyze.cosmic_fit(samples, output, input_type="matrix", context_type="96",
6262
| genome_build | String | The reference genome build, used for select the appropriate version of the COSMIC reference signatures, as well as processing the mutation calling file/s. Supported genomes include "GRCh37", "GRCh38", "mm9", "mm10" and "rn6". The default value is "GRCh37". If the selected genome is not in the supported list, the default genome will be used. |
6363
| signature_database | String | Path to the input set of known mutational signatures (only in case that COSMIC reference signatures are not used), a tab delimited file that contains the signature matrix where the rows are mutation types and columns are signature IDs. |
6464
| exclude_signature_subgroups | List | Removes the signatures corresponding to specific subtypes to improve refitting (only available when using default COSMIC reference signatures). The usage is explained below. The default value is None, which corresponds to use all COSMIC signatures. |
65-
| export_probabilities | Boolean | Defines if the probability matrix per mutational context for all samples is created. The default value is False. |
65+
| export_probabilities | Boolean | Defines if the probability matrix per mutational context for all samples is created. The default value is True. |
6666
| export_probabilities_per_mutation | Boolean | Defines if the probability matrices per mutation for all samples are created. Only available when `input_type` is "vcf". The default value is False. |
67-
| make_plots | Boolean | Toggle on and off for making and saving plots. The default value is False. |
68-
| sample_reconstruction_plots | Boolean | Toggle on and off for making and saving sample reconstruction plots. The default value is False. |
67+
| make_plots | Boolean | Toggle on and off for making and saving plots. The default value is True. |
68+
| sample_reconstruction_plots | String | Select the output format for sample reconstruction plots. Valid inputs are {'pdf', 'png', 'both', None}. The default value is None. |
6969
| verbose | Boolean | Prints detailed statements. The default value is False. |
7070

7171

SigProfilerAssignment/Analyzer.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
from SigProfilerAssignment import decomposition as decomp
22

3-
def decompose_fit(samples, output, signatures=None, signature_database=None,nnls_add_penalty=0.05, nnls_remove_penalty=0.01, initial_remove_penalty=0.05,genome_build="GRCh37", cosmic_version=3.3, make_plots=False, collapse_to_SBS96=True,connected_sigs=True, verbose=False,devopts=None,new_signature_thresh_hold=0.8,exclude_signature_subgroups=None,exome=False,input_type='matrix',context_type="96",export_probabilities=False, export_probabilities_per_mutation=False):
4-
3+
def decompose_fit(samples, output, signatures=None, signature_database=None,nnls_add_penalty=0.05, nnls_remove_penalty=0.01, initial_remove_penalty=0.05,genome_build="GRCh37", cosmic_version=3.3, make_plots=True, collapse_to_SBS96=True,connected_sigs=True, verbose=False,devopts=None,new_signature_thresh_hold=0.8,exclude_signature_subgroups=None,exome=False,input_type='matrix',context_type="96",export_probabilities=True, export_probabilities_per_mutation=False):
54
decomp.spa_analyze(samples=samples, output=output, signatures=signatures, signature_database=signature_database,nnls_add_penalty=nnls_add_penalty, nnls_remove_penalty=nnls_remove_penalty, initial_remove_penalty=initial_remove_penalty,genome_build=genome_build, cosmic_version=cosmic_version, make_plots=make_plots, collapse_to_SBS96=collapse_to_SBS96,connected_sigs=connected_sigs, verbose=verbose,decompose_fit_option= True,denovo_refit_option=False,cosmic_fit_option=False,devopts=devopts,new_signature_thresh_hold=new_signature_thresh_hold,exclude_signature_subgroups=exclude_signature_subgroups,exome=exome,input_type=input_type,context_type=context_type,export_probabilities=export_probabilities, export_probabilities_per_mutation=export_probabilities_per_mutation)
65

7-
def denovo_fit(samples, output, signatures=None, signature_database=None,nnls_add_penalty=0.05,nnls_remove_penalty=0.01, initial_remove_penalty=0.05, genome_build="GRCh37", cosmic_version=3.3, make_plots=False, collapse_to_SBS96=True,connected_sigs=True, verbose=False,devopts=None,new_signature_thresh_hold=0.8,exome=False,input_type='matrix',context_type="96",export_probabilities=False, export_probabilities_per_mutation=False):
6+
def denovo_fit(samples, output, signatures=None, signature_database=None,nnls_add_penalty=0.05,nnls_remove_penalty=0.01, initial_remove_penalty=0.05, genome_build="GRCh37", cosmic_version=3.3, make_plots=True, collapse_to_SBS96=True,connected_sigs=True, verbose=False,devopts=None,new_signature_thresh_hold=0.8,exome=False,input_type='matrix',context_type="96",export_probabilities=True, export_probabilities_per_mutation=False):
87
decomp.spa_analyze(samples=samples, output=output, signatures=signatures, signature_database=signature_database,nnls_add_penalty=nnls_add_penalty, nnls_remove_penalty=nnls_remove_penalty, initial_remove_penalty=initial_remove_penalty,genome_build=genome_build, cosmic_version=cosmic_version, new_signature_thresh_hold=new_signature_thresh_hold, make_plots=make_plots, collapse_to_SBS96=collapse_to_SBS96,connected_sigs=connected_sigs, verbose=verbose,decompose_fit_option= False,denovo_refit_option=True,cosmic_fit_option=False,devopts=devopts,exome=exome,input_type=input_type,context_type=context_type,export_probabilities=export_probabilities, export_probabilities_per_mutation=export_probabilities_per_mutation)
98

10-
def cosmic_fit(samples, output, signatures=None, signature_database=None,nnls_add_penalty=0.05, nnls_remove_penalty=0.01, initial_remove_penalty=0.05,genome_build="GRCh37", cosmic_version=3.3, make_plots=False, collapse_to_SBS96=True,connected_sigs=True, verbose=False,devopts=None,exclude_signature_subgroups=None,exome=False,input_type='matrix',context_type="96",export_probabilities=False, export_probabilities_per_mutation=False, sample_reconstruction_plots=False):
9+
def cosmic_fit(samples, output, signatures=None, signature_database=None,nnls_add_penalty=0.05, nnls_remove_penalty=0.01, initial_remove_penalty=0.05,genome_build="GRCh37", cosmic_version=3.3, make_plots=True, collapse_to_SBS96=True,connected_sigs=True, verbose=False,devopts=None,exclude_signature_subgroups=None,exome=False,input_type='matrix',context_type="96",export_probabilities=True, export_probabilities_per_mutation=False, sample_reconstruction_plots=False):
1110
decomp.spa_analyze(samples=samples, output=output, signatures=signatures, signature_database=signature_database,nnls_add_penalty=nnls_add_penalty, nnls_remove_penalty=nnls_remove_penalty, initial_remove_penalty=initial_remove_penalty,genome_build=genome_build, cosmic_version=cosmic_version, make_plots=make_plots, collapse_to_SBS96=collapse_to_SBS96,connected_sigs=connected_sigs, verbose=verbose,decompose_fit_option= False,denovo_refit_option=False,cosmic_fit_option=True,devopts=devopts,exclude_signature_subgroups=exclude_signature_subgroups,exome=exome,input_type=input_type,context_type=context_type,export_probabilities=export_probabilities, export_probabilities_per_mutation=export_probabilities_per_mutation, sample_reconstruction_plots=sample_reconstruction_plots)

SigProfilerAssignment/decompose_subroutines.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -386,8 +386,9 @@ def signature_decomposition(signatures, mtype, directory, genome_build="GRCh37",
386386
mtype_par="48"
387387
else:
388388
mtype_par="none"
389-
# try:
390-
if mtype_par!="none" and make_decomposition_plots==True:
389+
# only create decomposition plots for COSMIC signatures
390+
if mtype_par!="none" and make_decomposition_plots==True and signature_database is None:
391+
391392
# reformat the first column of cosmic signature dataframe
392393
cosmic_sigs_DF = sigDatabases_DF.copy(deep=True)
393394
cosmic_sigs_DF.columns = ["MutationType"] + cosmic_sigs_DF.columns[1:].to_list()
@@ -409,8 +410,6 @@ def signature_decomposition(signatures, mtype, directory, genome_build="GRCh37",
409410
merger.append(byte_plot)
410411
with alive_bar(1, ctrl_c=False,bar='blocks', title=f'Decompositon Plot:{denovo_name}') as bar:
411412
bar()
412-
# except:
413-
# print("The context-" + str(mtype_par) + " decomposition plots pages were not able to be generated.")
414413

415414
strings ="Signature %s-%s,"+" Signature %s (%0.2f%s) &"*(len(np.nonzero(exposures)[0])-1)+" Signature %s (%0.2f%s), %0.2f, %0.2f, %0.3f, %0.2f, %0.2f\n"
416415
#new_signature_thresh_hold = 0.8

SigProfilerAssignment/decomposition.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,12 @@ def convert_PDF_to_PNG(input_file_name, output_directory, page_names):
4444
pix.save(out_file_name)
4545

4646
# Create sample reconstruction plots
47-
def generate_sample_reconstruction(cosmic_sigs, samples_input, activities, output_dir, execution_parameters):
47+
def generate_sample_reconstruction(cosmic_sigs, samples_input, activities, output_dir,
48+
recon_output_types, execution_parameters):
49+
# recon_output_types does the following:
50+
# pdf = pdf generation
51+
# both = pdf generation + png conversion
52+
# png = pdf generation + png conversion + pdf removal
4853
project = "test_run"
4954
mtype="96"
5055

@@ -81,9 +86,15 @@ def generate_sample_reconstruction(cosmic_sigs, samples_input, activities, outpu
8186
"Reconstructed_Sample_Plots_" + str(mtype) + ".pdf")
8287
web_png_path = os.path.join(output_dir,"WebPNGs")
8388

89+
# write out pdf
8490
final_pdf.write(pdf_output_path)
8591

86-
convert_PDF_to_PNG(pdf_output_path, web_png_path, samples.columns[1:])
92+
# write out pngs if png (then remove the pdf), or keep both
93+
if recon_output_types.lower() == "png" or recon_output_types.lower() == "both":
94+
convert_PDF_to_PNG(pdf_output_path, web_png_path, samples.columns[1:])
95+
if recon_output_types.lower() == "png":
96+
# remove the PDF
97+
os.remove(pdf_output_path)
8798

8899
return pdf_output_path
89100

@@ -117,7 +128,7 @@ def record_parameters(sysdata,execution_parameters,start_time):
117128
def spa_analyze(samples, output, input_type='matrix', context_type="96", signatures=None, signature_database=None,decompose_fit_option= True,denovo_refit_option=True,cosmic_fit_option=True, nnls_add_penalty=0.05,
118129
nnls_remove_penalty=0.01, initial_remove_penalty=0.05, de_novo_fit_penalty=0.02,
119130
genome_build="GRCh37", cosmic_version=3.3, make_plots=True, collapse_to_SBS96=True,connected_sigs=True, verbose=False,devopts=None,new_signature_thresh_hold=0.8,
120-
exclude_signature_subgroups=None, exome=False, export_probabilities=True, export_probabilities_per_mutation=False, sample_reconstruction_plots=False,
131+
exclude_signature_subgroups=None, exome=False, export_probabilities=True, export_probabilities_per_mutation=False, sample_reconstruction_plots=None,
121132
make_metadata=True):
122133

123134

@@ -654,8 +665,10 @@ def spa_analyze(samples, output, input_type='matrix', context_type="96", signatu
654665
current_time_end = datetime.datetime.now()
655666
sysdata.write(f"\n Finished Cosmic fitting! \nExecution time:{str(current_time_end-current_time_start)}\n")
656667

668+
669+
recon_output_types = ['png', 'pdf', 'both']
657670
# Generate sample reconstruction plots
658-
if sample_reconstruction_plots and mutation_type == "96":
671+
if sample_reconstruction_plots in recon_output_types and mutation_type == "96" and signature_database is None:
659672
ss_recon_odir = os.path.join(
660673
layer_directory3,
661674
"Activities",
@@ -672,6 +685,7 @@ def spa_analyze(samples, output, input_type='matrix', context_type="96", signatu
672685
genomes,
673686
cosmic_activities,
674687
ss_recon_odir,
688+
sample_reconstruction_plots,
675689
execution_parameters)
676690

677691
# Complete JOB_METADATA_SPA

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
if os.path.exists("dist"):
77
shutil.rmtree("dist")
88

9-
VERSION = '0.0.28'
9+
VERSION = '0.0.29'
1010

1111

1212
def write_version_py(filename='SigProfilerAssignment/version.py'):
@@ -15,7 +15,7 @@ def write_version_py(filename='SigProfilerAssignment/version.py'):
1515
# THIS FILE IS GENERATED FROM SigProfilerAssignment SETUP.PY
1616
short_version = '%(version)s'
1717
version = '%(version)s'
18-
Update = 'v0.0.28: Update dependencies and parameters'
18+
Update = 'v0.0.29: Stop decomposition plotting with custom signature database and update parameters for sample reconstruction plots'
1919
2020
2121
"""

test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def cosmic_fit_SBS_matrix_test():
3737
verbose=False,
3838
collapse_to_SBS96=True,
3939
exclude_signature_subgroups=exclude_signature_subgroups,
40-
sample_reconstruction_plots=True)
40+
sample_reconstruction_plots='both')
4141

4242
def denovo_fit_SBS_matrix_test():
4343
Analyze.denovo_fit(SAMPLE_MATRIX_SBS,

0 commit comments

Comments
 (0)