Skip to content

Commit

Permalink
Added dpi and savepdf options to comparison reporst for publications
Browse files Browse the repository at this point in the history
  • Loading branch information
ledm committed Dec 14, 2023
1 parent b086386 commit b4f8aa6
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 2 deletions.
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,8 @@ do_mass_download: <bool>
master_suites: <str>
auto_download: <bool>
strictFileCheck: <bool>
dpi: <int>
savepdf: <bool>
jobs:
<jobID1>:
Expand Down Expand Up @@ -268,6 +270,12 @@ These values are:
- `strictFileCheck`:
- A boolean which when True will raise an error if input model files are missing.
- Default is True, set to False to skip this check.
- `dpi`:
- Output images Dots per inch (dpi)
- dpi=100 is fine for most purposes but 300 is needed for highres posters/publications.
- `savepdf`:
- Outpout the image as a pdf in addition to the standard png.
- This doesn't replace the image in the report, but saves a pdf version of the image in the images directory.
- `jobs`:
- A list of jobIDs, and some options on how they will appear in the final report.
- The options are:
Expand Down
16 changes: 16 additions & 0 deletions bgcval2/analysis_compare.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,8 @@ def timeseries_compare(jobs,
labels = {},
ensembles={},
config_user=None,
dpi=None,
savepdf=False,
):
"""
timeseries_compare:
Expand Down Expand Up @@ -423,6 +425,8 @@ def timeseries_compare(jobs,
thicknesses=lineThicknesses,
linestyles=linestyles,
labels=labels,
dpi=dpi,
savepdf=savepdf,
)

# Generate a list of comparison images:
Expand Down Expand Up @@ -504,6 +508,12 @@ def load_comparison_yml(master_compare_yml_fn):
details['do_mass_download'] = input_yml_dict.get('do_mass_download', False)
details['master_suites'] = input_yml_dict.get('master_suites', [])

# Image output settings:
# dpi: pixels per inch (image resolution)
# savepdf: also save the image as a pdf.
details['dpi'] = input_yml_dict.get('dpi', None)
details['savepdf'] = input_yml_dict.get('savepdf', False)

# auto download, can differ for each job.
auto_download = input_yml_dict.get('auto_download', True)
auto_download_dict = {jobID: auto_download for jobID in details['jobs'].keys()}
Expand Down Expand Up @@ -579,6 +589,9 @@ def load_yml_and_run(compare_yml, config_user, skip_timeseries):
suites = details['suites']
auto_download = details['auto_download']
strictFileCheck = details.get('strictFileCheck', True)
dpi = details.get('dpi', None)
savepdf = details.get('savepdf', False)

print('---------------------')
print('timeseries_compare:', analysis_name)
print('job ids:', jobs.keys())
Expand Down Expand Up @@ -632,6 +645,9 @@ def load_yml_and_run(compare_yml, config_user, skip_timeseries):
linestyles=linestyles,
labels=labels,
config_user=config_user,
dpi=dpi,
savepdf=savepdf,

)


Expand Down
2 changes: 1 addition & 1 deletion bgcval2/bgcval2_make_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -1636,7 +1636,7 @@ def newImageLocation(fn):

if len(otherFilenames):
# I think this is never happens anymore.
assert 0
#assert 0
href = 'OtherPlots-others'

hrefs.append(href)
Expand Down
15 changes: 14 additions & 1 deletion bgcval2/timeseries/timeseriesPlots.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
import matplotlib.patches as mpatches
import cartopy
import numpy as np
import pathlib

from numpy import hanning, hamming, bartlett, blackman
from scipy import interpolate
from collections import defaultdict
Expand Down Expand Up @@ -706,6 +708,8 @@ def multitimeseries(
thicknesses=defaultdict(lambda: 1),
linestyles=defaultdict(lambda: '-'),
labels={},
dpi=None,
savepdf=False,
):

if 0 in [len(timesD), len(list(timesD.keys()))]: return
Expand Down Expand Up @@ -1053,7 +1057,16 @@ def multitimeseries(
pyplot.suptitle(title)

print("multitimeseries:\tsimpletimeseries:\tSaving:", filename)
pyplot.savefig(filename)
if not dpi:
pyplot.savefig(filename)
imext = pathlib.Path(filename).suffix

# save image as pdf (publication?)
if savepdf:
pyplot.savefig(filename.replace(imext, '.pdf'))

if pathlib.Path(filename).suffix in ['.png', '.jpg', '.jpeg']:
pyplot.savefig(filename, dpi=dpi)
pyplot.close()


Expand Down
3 changes: 3 additions & 0 deletions input_yml/TerraFIRMA_overshoot_runs_minimal.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ strict_file_check: False

clean: True

dpi: 300
savepdf: True

jobs:
u-cs495:
description: 'PI-Control'
Expand Down

0 comments on commit b4f8aa6

Please sign in to comment.