# generate-peptides

## Usage:

`crux generate-peptides [options] <protein fasta file>`

## Description:

This command takes as input a protein FASTA file and outputs the corresponding list of peptides, as well as a matched list of decoy peptides and decoy proteins. Decoys are generated either by reversing or shuffling the non-terminal amino acids of each peptide. The program will shuffle each peptide multiple times to attempt to ensure that there is no overlap between the target and decoy peptides. For homopolymers, this is not possible. In this case, the occurrence of these target/decoy overlaps is recorded in the log file.

The program considers only the standard set of 20 amino acids. Peptides containing non-amino acid alphanumeric characters (BXZ) are skipped. Non-alphanumeric characters are ignored completely.

## Input:

- `protein fasta file` – The name of the file in FASTA format from which to retrieve proteins.

## Output:

The program writes files to the folder `crux-output` by default. The name of the output folder can be set by the user using the `--output-dir` option. The following files will be created:

- `generate-peptides.target.txt` – A text file containing the target peptides, one per line. Each line has three tab-delimited columns, containing the peptide sequence, the m+h mass of the unmodified peptide, and a comma-delimited list of protein IDs in which the peptide occurs.
- `generate-peptides.decoy.txt` – A text file containing the decoy peptides, one per line. Each line has three tab-delimited columns, containing the peptide sequence, the m+h mass of the unmodified peptide, and a comma-delimited list of protein IDs in which the peptide occurs. There is a one-to-one correspondence between targets and decoys.
- `generate-peptides.proteins.decoy.txt` – a FASTA format file containing decoy proteins, in which all of the peptides have been replaced with their shuffled or reversed counterparts. Note that this file will only be created if the enzyme specificity is "full-digest" and no missed cleavages are allowed.
- `generate-peptides.params.txt` – a file containing the name and value of all parameters/options for the current operation. Not all parameters in the file may have been used in the operation. The resulting file can be used with the --parameter-file option for other crux programs.
- `generate-peptides.log.txt` – a log file containing a copy of all messages that were printed to the screen during execution.

## Options:

- ### Peptide properties

  - `--min-mass <float>` – The minimum mass (in Da) of peptides to consider. Default = `200`.
  - `--max-mass <float>` – The maximum mass (in Da) of peptides to consider. Default = `7200`.
  - `--min-length <integer>` – The minimum length of peptides to consider. Default = `6`.
  - `--max-length <integer>` – The maximum length of peptides to consider. Default = `50`.
  - `--isotopic-mass average|mono` – Specify the type of isotopic masses to use when calculating the peptide mass. Default = `mono`.
  - `--clip-nterm-methionine T|F` – When set to T, for each protein that begins with methionine, tide-index will put two copies of the leading peptide into the index, with and without the N-terminal methionine. Default = `false`.

- ### Amino acid modifications

  - `--mod-precision <integer>` – Set the precision for modifications as written to .txt files. Default = `4`.

- ### Decoy database generation

  - `--seed <string>` – When given a unsigned integer value seeds the random number generator with that value. When given the string "time" seeds the random number generator with the system time. Default = `1`.
  - `--decoy-format none|shuffle|peptide-reverse` – Include a decoy version of every peptide by shuffling or reversing the target sequence or protein. In shuffle or peptide-reverse mode, each peptide is either reversed or shuffled, leaving the N-terminal and C-terminal amino acids in place. Note that peptides appear multiple times in the target database are only shuffled once. In peptide-reverse mode, palindromic peptides are shuffled. Also, if a shuffled peptide produces an overlap with the target or decoy database, then the peptide is re-shuffled up to 5 times. Note that, despite this repeated shuffling, homopolymers will appear in both the target and decoy database. Default = `shuffle`.
  - `--keep-terminal-aminos N|C|NC|none` – When creating decoy peptides using decoy-format=shuffle or decoy-format=peptide-reverse, this option specifies whether the N-terminal and C-terminal amino acids are kept in place or allowed to be shuffled or reversed. For a target peptide "EAMPK" with decoy-format=peptide-reverse, setting keep-terminal-aminos to "NC" will yield "EPMAK"; setting it to "C" will yield "PMAEK"; setting it to "N" will yield "EKPMA"; and setting it to "none" will yield "KPMAE". Default = `NC`.

- ### Enzymatic digestion

  - `--enzyme no-enzyme|trypsin|trypsin/p|chymotrypsin|elastase|clostripain|cyanogen-bromide|iodosobenzoate|proline-endopeptidase|staph-protease|asp-n|lys-c|lys-n|arg-c|glu-c|pepsin-a|elastase-trypsin-chymotrypsin|lysarginase|custom-enzyme` – Specify the enzyme used to digest the proteins in silico. Available enzymes (with the corresponding digestion rules indicated in parentheses) include no-enzyme ([X]|[X]), trypsin ([RK]|{P}), trypsin/p ([RK]|[]), chymotrypsin ([FWYL]|{P}), elastase ([ALIV]|{P}), clostripain ([R]|[]), cyanogen-bromide ([M]|[]), iodosobenzoate ([W]|[]), proline-endopeptidase ([P]|[]), staph-protease ([E]|[]), asp-n ([]|[D]), lys-c ([K]|{P}), lys-n ([]|[K]), arg-c ([R]|{P}), glu-c ([DE]|{P}), pepsin-a ([FL]|{P}), elastase-trypsin-chymotrypsin ([ALIVKRWFY]|{P}), lysarginase ([]|[KR]). Specifying --enzyme no-enzyme yields a non-enzymatic digest. Warning: the resulting index may be quite large. Default = `trypsin`.
  - `--custom-enzyme <string>` – Specify rules for in silico digestion of protein sequences. Overrides the enzyme option. Two lists of residues are given enclosed in square brackets or curly braces and separated by a |. The first list contains residues required/prohibited before the cleavage site and the second list is residues after the cleavage site. If the residues are required for digestion, they are in square brackets, '[' and ']'. If the residues prevent digestion, then they are enclosed in curly braces, '{' and '}'. Use X to indicate all residues. For example, trypsin cuts after R or K but not before P which is represented as [RK]|{P}. AspN cuts after any residue but only before D which is represented as [X]|[D]. To prevent the sequences from being digested at all, use {X}|{X}. Default = `<empty>`.
  - `--digestion full-digest|partial-digest|non-specific-digest` – Specify whether every peptide in the database must have two enzymatic termini (full-digest) or if peptides with only one enzymatic terminus are also included (partial-digest). Default = `full-digest`.
  - `--missed-cleavages <integer>` – Maximum number of missed cleavages per peptide to allow in enzymatic digestion. Default = `0`.

- ### Input and output

  - `--decoy-prefix <string>` – Specifies the prefix of the protein names that indicate a decoy. Default = `decoy_`.
  - `--overwrite T|F` – Replace existing files if true or fail when trying to overwrite a file if false. Default = `false`.
  - `--fileroot <string>` – The fileroot string will be added as a prefix to all output file names. Default = `<empty>`.
  - `--output-dir <string>` – The name of the directory where output files will be created. Default = `crux-output`.
  - `--parameter-file <string>` – A file containing parameters. See the parameter documentation page for details. Default = `<empty>`.
  - `--verbosity <integer>` – Specify the verbosity of the current processes. Each level prints the following messages, including all those at lower verbosity levels: 0-fatal errors, 10-non-fatal errors, 20-warnings, 30-information on the progress of execution, 40-more progress information, 50-debug info, 60-detailed debug info. Default = `30`.