本文へ移動
cccskills
無料GitHub で公開

pnas-figure-guide

PNAS figure preparation: resolution (300-1000 PPI), formats (TIFF/EPS/PDF), strict RGB-only color, Arial/Helvetica fonts, italicized uppercase panel labels, automated image screening.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md14.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

PNAS Figure Preparation Guide

Overview

This guide provides the complete specifications for preparing figures for submission to PNAS (Proceedings of the National Academy of Sciences). PNAS is notable for its strict RGB-only policy (CMYK submissions are returned), italicized uppercase panel labels, and automated image screening software.

Official reference: https://www.pnas.org/author-center/submitting-your-manuscript


Resolution Requirements

Image TypeMinimum ResolutionNotes
Halftones (color/grayscale photos)300 PPIAt publication size
Combination artwork (MS Office)600-900 DPIMixed text and images
Line art (bitmap text/thin lines)1,000 PPIAt publication size
LaTeX figures—High-quality PDF or 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

File Format

FormatAccepted
TIFFYes (preferred for raster)
EPSYes (fonts must be embedded)
PDFYes (fonts must be embedded)
PPTYes
3D imagesPRC or U3D with 2D representation (TIFF/EPS/PDF)

Submission Stages

  • Initial submission: Format-neutral — single PDF containing full manuscript, figures, and SI. High-resolution files not required.
  • Production phase: Separate high-resolution figure uploads required.

Figure Size and Dimensions

IMPORTANT: Provide images at final publication size, not full-page size.

LayoutWidth
1 column8.7 cm (3.43 in)
1.5 columns11.4 cm (4.5 in / 27 picas)
2 columns17.8 cm (7.0 in / 42.125 picas)
Maximum height22.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

Color Mode

CRITICAL: RGB Only

  • Submit in RGB color mode ONLY
  • CMYK submissions will be returned for correction
  • Tag RGB images with originating ICC profile for accurate RGB-to-CMYK conversion
  • PNAS manages print conversion using calibrated profiles
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)

Font Requirements

ElementSpecification
Approved fontsArial, Helvetica, Times, Symbol, Mathematical Pi, European Pi
Font size6-8 pt at final publication size (minimum 2 mm when printed)
ConsistencySame font for all figures in manuscript
Text typeVector text preferred (scales cleanly)
EmbeddingAll fonts must be embedded in EPS and PDF files

Panel Labels (PNAS-Specific Convention)

  • Italicized uppercase letters: A, B, C, D, ...
  • This is a distinctive PNAS convention — different from most other journals
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')

Labeling Conventions

  • Panel labels: Italicized uppercase (A, B, C)
  • All text, numbers, letters, symbols: 6-12 pt (2-6 mm) after reduction
  • Text sizing must be consistent within each graphic
  • Labels should match body text font conventions

Image Integrity and Manipulation Policy

PROHIBITED

  • Enhancing, obscuring, moving, removing, or introducing any specific feature within an image

PERMITTED

  • Brightness, contrast, color balance adjustments applied to the whole image without obscuring or eliminating original information (including backgrounds)

REQUIRED

  • When combining images from multiple sources: make explicit by arrangement and figure legend text
  • Name processing software in Methods section
  • Indicate all manipulations in figure legends
  • Original data must be available on request (missing data may result in rejection)

Automated Screening

PNAS uses screening software to detect:

  • Cloning and pasting artifacts
  • Suspicious contrast adjustments that obscure data
  • Inconsistent background pixelation
  • Other signs of inappropriate image manipulation

Accessibility

  • Beginning with Volume 123, PNAS includes alt text for all journal figures to improve digital accessibility

Python Quick Start: Full Validation

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

Key Concepts

Strict RGB-Only Policy

PNAS enforces one of the strictest color mode policies in scientific publishing. CMYK submissions are returned without review. Authors must submit all figures in RGB color mode and tag images with their originating ICC profile to ensure accurate RGB-to-CMYK conversion by the journal's production team.

Three-Tier Resolution System

PNAS uses PPI (pixels per inch) rather than DPI and defines three tiers: 300 PPI for halftones (photographs), 600-900 DPI for combination artwork (mixed text and images from MS Office), and 1,000 PPI for line art (bitmap text and thin lines). Images must meet these thresholds at final publication size.

Automated Image Screening

PNAS employs screening software that automatically detects signs of inappropriate image manipulation including cloning/pasting artifacts, suspicious contrast adjustments, and inconsistent background pixelation. This automated screening supplements editorial review and can flag issues that manual inspection might miss.

Decision Framework

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
ScenarioFormatResolutionColor Mode
MicrographTIFF300 PPIRGB (ICC tagged)
PowerPoint chartPPT or TIFF600-900 DPIRGB
Schematic diagramEPS or PDFVector or 1,000 PPIRGB
Gel/blot imageTIFF300 PPIRGB
3D molecular modelPRC/U3D + TIFF300 PPI (2D fallback)RGB

Best Practices

  1. Convert CMYK to RGB before submission: PNAS returns CMYK files without review. Always verify color mode before upload using image metadata tools
  2. Tag RGB images with ICC profiles: Embedding the originating ICC profile ensures accurate color conversion during PNAS's print production pipeline
  3. Provide images at final publication size: PNAS requires figures sized to column widths (8.7/11.4/17.8 cm). Do not submit oversized images expecting the journal to resize
  4. Use italicized uppercase panel labels: PNAS uses a distinctive convention — A, B, C (italic, uppercase) — that differs from most other journals
  5. Embed all fonts in EPS and PDF files: Missing fonts cause rendering failures. Use vector text rather than rasterized text for clean scaling
  6. Prepare alt text for accessibility: Since Volume 123, PNAS includes alt text for all figures. Drafting alt text during figure preparation saves revision time
  7. Name processing software in Methods: PNAS requires explicit mention of all image processing software used, not just a general description of adjustments

