From 4fc426a5cd0bbb7730f6b42ea2dfc2784be08c92 Mon Sep 17 00:00:00 2001 From: Daniel Bergman Date: Wed, 11 Feb 2026 09:05:08 -0500 Subject: [PATCH 1/2] Add configurable resolution variables for JPEG and GIF generation GIF and JPEG resolution currently depends on simulation domain size, and `make gif` uses deprecated `magick convert` syntax. - **Added configurable variables** for ImageMagick density and resize parameters: ```makefile MAGICK_DENSITY := 96 # DPI for rasterization MAGICK_RESIZE_X := 1024 # Target width MAGICK_RESIZE_Y := 1024 # Target height MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) ``` - **Simplified `jpeg` target** from 8 lines with temporary files to single command: ```makefile jpeg: magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg ``` - **Updated `gif` target** to use modern syntax and add resolution control: ```makefile gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif ``` Override from command line for custom resolution: ```bash make jpeg MAGICK_DENSITY=300 MAGICK_RESIZE_X=2048 MAGICK_RESIZE_Y=2048 ``` Updated 20 Makefiles: main repository, Makefile-default, all 17 sample projects, and template_BM intracellular project.
Original prompt > > ---- > > *This section details on the original issue you should resolve* > > robust resolution in jpeg and gif > As hinted at in a recent Slack post[^1], GIF resolution depends on the domain size. The same is true for `make jpeg`. > > Something like > > ```magick -density 300 $(OUTPUT)/s*.svg -resize 1024x1024 $(OUTPUT)/out.gif``` > > works to resolve this (and a similar command for the `jpeg` target). The issue with this simple fix is that for larger domains, this would rasterize at much higher resolutions than necessary (don't always need `-density 300`) and then would resize out of resolution (`-resize 1024x1024`). > > So, something more robust would be needed. I see two options: > - do the math in the Makefile > - doing the math when writing the SVG[^2] > > Either way, exposing these through Makefile variables would be a nice touch for users. > > ## Proposed solution > Simplest is to introduce new Makefile variables that set defaults that can be customized: > ```make > MAGICK_DENSITY := 96 > MAGICK_RESIZE_X := 1024 > MAGICK_RESIZE_Y := 1024 > MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) > > jpeg: > magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg > > gif: > magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif > ``` > Notes: > 1. This simplifies the `jpeg` target down to one line, eliminating need for intermediate files to store height and width > 2. I am now getting a deprecation warning for `magick convert` (currently used in the `gif` target), so we'll eventually need to migrate to this new syntax, but I don't know if that will disrupt others with an older installation of magick... > > ## For future reference > Here's my understanding of how all the numbers are computed after looking into this: > 1. PhysiCell records in the `` element the `width` and `height` attributes. These are the simulation domain size plus necessary padding for title text and colorbar (if needed). Title text padding scales with the domain size so if you display the snapshot as a 1-inch-wide figure, the text is always the same size. The colorbar has a fixed padding (which is what causes it to render different widths and sometimes pushes the label outside the clipping mask. > 2. Magick interprets these as the number of pixels in each dimension and computes a desired physical size of the image in inches using 1"=96pixels. E.g. 960 pixels --> 10 inches > 3. The `-density` flag converts this desired size (in inches) to pixels, treating the flag value as dpi. E.g., `-density 300` would take the 10" above and set that dimension to rasterize to `300 x 10 = 3000` pixels. > 4. Rasterize at these dimensions > 5. If `-resize` is provided, then downsample (if either dimension has more pixels from above then requested in this flag), preserving the aspect ratio. Minor note: if the `-resize` value ends with `!` (e.g. `-resize 1000x1000!`), this will force *both* dimensions; i.e. not preserve the aspect ratio. To finish our example, if `-resize 1000x1000` and the rasterized intermediate was `3000x6000` pixels, the final image will be `500x1000` pixels > > [^1]: When we reduce the domain size via the config file, we're noticed that the gifs generated with magick appear to have lower resolution. Is there a way to maintain or improve the resolution when using a smaller domain? The output SVGs seem to retain their quality. > [^2]: `width` and `height` attributes control the resolution. Those attributes are dependent on the simulation domain size, but are not equivalent due to padding for text / colorbar, so those could be good targets to put default sizes. >
--- Makefile | 15 +++++++-------- sample_projects/Makefile-default | 15 +++++++-------- sample_projects/asymmetric_division/Makefile | 15 +++++++-------- sample_projects/biorobots/Makefile | 15 +++++++-------- sample_projects/cancer_biorobots/Makefile | 15 +++++++-------- sample_projects/cancer_immune/Makefile | 15 +++++++-------- sample_projects/celltypes3/Makefile | 15 +++++++-------- sample_projects/custom_division/Makefile | 15 +++++++-------- sample_projects/episode/Makefile | 15 +++++++-------- sample_projects/heterogeneity/Makefile | 15 +++++++-------- sample_projects/immune_function/Makefile | 15 +++++++-------- sample_projects/interactions/Makefile | 15 +++++++-------- sample_projects/mechano/Makefile | 15 +++++++-------- sample_projects/physimess/Makefile | 15 +++++++-------- sample_projects/pred_prey_farmer/Makefile | 15 +++++++-------- sample_projects/rules_sample/Makefile | 15 +++++++-------- sample_projects/template/Makefile | 15 +++++++-------- sample_projects/virus_macrophage/Makefile | 15 +++++++-------- sample_projects/worm/Makefile | 15 +++++++-------- .../boolean/template_BM/Makefile | 15 +++++++-------- 20 files changed, 140 insertions(+), 160 deletions(-) diff --git a/Makefile b/Makefile index 5d256d1c3..b78856f82 100644 --- a/Makefile +++ b/Makefile @@ -472,17 +472,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/Makefile-default b/sample_projects/Makefile-default index 5d256d1c3..b78856f82 100644 --- a/sample_projects/Makefile-default +++ b/sample_projects/Makefile-default @@ -472,17 +472,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/asymmetric_division/Makefile b/sample_projects/asymmetric_division/Makefile index 6682b5c46..3b10a0734 100644 --- a/sample_projects/asymmetric_division/Makefile +++ b/sample_projects/asymmetric_division/Makefile @@ -224,17 +224,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/biorobots/Makefile b/sample_projects/biorobots/Makefile index 26314225c..867e5db38 100644 --- a/sample_projects/biorobots/Makefile +++ b/sample_projects/biorobots/Makefile @@ -224,17 +224,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/cancer_biorobots/Makefile b/sample_projects/cancer_biorobots/Makefile index b74f8837a..e39d24fe6 100644 --- a/sample_projects/cancer_biorobots/Makefile +++ b/sample_projects/cancer_biorobots/Makefile @@ -224,17 +224,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/cancer_immune/Makefile b/sample_projects/cancer_immune/Makefile index 5cbb2ca8f..65dd4bad7 100644 --- a/sample_projects/cancer_immune/Makefile +++ b/sample_projects/cancer_immune/Makefile @@ -220,17 +220,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/celltypes3/Makefile b/sample_projects/celltypes3/Makefile index 29732af20..9e5af67d3 100644 --- a/sample_projects/celltypes3/Makefile +++ b/sample_projects/celltypes3/Makefile @@ -224,17 +224,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/custom_division/Makefile b/sample_projects/custom_division/Makefile index e90a9966f..64fd45150 100644 --- a/sample_projects/custom_division/Makefile +++ b/sample_projects/custom_division/Makefile @@ -224,17 +224,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/episode/Makefile b/sample_projects/episode/Makefile index a9b43a58e..bcacd072a 100644 --- a/sample_projects/episode/Makefile +++ b/sample_projects/episode/Makefile @@ -235,17 +235,16 @@ untar: FRAMERATE := 24 OUTPUT := output/episode00000000 +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/heterogeneity/Makefile b/sample_projects/heterogeneity/Makefile index 93d055ea9..aadc4b88d 100644 --- a/sample_projects/heterogeneity/Makefile +++ b/sample_projects/heterogeneity/Makefile @@ -224,17 +224,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/immune_function/Makefile b/sample_projects/immune_function/Makefile index 8cfe66c8c..988b19a7b 100644 --- a/sample_projects/immune_function/Makefile +++ b/sample_projects/immune_function/Makefile @@ -224,17 +224,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/interactions/Makefile b/sample_projects/interactions/Makefile index 44db81996..c19dbfa94 100644 --- a/sample_projects/interactions/Makefile +++ b/sample_projects/interactions/Makefile @@ -233,17 +233,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/mechano/Makefile b/sample_projects/mechano/Makefile index e90a9966f..64fd45150 100644 --- a/sample_projects/mechano/Makefile +++ b/sample_projects/mechano/Makefile @@ -224,17 +224,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/physimess/Makefile b/sample_projects/physimess/Makefile index ed12022cb..673eed6be 100644 --- a/sample_projects/physimess/Makefile +++ b/sample_projects/physimess/Makefile @@ -249,17 +249,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/pred_prey_farmer/Makefile b/sample_projects/pred_prey_farmer/Makefile index 06ec2705e..2593773c3 100644 --- a/sample_projects/pred_prey_farmer/Makefile +++ b/sample_projects/pred_prey_farmer/Makefile @@ -224,17 +224,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/rules_sample/Makefile b/sample_projects/rules_sample/Makefile index d9493e2df..111f0c02c 100644 --- a/sample_projects/rules_sample/Makefile +++ b/sample_projects/rules_sample/Makefile @@ -233,17 +233,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/template/Makefile b/sample_projects/template/Makefile index 7aa7d18d2..d723d637d 100644 --- a/sample_projects/template/Makefile +++ b/sample_projects/template/Makefile @@ -233,17 +233,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/virus_macrophage/Makefile b/sample_projects/virus_macrophage/Makefile index d8c8ad4e8..9f0135352 100644 --- a/sample_projects/virus_macrophage/Makefile +++ b/sample_projects/virus_macrophage/Makefile @@ -224,17 +224,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects/worm/Makefile b/sample_projects/worm/Makefile index e953e28ad..bb500cb0e 100644 --- a/sample_projects/worm/Makefile +++ b/sample_projects/worm/Makefile @@ -224,17 +224,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 diff --git a/sample_projects_intracellular/boolean/template_BM/Makefile b/sample_projects_intracellular/boolean/template_BM/Makefile index a5d3a9c68..822bf9690 100644 --- a/sample_projects_intracellular/boolean/template_BM/Makefile +++ b/sample_projects_intracellular/boolean/template_BM/Makefile @@ -279,17 +279,16 @@ untar: FRAMERATE := 24 OUTPUT := output +MAGICK_DENSITY := 96 +MAGICK_RESIZE_X := 1024 +MAGICK_RESIZE_Y := 1024 +MAGICK_RESIZE := $(MAGICK_RESIZE_X)x$(MAGICK_RESIZE_Y) + jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt + magick mogrify -density $(MAGICK_DENSITY) -format jpg -resize $(MAGICK_RESIZE) $(OUTPUT)/s*.svg gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif + magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 From 911bdd667068dbacbac3a97f97c9b031247f2949 Mon Sep 17 00:00:00 2001 From: Daniel Bergman Date: Wed, 11 Feb 2026 10:12:36 -0500 Subject: [PATCH 2/2] movies pad jpegs to make even dims --- Makefile | 2 +- sample_projects/Makefile-default | 2 +- sample_projects/asymmetric_division/Makefile | 2 +- sample_projects/biorobots/Makefile | 2 +- sample_projects/cancer_biorobots/Makefile | 2 +- sample_projects/cancer_immune/Makefile | 2 +- sample_projects/celltypes3/Makefile | 2 +- sample_projects/custom_division/Makefile | 2 +- sample_projects/episode/Makefile | 2 +- sample_projects/heterogeneity/Makefile | 2 +- sample_projects/immune_function/Makefile | 2 +- sample_projects/interactions/Makefile | 2 +- sample_projects/mechano/Makefile | 2 +- sample_projects/physimess/Makefile | 2 +- sample_projects/pred_prey_farmer/Makefile | 2 +- sample_projects/rules_sample/Makefile | 2 +- sample_projects/template/Makefile | 2 +- sample_projects/virus_macrophage/Makefile | 2 +- sample_projects/worm/Makefile | 2 +- sample_projects_intracellular/boolean/template_BM/Makefile | 2 +- unit_tests/custom_DCs_2substrates/Makefile | 2 +- unit_tests/custom_voxel_values/Makefile | 2 +- 22 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Makefile b/Makefile index b78856f82..3ec02d00f 100644 --- a/Makefile +++ b/Makefile @@ -484,7 +484,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/Makefile-default b/sample_projects/Makefile-default index b78856f82..3ec02d00f 100644 --- a/sample_projects/Makefile-default +++ b/sample_projects/Makefile-default @@ -484,7 +484,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/asymmetric_division/Makefile b/sample_projects/asymmetric_division/Makefile index 3b10a0734..47403d061 100644 --- a/sample_projects/asymmetric_division/Makefile +++ b/sample_projects/asymmetric_division/Makefile @@ -236,7 +236,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/biorobots/Makefile b/sample_projects/biorobots/Makefile index 867e5db38..3908de537 100644 --- a/sample_projects/biorobots/Makefile +++ b/sample_projects/biorobots/Makefile @@ -236,7 +236,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/cancer_biorobots/Makefile b/sample_projects/cancer_biorobots/Makefile index e39d24fe6..a5d172292 100644 --- a/sample_projects/cancer_biorobots/Makefile +++ b/sample_projects/cancer_biorobots/Makefile @@ -236,7 +236,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/cancer_immune/Makefile b/sample_projects/cancer_immune/Makefile index 65dd4bad7..7e525a67b 100644 --- a/sample_projects/cancer_immune/Makefile +++ b/sample_projects/cancer_immune/Makefile @@ -232,7 +232,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 ciPATH := ./sample_projects/cancer_immune/scripts pov: diff --git a/sample_projects/celltypes3/Makefile b/sample_projects/celltypes3/Makefile index 9e5af67d3..e344cc01b 100644 --- a/sample_projects/celltypes3/Makefile +++ b/sample_projects/celltypes3/Makefile @@ -236,7 +236,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/custom_division/Makefile b/sample_projects/custom_division/Makefile index 64fd45150..8e12b3c0d 100644 --- a/sample_projects/custom_division/Makefile +++ b/sample_projects/custom_division/Makefile @@ -236,7 +236,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/episode/Makefile b/sample_projects/episode/Makefile index bcacd072a..94010605d 100644 --- a/sample_projects/episode/Makefile +++ b/sample_projects/episode/Makefile @@ -247,7 +247,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/heterogeneity/Makefile b/sample_projects/heterogeneity/Makefile index aadc4b88d..cbc56586b 100644 --- a/sample_projects/heterogeneity/Makefile +++ b/sample_projects/heterogeneity/Makefile @@ -236,7 +236,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/immune_function/Makefile b/sample_projects/immune_function/Makefile index 988b19a7b..55472f8f8 100644 --- a/sample_projects/immune_function/Makefile +++ b/sample_projects/immune_function/Makefile @@ -236,7 +236,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/interactions/Makefile b/sample_projects/interactions/Makefile index c19dbfa94..79c214563 100644 --- a/sample_projects/interactions/Makefile +++ b/sample_projects/interactions/Makefile @@ -245,7 +245,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/mechano/Makefile b/sample_projects/mechano/Makefile index 64fd45150..8e12b3c0d 100644 --- a/sample_projects/mechano/Makefile +++ b/sample_projects/mechano/Makefile @@ -236,7 +236,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/physimess/Makefile b/sample_projects/physimess/Makefile index 673eed6be..0fc30b9de 100644 --- a/sample_projects/physimess/Makefile +++ b/sample_projects/physimess/Makefile @@ -261,7 +261,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/pred_prey_farmer/Makefile b/sample_projects/pred_prey_farmer/Makefile index 2593773c3..00185ce80 100644 --- a/sample_projects/pred_prey_farmer/Makefile +++ b/sample_projects/pred_prey_farmer/Makefile @@ -236,7 +236,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/rules_sample/Makefile b/sample_projects/rules_sample/Makefile index 111f0c02c..7499afa28 100644 --- a/sample_projects/rules_sample/Makefile +++ b/sample_projects/rules_sample/Makefile @@ -245,7 +245,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/template/Makefile b/sample_projects/template/Makefile index d723d637d..555243f16 100644 --- a/sample_projects/template/Makefile +++ b/sample_projects/template/Makefile @@ -245,7 +245,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/virus_macrophage/Makefile b/sample_projects/virus_macrophage/Makefile index 9f0135352..74fcd9a4e 100644 --- a/sample_projects/virus_macrophage/Makefile +++ b/sample_projects/virus_macrophage/Makefile @@ -236,7 +236,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects/worm/Makefile b/sample_projects/worm/Makefile index bb500cb0e..43fba67b4 100644 --- a/sample_projects/worm/Makefile +++ b/sample_projects/worm/Makefile @@ -236,7 +236,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/sample_projects_intracellular/boolean/template_BM/Makefile b/sample_projects_intracellular/boolean/template_BM/Makefile index 822bf9690..765cdeca7 100644 --- a/sample_projects_intracellular/boolean/template_BM/Makefile +++ b/sample_projects_intracellular/boolean/template_BM/Makefile @@ -291,7 +291,7 @@ gif: magick -density $(MAGICK_DENSITY) $(OUTPUT)/s*.svg -resize $(MAGICK_RESIZE) $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/unit_tests/custom_DCs_2substrates/Makefile b/unit_tests/custom_DCs_2substrates/Makefile index faa887869..8d450b77f 100644 --- a/unit_tests/custom_DCs_2substrates/Makefile +++ b/unit_tests/custom_DCs_2substrates/Makefile @@ -237,7 +237,7 @@ gif: magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules diff --git a/unit_tests/custom_voxel_values/Makefile b/unit_tests/custom_voxel_values/Makefile index e27362f79..39ae0c868 100644 --- a/unit_tests/custom_voxel_values/Makefile +++ b/unit_tests/custom_voxel_values/Makefile @@ -234,7 +234,7 @@ gif: magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 # upgrade rules