---
name: "gt-select"
section: "1"
platform: "linux"
package: "genometools"
version: "1.6.5+ds-2.2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/gt-select"
---

# gt-select(1)

Select certain features (specified by the used options) from given GFF3 file(s).

## NAME

gt-select - Select certain features (specified by the used options) from given GFF3 file(s).

## SYNOPSIS

**gt select** \[option ...\] \[GFF3\_file ...\]

## DESCRIPTION

- **-retainids** \[*yes\|no*\]

  when available, use the original IDs provided in the source file (memory consumption is proportional to the input file size(s)) (default: no)

- **-seqid** \[*string*\]

  select feature with the given sequence ID (all comments are selected). (default: undefined)

- **-source** \[*string*\]

  select feature with the given source (the source is column 2 in regular GFF3 lines) (default: undefined)

**-contain** \[*start* *end*\]

select all features which are contained in the given range (default: undefined)

**-overlap** \[*start* *end*\]

select all features which do overlap with the given range (default: undefined)

- **-strand** \[*string*\]

  select all top-level features(i.e., features without parents) whose strand equals the given one (must be one of *+-.?*) (default: undefined)

- **-targetstrand** \[*string*\]

  select all top-level features (i.e., features without parents) which have exactly one target attribute whose strand equals the given one (must be one of *+-.?*) (default: undefined)

- **-targetbest** \[*yes\|no*\]

  if multiple top-level features (i.e., features without parents) with exactly one target attribute have the same target\_id, keep only the feature with the best score. If -targetstrand is used at the same time, this option is applied after -targetstrand. Memory consumption is proportional to the input file size(s). (default: no)

- **-hascds** \[*yes\|no*\]

  select all top-level features which do have a CDS child (default: no)

- **-maxgenelength** \[*value*\]

  select genes up to the given maximum length (default: undefined)

- **-maxgenenum** \[*value*\]

  select the first genes up to the given maximum number (default: undefined)

- **-mingenescore** \[*value*\]

  select genes with the given minimum score (default: undefined)

- **-maxgenescore** \[*value*\]

  select genes with the given maximum score (default: undefined)

- **-minaveragessp** \[*value*\]

  set the minimum average splice site probability (default: undefined)

- **-rule\_files**

  specify Lua filter rule files to be used for selection (terminate list with *--*)

- **-rule\_logic** \[*...*\]

  select how multiple Lua files should be combined choose from AND\|OR (default: AND)

- **-dropped\_file** \[*filename*\]

  save non-selected features to file (default: undefined)

- **-v** \[*yes\|no*\]

  be verbose (default: no)

- **-o** \[*filename*\]

  redirect output to specified file (default: undefined)

- **-gzip** \[*yes\|no*\]

  write gzip compressed output file (default: no)

- **-bzip2** \[*yes\|no*\]

  write bzip2 compressed output file (default: no)

- **-force** \[*yes\|no*\]

  force writing to output file (default: no)

- **-help**

  display help and exit

- **-version**

  display version information and exit

File format for option *-rule\_files*:

The files supplied to option *-rule\_files* define a function for filtering by user given criteria (see example below):

```
function filter(gn)
  target = "exon"
  for curnode in gn:children() do
    if (curnode:get_type() == target) then
      return false
    end
  end
  return true
end
```

The above function iterates over all children of *gn* and checks whether there is a node of type *exon*. If there is such a node the function returns *false*, indicating that the parent node *gn* will not be sorted out.

NOTE: The function must be named *filter* and must return *false*, indicating that the node survived the filtering process.

## REPORTING BUGS

Report bugs to https://github.com/genometools/genometools/issues.
