# Proteins

## Název

Název proteinu by neměl být delší než 30 znaků a nesmí začínat řetězci "`peptide`", "`all proteins`" nebo "`within one molecule`" nezávisle na velikosti a nesmí obsahovat pomlčku '`-`' ani kulaté, hranaté nebo složené závorky '`(`', '`)`', '`[`', '`]`', '`{`' a '`}`'.

## Indexace (tipy na vhodnější název?)

'Starting index' je celé číslo, které udává posun první aminokyseliny zadaného řetězce.

'From' a 'to' určují, zda má být použit celý protein, nebo pouze jeho část. Prázdné pole 'from' znamená, že se protein vezme od začátku; prázdné pole 'to' znamená, že se protein vezme do konce. (TODO: Když se změní shift, mělo by se změnit i from-to? Připojit k jménu proteinu pro označení různých výřezů dále v programu?)

## Sekvence

Protein je řetězec jednopísmenných kódů aminokyselin - defaultně FASTA kódy (pouze písmena) včetně zkratek (např. `X` značí libovolnou aminokyselinu). Lomítkem '`/`' lze oddělit více možností, nejsou-li některé pozice jednoznačné (např. protein `AC/DM...` může mít na druhé pozici aminokyselinu `C` nebo `D`). Na velikosti písmen nezáleží.

### Abeceda

Aminokyseliny jsou definovány v souboru `monomers.prs` ve složce `Properties`. Písmenné kódy aminokyselin mohou reprezentovat:

1. Aminokyselinu, pak je zadána
   - hmota aminokyseliny: `{Znak}={hmota - používá se desetinná tečka a nepouživá se oddělovač řádů}\t{název}`; nebo
   - chemický vzorec aminokyseliny (bez vody): `{Znak}={chemický vzorec}\t{název}`.
2. Skupinu aminokyselin, pak jsou zadány jednopísmenné kódy aminokyselin, které mají být reprezentovány: `{Znak}=\t{název}\t{aminokyseliny}`.

Název aminokyseliny by neměl obsahovat závorky. V souboru je zároveň zadefinován N-terminus jako '`^`' a C-terminus jako '`$`'.

Chemické prvky použité k definování hmoty aminokyseliny musí být zadefinované v souboru `elements.prs` (editace z programu přes menu `Databases → Elements`, resp. `Ctrl+E`). Značka chemického prvku obsahuje první písmeno velké, zbylé znaky musí být malé. Hmota musí být zadefinována číselně, používá se desetinná tečka a nepouživá se oddělovač řádů. Hmoty aktuálně zadefinovaných prvků jsou převzaty z Atomic weights of the elements. Review 2000 (IUPAC Technical Report). V souboru je navíc zadefinován znak + vyjadřující náboj navěšený kvůli měření. Jeho hmota je převzata z National Institute of Standards and Technology.

## Načtení proteinu

Protein může být načten ze souboru. Pokud první řádek začíná znakem '`>`', je soubor interpretován jako `FASTA` soubor a v případě, že obsahuje více definic, je dáno na výběr, zda mají být načteny všechny, nebo jedna konkrétní. Jinak je jako protein načten maximální souvislý blok neprázdných řádků ze začátku souboru. TODO: Načítat ze settings souboru; je-li jich tam více, dát na výběr