# Měření

Kromě dříve zmíněného omezení na počet m-c lze omezit také délku a hmotnost vzniklých peptidů (v případě dipeptidu se délkou omezuje délka jednotlivých peptidů, ale hmotností se omezuje hmotnost celku). Dále se zde volí, zda je požadováno vygenerovat všechny peptidy, které mohou teoreticky vzniknout, nebo zda mají být možné peptidy profiltrovány souborem měření a pokusit se tak identifikovat jednotlivé hmoty z tohoto souboru - v takovém případě se dále volí absolutní, nebo relativní tolerance, s jakou chybou lze ještě považovat hmotu za identifikovanou. (Neměla by se u výsledků zobrazovat chyba absolutní nebo relativní podle toho, co zde zvolili?)

## Filtrování

Vlastní formáty jsou načítány ze souboru `measurements.prs` (editace z programu přes menu `Databases → Measurements`, resp. `Ctrl+F`). Zadefinovat lze formáty obsahující data ve sloupcích, které lze rozdělit při použití regulárních výrazů (Documentation, Lessons). Jde tak o zobecnění souborů typu delimiter-separated value s tím rozdílem, že kromě jednoho konkrétního znaku lze pro rozdělení sloupců použít regulární výraz. Pokud potřebujete načítat komplexnější formáty, které takto zadefinovat nelze, kontaktujte prosím tvůrce programu (TODO: Link na stránku s kontakty.) s definicí formátu (nejběžnější verze Mascot Generic File již rozpoznávány jsou).

V případě definování vlastního formátu je potřeba definovat:

- Jméno. TODO: Zjistit, jaké vlastně vyžaduji omezení.
- Separátor sloupců. Definuje se pomocí regulárních výrazů (Documentation, Lessons).
- Přípona jména souboru pro automatické přiřazení souborů měření v tomto formátu. (TODO: Je aktuálně nutná? Pokud ano, není to zbytečné?
- Index hmoty - kladné celé číslo určující, který sloupec v souboru měření obsahuje naměřenou hmotu.
- Indexy intenzity a retenčního času - nezáporná celá čísla. Kladné číslo určuje příslušný sloupec, nula je chápána tak, že záznamy příslušnou informaci neobsahují.

Hmotu i intenzitu musí být ze souboru měření možné načíst pomocí `Double.valueOf`, t.j. používat desetinnou tečku a nepoužívat separátor tisíců. Retenční čas může být libovolný řetězec, je tedy možné použít různě definované intervaly, sjednocení atd. Pokud obsahuje soubor měření i hlavičku, doporučuje se používat co nejpřesnější definici formátu, aby se minimalizoval počet řádků hlavičky, které lze chybně interpretovat jako hmoty měření (t.j. zejména nevynechávat definici sloupců intenzity a retenčního času, pokud je příslušné soubory obsahují v zadefinovatelné formě).

Je možné zvolit více souborů měření současně a každý může být jiného formátu.

### MGF

Pobavit se nad specifikací

- Řádek začínající `#`, `;`, `!`, `/`, `BEGIN IONS` nebo `END IONS`:
  - obsahuje-li `i[-j]min`, kde `i` a `j` jsou desetinná čísla ve formátu s desetinnou tečkou a bez separátoru řádů, je toto číslo resp. interval interpretován jako retenční čas následujících záznamů.
  - jinak jsou přeskočeny.
- Začíná-li řádek `RTINSECONDS` nebo `SCANS` a zároveň obsahuje '`=`', je zbytek načten jako retenční čas následujících záznamů, dokud není předefinován dalším záznamem. (Co když je uvedeno `RTINSECONDS` i `SCANS` současně?)
- Pokud řádek obsahuje pouze desetinné číslo ve formátu s desetinnou tečkou a bez oddělovače řádů, je interpretováno jako hmota.
- Pokud řádek po rozdělení tabulátory obsahuje v prvních dvou polích desetinná čísla (desetinná tečka, bez oddělovače řádů), pak:
  - první pole je interpretováno jako hmota;
  - druhé pole je interpretováno jako intenzita;
  - pokud řádek dále obsahuje pole začínající '`rt=`', je zbytek pole interpretován jako retenční čas;
  - zbytek polí je sloučen do pole `Other`.