From 6f3db879fe896eaca263035ec4be10fd6249c853 Mon Sep 17 00:00:00 2001 From: Susanna Kiwala Date: Wed, 28 Feb 2024 15:46:11 -0600 Subject: [PATCH] Fix blurry pVACvector visualization images --- pvactools/lib/vector_visualization.py | 12 +++++++++--- tests/test_pvacvector.py | 4 ++-- tests/test_vector_visualization.py | 4 ++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/pvactools/lib/vector_visualization.py b/pvactools/lib/vector_visualization.py index e81b3ddb8..31c0dcb3c 100644 --- a/pvactools/lib/vector_visualization.py +++ b/pvactools/lib/vector_visualization.py @@ -1,6 +1,7 @@ import turtle import os import sys +import math from PIL import Image class VectorVisualization: @@ -228,11 +229,16 @@ def draw_arc_junct(self, peptide, length): #print turtle screen to a postscript file, convert to pdf def output_screen(self): ps_file = os.path.join(self.output_directory, "vector.ps") - out_file = os.path.join(self.output_directory, "vector.jpg") + out_file = os.path.join(self.output_directory, "vector.png") ts = self.turtle.getscreen() ts.getcanvas().postscript(file=ps_file) - with Image.open(ps_file) as img: - img.save(out_file) + with Image.open(ps_file, formats=["EPS"]) as img: + original = [float(d) for d in img.size] + dpi = 300 + scale = dpi / 72.0 + img.load(scale = math.ceil(scale)) + img.thumbnail([round(scale * d) for d in original], Image.Resampling.LANCZOS) + img.save(out_file, dpi=(300.0, 300.0)) os.remove(ps_file) #select color from scheme diff --git a/tests/test_pvacvector.py b/tests/test_pvacvector.py index ec711572c..49be7008d 100644 --- a/tests/test_pvacvector.py +++ b/tests/test_pvacvector.py @@ -191,7 +191,7 @@ def test_pvacvector_fa_input_runs_and_produces_expected_output(self): )) if 'DISPLAY' in os.environ.keys(): - image_out = os.path.join(output_dir.name, 'vector.jpg') + image_out = os.path.join(output_dir.name, 'vector.png') #vaccine visualization producing image self.assertTrue(os.path.exists(image_out)) self.assertTrue(os.stat(image_out).st_size > 0) @@ -226,7 +226,7 @@ def test_pvacvector_generate_fa_runs_and_produces_expected_output(self): if 'DISPLAY' in os.environ.keys(): - image_out = os.path.join(output_dir.name, 'vector.jpg') + image_out = os.path.join(output_dir.name, 'vector.png') #vaccine visualization producing image self.assertTrue(os.path.exists(image_out)) self.assertTrue(os.stat(image_out).st_size > 0) diff --git a/tests/test_vector_visualization.py b/tests/test_vector_visualization.py index 8438438a6..3328c7934 100644 --- a/tests/test_vector_visualization.py +++ b/tests/test_vector_visualization.py @@ -28,7 +28,7 @@ def test_fasta_with_spacers(self): output_dir, self.spacers ).draw()) - self.assertTrue(os.path.exists(os.path.join(output_dir, 'vector.jpg'))) + self.assertTrue(os.path.exists(os.path.join(output_dir, 'vector.png'))) def test_fasta_with_long_peptide(self): if 'DISPLAY' in os.environ.keys(): @@ -41,4 +41,4 @@ def test_fasta_with_long_peptide(self): output_dir, self.spacers ).draw()) - self.assertTrue(os.path.exists(os.path.join(output_dir, 'vector.jpg'))) + self.assertTrue(os.path.exists(os.path.join(output_dir, 'vector.png')))