def run_calculation( reference_results, evaluation_results, gamma_options, escan_directory, png_output_directory, ): st.write("Calculating Reference MU Density...") reference_mudensity = calculate_batch_mudensity( reference_results["deliveries"]) st.write("Calculating Evaluation MU Density...") evaluation_mudensity = calculate_batch_mudensity( evaluation_results["deliveries"]) st.write("Calculating Gamma...") gamma = calculate_gamma(reference_mudensity, evaluation_mudensity, gamma_options) patient_id = reference_results["patient_id"] st.write("Creating figure...") output_base_filename = ( f"{patient_id} {reference_results['identifier']} vs " f"{evaluation_results['identifier']}") pdf_filepath = str( escan_directory.joinpath(f"{output_base_filename}.pdf").resolve()) png_record_directory = png_output_directory.joinpath(output_base_filename) png_record_directory.mkdir(exist_ok=True) png_filepath = str(png_record_directory.joinpath("report.png").resolve()) try: patient_name_text = f"Patient Name: {reference_results['patient_name']}\n" except KeyError: patient_name_text = "" header_text = (f"Patient ID: {patient_id}\n" f"{patient_name_text}" f"Reference: {reference_results['identifier']}\n" f"Evaluation: {evaluation_results['identifier']}\n") reference_path_strings = "\n ".join( [str(path.resolve()) for path in reference_results["data_paths"]]) evaluation_path_strings = "\n ".join( [str(path.resolve()) for path in evaluation_results["data_paths"]]) footer_text = (f"reference path(s): {reference_path_strings}\n" f"evaluation path(s): {evaluation_path_strings}\n" f"png record: {png_filepath}") fig = plot_and_save_results( reference_mudensity, evaluation_mudensity, gamma, gamma_options, png_record_directory, header_text=header_text, footer_text=footer_text, ) fig.tight_layout() st.write("Saving figure...") plt.savefig(png_filepath, dpi=100) try: subprocess.check_call( f'magick convert "{png_filepath}" "{pdf_filepath}"', shell=True) except subprocess.CalledProcessError: st.write( UnableToCreatePDF( "Please install Image Magick to create PDF reports " "<https://imagemagick.org/script/download.php#windows>.")) st.write("## Results") st.pyplot()
def run_calculation( reference_results, evaluation_results, gamma_options, escan_directory, png_output_directory, ): st.write("Calculating Reference MU Density...") reference_mudensity = calculate_batch_mudensity( reference_results["deliveries"]) st.write("Calculating Evaluation MU Density...") evaluation_mudensity = calculate_batch_mudensity( evaluation_results["deliveries"]) st.write("Calculating Gamma...") gamma = calculate_gamma(reference_mudensity, evaluation_mudensity, gamma_options) patient_id = reference_results["patient_id"] st.write("Creating figure...") output_base_filename = ( f"{patient_id} {reference_results['identifier']} vs " f"{evaluation_results['identifier']}") pdf_filepath = str( escan_directory.joinpath(f"{output_base_filename}.pdf").resolve()) png_record_directory = png_output_directory.joinpath(output_base_filename) png_record_directory.mkdir(exist_ok=True) png_filepath = str(png_record_directory.joinpath("report.png").resolve()) try: patient_name_text = f"Patient Name: {reference_results['patient_name']}\n" except KeyError: patient_name_text = "" header_text = (f"Patient ID: {patient_id}\n" f"{patient_name_text}" f"Reference: {reference_results['identifier']}\n" f"Evaluation: {evaluation_results['identifier']}\n") reference_path_strings = "\n ".join( [str(path.resolve()) for path in reference_results["data_paths"]]) evaluation_path_strings = "\n ".join( [str(path.resolve()) for path in evaluation_results["data_paths"]]) footer_text = (f"reference path(s): {reference_path_strings}\n" f"evaluation path(s): {evaluation_path_strings}\n" f"png record: {png_filepath}") fig = plot_and_save_results( reference_mudensity, evaluation_mudensity, gamma, gamma_options, png_record_directory, header_text=header_text, footer_text=footer_text, ) fig.tight_layout() st.write("## Results") st.pyplot(fig) st.write("## Saving reports") st.write("### PNG") st.write("Saving figure as PNG...") plt.savefig(png_filepath, dpi=100) st.write(f"Saved:\n\n`{png_filepath}`") convert_png_to_pdf(png_filepath, pdf_filepath)