# The `apps`

`cogent3` comes with pre-defined “apps”. These are capabilities that can be used by themselves, or added together to define a pipeline. Apps that can be combined into a pipeline are called composable.

## Overview

- Warning – apps are alpha!
- Overview of using apps
- Specifying data for analysis
- Tracking records that could not be processed
- What apps are there?

## The `progressive_align` App

`cogent3` has a built-in progressive aligner. This is a tree-based HMM aligner that can use any `cogent3` substitution model.

- Using a nucleotide model
- Using a codon model
- Using a protein model

## The `model` App

`cogent3` possesses unique capabilities for molecular evolutionary analyses. Of particular significance are our non-stationary model classes and the associated measurement of genetic distance from these. That said, we also implement most of the conventional substitution models. See `cogent3.available_models()` for a display of the built-in models.

You can use these models either through the general `model` app, or some task specific apps. Both are described below.

- Apply a non-stationary nucleotide model to an alignment with 3 sequences
- Apply a non-stationary nucleotide model to an alignment with a tree
- Specifying a non-stationary model with time-heterogeneous parameters
- Extracting maximum likelihood estimates from a `model_result`
- Reconstructing ancestral states
- Applying a discrete-time, non-stationary nucleotide model
- Applying a time-reversible nucleotide model
- Applying GNC, a non-stationary codon model
- Applying a time-reversible codon model

## The `hypothesis` App

Takes two (or more) `model` instances and performs hypothesis test.

- Testing a hypothesis – non-stationary or time-reversible

## The `natsel` Apps

These apps all employ codon models to evaluate different types of hypotheses regarding the mode of natural selection.

- `natsel_neutral` – a test for selective neutrality
- `natsel_timehet` – a test of branch heterogeneity
- `natsel_sitehet` – a test of site heterogeneity
- `natsel_zhang` – a branch-site test

## The `user_function` Apps

These apps are capable to wrap another user specified function

- Turn your functions into composable apps