Common Pitfalls

  1. Submitting figures in CMYK color mode: PNAS strictly rejects CMYK. This is the most common preventable rejection reason for figures
    • How to avoid: Run the color mode validation script on every figure before submission; convert CMYK to RGB
  2. Using 300 PPI for line art: Line art with bitmap text requires 1,000 PPI. At 300 PPI, thin lines and small text appear jagged
    • How to avoid: Classify each figure by type (halftone vs. line art vs. combination) and apply the correct resolution tier
  3. Submitting figures larger than publication size: PNAS requires images at final size, not oversized. Oversized figures may be rescaled, degrading quality
    • How to avoid: Set canvas size to the target column width before exporting
  4. Using non-italic panel labels: PNAS's italic uppercase convention (A, B, C) is unique. Non-italic labels signal unfamiliarity with the journal
    • How to avoid: Use fontstyle='italic' in matplotlib or the italic setting in Illustrator for panel labels
  5. Omitting multi-source composite indicators: When combining images from different experiments, PNAS requires explicit visual and textual indication
    • How to avoid: Use clear borders or spacing between composite elements and describe the composition in the figure legend

Pre-Submission Checklist

Before submitting figures to PNAS, verify:

  • Halftones at 300+ PPI; line art at 1,000+ PPI
  • File format is TIFF, EPS, or PDF
  • Color mode is RGB (NOT CMYK — will be rejected)
  • ICC profile tagged for accurate color conversion
  • Figure width matches column layout (8.7 / 11.4 / 17.8 cm)
  • Figure height does not exceed 22.5 cm
  • Images provided at final publication size
  • Font is Arial, Helvetica, or Times at 6-8 pt
  • All fonts embedded in EPS/PDF
  • Panel labels are italicized uppercase (A, B, C)
  • Text sizing consistent within each figure
  • All adjustments applied to entire image uniformly
  • Multi-source composites explicitly indicated in legend
  • Processing software named in Methods
  • Original unprocessed data available for review
  • Alt text prepared for accessibility

References

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

API + Python SDK for ordering cell-free protein expression and binding assays. Submit sequences for expression (10–100 µg), measure binding affinity (KD) against targets, track status, and retrieve results programmatically — no wet-lab setup. Built for ML-guided directed evolution and antibody/nanobody optimization. Requires Adaptyv account and API key.

日本語の概要は準備中です。原文の説明を表示しています。

jaechang-hits/SciAgent-Skills3762026年9月29日 更新

aeon

無料

scikit-learn compatible Python toolkit for time series ML: classify, cluster, regress, segment, transform with 30+ algorithms (ROCKET, InceptionTime, KNN-DTW, HIVE-COTE, WEASEL). Handles panel, multivariate, and unequal-length series. Maintained successor to sktime. Alternatives: sktime (larger ecosystem), tslearn (fewer algorithms), catch22 (features only).

日本語の概要は準備中です。原文の説明を表示しています。

jaechang-hits/SciAgent-Skills3762026年9月29日 更新

AiZynthFinder retrosynthetic route planning (CASP) from AstraZeneca Molecular AI. Monte Carlo tree search guided by a template-based neural expansion policy recursively disconnects a target SMILES until precursors are found in a purchasable stock. Covers config.yml (v4 format), aizynthcli batch screening, the AiZynthFinder/AiZynthExpander Python API, one-step disconnections, custom stocks via smiles2stock, scorers, Retro*/breadth-first/DFPN search alternatives, and reading output.json.gz / trees.json. Use for synthesis route planning, synthesizability screening, and building-block/precursor search. For reaction barriers use neb-irc-activation-energy; for 2D reaction scheme drawing use rdkit-chemdraw-cdxml.

日本語の概要は準備中です。原文の説明を表示しています。

jaechang-hits/SciAgent-Skills3762026年9月29日 更新

Access AlphaFold DB's 200M+ predicted structures by UniProt ID. Download PDB/mmCIF, analyze pLDDT/PAE, bulk-fetch proteomes via Google Cloud. For experimental structures use PDB; for prediction use ColabFold or ESMFold.

日本語の概要は準備中です。原文の説明を表示しています。

jaechang-hits/SciAgent-Skills3762026年9月29日 更新

Annotated matrices for single-cell genomics. Stores X with obs/var metadata, layers, embeddings (obsm/varm), graphs (obsp/varp), uns. Use for .h5ad/.zarr I/O, concatenation, scverse integration. For analysis use scanpy; for probabilistic models use scvi-tools.

日本語の概要は準備中です。原文の説明を表示しています。

jaechang-hits/SciAgent-Skills3762026年9月29日 更新

GRN inference from expression via GRNBoost2 (gradient boosting) or GENIE3 (Random Forest). Load matrix, filter by TFs, infer TF-target-importance links, save network. Dask-parallelized to single-cell scale. Core SCENIC component.

日本語の概要は準備中です。原文の説明を表示しています。

jaechang-hits/SciAgent-Skills3762026年9月29日 更新

jaechang-hits のスキルをすべて見る

このスキルの問題を報告する