---
title: AAV inputs and parameters
description: 'Target tissue, serotype and payload limit for the literature lookup; a protein sequence for the optimizer. No species, route or promoter parameter exists.'
tags:
  - aav
  - inputs
---

The two AAV tools answer different questions and share only one parameter. `aav_capsid_select` is a **literature lookup**: you name a tissue and it returns what published studies reported for each serotype, with the model and citation per entry. `aav_transgene_optimize` is a codon optimizer: you give it a protein sequence and it reverse-translates and optimizes the coding sequence.

> **Capsid selection does not rank anything**

> There is no scoring, no ranking and no recommendation. The tool returns records and citations and leaves the judgement to you. Two consequences worth holding on to: a tissue **no source reports** is absent from the result rather than scored zero, so absence is missing evidence and not evidence of absence; and tropism reported in one species does not transfer to another, so read the model each entry was observed in before you carry a number across.

## Capsid selection (`aav_capsid_select`)

- `target_tissue` (string) —
Tissue to look up reported tropism for: `cns`, `eye`, `heart`, `liver`, `lung` or `muscle`. Aliases such as `brain` or `retina` are accepted and mapped.

- `serotype_preference` (string) —
A specific serotype to return the full record for, e.g. `AAV9` or `AAV-PHP.eB`. It does not promote that serotype in any ordering, because there is no ordering — it selects which record you get back in full.

- `max_payload_kb` (number) —
Payload size in kb, checked against the ~4.7 kb AAV packaging limit (Wu et al., Mol Ther 2010;18:80-86). Omit it on the backend and no packaging verdict is returned at all; the tool sends 4.7 when you do not set it, so you get the verdict against the standard limit by default.

## Transgene optimization (`aav_transgene_optimize`)

- `transgene_sequence` (string) —
The **protein** sequence to reverse-translate and codon-optimize. This is an amino-acid sequence, not DNA — the tool produces the DNA. A trailing `*` stop codon is stripped, and whitespace is ignored.

⛔ **DNA is not rejected, it is mis-read.** Nothing validates this field, and `A`, `C`, `G` and `T` are all valid amino-acid letters, so a nucleotide sequence is reverse-translated as though it were a four-residue protein. The job succeeds, `protein_length_aa` comes back equal to your base count, and the optimized sequence is about three times the length you sent. Check `protein_length_aa` against the residue count you expected before trusting any run.

- `max_payload_kb` (number) —
The same packaging check as above, applied to the optimized construct.

### What the optimizer actually enforces

The run is DnaChisel with a fixed set of constraints, none of which you configure:

- Translation fidelity is enforced — the optimized DNA encodes your protein unchanged.
- GC content is held to 40–60% in a 60-nt sliding window.
- The common restriction sites `BsmBI`, `BsaI`, `EcoRI` and `BamHI` are avoided.
- Codon usage is optimized for *Homo sapiens*, and the codon table is **fixed** — there is no species parameter.

## What these tools do not take

Nothing here designs an expression cassette. The backend optimizes the coding sequence only, so there is no parameter for a **promoter**, a **polyadenylation signal**, or regulatory elements such as **WPRE**, an intron or a Kozak sequence — and none is silently accepted either. Choose those yourself and assemble the cassette around the sequence this tool returns.

Capsid selection likewise takes no **species**, **route of administration** or **neutralizing-antibody profile** input. Species is reported per entry from the literature rather than requested, seroprevalence comes from the cited studies where one exists, and route is not modelled.

## Read next
