pnas-figure-guide について
PNAS Figure Preparation Guideは、PNASへの投稿図版を準備する著者向けのガイドです。誌面固有の要件をまとめ、図の属性を確認するPython例も掲載しています。
主な機能
- 01画像種別ごとの解像度要件
- 02対応形式と寸法
- 03RGBカラーモードの要件
- 04フォントとパネルラベルの規則
- 05画像の完全性に関する方針
- 06Pythonによる図版検証例
活用シーン
- 01PNAS投稿前の図版チェック
- 02書き出し解像度と図版サイズの選定
- 03カラーモードと埋め込みフォントの確認
- 04規定に沿ったパネルラベルと画像説明の準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jaechang-hits/ sciagent-skills --skill pnas-figure-guideインストール後、Claude Code で/pnas-figure-guideを入力して読み込まれたか確認します。
詳細
PNAS 図版作成ガイド
概要
このガイドでは、PNAS(米国科学アカデミー紀要)への投稿用図版を作成するための完全な仕様を説明します。PNAS の特徴は、RGB のみという厳格な方針(CMYK での投稿は差し戻されます)、斜体の大文字パネルラベル、および自動画像スクリーニングソフトウェアです。
公式リファレンス: https://www.pnas.org/author-center/submitting-your-manuscript
解像度の要件
| 画像の種類 | 最低解像度 | 備考 |
|---|---|---|
| ハーフトーン(カラー/グレースケール写真) | 300 PPI | 掲載時のサイズ |
| 複合図版(MS Office) | 600-900 DPI | テキストと画像の混在 |
| 線画(ビットマップのテキスト/細線) | 1,000 PPI | 掲載時のサイズ |
| LaTeX 図版 | — | 高品質の PDF または EPS |
from PIL import Image
def check_pnas_resolution(image_path, image_type='halftone'):
"""Check if image meets PNAS resolution requirements.
Args:
image_type: 'halftone' (300), 'combination' (600), or 'lineart' (1000)
"""
min_ppi = {'halftone': 300, 'combination': 600, 'lineart': 1000}
required = min_ppi.get(image_type, 300)
img = Image.open(image_path)
dpi = img.info.get('dpi', (72, 72))
print(f"Type: {image_type} | Required: {required} PPI | Actual: {dpi[0]} PPI")
if dpi[0] >= required:
print("PASS")
else:
print(f"FAIL: Need {required} PPI minimum")
return dpi[0] >= required
ファイル形式
| 形式 | 受け付け可否 |
|---|---|
| TIFF | はい(ラスター画像では推奨) |
| EPS | はい(フォントの埋め込みが必要) |
| はい(フォントの埋め込みが必要) | |
| PPT | はい |
| 3D 画像 | 2D 表現(TIFF/EPS/PDF)を含む PRC または U3D |
投稿段階
- 初回投稿:形式は問いません。論文全体、図版、SI を含む単一の PDF を提出してください。高解像度ファイルは不要です。
- 制作段階:高解像度の図版ファイルを個別にアップロードする必要があります。
図版のサイズと寸法
重要:画像はページ全体のサイズではなく、最終的な掲載サイズで用意してください。
| レイアウト | 幅 |
|---|---|
| 1 段 | 8.7 cm(3.43 in) |
| 1.5 段 | 11.4 cm(4.5 in / 27 picas) |
| 2 段 | 17.8 cm(7.0 in / 42.125 picas) |
| 最大の高さ | 22.5 cm(9 in / 54 picas) |
import matplotlib.pyplot as plt
PNAS_WIDTHS = {
'single': 8.7 / 2.54, # 3.43 inches
'middle': 11.4 / 2.54, # 4.49 inches
'double': 17.8 / 2.54, # 7.01 inches
}
PNAS_MAX_HEIGHT = 22.5 / 2.54 # 8.86 inches
def create_pnas_figure(layout='single', aspect_ratio=0.75):
"""Create a Matplotlib figure sized for PNAS."""
width = PNAS_WIDTHS[layout]
height = min(width * aspect_ratio, PNAS_MAX_HEIGHT)
fig, ax = plt.subplots(figsize=(width, height))
fig.set_dpi(300)
return fig, ax
カラーモード
重要:RGB のみ
- RGB カラーモードのみで提出してください
- CMYK での投稿は修正のため差し戻されます
- RGB 画像には、正確な RGB から CMYK への変換のために、元の ICC プロファイルをタグ付けしてください
- 印刷用の変換は、PNAS がキャリブレーション済みプロファイルを使用して行います
from PIL import Image
def validate_pnas_color_mode(image_path):
"""PNAS strictly requires RGB. CMYK will be rejected."""
img = Image.open(image_path)
if img.mode == 'CMYK':
print("REJECTED: PNAS does not accept CMYK images")
print("Action: Convert to RGB before submission")
return False
elif img.mode in ('RGB', 'RGBA'):
print("PASS: Image is in RGB mode")
return True
else:
print(f"WARNING: Unexpected mode '{img.mode}'; convert to RGB")
return False
def convert_to_rgb(image_path, output_path):
"""Convert any image to RGB for PNAS submission."""
img = Image.open(image_path)
if img.mode != 'RGB':
img = img.convert('RGB')
print(f"Converted from {img.mode} to RGB")
img.save(output_path)
フォントの要件
| 項目 | 仕様 |
|---|---|
| 使用可能なフォント | Arial, Helvetica, Times, Symbol, Mathematical Pi, European Pi |
| フォントサイズ | 掲載時のサイズで 6-8 pt(印刷時に最低 2 mm) |
| 一貫性 | 論文内のすべての図版で同じフォントを使用 |
| テキストの種類 | ベクターテキストを推奨(きれいに拡大縮小できます) |
| 埋め込み | EPS および PDF ファイルにはすべてのフォントを埋め込む必要があります |
パネルラベル(PNAS 固有の慣例)
- 斜体の大文字:A、B、C、D、...
- これは PNAS 独自の特徴的な慣例であり、ほとんどの他のジャーナルとは異なります
import matplotlib.pyplot as plt
def set_pnas_fonts():
"""Configure Matplotlib for PNAS figure fonts."""
plt.rcParams.update({
'font.family': 'sans-serif',
'font.sans-serif': ['Arial', 'Helvetica'],
'font.size': 7,
'axes.labelsize': 7,
'axes.titlesize': 7,
'xtick.labelsize': 6,
'ytick.labelsize': 6,
'legend.fontsize': 6,
})
def add_pnas_panel_labels(fig, axes):
"""Add PNAS-style italicized uppercase panel labels."""
import string
if not hasattr(axes, '__iter__'):
axes = [axes]
for i, ax in enumerate(axes):
label = string.ascii_uppercase[i]
ax.text(-0.1, 1.1, label,
transform=ax.transAxes,
fontsize=8,
fontstyle='italic',
fontweight='bold',
va='top',
ha='right',
fontfamily='Arial')
ラベルの慣例
- パネルラベル:斜体の大文字(A、B、C)
- すべてのテキスト、数字、文字、記号:縮小後に 6-12 pt(2-6 mm)
- テキストのサイズは図版内で統一してください
- ラベルには本文のフォント規則を適用してください
画像の完全性と加工に関する方針
禁止事項
- 画像内の特定の特徴を強調、隠蔽、移動、削除、または追加すること
許可事項
- 元の情報(背景を含む)を隠したり消したりしない範囲で、画像全体に適用する明るさ、コントラスト、色バランスの調整
必須事項
- 複数のソースの画像を組み合わせる場合:配置と図版の凡例テキストによって、組み合わせたことを明示してください
- Methods セクションに処理ソフトウェアの名称を記載してください
- すべての加工を図版の凡例に記載してください
- 要請に応じて元データを提供できるようにしてください(データがない場合、掲載が拒否されることがあります)
自動スクリーニング
PNAS はスクリーニングソフトウェアを使用して、以下を検出します。
- 複製および貼り付けによるアーティファクト
- データを隠す不審なコントラスト調整
- 背景のピクセル化の不整合
- その他、不適切な画像加工の兆候
アクセシビリティ
- Volume 123 から、PNAS はデジタルアクセシビリティの向上を目的として、すべてのジャーナル掲載図版に代替テキストを付けています
Python クイックスタート:完全な検証
from PIL import Image
import os
def validate_pnas_figure(image_path, image_type='halftone', layout='single'):
"""Full validation of a figure against PNAS requirements."""
img = Image.open(image_path)
issues = []
# 1. Resolution check
min_ppi = {'halftone': 300, 'combination': 600, 'lineart': 1000}
required = min_ppi.get(image_type, 300)
dpi = img.info.get('dpi', (72, 72))
if dpi[0] < required:
issues.append(f"Resolution {dpi[0]} PPI below {required} PPI for {image_type}")
# 2. STRICT RGB check
if img.mode == 'CMYK':
issues.append("REJECTED: CMYK not accepted. Must convert to RGB")
elif img.mode not in ('RGB', 'RGBA'):
issues.append(f"Color mode '{img.mode}' not standard; use RGB")
# 3. Dimension check at publication size
widths_cm = {'single': 8.7, 'middle': 11.4, 'double': 17.8}
max_height_cm = 22.5
if layout in widths_cm and dpi[0] > 0:
actual_w_cm = (img.size[0] / dpi[0]) * 2.54
actual_h_cm = (img.size[1] / dpi[1]) * 2.54
target_w = widths_cm[layout]
if actual_h_cm > max_height_cm:
issues.append(f"Height {actual_h_cm:.1f} cm exceeds max {max_height_cm} cm")
print(f"Print size: {actual_w_cm:.1f} x {actual_h_cm:.1f} cm (target width: {target_w} cm)")
# 4. Format check
fmt = img.format
accepted = ['TIFF', 'EPS', 'PDF', 'PNG', 'JPEG']
if fmt and fmt.upper() not in accepted:
issues.append(f"Format '{fmt}' not in preferred list (TIFF, EPS, PDF)")
# Report
print(f"=== PNAS Figure Validation ===")
print(f"Dimensions: {img.size[0]} x {img.size[1]} px")
print(f"DPI: {dpi[0]} x {dpi[1]}")
print(f"Color mode: {img.mode}")
if issues:
print(f"\nISSUES FOUND ({len(issues)}):")
for issue in issues:
print(f" - {issue}")
else:
print("\nAll checks PASSED")
return len(issues) == 0
重要な概念
厳格なRGB限定ポリシー
PNASは、科学出版において最も厳格な色モードポリシーを採用しています。CMYKで投稿されたファイルは、査読なしで差し戻されます。著者はすべての図をRGBカラーモードで提出し、画像に元のICCプロファイルを埋め込む必要があります。これにより、ジャーナルの制作チームがRGBからCMYKへの変換を正確に行えます。
3段階の解像度システム
PNASはDPIではなくPPI(インチあたりのピクセル数)を使用し、3段階に定めています。網点画像(写真)は300 PPI、コンビネーションアート(MS Officeのテキストと画像を組み合わせたもの)は600~900 DPI、線画(ビットマップテキストや細線)は1,000 PPIです。画像は最終掲載サイズでこれらの基準を満たす必要があります。
自動画像スクリーニング
PNASは、複製・貼り付けによるアーティファクト、不審なコントラスト調整、背景のピクセル化の不整合など、不適切な画像加工の兆候を自動検出するスクリーニングソフトウェアを使用しています。この自動スクリーニングは編集上のレビューを補完し、目視検査では見落とされる可能性のある問題を検出できます。
判断の指針
What color mode is your image?
├── CMYK → REJECTED (convert to RGB before submission)
├── RGB → Accepted
│ └── ICC profile tagged? → Recommended for accurate print conversion
└── Grayscale → Convert to RGB
What type of image?
├── Halftone (photo/micrograph) → 300 PPI minimum
├── Combination (MS Office mixed) → 600-900 DPI
├── Line art (bitmap text/lines) → 1,000 PPI
└── LaTeX figure → High-quality PDF or EPS
What submission stage?
├── Initial → Single PDF with all content (format-neutral)
└── Production → Separate high-resolution figure uploads
| シナリオ | 形式 | 解像度 | カラーモード |
|---|---|---|---|
| 顕微鏡写真 | TIFF | 300 PPI | RGB(ICCプロファイル埋め込み) |
| PowerPointのグラフ | PPTまたはTIFF | 600~900 DPI | RGB |
| 模式図 | EPSまたはPDF | ベクターまたは1,000 PPI | RGB |
| ゲル/ブロット画像 | TIFF | 300 PPI | RGB |
| 3D分子モデル | PRC/U3D + TIFF | 300 PPI(2D代替画像) | RGB |
ベストプラクティス
- 投稿前にCMYKをRGBに変換する:PNASはCMYKファイルを査読なしで差し戻します。画像メタデータツールを使い、アップロード前に必ずカラーモードを確認してください
- RGB画像にICCプロファイルを埋め込む:元のICCプロファイルを埋め込むことで、PNASの印刷制作工程で正確に色変換できます
- 最終掲載サイズで画像を用意する:PNASでは、段組み幅(8.7/11.4/17.8 cm)に合わせたサイズの図が必要です。ジャーナル側でサイズ変更してもらうことを想定して、大きすぎる画像を提出しないでください
- パネルラベルはイタリック体の大文字にする:PNASでは、他の多くのジャーナルとは異なる特徴的な表記規則として、A、B、C(イタリック体、大文字)を使用します
- EPSおよびPDFファイルにすべてのフォントを埋め込む:フォントが不足していると、レンダリングに失敗します。きれいに拡大縮小できるよう、ラスタライズしたテキストではなくベクターテキストを使用してください
- アクセシビリティのための代替テキストを用意する:第123巻以降、PNASではすべての図に代替テキストが含まれています。図の準備中に代替テキストを作成しておくと、修正にかかる時間を節約できます
- 方法セクションに画像処理ソフトウェア名を記載する:PNASでは、調整内容の一般的な説明だけでなく、使用したすべての画像処理ソフトウェアを明記する必要があります
よくある落とし穴
- CMYKカラーモードの図を提出する:PNASはCMYKを厳格に拒否します。これは、図に関する最も一般的な、事前に防止できる却下理由です
- 回避方法:投稿前にすべての図に対してカラーモード検証スクリプトを実行し、CMYKをRGBに変換してください
- 線画に300 PPIを使用する:ビットマップテキストを含む線画には1,000 PPIが必要です。300 PPIでは細線や小さなテキストがギザギザに見えます
- 回避方法:各図を種類(網点画像、線画、コンビネーション)ごとに分類し、適切な解像度の段階を適用してください
- 掲載サイズより大きな図を提出する:PNASでは、サイズの大きな図ではなく最終サイズの画像が必要です。大きすぎる図は縮小され、品質が低下する場合があります
- 回避方法:書き出す前に、キャンバスサイズを対象の段組み幅に設定してください
- イタリック体でないパネルラベルを使用する:PNAS独自のイタリック体の大文字表記(A、B、C)に従わないラベルは、ジャーナルへの理解不足を示します
- 回避方法:パネルラベルには、matplotlibの
fontstyle='italic'またはIllustratorのイタリック設定を使用してください
- 回避方法:パネルラベルには、matplotlibの
- 複数の情報源を合成した図であることを示さない:異なる実験の画像を組み合わせる場合、PNASでは視覚的にも文章でも明確に示す必要があります
- 回避方法:合成した要素の間に明確な境界線や間隔を設け、図の構成を図の凡例で説明してください
投稿前チェックリスト
PNAS に図を投稿する前に、以下を確認してください。
- ハーフトーンは 300 PPI 以上、線画は 1,000 PPI 以上
- ファイル形式は TIFF、EPS、または PDF
- カラーモードは RGB(CMYK は不可。受理されません)
- 正確な色変換のため、ICC プロファイルが埋め込まれている
- 図の幅が段組みのレイアウトに合っている(8.7 / 11.4 / 17.8 cm)
- 図の高さが 22.5 cm を超えていない
- 画像が最終的な掲載サイズで提供されている
- フォントは Arial、Helvetica、または Times の 6~8 pt
- EPS/PDF にすべてのフォントが埋め込まれている
- パネルラベルは大文字のイタリック体(A、B、C)
- 図ごとに文字サイズが統一されている
- すべての調整が画像全体に均一に適用されている
- 複数のソースを合成した画像であることが凡例に明記されている
- 処理に使用したソフトウェアが Methods に記載されている
- 未処理の元データを確認用に提供できる
- アクセシビリティに対応する代替テキストが用意されている
参考資料
- PNAS 投稿ガイドライン:https://www.pnas.org/author-center/submitting-your-manuscript
- PNAS デジタルアートガイドライン:https://www.pnas.org/pb-assets/authors/digitalart.pdf
- PNAS 編集方針:https://www.pnas.org/author-center/editorial-and-journal-policies