Beginning of the documentation

This commit is contained in:
2022-11-17 11:16:12 +01:00
parent 29563aa94e
commit 95b28a6612
35 changed files with 4935 additions and 0 deletions

229
doc/01_OBITools_doc.Rmd Normal file
View File

@ -0,0 +1,229 @@
# The OBITools
## Aims of *OBITools*
## File formats usable with *OBITools*
### The sequence files
Sequences can be stored following various format. OBITools knows some of
them. The central formats for sequence files manipulated by OBITools
scripts are the `fasta` and fastq format. OBITools extends the both
these formats by specifying a syntax to include in the definition line
data qualifying the sequence. All file formats use the `IUPAC` code for
encoding nucleotides.
### The IUPAC Code
The International Union of Pure and Applied Chemistry (IUPAC\_) defined
the standard code for representing protein or DNA sequences.
#### Nucleic IUPAC Code {#DNA-IUPAC}
| **Code** | **Nucleotide** |
|----------|-----------------------------|
| A | Adenine |
| C | Cytosine |
| G | Guanine |
| T | Thymine |
| U | Uracil |
| R | Purine (A or G) |
| Y | Pyrimidine (C, T, or U) |
| M | C or A |
| K | T, U, or G |
| W | T, U, or A |
| S | C or G |
| B | C, T, U, or G (not A) |
| D | A, T, U, or G (not C) |
| H | A, T, U, or C (not G) |
| V | A, C, or G (not T, not U) |
| N | Any base (A, C, G, T, or U) |
### The *fasta* format {#classical-fasta}
The **fasta format** is certainly the most widely used sequence file
format. This is certainly due to its great simplicity. It was originally
created for the Lipman and Pearson [FASTA
program](http://www.ncbi.nlm.nih.gov/pubmed/3162770?dopt=Citation).
OBITools use in more of the classical :ref:`fasta` format an
:ref:`extended version` of this format where structured data are
included in the title line.
In *fasta* format a sequence is represented by a title line beginning
with a **`>`** character and the sequences by itself following the
:doc:`iupac` code. The sequence is usually split other severals lines of
the same length (expect for the last one)
>my_sequence this is my pretty sequence
ACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGT
GTGCTGACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTGTTT
AACGACGTTGCAGTACGTTGCAGT
This is no special format for the title line excepting that this line
should be unique. Usually the first word following the **\>** character
is considered as the sequence identifier. The end of the title line
corresponding to a description of the sequence. Several sequences can be
concatenated in a same file. The description of the next sequence is
just pasted at the end of the record of the previous one
>sequence_A this is my first pretty sequence
ACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGT
GTGCTGACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTGTTT
AACGACGTTGCAGTACGTTGCAGT
>sequence_B this is my second pretty sequence
ACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGT
GTGCTGACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTGTTT
AACGACGTTGCAGTACGTTGCAGT
>sequence_C this is my third pretty sequence
ACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGT
GTGCTGACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTGTTT
AACGACGTTGCAGTACGTTGCAGT
### The *fastq* sequence format {#classical-fastq}
.. note::
This article uses material from the Wikipedia article
`FASTQ format `
which is released under the
`Creative Commons Attribution-Share-Alike License 3.0 `
**fastq format** is a text-based format for storing both a biological
sequence (usually nucleotide sequence) and its corresponding quality
scores. Both the sequence letter and quality score are encoded with a
single ASCII character for brevity. It was originally developed at the
`Wellcome Trust Sanger Institute` to bundle a [fasta](#classical-fasta)
sequence and its quality data, but has recently become the *de facto*
standard for storing the output of high throughput sequencing
instruments such as the Illumina Genome Analyzer Illumina. [1]\_
#### Format
A fastq file normally uses four lines per sequence.
- Line 1 begins with a '\@' character and is followed by a sequence
identifier and an *optional* description (like a :ref:`fasta` title
line).
- Line 2 is the raw sequence letters.
- Line 3 begins with a '+' character and is *optionally* followed by
the same sequence identifier (and any description) again.
- Line 4 encodes the quality values for the sequence in Line 2, and
must contain the same number of symbols as letters in the sequence.
A fastq file containing a single sequence might look like this:
@SEQ_ID
GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT
+
!''*((((***+))%%%++)(%%%%).1***-+*''))**55CCF>>>>>>CCCCCCC65
The character '!' represents the lowest quality while '\~' is the
highest. Here are the quality value characters in left-to-right
increasing order of quality (`ASCII`):
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
The original Sanger FASTQ files also allowed the sequence and quality
strings to be wrapped (split over multiple lines), but this is generally
discouraged as it can make parsing complicated due to the unfortunate
choice of "\@" and "+" as markers (these characters can also occur in
the quality string).
#### Variations
##### Quality
A quality value *Q* is an integer mapping of *p* (i.e., the probability
that the corresponding base call is incorrect). Two different equations
have been in use. The first is the standard Sanger variant to assess
reliability of a base call, otherwise known as Phred quality score:
$$
Q_\text{sanger} = -10 \, \log_{10} p
$$
The Solexa pipeline (i.e., the software delivered with the Illumina
Genome Analyzer) earlier used a different mapping, encoding the odds
$\mathbf{p}/(1-\mathbf{p})$ instead of the probability $\mathbf{p}$:
$$
Q_\text{solexa-prior to v.1.3} = -10 \, \log_{10} \frac{p}{1-p}
$$
Although both mappings are asymptotically identical at higher quality
values, they differ at lower quality levels (i.e., approximately
$\mathbf{p} > 0.05$, or equivalently, $\mathbf{Q} < 13$).
\|Relationship between *Q* and *p* using the Sanger (red) and Solexa
(black) equations (described above). The vertical dotted line indicates
$\mathbf{p}= 0.05$, or equivalently, $Q = 13$.\|
#### Encoding
- Sanger format can encode a Phred quality score from 0 to 93 using
ASCII 33 to 126 (although in raw read data the Phred quality score
rarely exceeds 60, higher scores are possible in assemblies or read
maps).
- Solexa/Illumina 1.0 format can encode a Solexa/Illumina quality
score from -5 to 62 using ASCII 59 to 126 (although in raw read data
Solexa scores from -5 to 40 only are expected)
- Starting with Illumina 1.3 and before Illumina 1.8, the format
encoded a Phred quality score from 0 to 62 using ASCII 64 to 126
(although in raw read data Phred scores from 0 to 40 only are
expected).
- Starting in Illumina 1.5 and before Illumina 1.8, the Phred scores 0
to 2 have a slightly different meaning. The values 0 and 1 are no
longer used and the value 2, encoded by ASCII 66 "B".
Sequencing Control Software, Version 2.6, Catalog \# SY-960-2601, Part
\# 15009921 Rev. A, November
2009] [[http://watson.nci.nih.gov/solexa/Using_SCSv2.6_15009921_A.pdf\\\\](http://watson.nci.nih.gov/solexa/Using_SCSv2.6_15009921_A.pdf\){.uri}]([http://watson.nci.nih.gov/solexa/Using_SCSv2.6_15009921_A.pdf\\](http://watson.nci.nih.gov/solexa/Using_SCSv2.6_15009921_A.pdf)%7B.uri%7D){.uri}
(page 30) states the following: *If a read ends with a segment of mostly
low quality (Q15 or below), then all of the quality values in the
segment are replaced with a value of 2 (encoded as the letter B in
Illumina's text-based encoding of quality scores)... This Q2 indicator
does not predict a specific error rate, but rather indicates that a
specific final portion of the read should not be used in further
analyses.* Also, the quality score encoded as "B" letter may occur
internally within reads at least as late as pipeline version 1.6, as
shown in the following example:
@HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1
TTAATTGGTAAATAAATCTCCTAATAGCTTAGATNTTACCTTNNNNNNNNNNTAGTTTCTTGAGATTTGTTGGGGGAGACATTTTTGTGATTGCCTTGAT
+HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1
efcfffffcfeefffcffffffddf`feed]`]_Ba_^__[YBBBBBBBBBBRTT\]][]dddd`ddd^dddadd^BBBBBBBBBBBBBBBBBBBBBBBB
An alternative interpretation of this ASCII encoding has been proposed.
Also, in Illumina runs using PhiX controls, the character 'B' was
observed to represent an "unknown quality score". The error rate of 'B'
reads was roughly 3 phred scores lower the mean observed score of a
given run.
- Starting in Illumina 1.8, the quality scores have basically returned
to the use of the Sanger format (Phred+33).
## File extension
There is no standard file extension for a FASTQ file, but .fq and
.fastq, are commonly used.
## See also
- :ref:`fasta`
## References
.. [1] Cock et al (2009) The Sanger FASTQ file format for sequences with
quality scores, and the Solexa/Illumina FASTQ variants. Nucleic Acids
Research,
.. [2] Illumina Quality Scores, Tobias Mann, Bioinformatics, San Diego,
Illumina `1`\_\_
.. \|Relationship between *Q* and *p* using the Sanger (red) and Solexa
(black) equations (described above). The vertical dotted line indicates
*p* = 0.05, or equivalently, *Q* Å 13.\| image:: Probability metrics.png
See <http://en.wikipedia.org/wiki/FASTQ_format>

95
doc/02_OBITools_doc.Rmd Normal file
View File

@ -0,0 +1,95 @@
# The *OBITools* commands
## Specifying the input files to *OBITools* commands
## Options common to most of the *OBITools* commands
### Specifying input format
Five sequence formats are accepted for input files. [Fasta](#fasta-classical "Fasta format description") and [Fastq](#fastq-classical "Fastq format description") are the main ones, EMBL and Genbank allow the use of flat files produced by these two international databases. The last one, ecoPCR, is maintained for compatibility with previous *OBITools* and allows to read *ecoPCR* outputs as sequence files.
- `--ecopcr` : Read data following the *ecoPCR* output format.
- `--embl` Read data following the *EMBL* flatfile format.
- `--genbank` Read data following the *Genbank* flatfile format.
Several encoding schemes have been proposed for quality scores in [Fastq](#fastq-classical "Fastq format description") format. Currently, *OBITools* considers Sanger encoding as the standard. For reasons of compatibility with older datasets produced with *Solexa* sequencers, it is possible, by using the following option, to force the use of the corresponding quality encoding scheme when reading these older files.
- `--solexa` Decodes quality string according to the Solexa specification. (default: false)
### Specifying output format
Only two output sequence formats are supported by OBITools, Fasta and Fastq. Fastq is used when output sequences are associated with quality information. Otherwise, Fasta is the default format. However, it is possible to force the output format by using one of the following two options. Forcing the use of Fasta results in the loss of quality information. Conversely, when the Fastq format is forced with sequences that have no quality data, dummy qualities set to 40 for each nucleotide are added.
- `--fasta-output` Read data following the ecoPCR output format.
- `--fastq-output` Read data following the EMBL flatfile format.
OBITools allows multiple input files to be specified for a single command.
- `--no-order` When several input files are provided, indicates that there is no order among them. (default: false)
### Format of the annotations in Fasta and Fastq files
OBITools extend the [Fasta](#fasta-classical "Fasta format description") and [Fastq](#fastq-classical "Fastq format description") formats by introducing a format for the title lines of these formats allowing to annotate every sequence. While the previous version of OBITools used an *ad-hoc* format for these annotation, this new version introduce the usage of the standard JSON format to store them.
On input, OBITools automatically recognize the format of the annotations, but two options allows to force the parsing following one of them. You should normally not need to use these options.
- `--input-OBI-header` FASTA/FASTQ title line annotations follow OBI format. (default: false)
- `--input-json-header` FASTA/FASTQ title line annotations follow json format. (default: false)
On output, by default annotation are formatted using the new JSON format. For compatibility with previous version of OBITools and with external scripts and software, it is possible to force the usage of the previous OBITools format.
- `--output-OBI-header|-O` output FASTA/FASTQ title line annotations follow OBI format. (default: false)
- `--output-json-header` output FASTA/FASTQ title line annotations follow json format. (default: false)
#### System related options
- `--debug` (default: false)
- `--help\|-h\|-?` (default: false)
- `--max-cpu <int>` Number of parallele threads computing the result (default: 10)
- `--workers\|-w <int>` Number of parallele threads computing the result (default: 9)
## Metabarcode design and quality assessment
#### `obipcr`
> Replace the `ecoPCR` original *OBITools*
## File format conversions
#### `obiconvert`
## Sequence annotations
#### `obitag`
## Computations on sequences
### `obipairing`
> Replace the `illuminapairedends` original *OBITools*
#### `obimultiplex`
> Replace the `ngsfilter` original *OBITools*
#### `obicomplement`
#### `obiclean`
#### `obiuniq`
## Sequence sampling and filtering
#### `obigrep`
### Utilities
#### `obicount`
#### `obidistribute`
#### `obifind`
> Replace the `ecofind` original *OBITools.*

157
doc/03_OBITools_doc.Rmd Normal file
View File

@ -0,0 +1,157 @@
# Reference documentation for the GO *OBITools* library
## BioSequence
The `BioSequence` class is used to represent biological sequences. It
allows for storing : - the sequence itself as a `[]byte` - the
sequencing quality score as a `[]byte` if needed - an identifier as a
`string` - a definition as a `string` - a set of *(key, value)* pairs in
a `map[sting]interface{}`
BioSequence is defined in the obiseq module and is included using the
code
``` go
import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq"
)
```
### Creating new instances
To create new instance, use
- `MakeBioSequence(id string, sequence []byte, definition string) obiseq.BioSequence`
- `NewBioSequence(id string, sequence []byte, definition string) *obiseq.BioSequence`
Both create a `BioSequence` instance, but when the first one returns the
instance, the second returns a pointer on the new instance. Two other
functions `MakeEmptyBioSequence`, and `NewEmptyBioSequence` do the same
job but provide an uninitialized objects.
- `id` parameters corresponds to the unique identifier of the
sequence. It mist be a string constituted of a single word (not
containing any space).
- `sequence` is the DNA sequence itself, provided as a `byte` array
(`[]byte`).
- `definition` is a `string`, potentially empty, but usualy containing
a sentence explaining what is that sequence.
``` go
import (
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq"
)
func main() {
myseq := obiseq.NewBiosequence(
"seq_GH0001",
bytes.FromString("ACGTGTCAGTCG"),
"A short test sequence",
)
}
```
When formated as fasta the parameters correspond to the following schema
>id definition containing potentially several words
sequence
### End of life of a `BioSequence` instance
When a `BioSequence` instance is no more used, it is normally taken in
charge by the GO garbage collector. You can if you want call the
`Recycle` method on the instance to store the allocated memory element
in a `pool` to limit allocation effort when many sequences are
manipulated.
### Accessing to the elements of a sequence
The different elements of an `obiseq.BioSequence` must be accessed using
a set of methods. For the three main elements provided during the
creation of a new instance methodes are :
- `Id() string`
- `Sequence() []byte`
- `Definition() string`
It exists pending method to change the value of these elements
- `SetId(id string)`
- `SetSequence(sequence []byte)`
- `SetDefinition(definition string)`
``` go
import (
"fmt"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq"
)
func main() {
myseq := obiseq.NewBiosequence(
"seq_GH0001",
bytes.FromString("ACGTGTCAGTCG"),
"A short test sequence",
)
fmt.Println(myseq.Id())
myseq.SetId("SPE01_0001")
fmt.Println(myseq.Id())
}
```
#### Different ways for accessing an editing the sequence
If `Sequence()`and `SetSequence(sequence []byte)` methods are the basic
ones, several other methods exist.
- `String() string` return the sequence directly converted to a
`string` instance.
- The `Write` method family allows for extending an existing sequence
following the buffer protocol.
- `Write(data []byte) (int, error)` allows for appending a byte
array on 3' end of the sequence.
- `WriteString(data string) (int, error)` allows for appending a
`string`.
- `WriteByte(data byte) error` allows for appending a single
`byte`.
The `Clear` method empties the sequence buffer.
``` go
import (
"fmt"
"git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq"
)
func main() {
myseq := obiseq.NewEmptyBiosequence()
myseq.WriteString("accc")
myseq.WriteByte(byte('c'))
fmt.Println(myseq.String())
}
```
#### Sequence quality scores
Sequence quality scores cannot be initialized at the time of instance
creation. You must use dedicated methods to add quality scores to a
sequence.
To be coherent the length of both the DNA sequence and que quality score
sequence must be equal. But assessment of this constraint is realized.
It is of the programmer responsability to check that invariant.
While accessing to the quality scores relies on the method
`Quality() []byte`, setting the quality need to call one of the
following method. They run similarly to their sequence dedicated
conterpart.
- `SetQualities(qualities Quality)`
- `WriteQualities(data []byte) (int, error)`
- `WriteByteQualities(data byte) error`
In a way analogous to the `Clear` method, `ClearQualities()` empties the
sequence of quality scores.

82
doc/04_OBITools_doc.Rmd Normal file
View File

@ -0,0 +1,82 @@
# Annexes
### Sequence attributes
#### Reserved sequence attributes
##### `ali_dir`
###### Type : `string`
The attribute can contain 2 string values `"left"` or `"right".`
###### Set by the *obipairing* tool
The alignment generated by *obipairing* is a 3'-end gap free algorithm.
Two cases can occur when aligning the forward and reverse reads. If the
barcode is long enough, both the reads overlap only on their 3' ends. In
such case, the alignment direction `ali_dir` is set to *left*. If the
barcode is shorter than the read length, the paired reads overlap by
their 5' ends, and the complete barcode is sequenced by both the reads.
In that later case, `ali_dir` is set to *right*.
##### `ali_length`
###### Set by the *obipairing* tool
Length of the aligned parts when merging forward and reverse reads
##### `count` : the number of sequence occurrences
###### Set by the *obiuniq* tool
The `count` attribute indicates how-many strictly identical sequences
have been merged in a single record. It contains an integer value. If it
is absent this means that the sequence record represents a single
occurrence of the sequence.
###### Getter : method `Count()`
The `Count()` method allows to access to the count attribute as an
integer value. If the `count` attribute is not defined for the given
sequence, the value *1* is returned
##### `merged_*`
###### Type : `map[string]int`
###### Set by the *obiuniq* tool
The `-m` option of the *obiuniq* tools allows for keeping track of the
distribution of the values stored in given attribute of interest. Often
this option is used to summarise distribution of a sequence variant
accross samples when *obiuniq* is run after running *obimultiplex*. The
actual name of the attribute depends on the name of the monitored
attribute. If `-m` option is used with the attribute *sample*, then this
attribute names *merged_sample*.
##### `mode`
###### Set by the *obipairing* tool
**`obitag_ref_index`**
###### Set by the *obirefidx* tool.
It resumes to which taxonomic annotation a match to that sequence must
lead according to the number of differences existing between the query
sequence and the reference sequence having that tag.
###### Getter : method `Count()`
##### `pairing_mismatches`
###### Set by the *obipairing* tool
##### `score`
###### Set by the *obipairing* tool
##### `score_norm`
###### Set by the *obipairing* tool

282
doc/_book/404.html Normal file
View File

@ -0,0 +1,282 @@
<!DOCTYPE html>
<html lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Page not found | The GO OBITools</title>
<meta name="description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="generator" content="bookdown 0.29 and GitBook 2.6.7" />
<meta property="og:title" content="Page not found | The GO OBITools" />
<meta property="og:type" content="book" />
<meta property="og:description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="github-repo" content="seankross/bookdown-start" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="Page not found | The GO OBITools" />
<meta name="twitter:description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="author" content="SEric Coissac" />
<meta name="date" content="2022-08-25" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<script src="book_assets/jquery-3.6.0/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/fuse.js@6.4.6/dist/fuse.min.js"></script>
<link href="book_assets/gitbook-2.6.7/css/style.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-table.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-bookdown.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-highlight.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-search.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-fontsettings.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-clipboard.css" rel="stylesheet" />
<link href="book_assets/anchor-sections-1.1.0/anchor-sections.css" rel="stylesheet" />
<link href="book_assets/anchor-sections-1.1.0/anchor-sections-hash.css" rel="stylesheet" />
<script src="book_assets/anchor-sections-1.1.0/anchor-sections.js"></script>
<style type="text/css">
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
</head>
<body>
<div class="book without-animation with-summary font-size-2 font-family-1" data-basepath=".">
<div class="book-summary">
<nav role="navigation">
<ul class="summary">
<li class="chapter" data-level="1" data-path="the-obitools.html"><a href="the-obitools.html"><i class="fa fa-check"></i><b>1</b> The OBITools</a>
<ul>
<li class="chapter" data-level="1.1" data-path="the-obitools.html"><a href="the-obitools.html#aims-of-obitools"><i class="fa fa-check"></i><b>1.1</b> Aims of <em>OBITools</em></a></li>
<li class="chapter" data-level="1.2" data-path="the-obitools.html"><a href="the-obitools.html#file-formats-usable-with-obitools"><i class="fa fa-check"></i><b>1.2</b> File formats usable with <em>OBITools</em></a>
<ul>
<li class="chapter" data-level="1.2.1" data-path="the-obitools.html"><a href="the-obitools.html#the-sequence-files"><i class="fa fa-check"></i><b>1.2.1</b> The sequence files</a></li>
<li class="chapter" data-level="1.2.2" data-path="the-obitools.html"><a href="the-obitools.html#the-iupac-code"><i class="fa fa-check"></i><b>1.2.2</b> The IUPAC Code</a></li>
<li class="chapter" data-level="1.2.3" data-path="the-obitools.html"><a href="the-obitools.html#classical-fasta"><i class="fa fa-check"></i><b>1.2.3</b> The <em>fasta</em> format</a></li>
<li class="chapter" data-level="1.2.4" data-path="the-obitools.html"><a href="the-obitools.html#classical-fastq"><i class="fa fa-check"></i><b>1.2.4</b> The <em>fastq</em> sequence format</a></li>
</ul></li>
<li class="chapter" data-level="1.3" data-path="the-obitools.html"><a href="the-obitools.html#file-extension"><i class="fa fa-check"></i><b>1.3</b> File extension</a></li>
<li class="chapter" data-level="1.4" data-path="the-obitools.html"><a href="the-obitools.html#see-also"><i class="fa fa-check"></i><b>1.4</b> See also</a></li>
<li class="chapter" data-level="1.5" data-path="the-obitools.html"><a href="the-obitools.html#references"><i class="fa fa-check"></i><b>1.5</b> References</a></li>
</ul></li>
<li class="chapter" data-level="2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html"><i class="fa fa-check"></i><b>2</b> The <em>OBITools</em> commands</a>
<ul>
<li class="chapter" data-level="2.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-the-input-files-to-obitools-commands"><i class="fa fa-check"></i><b>2.1</b> Specifying the input files to <em>OBITools</em> commands</a></li>
<li class="chapter" data-level="2.2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#options-common-to-most-of-the-obitools-commands"><i class="fa fa-check"></i><b>2.2</b> Options common to most of the <em>OBITools</em> commands</a>
<ul>
<li class="chapter" data-level="2.2.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-input-format"><i class="fa fa-check"></i><b>2.2.1</b> Specifying input format</a></li>
<li class="chapter" data-level="2.2.2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-output-format"><i class="fa fa-check"></i><b>2.2.2</b> Specifying output format</a></li>
<li class="chapter" data-level="2.2.3" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#format-of-the-annotations-in-fasta-and-fastq-files"><i class="fa fa-check"></i><b>2.2.3</b> Format of the annotations in Fasta and Fastq files</a></li>
</ul></li>
<li class="chapter" data-level="2.3" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#metabarcode-design-and-quality-assessment"><i class="fa fa-check"></i><b>2.3</b> Metabarcode design and quality assessment</a></li>
<li class="chapter" data-level="2.4" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#file-format-conversions"><i class="fa fa-check"></i><b>2.4</b> File format conversions</a></li>
<li class="chapter" data-level="2.5" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#sequence-annotations"><i class="fa fa-check"></i><b>2.5</b> Sequence annotations</a></li>
<li class="chapter" data-level="2.6" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#computations-on-sequences"><i class="fa fa-check"></i><b>2.6</b> Computations on sequences</a>
<ul>
<li class="chapter" data-level="2.6.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#obipairing"><i class="fa fa-check"></i><b>2.6.1</b> <code>obipairing</code></a></li>
</ul></li>
<li class="chapter" data-level="2.7" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#sequence-sampling-and-filtering"><i class="fa fa-check"></i><b>2.7</b> Sequence sampling and filtering</a>
<ul>
<li class="chapter" data-level="2.7.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#utilities"><i class="fa fa-check"></i><b>2.7.1</b> Utilities</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="3" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html"><i class="fa fa-check"></i><b>3</b> Reference documentation for the GO <em>OBITools</em> library</a>
<ul>
<li class="chapter" data-level="3.1" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#biosequence"><i class="fa fa-check"></i><b>3.1</b> BioSequence</a>
<ul>
<li class="chapter" data-level="3.1.1" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#creating-new-instances"><i class="fa fa-check"></i><b>3.1.1</b> Creating new instances</a></li>
<li class="chapter" data-level="3.1.2" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#end-of-life-of-a-biosequence-instance"><i class="fa fa-check"></i><b>3.1.2</b> End of life of a <code>BioSequence</code> instance</a></li>
<li class="chapter" data-level="3.1.3" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#accessing-to-the-elements-of-a-sequence"><i class="fa fa-check"></i><b>3.1.3</b> Accessing to the elements of a sequence</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="4" data-path="annexes.html"><a href="annexes.html"><i class="fa fa-check"></i><b>4</b> Annexes</a>
<ul>
<li class="chapter" data-level="4.0.1" data-path="annexes.html"><a href="annexes.html#sequence-attributes"><i class="fa fa-check"></i><b>4.0.1</b> Sequence attributes</a></li>
</ul></li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i><a href="./">The GO <em>OBITools</em></a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<section class="normal" id="section-">
<div id="page-not-found" class="section level1">
<h1>Page not found</h1>
<p>The page you requested cannot be found (perhaps it was moved or renamed).</p>
<p>You may want to try searching to find the page's new location, or use
the table of contents to find the page you are looking for.</p>
</div>
</section>
</div>
</div>
</div>
</div>
</div>
<script src="book_assets/gitbook-2.6.7/js/app.min.js"></script>
<script src="book_assets/gitbook-2.6.7/js/clipboard.min.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-search.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-sharing.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-fontsettings.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-bookdown.js"></script>
<script src="book_assets/gitbook-2.6.7/js/jquery.highlight.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-clipboard.js"></script>
<script>
gitbook.require(["gitbook"], function(gitbook) {
gitbook.start({
"sharing": {
"github": false,
"facebook": true,
"twitter": true,
"linkedin": false,
"weibo": false,
"instapaper": false,
"vk": false,
"whatsapp": false,
"all": ["facebook", "twitter", "linkedin", "weibo", "instapaper"]
},
"fontsettings": {
"theme": "white",
"family": "sans",
"size": 2
},
"edit": {
"link": null,
"text": null
},
"history": {
"link": null,
"text": null
},
"view": {
"link": null,
"text": null
},
"download": ["_main.pdf"],
"search": {
"engine": "fuse",
"options": null
},
"toc": {
"collapse": "subsection"
}
});
});
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
var src = "true";
if (src === "" || src === "true") src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/latest.js?config=TeX-MML-AM_CHTML";
if (location.protocol !== "file:")
if (/^https?:/.test(src))
src = src.replace(/^https?:/, '');
script.src = src;
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>

BIN
doc/_book/_main.pdf Normal file

Binary file not shown.

376
doc/_book/annexes.html Normal file
View File

@ -0,0 +1,376 @@
<!DOCTYPE html>
<html lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>4 Annexes | The GO OBITools</title>
<meta name="description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="generator" content="bookdown 0.29 and GitBook 2.6.7" />
<meta property="og:title" content="4 Annexes | The GO OBITools" />
<meta property="og:type" content="book" />
<meta property="og:description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="github-repo" content="seankross/bookdown-start" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="4 Annexes | The GO OBITools" />
<meta name="twitter:description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="author" content="SEric Coissac" />
<meta name="date" content="2022-08-25" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="prev" href="reference-documentation-for-the-go-obitools-library.html"/>
<script src="book_assets/jquery-3.6.0/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/fuse.js@6.4.6/dist/fuse.min.js"></script>
<link href="book_assets/gitbook-2.6.7/css/style.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-table.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-bookdown.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-highlight.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-search.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-fontsettings.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-clipboard.css" rel="stylesheet" />
<link href="book_assets/anchor-sections-1.1.0/anchor-sections.css" rel="stylesheet" />
<link href="book_assets/anchor-sections-1.1.0/anchor-sections-hash.css" rel="stylesheet" />
<script src="book_assets/anchor-sections-1.1.0/anchor-sections.js"></script>
<style type="text/css">
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
</head>
<body>
<div class="book without-animation with-summary font-size-2 font-family-1" data-basepath=".">
<div class="book-summary">
<nav role="navigation">
<ul class="summary">
<li class="chapter" data-level="1" data-path="the-obitools.html"><a href="the-obitools.html"><i class="fa fa-check"></i><b>1</b> The OBITools</a>
<ul>
<li class="chapter" data-level="1.1" data-path="the-obitools.html"><a href="the-obitools.html#aims-of-obitools"><i class="fa fa-check"></i><b>1.1</b> Aims of <em>OBITools</em></a></li>
<li class="chapter" data-level="1.2" data-path="the-obitools.html"><a href="the-obitools.html#file-formats-usable-with-obitools"><i class="fa fa-check"></i><b>1.2</b> File formats usable with <em>OBITools</em></a>
<ul>
<li class="chapter" data-level="1.2.1" data-path="the-obitools.html"><a href="the-obitools.html#the-sequence-files"><i class="fa fa-check"></i><b>1.2.1</b> The sequence files</a></li>
<li class="chapter" data-level="1.2.2" data-path="the-obitools.html"><a href="the-obitools.html#the-iupac-code"><i class="fa fa-check"></i><b>1.2.2</b> The IUPAC Code</a></li>
<li class="chapter" data-level="1.2.3" data-path="the-obitools.html"><a href="the-obitools.html#classical-fasta"><i class="fa fa-check"></i><b>1.2.3</b> The <em>fasta</em> format</a></li>
<li class="chapter" data-level="1.2.4" data-path="the-obitools.html"><a href="the-obitools.html#classical-fastq"><i class="fa fa-check"></i><b>1.2.4</b> The <em>fastq</em> sequence format</a></li>
</ul></li>
<li class="chapter" data-level="1.3" data-path="the-obitools.html"><a href="the-obitools.html#file-extension"><i class="fa fa-check"></i><b>1.3</b> File extension</a></li>
<li class="chapter" data-level="1.4" data-path="the-obitools.html"><a href="the-obitools.html#see-also"><i class="fa fa-check"></i><b>1.4</b> See also</a></li>
<li class="chapter" data-level="1.5" data-path="the-obitools.html"><a href="the-obitools.html#references"><i class="fa fa-check"></i><b>1.5</b> References</a></li>
</ul></li>
<li class="chapter" data-level="2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html"><i class="fa fa-check"></i><b>2</b> The <em>OBITools</em> commands</a>
<ul>
<li class="chapter" data-level="2.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-the-input-files-to-obitools-commands"><i class="fa fa-check"></i><b>2.1</b> Specifying the input files to <em>OBITools</em> commands</a></li>
<li class="chapter" data-level="2.2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#options-common-to-most-of-the-obitools-commands"><i class="fa fa-check"></i><b>2.2</b> Options common to most of the <em>OBITools</em> commands</a>
<ul>
<li class="chapter" data-level="2.2.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-input-format"><i class="fa fa-check"></i><b>2.2.1</b> Specifying input format</a></li>
<li class="chapter" data-level="2.2.2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-output-format"><i class="fa fa-check"></i><b>2.2.2</b> Specifying output format</a></li>
<li class="chapter" data-level="2.2.3" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#format-of-the-annotations-in-fasta-and-fastq-files"><i class="fa fa-check"></i><b>2.2.3</b> Format of the annotations in Fasta and Fastq files</a></li>
</ul></li>
<li class="chapter" data-level="2.3" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#metabarcode-design-and-quality-assessment"><i class="fa fa-check"></i><b>2.3</b> Metabarcode design and quality assessment</a></li>
<li class="chapter" data-level="2.4" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#file-format-conversions"><i class="fa fa-check"></i><b>2.4</b> File format conversions</a></li>
<li class="chapter" data-level="2.5" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#sequence-annotations"><i class="fa fa-check"></i><b>2.5</b> Sequence annotations</a></li>
<li class="chapter" data-level="2.6" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#computations-on-sequences"><i class="fa fa-check"></i><b>2.6</b> Computations on sequences</a>
<ul>
<li class="chapter" data-level="2.6.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#obipairing"><i class="fa fa-check"></i><b>2.6.1</b> <code>obipairing</code></a></li>
</ul></li>
<li class="chapter" data-level="2.7" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#sequence-sampling-and-filtering"><i class="fa fa-check"></i><b>2.7</b> Sequence sampling and filtering</a>
<ul>
<li class="chapter" data-level="2.7.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#utilities"><i class="fa fa-check"></i><b>2.7.1</b> Utilities</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="3" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html"><i class="fa fa-check"></i><b>3</b> Reference documentation for the GO <em>OBITools</em> library</a>
<ul>
<li class="chapter" data-level="3.1" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#biosequence"><i class="fa fa-check"></i><b>3.1</b> BioSequence</a>
<ul>
<li class="chapter" data-level="3.1.1" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#creating-new-instances"><i class="fa fa-check"></i><b>3.1.1</b> Creating new instances</a></li>
<li class="chapter" data-level="3.1.2" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#end-of-life-of-a-biosequence-instance"><i class="fa fa-check"></i><b>3.1.2</b> End of life of a <code>BioSequence</code> instance</a></li>
<li class="chapter" data-level="3.1.3" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#accessing-to-the-elements-of-a-sequence"><i class="fa fa-check"></i><b>3.1.3</b> Accessing to the elements of a sequence</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="4" data-path="annexes.html"><a href="annexes.html"><i class="fa fa-check"></i><b>4</b> Annexes</a>
<ul>
<li class="chapter" data-level="4.0.1" data-path="annexes.html"><a href="annexes.html#sequence-attributes"><i class="fa fa-check"></i><b>4.0.1</b> Sequence attributes</a></li>
</ul></li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i><a href="./">The GO <em>OBITools</em></a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<section class="normal" id="section-">
<div id="annexes" class="section level1 hasAnchor" number="4">
<h1><span class="header-section-number">4</span> Annexes<a href="annexes.html#annexes" class="anchor-section" aria-label="Anchor link to header"></a></h1>
<div id="sequence-attributes" class="section level3 hasAnchor" number="4.0.1">
<h3><span class="header-section-number">4.0.1</span> Sequence attributes<a href="annexes.html#sequence-attributes" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<div id="reserved-sequence-attributes" class="section level4 hasAnchor" number="4.0.1.1">
<h4><span class="header-section-number">4.0.1.1</span> Reserved sequence attributes<a href="annexes.html#reserved-sequence-attributes" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<div id="ali_dir" class="section level5 hasAnchor" number="4.0.1.1.1">
<h5><span class="header-section-number">4.0.1.1.1</span> <code>ali_dir</code><a href="annexes.html#ali_dir" class="anchor-section" aria-label="Anchor link to header"></a></h5>
<div id="type-string" class="section level6 hasAnchor" number="4.0.1.1.1.1">
<h6><span class="header-section-number">4.0.1.1.1.1</span> Type : <code>string</code><a href="annexes.html#type-string" class="anchor-section" aria-label="Anchor link to header"></a></h6>
<p>The attribute can contain 2 string values <code>"left"</code> or <code>"right".</code></p>
</div>
<div id="set-by-the-obipairing-tool" class="section level6 hasAnchor" number="4.0.1.1.1.2">
<h6><span class="header-section-number">4.0.1.1.1.2</span> Set by the <em>obipairing</em> tool<a href="annexes.html#set-by-the-obipairing-tool" class="anchor-section" aria-label="Anchor link to header"></a></h6>
<p>The alignment generated by <em>obipairing</em> is a 3-end gap free algorithm.
Two cases can occur when aligning the forward and reverse reads. If the
barcode is long enough, both the reads overlap only on their 3 ends. In
such case, the alignment direction <code>ali_dir</code> is set to <em>left</em>. If the
barcode is shorter than the read length, the paired reads overlap by
their 5 ends, and the complete barcode is sequenced by both the reads.
In that later case, <code>ali_dir</code> is set to <em>right</em>.</p>
</div>
</div>
<div id="ali_length" class="section level5 hasAnchor" number="4.0.1.1.2">
<h5><span class="header-section-number">4.0.1.1.2</span> <code>ali_length</code><a href="annexes.html#ali_length" class="anchor-section" aria-label="Anchor link to header"></a></h5>
<div id="set-by-the-obipairing-tool-1" class="section level6 hasAnchor" number="4.0.1.1.2.1">
<h6><span class="header-section-number">4.0.1.1.2.1</span> Set by the <em>obipairing</em> tool<a href="annexes.html#set-by-the-obipairing-tool-1" class="anchor-section" aria-label="Anchor link to header"></a></h6>
<p>Length of the aligned parts when merging forward and reverse reads</p>
</div>
</div>
<div id="count-the-number-of-sequence-occurrences" class="section level5 hasAnchor" number="4.0.1.1.3">
<h5><span class="header-section-number">4.0.1.1.3</span> <code>count</code> : the number of sequence occurrences<a href="annexes.html#count-the-number-of-sequence-occurrences" class="anchor-section" aria-label="Anchor link to header"></a></h5>
<div id="set-by-the-obiuniq-tool" class="section level6 hasAnchor" number="4.0.1.1.3.1">
<h6><span class="header-section-number">4.0.1.1.3.1</span> Set by the <em>obiuniq</em> tool<a href="annexes.html#set-by-the-obiuniq-tool" class="anchor-section" aria-label="Anchor link to header"></a></h6>
<p>The <code>count</code> attribute indicates how-many strictly identical sequences
have been merged in a single record. It contains an integer value. If it
is absent this means that the sequence record represents a single
occurrence of the sequence.</p>
</div>
<div id="getter-method-count" class="section level6 hasAnchor" number="4.0.1.1.3.2">
<h6><span class="header-section-number">4.0.1.1.3.2</span> Getter : method <code>Count()</code><a href="annexes.html#getter-method-count" class="anchor-section" aria-label="Anchor link to header"></a></h6>
<p>The <code>Count()</code> method allows to access to the count attribute as an
integer value. If the <code>count</code> attribute is not defined for the given
sequence, the value <em>1</em> is returned</p>
</div>
</div>
<div id="merged_" class="section level5 hasAnchor" number="4.0.1.1.4">
<h5><span class="header-section-number">4.0.1.1.4</span> <code>merged_*</code><a href="annexes.html#merged_" class="anchor-section" aria-label="Anchor link to header"></a></h5>
<div id="type-mapstringint" class="section level6 hasAnchor" number="4.0.1.1.4.1">
<h6><span class="header-section-number">4.0.1.1.4.1</span> Type : <code>map[string]int</code><a href="annexes.html#type-mapstringint" class="anchor-section" aria-label="Anchor link to header"></a></h6>
</div>
<div id="set-by-the-obiuniq-tool-1" class="section level6 hasAnchor" number="4.0.1.1.4.2">
<h6><span class="header-section-number">4.0.1.1.4.2</span> Set by the <em>obiuniq</em> tool<a href="annexes.html#set-by-the-obiuniq-tool-1" class="anchor-section" aria-label="Anchor link to header"></a></h6>
<p>The <code>-m</code> option of the <em>obiuniq</em> tools allows for keeping track of the
distribution of the values stored in given attribute of interest. Often
this option is used to summarise distribution of a sequence variant
accross samples when <em>obiuniq</em> is run after running <em>obimultiplex</em>. The
actual name of the attribute depends on the name of the monitored
attribute. If <code>-m</code> option is used with the attribute <em>sample</em>, then this
attribute names <em>merged_sample</em>.</p>
</div>
</div>
<div id="mode" class="section level5 hasAnchor" number="4.0.1.1.5">
<h5><span class="header-section-number">4.0.1.1.5</span> <code>mode</code><a href="annexes.html#mode" class="anchor-section" aria-label="Anchor link to header"></a></h5>
<div id="set-by-the-obipairing-tool-2" class="section level6 hasAnchor" number="4.0.1.1.5.1">
<h6><span class="header-section-number">4.0.1.1.5.1</span> Set by the <em>obipairing</em> tool<a href="annexes.html#set-by-the-obipairing-tool-2" class="anchor-section" aria-label="Anchor link to header"></a></h6>
<p><strong><code>obitag_ref_index</code></strong></p>
</div>
<div id="set-by-the-obirefidx-tool." class="section level6 hasAnchor" number="4.0.1.1.5.2">
<h6><span class="header-section-number">4.0.1.1.5.2</span> Set by the <em>obirefidx</em> tool.<a href="annexes.html#set-by-the-obirefidx-tool." class="anchor-section" aria-label="Anchor link to header"></a></h6>
<p>It resumes to which taxonomic annotation a match to that sequence must
lead according to the number of differences existing between the query
sequence and the reference sequence having that tag.</p>
</div>
<div id="getter-method-count-1" class="section level6 hasAnchor" number="4.0.1.1.5.3">
<h6><span class="header-section-number">4.0.1.1.5.3</span> Getter : method <code>Count()</code><a href="annexes.html#getter-method-count-1" class="anchor-section" aria-label="Anchor link to header"></a></h6>
</div>
</div>
<div id="pairing_mismatches" class="section level5 hasAnchor" number="4.0.1.1.6">
<h5><span class="header-section-number">4.0.1.1.6</span> <code>pairing_mismatches</code><a href="annexes.html#pairing_mismatches" class="anchor-section" aria-label="Anchor link to header"></a></h5>
<div id="set-by-the-obipairing-tool-3" class="section level6 hasAnchor" number="4.0.1.1.6.1">
<h6><span class="header-section-number">4.0.1.1.6.1</span> Set by the <em>obipairing</em> tool<a href="annexes.html#set-by-the-obipairing-tool-3" class="anchor-section" aria-label="Anchor link to header"></a></h6>
</div>
</div>
<div id="score" class="section level5 hasAnchor" number="4.0.1.1.7">
<h5><span class="header-section-number">4.0.1.1.7</span> <code>score</code><a href="annexes.html#score" class="anchor-section" aria-label="Anchor link to header"></a></h5>
<div id="set-by-the-obipairing-tool-4" class="section level6 hasAnchor" number="4.0.1.1.7.1">
<h6><span class="header-section-number">4.0.1.1.7.1</span> Set by the <em>obipairing</em> tool<a href="annexes.html#set-by-the-obipairing-tool-4" class="anchor-section" aria-label="Anchor link to header"></a></h6>
</div>
</div>
<div id="score_norm" class="section level5 hasAnchor" number="4.0.1.1.8">
<h5><span class="header-section-number">4.0.1.1.8</span> <code>score_norm</code><a href="annexes.html#score_norm" class="anchor-section" aria-label="Anchor link to header"></a></h5>
<div id="set-by-the-obipairing-tool-5" class="section level6 hasAnchor" number="4.0.1.1.8.1">
<h6><span class="header-section-number">4.0.1.1.8.1</span> Set by the <em>obipairing</em> tool<a href="annexes.html#set-by-the-obipairing-tool-5" class="anchor-section" aria-label="Anchor link to header"></a></h6>
</div>
</div>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
<a href="reference-documentation-for-the-go-obitools-library.html" class="navigation navigation-prev navigation-unique" aria-label="Previous page"><i class="fa fa-angle-left"></i></a>
</div>
</div>
<script src="book_assets/gitbook-2.6.7/js/app.min.js"></script>
<script src="book_assets/gitbook-2.6.7/js/clipboard.min.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-search.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-sharing.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-fontsettings.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-bookdown.js"></script>
<script src="book_assets/gitbook-2.6.7/js/jquery.highlight.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-clipboard.js"></script>
<script>
gitbook.require(["gitbook"], function(gitbook) {
gitbook.start({
"sharing": {
"github": false,
"facebook": true,
"twitter": true,
"linkedin": false,
"weibo": false,
"instapaper": false,
"vk": false,
"whatsapp": false,
"all": ["facebook", "twitter", "linkedin", "weibo", "instapaper"]
},
"fontsettings": {
"theme": "white",
"family": "sans",
"size": 2
},
"edit": {
"link": null,
"text": null
},
"history": {
"link": null,
"text": null
},
"view": {
"link": null,
"text": null
},
"download": ["_main.pdf"],
"search": {
"engine": "fuse",
"options": null
},
"toc": {
"collapse": "subsection"
}
});
});
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
var src = "true";
if (src === "" || src === "true") src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/latest.js?config=TeX-MML-AM_CHTML";
if (location.protocol !== "file:")
if (/^https?:/.test(src))
src = src.replace(/^https?:/, '');
script.src = src;
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>

View File

@ -0,0 +1,2 @@
/* Styles for section anchors */
a.anchor-section::before {content: '#';font-size: 80%;}

View File

@ -0,0 +1,4 @@
/* Styles for section anchors */
a.anchor-section {margin-left: 10px; visibility: hidden; color: inherit;}
.hasAnchor:hover a.anchor-section {visibility: visible;}
ul > li > .anchor-section {display: none;}

View File

@ -0,0 +1,11 @@
document.addEventListener('DOMContentLoaded', function () {
// If section divs is used, we need to put the anchor in the child header
const headers = document.querySelectorAll("div.hasAnchor.section[class*='level'] > :first-child")
headers.forEach(function (x) {
// Add to the header node
if (!x.classList.contains('hasAnchor')) x.classList.add('hasAnchor')
// Remove from the section or div created by Pandoc
x.parentElement.classList.remove('hasAnchor')
})
})

View File

@ -0,0 +1,105 @@
.book .book-header h1 {
padding-left: 20px;
padding-right: 20px;
}
.book .book-header.fixed {
position: fixed;
right: 0;
top: 0;
left: 0;
border-bottom: 1px solid rgba(0,0,0,.07);
}
span.search-highlight {
background-color: #ffff88;
}
@media (min-width: 600px) {
.book.with-summary .book-header.fixed {
left: 300px;
}
}
@media (max-width: 1240px) {
.book .book-body.fixed {
top: 50px;
}
.book .book-body.fixed .body-inner {
top: auto;
}
}
@media (max-width: 600px) {
.book.with-summary .book-header.fixed {
left: calc(100% - 60px);
min-width: 300px;
}
.book.with-summary .book-body {
transform: none;
left: calc(100% - 60px);
min-width: 300px;
}
.book .book-body.fixed {
top: 0;
}
}
.book .book-body.fixed .body-inner {
top: 50px;
}
.book .book-body .page-wrapper .page-inner section.normal sub, .book .book-body .page-wrapper .page-inner section.normal sup {
font-size: 85%;
}
@media print {
.book .book-summary, .book .book-body .book-header, .fa {
display: none !important;
}
.book .book-body.fixed {
left: 0px;
}
.book .book-body,.book .book-body .body-inner, .book.with-summary {
overflow: visible !important;
}
}
.kable_wrapper {
border-spacing: 20px 0;
border-collapse: separate;
border: none;
margin: auto;
}
.kable_wrapper > tbody > tr > td {
vertical-align: top;
}
.book .book-body .page-wrapper .page-inner section.normal table tr.header {
border-top-width: 2px;
}
.book .book-body .page-wrapper .page-inner section.normal table tr:last-child td {
border-bottom-width: 2px;
}
.book .book-body .page-wrapper .page-inner section.normal table td, .book .book-body .page-wrapper .page-inner section.normal table th {
border-left: none;
border-right: none;
}
.book .book-body .page-wrapper .page-inner section.normal table.kable_wrapper > tbody > tr, .book .book-body .page-wrapper .page-inner section.normal table.kable_wrapper > tbody > tr > td {
border-top: none;
}
.book .book-body .page-wrapper .page-inner section.normal table.kable_wrapper > tbody > tr:last-child > td {
border-bottom: none;
}
div.theorem, div.lemma, div.corollary, div.proposition, div.conjecture {
font-style: italic;
}
span.theorem, span.lemma, span.corollary, span.proposition, span.conjecture {
font-style: normal;
}
div.proof>*:last-child:after {
content: "\25a2";
float: right;
}
.header-section-number {
padding-right: .5em;
}
#header .multi-author {
margin: 0.5em 0 -0.5em 0;
}
#header .date {
margin-top: 1.5em;
}

View File

@ -0,0 +1,18 @@
div.sourceCode {
position: relative;
}
.copy-to-clipboard-button {
position: absolute;
right: 0;
top: 0;
visibility: hidden;
}
.copy-to-clipboard-button:focus {
outline: 0;
}
div.sourceCode:hover > .copy-to-clipboard-button {
visibility: visible;
}

View File

@ -0,0 +1,303 @@
/*
* Theme 1
*/
.color-theme-1 .dropdown-menu {
background-color: #111111;
border-color: #7e888b;
}
.color-theme-1 .dropdown-menu .dropdown-caret .caret-inner {
border-bottom: 9px solid #111111;
}
.color-theme-1 .dropdown-menu .buttons {
border-color: #7e888b;
}
.color-theme-1 .dropdown-menu .button {
color: #afa790;
}
.color-theme-1 .dropdown-menu .button:hover {
color: #73553c;
}
/*
* Theme 2
*/
.color-theme-2 .dropdown-menu {
background-color: #2d3143;
border-color: #272a3a;
}
.color-theme-2 .dropdown-menu .dropdown-caret .caret-inner {
border-bottom: 9px solid #2d3143;
}
.color-theme-2 .dropdown-menu .buttons {
border-color: #272a3a;
}
.color-theme-2 .dropdown-menu .button {
color: #62677f;
}
.color-theme-2 .dropdown-menu .button:hover {
color: #f4f4f5;
}
.book .book-header .font-settings .font-enlarge {
line-height: 30px;
font-size: 1.4em;
}
.book .book-header .font-settings .font-reduce {
line-height: 30px;
font-size: 1em;
}
/* sidebar transition background */
div.book.color-theme-1 {
background: #f3eacb;
}
.book.color-theme-1 .book-body {
color: #704214;
background: #f3eacb;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section {
background: #f3eacb;
}
/* sidebar transition background */
div.book.color-theme-2 {
background: #1c1f2b;
}
.book.color-theme-2 .book-body {
color: #bdcadb;
background: #1c1f2b;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section {
background: #1c1f2b;
}
.book.font-size-0 .book-body .page-inner section {
font-size: 1.2rem;
}
.book.font-size-1 .book-body .page-inner section {
font-size: 1.4rem;
}
.book.font-size-2 .book-body .page-inner section {
font-size: 1.6rem;
}
.book.font-size-3 .book-body .page-inner section {
font-size: 2.2rem;
}
.book.font-size-4 .book-body .page-inner section {
font-size: 4rem;
}
.book.font-family-0 {
font-family: Georgia, serif;
}
.book.font-family-1 {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal {
color: #704214;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal a {
color: inherit;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h3,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h4,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h5,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 {
color: inherit;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2 {
border-color: inherit;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 {
color: inherit;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal hr {
background-color: inherit;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal blockquote {
border-color: #c4b29f;
opacity: 0.9;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code {
background: #fdf6e3;
color: #657b83;
border-color: #f8df9c;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal .highlight {
background-color: inherit;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table th,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table td {
border-color: #f5d06c;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr {
color: inherit;
background-color: #fdf6e3;
border-color: #444444;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) {
background-color: #fbeecb;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal {
color: #bdcadb;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal a {
color: #3eb1d0;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h3,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h4,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h5,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 {
color: #fffffa;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2 {
border-color: #373b4e;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 {
color: #373b4e;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal hr {
background-color: #373b4e;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal blockquote {
border-color: #373b4e;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code {
color: #9dbed8;
background: #2d3143;
border-color: #2d3143;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal .highlight {
background-color: #282a39;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table th,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table td {
border-color: #3b3f54;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr {
color: #b6c2d2;
background-color: #2d3143;
border-color: #3b3f54;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) {
background-color: #35394b;
}
.book.color-theme-1 .book-header {
color: #afa790;
background: transparent;
}
.book.color-theme-1 .book-header .btn {
color: #afa790;
}
.book.color-theme-1 .book-header .btn:hover {
color: #73553c;
background: none;
}
.book.color-theme-1 .book-header h1 {
color: #704214;
}
.book.color-theme-2 .book-header {
color: #7e888b;
background: transparent;
}
.book.color-theme-2 .book-header .btn {
color: #3b3f54;
}
.book.color-theme-2 .book-header .btn:hover {
color: #fffff5;
background: none;
}
.book.color-theme-2 .book-header h1 {
color: #bdcadb;
}
.book.color-theme-1 .book-body .navigation {
color: #afa790;
}
.book.color-theme-1 .book-body .navigation:hover {
color: #73553c;
}
.book.color-theme-2 .book-body .navigation {
color: #383f52;
}
.book.color-theme-2 .book-body .navigation:hover {
color: #fffff5;
}
/*
* Theme 1
*/
.book.color-theme-1 .book-summary {
color: #afa790;
background: #111111;
border-right: 1px solid rgba(0, 0, 0, 0.07);
}
.book.color-theme-1 .book-summary .book-search {
background: transparent;
}
.book.color-theme-1 .book-summary .book-search input,
.book.color-theme-1 .book-summary .book-search input:focus {
border: 1px solid transparent;
}
.book.color-theme-1 .book-summary ul.summary li.divider {
background: #7e888b;
box-shadow: none;
}
.book.color-theme-1 .book-summary ul.summary li i.fa-check {
color: #33cc33;
}
.book.color-theme-1 .book-summary ul.summary li.done > a {
color: #877f6a;
}
.book.color-theme-1 .book-summary ul.summary li a,
.book.color-theme-1 .book-summary ul.summary li span {
color: #877f6a;
background: transparent;
font-weight: normal;
}
.book.color-theme-1 .book-summary ul.summary li.active > a,
.book.color-theme-1 .book-summary ul.summary li a:hover {
color: #704214;
background: transparent;
font-weight: normal;
}
/*
* Theme 2
*/
.book.color-theme-2 .book-summary {
color: #bcc1d2;
background: #2d3143;
border-right: none;
}
.book.color-theme-2 .book-summary .book-search {
background: transparent;
}
.book.color-theme-2 .book-summary .book-search input,
.book.color-theme-2 .book-summary .book-search input:focus {
border: 1px solid transparent;
}
.book.color-theme-2 .book-summary ul.summary li.divider {
background: #272a3a;
box-shadow: none;
}
.book.color-theme-2 .book-summary ul.summary li i.fa-check {
color: #33cc33;
}
.book.color-theme-2 .book-summary ul.summary li.done > a {
color: #62687f;
}
.book.color-theme-2 .book-summary ul.summary li a,
.book.color-theme-2 .book-summary ul.summary li span {
color: #c1c6d7;
background: transparent;
font-weight: 600;
}
.book.color-theme-2 .book-summary ul.summary li.active > a,
.book.color-theme-2 .book-summary ul.summary li a:hover {
color: #f4f4f5;
background: #252737;
font-weight: 600;
}

View File

@ -0,0 +1,426 @@
.book .book-body .page-wrapper .page-inner section.normal pre,
.book .book-body .page-wrapper .page-inner section.normal code {
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
/* Tomorrow Comment */
/* Tomorrow Red */
/* Tomorrow Orange */
/* Tomorrow Yellow */
/* Tomorrow Green */
/* Tomorrow Aqua */
/* Tomorrow Blue */
/* Tomorrow Purple */
}
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-comment,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-comment,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-title,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-title {
color: #8e908c;
}
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-variable,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-variable,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-attribute,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-tag,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-tag,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-regexp,
.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant,
.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant,
.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title,
.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title,
.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi,
.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi,
.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype,
.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype,
.book .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype,
.book .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype,
.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id,
.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-id,
.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class,
.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-class,
.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo,
.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo {
color: #c82829;
}
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-number,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-number,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-pragma,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-built_in,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-literal,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-literal,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-params,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-params,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-constant,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-constant {
color: #f5871f;
}
.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title,
.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title,
.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute,
.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute {
color: #eab700;
}
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-string,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-string,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-value,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-value,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance,
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-header,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-header,
.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol,
.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol,
.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata,
.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata {
color: #718c00;
}
.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor,
.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor {
color: #3e999f;
}
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-function,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-function,
.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator,
.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator,
.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title,
.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-title,
.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title,
.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title,
.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword,
.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword,
.book .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub,
.book .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub,
.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title,
.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title,
.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title,
.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title {
color: #4271ae;
}
.book .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword,
.book .book-body .page-wrapper .page-inner section.normal code .hljs-keyword,
.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function,
.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function {
color: #8959a8;
}
.book .book-body .page-wrapper .page-inner section.normal pre .hljs,
.book .book-body .page-wrapper .page-inner section.normal code .hljs {
display: block;
background: white;
color: #4d4d4c;
padding: 0.5em;
}
.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript,
.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript,
.book .book-body .page-wrapper .page-inner section.normal pre .javascript .xml,
.book .book-body .page-wrapper .page-inner section.normal code .javascript .xml,
.book .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula,
.book .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula,
.book .book-body .page-wrapper .page-inner section.normal pre .xml .javascript,
.book .book-body .page-wrapper .page-inner section.normal code .xml .javascript,
.book .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript,
.book .book-body .page-wrapper .page-inner section.normal code .xml .vbscript,
.book .book-body .page-wrapper .page-inner section.normal pre .xml .css,
.book .book-body .page-wrapper .page-inner section.normal code .xml .css,
.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata,
.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata {
opacity: 0.5;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code {
/*
Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com>
*/
/* Solarized Green */
/* Solarized Cyan */
/* Solarized Blue */
/* Solarized Yellow */
/* Solarized Orange */
/* Solarized Red */
/* Solarized Violet */
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs {
display: block;
padding: 0.5em;
background: #fdf6e3;
color: #657b83;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-comment,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-comment,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-template_comment,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-template_comment,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .diff .hljs-header,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .diff .hljs-header,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-doctype,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-doctype,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-pi,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-pi,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .lisp .hljs-string,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .lisp .hljs-string,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-javadoc,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-javadoc {
color: #93a1a1;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-keyword,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-winutils,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-winutils,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .method,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .method,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-addition,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-addition,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-tag,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-tag,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-request,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-request,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-status,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-status,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .nginx .hljs-title,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .nginx .hljs-title {
color: #859900;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-number,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-number,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-command,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-command,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-string,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-string,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-tag .hljs-value,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-tag .hljs-value,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-rules .hljs-value,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-rules .hljs-value,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-phpdoc,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-phpdoc,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-regexp,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-hexcolor,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-hexcolor,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_url,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_url {
color: #2aa198;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-title,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-title,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-localvars,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-localvars,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-chunk,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-chunk,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-decorator,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-decorator,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-built_in,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-identifier,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-identifier,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .vhdl .hljs-literal,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .vhdl .hljs-literal,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-id,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-id,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-function,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-function {
color: #268bd2;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-attribute,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-variable,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-variable,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .lisp .hljs-body,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .lisp .hljs-body,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .smalltalk .hljs-number,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .smalltalk .hljs-number,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-constant,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-constant,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-class .hljs-title,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-class .hljs-title,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-parent,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-parent,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .haskell .hljs-type,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .haskell .hljs-type,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_reference,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_reference {
color: #b58900;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor .hljs-keyword,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor .hljs-keyword,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-pragma,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-shebang,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-shebang,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-symbol,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol .hljs-string,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-symbol .hljs-string,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .diff .hljs-change,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .diff .hljs-change,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-special,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-special,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-attr_selector,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-attr_selector,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-subst,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-subst,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-cdata,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-cdata,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .clojure .hljs-title,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .clojure .hljs-title,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-header,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-header {
color: #cb4b16;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-deletion,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-important,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-important {
color: #dc322f;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_label,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_label {
color: #6c71c4;
}
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula,
.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula {
background: #eee8d5;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code {
/* Tomorrow Night Bright Theme */
/* Original theme - https://github.com/chriskempson/tomorrow-theme */
/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
/* Tomorrow Comment */
/* Tomorrow Red */
/* Tomorrow Orange */
/* Tomorrow Yellow */
/* Tomorrow Green */
/* Tomorrow Aqua */
/* Tomorrow Blue */
/* Tomorrow Purple */
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-comment,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-comment,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-title,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-title {
color: #969896;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-variable,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-variable,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-attribute,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-tag,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-tag,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-regexp,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-id,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-class,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo {
color: #d54e53;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-number,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-number,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-pragma,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-built_in,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-literal,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-literal,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-params,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-params,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-constant,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-constant {
color: #e78c45;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute {
color: #e7c547;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-string,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-string,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-value,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-value,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-header,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-header,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata {
color: #b9ca4a;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor {
color: #70c0b1;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-function,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-function,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .python .hljs-title,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title {
color: #7aa6da;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-keyword,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function {
color: #c397d8;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs {
display: block;
background: black;
color: #eaeaea;
padding: 0.5em;
}
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .xml,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .xml,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .javascript,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .javascript,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .vbscript,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .css,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .css,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata,
.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata {
opacity: 0.5;
}

View File

@ -0,0 +1,31 @@
.book .book-summary .book-search {
padding: 6px;
background: transparent;
position: absolute;
top: -50px;
left: 0px;
right: 0px;
transition: top 0.5s ease;
}
.book .book-summary .book-search input,
.book .book-summary .book-search input:focus,
.book .book-summary .book-search input:hover {
width: 100%;
background: transparent;
border: 1px solid #ccc;
box-shadow: none;
outline: none;
line-height: 22px;
padding: 7px 4px;
color: inherit;
box-sizing: border-box;
}
.book.with-search .book-summary .book-search {
top: 0px;
}
.book.with-search .book-summary ul.summary {
top: 50px;
}
.with-search .summary li[data-level] a[href*=".html#"] {
display: none;
}

View File

@ -0,0 +1 @@
.book .book-body .page-wrapper .page-inner section.normal table{display:table;width:100%;border-collapse:collapse;border-spacing:0;overflow:auto}.book .book-body .page-wrapper .page-inner section.normal table td,.book .book-body .page-wrapper .page-inner section.normal table th{padding:6px 13px;border:1px solid #ddd}.book .book-body .page-wrapper .page-inner section.normal table tr{background-color:#fff;border-top:1px solid #ccc}.book .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n){background-color:#f8f8f8}.book .book-body .page-wrapper .page-inner section.normal table th{font-weight:700}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,86 @@
gitbook.require(["jQuery"], function(jQuery) {
/*
* jQuery Highlight plugin
*
* Based on highlight v3 by Johann Burkard
* http://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html
*
* Code a little bit refactored and cleaned (in my humble opinion).
* Most important changes:
* - has an option to highlight only entire words (wordsOnly - false by default),
* - has an option to be case sensitive (caseSensitive - false by default)
* - highlight element tag and class names can be specified in options
*
* Copyright (c) 2009 Bartek Szopka
*
* Licensed under MIT license.
*
*/
jQuery.extend({
highlight: function (node, re, nodeName, className) {
if (node.nodeType === 3) {
var match = node.data.match(re);
if (match) {
var highlight = document.createElement(nodeName || 'span');
highlight.className = className || 'highlight';
var wordNode = node.splitText(match.index);
wordNode.splitText(match[0].length);
var wordClone = wordNode.cloneNode(true);
highlight.appendChild(wordClone);
wordNode.parentNode.replaceChild(highlight, wordNode);
return 1; //skip added node in parent
}
} else if ((node.nodeType === 1 && node.childNodes) && // only element nodes that have children
!/(script|style)/i.test(node.tagName) && // ignore script and style nodes
!(node.tagName === nodeName.toUpperCase() && node.className === className)) { // skip if already highlighted
for (var i = 0; i < node.childNodes.length; i++) {
i += jQuery.highlight(node.childNodes[i], re, nodeName, className);
}
}
return 0;
}
});
jQuery.fn.unhighlight = function (options) {
var settings = { className: 'highlight', element: 'span' };
jQuery.extend(settings, options);
return this.find(settings.element + "." + settings.className).each(function () {
var parent = this.parentNode;
parent.replaceChild(this.firstChild, this);
parent.normalize();
}).end();
};
jQuery.fn.highlight = function (words, options) {
var settings = { className: 'highlight', element: 'span', caseSensitive: false, wordsOnly: false };
jQuery.extend(settings, options);
if (words.constructor === String) {
words = [words];
// also match 'foo-bar' if search for 'foo bar'
if (/\s/.test(words[0])) words.push(words[0].replace(/\s+/, '-'));
}
words = jQuery.grep(words, function(word, i){
return word !== '';
});
words = jQuery.map(words, function(word, i) {
return word.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
});
if (words.length === 0) { return this; }
var flag = settings.caseSensitive ? "" : "i";
var pattern = "(" + words.join("|") + ")";
if (settings.wordsOnly) {
pattern = "\\b" + pattern + "\\b";
}
var re = new RegExp(pattern, flag);
return this.each(function () {
jQuery.highlight(this, re, settings.element, settings.className);
});
};
});

View File

@ -0,0 +1,259 @@
gitbook.require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) {
var gs = gitbook.storage;
gitbook.events.bind("start", function(e, config) {
// add the Edit button (edit on Github)
var edit = config.edit;
if (edit && edit.link) gitbook.toolbar.createButton({
icon: 'fa fa-edit',
label: edit.text || 'Edit',
position: 'left',
onClick: function(e) {
e.preventDefault();
window.open(edit.link);
}
});
// add the History button (file history on Github)
var history = config.history;
if (history && history.link) gitbook.toolbar.createButton({
icon: 'fa fa-history',
label: history.text || 'History',
position: 'left',
onClick: function(e) {
e.preventDefault();
window.open(history.link);
}
});
// add the View button (file view on Github)
var view = config.view;
if (view && view.link) gitbook.toolbar.createButton({
icon: 'fa fa-eye',
label: view.text || 'View Source',
position: 'left',
onClick: function(e) {
e.preventDefault();
window.open(view.link);
}
});
// add the Download button
var down = config.download;
var normalizeDownload = function() {
if (!down || !(down instanceof Array) || down.length === 0) return;
if (down[0] instanceof Array) return down;
return $.map(down, function(file, i) {
return [[file, file.replace(/.*[.]/g, '').toUpperCase()]];
});
};
down = normalizeDownload(down);
if (down) if (down.length === 1 && /[.]pdf$/.test(down[0][0])) {
gitbook.toolbar.createButton({
icon: 'fa fa-file-pdf-o',
label: down[0][1],
position: 'left',
onClick: function(e) {
e.preventDefault();
window.open(down[0][0]);
}
});
} else {
gitbook.toolbar.createButton({
icon: 'fa fa-download',
label: 'Download',
position: 'left',
dropdown: $.map(down, function(item, i) {
return {
text: item[1],
onClick: function(e) {
e.preventDefault();
window.open(item[0]);
}
};
})
});
}
// add the Information button
var info = ['Keyboard shortcuts (<> indicates arrow keys):',
'<left>/<right>: navigate to previous/next page',
's: Toggle sidebar'];
if (config.search !== false) info.push('f: Toggle search input ' +
'(use <up>/<down>/Enter in the search input to navigate through search matches; ' +
'press Esc to cancel search)');
if (config.info !== false) gitbook.toolbar.createButton({
icon: 'fa fa-info',
label: 'Information about the toolbar',
position: 'left',
onClick: function(e) {
e.preventDefault();
window.alert(info.join('\n\n'));
}
});
// highlight the current section in TOC
var href = window.location.pathname;
href = href.substr(href.lastIndexOf('/') + 1);
// accentuated characters need to be decoded (#819)
href = decodeURIComponent(href);
if (href === '') href = 'index.html';
var li = $('a[href^="' + href + location.hash + '"]').parent('li.chapter').first();
var summary = $('ul.summary'), chaps = summary.find('li.chapter');
if (li.length === 0) li = chaps.first();
li.addClass('active');
chaps.on('click', function(e) {
chaps.removeClass('active');
$(this).addClass('active');
gs.set('tocScrollTop', summary.scrollTop());
});
var toc = config.toc;
// collapse TOC items that are not for the current chapter
if (toc && toc.collapse) (function() {
var type = toc.collapse;
if (type === 'none') return;
if (type !== 'section' && type !== 'subsection') return;
// sections under chapters
var toc_sub = summary.children('li[data-level]').children('ul');
if (type === 'section') {
toc_sub.hide()
.parent().has(li).children('ul').show();
} else {
toc_sub.children('li').children('ul').hide()
.parent().has(li).children('ul').show();
}
li.children('ul').show();
var toc_sub2 = toc_sub.children('li');
if (type === 'section') toc_sub2.children('ul').hide();
summary.children('li[data-level]').find('a')
.on('click.bookdown', function(e) {
if (href === $(this).attr('href').replace(/#.*/, ''))
$(this).parent('li').children('ul').toggle();
});
})();
// add tooltips to the <a>'s that are truncated
$('a').each(function(i, el) {
if (el.offsetWidth >= el.scrollWidth) return;
if (typeof el.title === 'undefined') return;
el.title = el.text;
});
// restore TOC scroll position
var pos = gs.get('tocScrollTop');
if (typeof pos !== 'undefined') summary.scrollTop(pos);
// highlight the TOC item that has same text as the heading in view as scrolling
if (toc && toc.scroll_highlight !== false && li.length > 0) (function() {
// scroll the current TOC item into viewport
var ht = $(window).height(), rect = li[0].getBoundingClientRect();
if (rect.top >= ht || rect.top <= 0 || rect.bottom <= 0) {
summary.scrollTop(li[0].offsetTop);
}
// current chapter TOC items
var items = $('a[href^="' + href + '"]').parent('li.chapter'),
m = items.length;
if (m === 0) {
items = summary.find('li.chapter');
m = items.length;
}
if (m === 0) return;
// all section titles on current page
var hs = bookInner.find('.page-inner').find('h1,h2,h3'), n = hs.length,
ts = hs.map(function(i, el) { return $(el).text(); });
if (n === 0) return;
var scrollHandler = function(e) {
var ht = $(window).height();
clearTimeout($.data(this, 'scrollTimer'));
$.data(this, 'scrollTimer', setTimeout(function() {
// find the first visible title in the viewport
for (var i = 0; i < n; i++) {
var rect = hs[i].getBoundingClientRect();
if (rect.top >= 0 && rect.bottom <= ht) break;
}
if (i === n) return;
items.removeClass('active');
for (var j = 0; j < m; j++) {
if (items.eq(j).children('a').first().text() === ts[i]) break;
}
if (j === m) j = 0; // highlight the chapter title
// search bottom-up for a visible TOC item to highlight; if an item is
// hidden, we check if its parent is visible, and so on
while (j > 0 && items.eq(j).is(':hidden')) j--;
items.eq(j).addClass('active');
}, 250));
};
bookInner.on('scroll.bookdown', scrollHandler);
bookBody.on('scroll.bookdown', scrollHandler);
})();
// do not refresh the page if the TOC item points to the current page
$('a[href="' + href + '"]').parent('li.chapter').children('a')
.on('click', function(e) {
bookInner.scrollTop(0);
bookBody.scrollTop(0);
return false;
});
var toolbar = config.toolbar;
if (!toolbar || toolbar.position !== 'static') {
var bookHeader = $('.book-header');
bookBody.addClass('fixed');
bookHeader.addClass('fixed')
.css('background-color', bookBody.css('background-color'))
.on('click.bookdown', function(e) {
// the theme may have changed after user clicks the theme button
bookHeader.css('background-color', bookBody.css('background-color'));
});
}
});
gitbook.events.bind("page.change", function(e) {
// store TOC scroll position
var summary = $('ul.summary');
gs.set('tocScrollTop', summary.scrollTop());
});
var bookBody = $('.book-body'), bookInner = bookBody.find('.body-inner');
var chapterTitle = function() {
return bookInner.find('.page-inner').find('h1,h2').first().text();
};
var saveScrollPos = function(e) {
// save scroll position before page is reloaded
gs.set('bodyScrollTop', {
body: bookBody.scrollTop(),
inner: bookInner.scrollTop(),
focused: document.hasFocus(),
title: chapterTitle()
});
};
$(document).on('servr:reload', saveScrollPos);
// check if the page is loaded in an iframe (e.g. the RStudio preview window)
var inIFrame = function() {
var inIframe = true;
try { inIframe = window.self !== window.top; } catch (e) {}
return inIframe;
};
if (inIFrame()) {
$(window).on('blur unload', saveScrollPos);
}
$(function(e) {
var pos = gs.get('bodyScrollTop');
if (pos) {
if (pos.title === chapterTitle()) {
if (pos.body !== 0) bookBody.scrollTop(pos.body);
if (pos.inner !== 0) bookInner.scrollTop(pos.inner);
}
}
if ((pos && pos.focused) || !inIFrame()) bookInner.find('.page-wrapper').focus();
// clear book body scroll position
gs.remove('bodyScrollTop');
});
});

View File

@ -0,0 +1,33 @@
gitbook.require(["gitbook", "jQuery"], function(gitbook, $) {
var copyButton = '<button type="button" class="copy-to-clipboard-button" title="Copy to clipboard" aria-label="Copy to clipboard"><i class="fa fa-copy"></i></button>';
var clipboard;
gitbook.events.bind("page.change", function() {
if (!ClipboardJS.isSupported()) return;
// the page.change event is thrown twice: before and after the page changes
if (clipboard) {
// clipboard is already defined but we are on the same page
if (clipboard._prevPage === window.location.pathname) return;
// clipboard is already defined and url path change
// we can deduct that we are before page changes
clipboard.destroy(); // destroy the previous events listeners
clipboard = undefined; // reset the clipboard object
return;
}
$(copyButton).prependTo("div.sourceCode");
clipboard = new ClipboardJS(".copy-to-clipboard-button", {
text: function(trigger) {
return trigger.parentNode.textContent;
}
});
clipboard._prevPage = window.location.pathname
});
});

View File

@ -0,0 +1,152 @@
gitbook.require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) {
var fontState;
var THEMES = {
"white": 0,
"sepia": 1,
"night": 2
};
var FAMILY = {
"serif": 0,
"sans": 1
};
// Save current font settings
function saveFontSettings() {
gitbook.storage.set("fontState", fontState);
update();
}
// Increase font size
function enlargeFontSize(e) {
e.preventDefault();
if (fontState.size >= 4) return;
fontState.size++;
saveFontSettings();
};
// Decrease font size
function reduceFontSize(e) {
e.preventDefault();
if (fontState.size <= 0) return;
fontState.size--;
saveFontSettings();
};
// Change font family
function changeFontFamily(index, e) {
e.preventDefault();
fontState.family = index;
saveFontSettings();
};
// Change type of color
function changeColorTheme(index, e) {
e.preventDefault();
var $book = $(".book");
if (fontState.theme !== 0)
$book.removeClass("color-theme-"+fontState.theme);
fontState.theme = index;
if (fontState.theme !== 0)
$book.addClass("color-theme-"+fontState.theme);
saveFontSettings();
};
function update() {
var $book = gitbook.state.$book;
$(".font-settings .font-family-list li").removeClass("active");
$(".font-settings .font-family-list li:nth-child("+(fontState.family+1)+")").addClass("active");
$book[0].className = $book[0].className.replace(/\bfont-\S+/g, '');
$book.addClass("font-size-"+fontState.size);
$book.addClass("font-family-"+fontState.family);
if(fontState.theme !== 0) {
$book[0].className = $book[0].className.replace(/\bcolor-theme-\S+/g, '');
$book.addClass("color-theme-"+fontState.theme);
}
};
function init(config) {
var $bookBody, $book;
//Find DOM elements.
$book = gitbook.state.$book;
$bookBody = $book.find(".book-body");
// Instantiate font state object
fontState = gitbook.storage.get("fontState", {
size: config.size || 2,
family: FAMILY[config.family || "sans"],
theme: THEMES[config.theme || "white"]
});
update();
};
gitbook.events.bind("start", function(e, config) {
var opts = config.fontsettings;
if (!opts) return;
// Create buttons in toolbar
gitbook.toolbar.createButton({
icon: 'fa fa-font',
label: 'Font Settings',
className: 'font-settings',
dropdown: [
[
{
text: 'A',
className: 'font-reduce',
onClick: reduceFontSize
},
{
text: 'A',
className: 'font-enlarge',
onClick: enlargeFontSize
}
],
[
{
text: 'Serif',
onClick: _.partial(changeFontFamily, 0)
},
{
text: 'Sans',
onClick: _.partial(changeFontFamily, 1)
}
],
[
{
text: 'White',
onClick: _.partial(changeColorTheme, 0)
},
{
text: 'Sepia',
onClick: _.partial(changeColorTheme, 1)
},
{
text: 'Night',
onClick: _.partial(changeColorTheme, 2)
}
]
]
});
// Init current settings
init(opts);
});
});

View File

@ -0,0 +1,270 @@
gitbook.require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) {
var index = null;
var fuse = null;
var _search = {engine: 'lunr', opts: {}};
var $searchInput, $searchLabel, $searchForm;
var $highlighted = [], hi, hiOpts = { className: 'search-highlight' };
var collapse = false, toc_visible = [];
function init(config) {
// Instantiate search settings
_search = gitbook.storage.get("search", {
engine: config.search.engine || 'lunr',
opts: config.search.options || {},
});
};
// Save current search settings
function saveSearchSettings() {
gitbook.storage.set("search", _search);
}
// Use a specific index
function loadIndex(data) {
// [Yihui] In bookdown, I use a character matrix to store the chapter
// content, and the index is dynamically built on the client side.
// Gitbook prebuilds the index data instead: https://github.com/GitbookIO/plugin-search
// We can certainly do that via R packages V8 and jsonlite, but let's
// see how slow it really is before improving it. On the other hand,
// lunr cannot handle non-English text very well, e.g. the default
// tokenizer cannot deal with Chinese text, so we may want to replace
// lunr with a dumb simple text matching approach.
if (_search.engine === 'lunr') {
index = lunr(function () {
this.ref('url');
this.field('title', { boost: 10 });
this.field('body');
});
data.map(function(item) {
index.add({
url: item[0],
title: item[1],
body: item[2]
});
});
return;
}
fuse = new Fuse(data.map((_data => {
return {
url: _data[0],
title: _data[1],
body: _data[2]
};
})), Object.assign(
{
includeScore: true,
threshold: 0.1,
ignoreLocation: true,
keys: ["title", "body"]
},
_search.opts
));
}
// Fetch the search index
function fetchIndex() {
return $.getJSON(gitbook.state.basePath+"/search_index.json")
.then(loadIndex); // [Yihui] we need to use this object later
}
// Search for a term and return results
function search(q) {
let results = [];
switch (_search.engine) {
case 'fuse':
if (!fuse) return;
results = fuse.search(q).map(function(result) {
var parts = result.item.url.split('#');
return {
path: parts[0],
hash: parts[1]
};
});
break;
case 'lunr':
default:
if (!index) return;
results = _.chain(index.search(q)).map(function(result) {
var parts = result.ref.split("#");
return {
path: parts[0],
hash: parts[1]
};
})
.value();
}
// [Yihui] Highlight the search keyword on current page
$highlighted = $('.page-inner')
.unhighlight(hiOpts).highlight(q, hiOpts).find('span.search-highlight');
scrollToHighlighted(0);
return results;
}
// [Yihui] Scroll the chapter body to the i-th highlighted string
function scrollToHighlighted(d) {
var n = $highlighted.length;
hi = hi === undefined ? 0 : hi + d;
// navignate to the previous/next page in the search results if reached the top/bottom
var b = hi < 0;
if (d !== 0 && (b || hi >= n)) {
var path = currentPath(), n2 = toc_visible.length;
if (n2 === 0) return;
for (var i = b ? 0 : n2; (b && i < n2) || (!b && i >= 0); i += b ? 1 : -1) {
if (toc_visible.eq(i).data('path') === path) break;
}
i += b ? -1 : 1;
if (i < 0) i = n2 - 1;
if (i >= n2) i = 0;
var lnk = toc_visible.eq(i).find('a[href$=".html"]');
if (lnk.length) lnk[0].click();
return;
}
if (n === 0) return;
var $p = $highlighted.eq(hi);
$p[0].scrollIntoView();
$highlighted.css('background-color', '');
// an orange background color on the current item and removed later
$p.css('background-color', 'orange');
setTimeout(function() {
$p.css('background-color', '');
}, 2000);
}
function currentPath() {
var href = window.location.pathname;
href = href.substr(href.lastIndexOf('/') + 1);
return href === '' ? 'index.html' : href;
}
// Create search form
function createForm(value) {
if ($searchForm) $searchForm.remove();
if ($searchLabel) $searchLabel.remove();
if ($searchInput) $searchInput.remove();
$searchForm = $('<div>', {
'class': 'book-search',
'role': 'search'
});
$searchLabel = $('<label>', {
'for': 'search-box',
'aria-hidden': 'false',
'hidden': ''
});
$searchInput = $('<input>', {
'id': 'search-box',
'type': 'search',
'class': 'form-control',
'val': value,
'placeholder': 'Type to search (Enter for navigation)',
'title': 'Use Enter or the <Down> key to navigate to the next match, or the <Up> key to the previous match'
});
$searchLabel.append("Type to search");
$searchLabel.appendTo($searchForm);
$searchInput.appendTo($searchForm);
$searchForm.prependTo(gitbook.state.$book.find('.book-summary'));
}
// Return true if search is open
function isSearchOpen() {
return gitbook.state.$book.hasClass("with-search");
}
// Toggle the search
function toggleSearch(_state) {
if (isSearchOpen() === _state) return;
if (!$searchInput) return;
gitbook.state.$book.toggleClass("with-search", _state);
// If search bar is open: focus input
if (isSearchOpen()) {
gitbook.sidebar.toggle(true);
$searchInput.focus();
} else {
$searchInput.blur();
$searchInput.val("");
gitbook.storage.remove("keyword");
gitbook.sidebar.filter(null);
$('.page-inner').unhighlight(hiOpts);
}
}
function sidebarFilter(results) {
gitbook.sidebar.filter(_.pluck(results, "path"));
toc_visible = $('ul.summary').find('li:visible');
}
// Recover current search when page changed
function recoverSearch() {
var keyword = gitbook.storage.get("keyword", "");
createForm(keyword);
if (keyword.length > 0) {
if(!isSearchOpen()) {
toggleSearch(true); // [Yihui] open the search box
}
sidebarFilter(search(keyword));
}
}
gitbook.events.bind("start", function(e, config) {
// [Yihui] disable search
if (config.search === false) return;
init(config);
collapse = !config.toc || config.toc.collapse === 'section' ||
config.toc.collapse === 'subsection';
// Pre-fetch search index and create the form
fetchIndex()
// [Yihui] recover search after the page is loaded
.then(recoverSearch);
// Type in search bar
$(document).on("keyup", ".book-search input", function(e) {
var key = (e.keyCode ? e.keyCode : e.which);
// [Yihui] Escape -> close search box; Up/Down/Enter: previous/next highlighted
if (key == 27) {
e.preventDefault();
toggleSearch(false);
} else if (key == 38) {
scrollToHighlighted(-1);
} else if (key == 40 || key == 13) {
scrollToHighlighted(1);
}
}).on("input", ".book-search input", function(e) {
var q = $(this).val().trim();
if (q.length === 0) {
gitbook.sidebar.filter(null);
gitbook.storage.remove("keyword");
$('.page-inner').unhighlight(hiOpts);
} else {
var results = search(q);
sidebarFilter(results);
gitbook.storage.set("keyword", q);
}
});
// Create the toggle search button
gitbook.toolbar.createButton({
icon: 'fa fa-search',
label: 'Search',
position: 'left',
onClick: toggleSearch
});
// Bind keyboard to toggle search
gitbook.keyboard.bind(['f'], toggleSearch);
});
// [Yihui] do not try to recover search; always start fresh
// gitbook.events.bind("page.change", recoverSearch);
});

View File

@ -0,0 +1,116 @@
gitbook.require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) {
var SITES = {
'github': {
'label': 'Github',
'icon': 'fa fa-github',
'onClick': function(e) {
e.preventDefault();
var repo = $('meta[name="github-repo"]').attr('content');
if (typeof repo === 'undefined') throw("Github repo not defined");
window.open("https://github.com/"+repo);
}
},
'facebook': {
'label': 'Facebook',
'icon': 'fa fa-facebook',
'onClick': function(e) {
e.preventDefault();
window.open("http://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(location.href));
}
},
'twitter': {
'label': 'Twitter',
'icon': 'fa fa-twitter',
'onClick': function(e) {
e.preventDefault();
window.open("http://twitter.com/intent/tweet?text="+encodeURIComponent(document.title)+"&url="+encodeURIComponent(location.href)+"&hashtags=rmarkdown,bookdown");
}
},
'linkedin': {
'label': 'LinkedIn',
'icon': 'fa fa-linkedin',
'onClick': function(e) {
e.preventDefault();
window.open("https://www.linkedin.com/shareArticle?mini=true&url="+encodeURIComponent(location.href)+"&title="+encodeURIComponent(document.title));
}
},
'weibo': {
'label': 'Weibo',
'icon': 'fa fa-weibo',
'onClick': function(e) {
e.preventDefault();
window.open("http://service.weibo.com/share/share.php?content=utf-8&url="+encodeURIComponent(location.href)+"&title="+encodeURIComponent(document.title));
}
},
'instapaper': {
'label': 'Instapaper',
'icon': 'fa fa-italic',
'onClick': function(e) {
e.preventDefault();
window.open("http://www.instapaper.com/text?u="+encodeURIComponent(location.href));
}
},
'vk': {
'label': 'VK',
'icon': 'fa fa-vk',
'onClick': function(e) {
e.preventDefault();
window.open("http://vkontakte.ru/share.php?url="+encodeURIComponent(location.href));
}
},
'whatsapp': {
'label': 'Whatsapp',
'icon': 'fa fa-whatsapp',
'onClick': function(e) {
e.preventDefault();
var url = encodeURIComponent(location.href);
window.open((isMobile() ? "whatsapp://send" : "https://web.whatsapp.com/send") + "?text=" + url);
}
},
};
function isMobile() {
return !!navigator.maxTouchPoints;
}
gitbook.events.bind("start", function(e, config) {
var opts = config.sharing;
if (!opts) return;
// Create dropdown menu
var menu = _.chain(opts.all)
.map(function(id) {
var site = SITES[id];
if (!site) return;
return {
text: site.label,
onClick: site.onClick
};
})
.compact()
.value();
// Create main button with dropdown
if (menu.length > 0) {
gitbook.toolbar.createButton({
icon: 'fa fa-share-alt',
label: 'Share',
position: 'right',
dropdown: [menu]
});
}
// Direct actions to share
_.each(SITES, function(site, sideId) {
if (!opts[sideId]) return;
gitbook.toolbar.createButton({
icon: site.icon,
label: site.label,
title: site.label,
position: 'right',
onClick: site.onClick
});
});
});
});

File diff suppressed because one or more lines are too long

461
doc/_book/index.html Normal file
View File

@ -0,0 +1,461 @@
<!DOCTYPE html>
<html lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>The GO OBITools</title>
<meta name="description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="generator" content="bookdown 0.29 and GitBook 2.6.7" />
<meta property="og:title" content="The GO OBITools" />
<meta property="og:type" content="book" />
<meta property="og:description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="github-repo" content="seankross/bookdown-start" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="The GO OBITools" />
<meta name="twitter:description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="author" content="SEric Coissac" />
<meta name="date" content="2022-08-25" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="next" href="the-obitools-commands.html"/>
<script src="book_assets/jquery-3.6.0/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/fuse.js@6.4.6/dist/fuse.min.js"></script>
<link href="book_assets/gitbook-2.6.7/css/style.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-table.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-bookdown.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-highlight.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-search.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-fontsettings.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-clipboard.css" rel="stylesheet" />
<link href="book_assets/anchor-sections-1.1.0/anchor-sections.css" rel="stylesheet" />
<link href="book_assets/anchor-sections-1.1.0/anchor-sections-hash.css" rel="stylesheet" />
<script src="book_assets/anchor-sections-1.1.0/anchor-sections.js"></script>
<style type="text/css">
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
</head>
<body>
<div class="book without-animation with-summary font-size-2 font-family-1" data-basepath=".">
<div class="book-summary">
<nav role="navigation">
<ul class="summary">
<li class="chapter" data-level="1" data-path="index.html"><a href="index.html"><i class="fa fa-check"></i><b>1</b> The OBITools</a>
<ul>
<li class="chapter" data-level="1.1" data-path="index.html"><a href="index.html#aims-of-obitools"><i class="fa fa-check"></i><b>1.1</b> Aims of <em>OBITools</em></a></li>
<li class="chapter" data-level="1.2" data-path="index.html"><a href="index.html#file-formats-usable-with-obitools"><i class="fa fa-check"></i><b>1.2</b> File formats usable with <em>OBITools</em></a>
<ul>
<li class="chapter" data-level="1.2.1" data-path="index.html"><a href="index.html#the-sequence-files"><i class="fa fa-check"></i><b>1.2.1</b> The sequence files</a></li>
<li class="chapter" data-level="1.2.2" data-path="index.html"><a href="index.html#classical-fasta"><i class="fa fa-check"></i><b>1.2.2</b> The <em>fasta</em> format</a></li>
<li class="chapter" data-level="1.2.3" data-path="index.html"><a href="index.html#the-fastq-sequence-format"><i class="fa fa-check"></i><b>1.2.3</b> The <em>fastq</em> sequence format</a></li>
</ul></li>
<li class="chapter" data-level="1.3" data-path="index.html"><a href="index.html#file-extension"><i class="fa fa-check"></i><b>1.3</b> File extension</a></li>
<li class="chapter" data-level="1.4" data-path="index.html"><a href="index.html#see-also"><i class="fa fa-check"></i><b>1.4</b> See also</a></li>
<li class="chapter" data-level="1.5" data-path="index.html"><a href="index.html#references"><i class="fa fa-check"></i><b>1.5</b> References</a></li>
</ul></li>
<li class="chapter" data-level="2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html"><i class="fa fa-check"></i><b>2</b> The OBITools commands</a>
<ul>
<li class="chapter" data-level="2.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#metabarcode-design-and-quality-assessment"><i class="fa fa-check"></i><b>2.1</b> Metabarcode design and quality assessment</a></li>
<li class="chapter" data-level="2.2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#file-format-conversions"><i class="fa fa-check"></i><b>2.2</b> File format conversions</a></li>
<li class="chapter" data-level="2.3" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#sequence-annotations"><i class="fa fa-check"></i><b>2.3</b> Sequence annotations</a></li>
<li class="chapter" data-level="2.4" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#computations-on-sequences"><i class="fa fa-check"></i><b>2.4</b> Computations on sequences</a>
<ul>
<li class="chapter" data-level="2.4.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#obipairing"><i class="fa fa-check"></i><b>2.4.1</b> <code>obipairing</code></a></li>
</ul></li>
<li class="chapter" data-level="2.5" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#sequence-sampling-and-filtering"><i class="fa fa-check"></i><b>2.5</b> Sequence sampling and filtering</a>
<ul>
<li class="chapter" data-level="2.5.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#utilities"><i class="fa fa-check"></i><b>2.5.1</b> Utilities</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="3" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html"><i class="fa fa-check"></i><b>3</b> Reference documentation for the GO <em>OBITools</em> library</a>
<ul>
<li class="chapter" data-level="3.1" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#biosequence"><i class="fa fa-check"></i><b>3.1</b> BioSequence</a>
<ul>
<li class="chapter" data-level="3.1.1" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#creating-new-instances"><i class="fa fa-check"></i><b>3.1.1</b> Creating new instances</a></li>
<li class="chapter" data-level="3.1.2" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#end-of-life-of-a-biosequence-instance"><i class="fa fa-check"></i><b>3.1.2</b> End of life of a <code>BioSequence</code> instance</a></li>
<li class="chapter" data-level="3.1.3" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#accessing-to-the-elements-of-a-sequence"><i class="fa fa-check"></i><b>3.1.3</b> Accessing to the elements of a sequence</a></li>
<li class="chapter" data-level="3.1.4" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#sequence-attributes"><i class="fa fa-check"></i><b>3.1.4</b> Sequence attributes</a></li>
</ul></li>
</ul></li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i><a href="./">The GO <em>OBITools</em></a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<section class="normal" id="section-">
<div id="header">
<h1 class="title">The GO <em>OBITools</em></h1>
<p class="author"><em>SEric Coissac</em></p>
<p class="date"><em>2022-08-25</em></p>
</div>
<div id="the-obitools" class="section level1 hasAnchor" number="1">
<h1><span class="header-section-number">1</span> The OBITools<a href="index.html#the-obitools" class="anchor-section" aria-label="Anchor link to header"></a></h1>
<div id="aims-of-obitools" class="section level2 hasAnchor" number="1.1">
<h2><span class="header-section-number">1.1</span> Aims of <em>OBITools</em><a href="index.html#aims-of-obitools" class="anchor-section" aria-label="Anchor link to header"></a></h2>
</div>
<div id="file-formats-usable-with-obitools" class="section level2 hasAnchor" number="1.2">
<h2><span class="header-section-number">1.2</span> File formats usable with <em>OBITools</em><a href="index.html#file-formats-usable-with-obitools" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<div id="the-sequence-files" class="section level3 hasAnchor" number="1.2.1">
<h3><span class="header-section-number">1.2.1</span> The sequence files<a href="index.html#the-sequence-files" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>Sequences can be stored following various format. OBITools knows some of
them. The central formats for sequence files manipulated by OBITools
scripts are the <code>fasta</code> and fastq format. OBITools extends the both
these formats by specifying a syntax to include in the definition line
data qualifying the sequence. All file formats use the <code>IUPAC</code> code for
encoding nucleotides.</p>
</div>
<div id="classical-fasta" class="section level3 hasAnchor" number="1.2.2">
<h3><span class="header-section-number">1.2.2</span> The <em>fasta</em> format<a href="index.html#classical-fasta" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>The <strong>fasta format</strong> is certainly the most widely used sequence file
format. This is certainly due to its great simplicity. It was originally
created for the Lipman and Pearson <a href="http://www.ncbi.nlm.nih.gov/pubmed/3162770?dopt=Citation">FASTA
program</a>.
OBITools use in more of the classical :ref:<code>fasta</code> format an
:ref:<code>extended version</code> of this format where structured data are
included in the title line.</p>
<p>In <em>fasta</em> format a sequence is represented by a title line beginning
with a <strong>&gt;</strong> character and the sequences by itself following the
:doc:<code>iupac</code> code. The sequence is usually split other severals lines of
the same length (expect for the last one)</p>
<pre><code>&gt;my_sequence this is my pretty sequence
ACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGT
GTGCTGACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTGTTT
AACGACGTTGCAGTACGTTGCAGT</code></pre>
<p>This is no special format for the title line excepting that this line
should be unique. Usually the first word following the <strong>&gt;</strong> character
is considered as the sequence identifier. The end of the title line
corresponding to a description of the sequence. Several sequences can be
concatenated in a same file. The description of the next sequence is
just pasted at the end of the record of the previous one</p>
<pre><code>&gt;sequence_A this is my first pretty sequence
ACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGT
GTGCTGACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTGTTT
AACGACGTTGCAGTACGTTGCAGT
&gt;sequence_B this is my second pretty sequence
ACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGT
GTGCTGACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTGTTT
AACGACGTTGCAGTACGTTGCAGT
&gt;sequence_C this is my third pretty sequence
ACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGT
GTGCTGACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTGTTT
AACGACGTTGCAGTACGTTGCAGT</code></pre>
</div>
<div id="the-fastq-sequence-format" class="section level3 hasAnchor" number="1.2.3">
<h3><span class="header-section-number">1.2.3</span> The <em>fastq</em> sequence format<a href="index.html#the-fastq-sequence-format" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>.. _classical-fastq:</p>
<p>.. note::</p>
<pre><code>This article uses material from the Wikipedia article
`FASTQ format `
which is released under the
`Creative Commons Attribution-Share-Alike License 3.0 `</code></pre>
<p><strong>fastq format</strong> is a text-based format for storing both a biological
sequence (usually nucleotide sequence) and its corresponding quality
scores. Both the sequence letter and quality score are encoded with a
single ASCII character for brevity. It was originally developed at the
<code>Wellcome Trust Sanger Institute</code> to bundle a <a href="#genuine-fasta">fasta</a>
sequence and its quality data, but has recently become the <em>de facto</em>
standard for storing the output of high throughput sequencing
instruments such as the Illumina Genome Analyzer Illumina. [1]_</p>
<div id="format" class="section level4 hasAnchor" number="1.2.3.1">
<h4><span class="header-section-number">1.2.3.1</span> Format<a href="index.html#format" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<p>A fastq file normally uses four lines per sequence.</p>
<ul>
<li>Line 1 begins with a @ character and is followed by a sequence
identifier and an <em>optional</em> description (like a :ref:<code>fasta</code> title
line).</li>
<li>Line 2 is the raw sequence letters.</li>
<li>Line 3 begins with a + character and is <em>optionally</em> followed by
the same sequence identifier (and any description) again.</li>
<li>Line 4 encodes the quality values for the sequence in Line 2, and
must contain the same number of symbols as letters in the sequence.</li>
</ul>
<p>A fastq file containing a single sequence might look like this:</p>
<pre><code>@SEQ_ID
GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT
+
!&#39;&#39;*((((***+))%%%++)(%%%%).1***-+*&#39;&#39;))**55CCF&gt;&gt;&gt;&gt;&gt;&gt;CCCCCCC65</code></pre>
<p>The character ! represents the lowest quality while ~ is the
highest. Here are the quality value characters in left-to-right
increasing order of quality (<code>ASCII</code>):</p>
<pre><code>!&quot;#$%&amp;&#39;()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~</code></pre>
<p>The original Sanger FASTQ files also allowed the sequence and quality
strings to be wrapped (split over multiple lines), but this is generally
discouraged as it can make parsing complicated due to the unfortunate
choice of “@” and “+” as markers (these characters can also occur in
the quality string).</p>
</div>
<div id="variations" class="section level4 hasAnchor" number="1.2.3.2">
<h4><span class="header-section-number">1.2.3.2</span> Variations<a href="index.html#variations" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<div id="quality" class="section level5 hasAnchor" number="1.2.3.2.1">
<h5><span class="header-section-number">1.2.3.2.1</span> Quality<a href="index.html#quality" class="anchor-section" aria-label="Anchor link to header"></a></h5>
<p>A quality value <em>Q</em> is an integer mapping of <em>p</em> (i.e., the probability
that the corresponding base call is incorrect). Two different equations
have been in use. The first is the standard Sanger variant to assess
reliability of a base call, otherwise known as Phred quality score:</p>
<p><span class="math display">\[
Q_\text{sanger} = -10 \, \log_{10} p
\]</span></p>
<p>The Solexa pipeline (i.e., the software delivered with the Illumina
Genome Analyzer) earlier used a different mapping, encoding the odds
<span class="math inline">\(\mathbf{p}/(1-\mathbf{p})\)</span> instead of the probability <span class="math inline">\(\mathbf{p}\)</span>:</p>
<p><span class="math display">\[
Q_\text{solexa-prior to v.1.3} = -10 \, \log_{10} \frac{p}{1-p}
\]</span></p>
<p>Although both mappings are asymptotically identical at higher quality
values, they differ at lower quality levels (i.e., approximately
<span class="math inline">\(\mathbf{p} &gt; 0.05\)</span>, or equivalently, <span class="math inline">\(\mathbf{Q} &lt; 13\)</span>).</p>
<p>|Relationship between <em>Q</em> and <em>p</em> using the Sanger (red) and Solexa
(black) equations (described above). The vertical dotted line indicates
<span class="math inline">\(\mathbf{p}= 0.05\)</span>, or equivalently, <span class="math inline">\(Q = 13\)</span>.|</p>
</div>
</div>
<div id="encoding" class="section level4 hasAnchor" number="1.2.3.3">
<h4><span class="header-section-number">1.2.3.3</span> Encoding<a href="index.html#encoding" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<ul>
<li>Sanger format can encode a Phred quality score from 0 to 93 using
ASCII 33 to 126 (although in raw read data the Phred quality score
rarely exceeds 60, higher scores are possible in assemblies or read
maps).</li>
<li>Solexa/Illumina 1.0 format can encode a Solexa/Illumina quality
score from -5 to 62 using ASCII 59 to 126 (although in raw read data
Solexa scores from -5 to 40 only are expected)</li>
<li>Starting with Illumina 1.3 and before Illumina 1.8, the format
encoded a Phred quality score from 0 to 62 using ASCII 64 to 126
(although in raw read data Phred scores from 0 to 40 only are
expected).</li>
<li>Starting in Illumina 1.5 and before Illumina 1.8, the Phred scores 0
to 2 have a slightly different meaning. The values 0 and 1 are no
longer used and the value 2, encoded by ASCII 66 “B”.</li>
</ul>
<p>Sequencing Control Software, Version 2.6, Catalog # SY-960-2601, Part
# 15009921 Rev. A, November
2009] [<a href="http://watson.nci.nih.gov/solexa/Using_SCSv2.6_15009921_A.pdf\" class="uri">http://watson.nci.nih.gov/solexa/Using_SCSv2.6_15009921_A.pdf\\</a>](<a href="http://watson.nci.nih.gov/solexa/Using_SCSv2.6_15009921_A.pdf)%7B.uri%7D" class="uri">http://watson.nci.nih.gov/solexa/Using_SCSv2.6_15009921_A.pdf\</a>
(page 30) states the following: <em>If a read ends with a segment of mostly
low quality (Q15 or below), then all of the quality values in the
segment are replaced with a value of 2 (encoded as the letter B in
Illuminas text-based encoding of quality scores)… This Q2 indicator
does not predict a specific error rate, but rather indicates that a
specific final portion of the read should not be used in further
analyses.</em> Also, the quality score encoded as “B” letter may occur
internally within reads at least as late as pipeline version 1.6, as
shown in the following example:</p>
<pre><code>@HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1
TTAATTGGTAAATAAATCTCCTAATAGCTTAGATNTTACCTTNNNNNNNNNNTAGTTTCTTGAGATTTGTTGGGGGAGACATTTTTGTGATTGCCTTGAT
+HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1
efcfffffcfeefffcffffffddf`feed]`]_Ba_^__[YBBBBBBBBBBRTT\]][]dddd`ddd^dddadd^BBBBBBBBBBBBBBBBBBBBBBBB</code></pre>
<p>An alternative interpretation of this ASCII encoding has been proposed.
Also, in Illumina runs using PhiX controls, the character B was
observed to represent an “unknown quality score”. The error rate of B
reads was roughly 3 phred scores lower the mean observed score of a
given run.</p>
<ul>
<li>Starting in Illumina 1.8, the quality scores have basically returned
to the use of the Sanger format (Phred+33).</li>
</ul>
</div>
</div>
</div>
<div id="file-extension" class="section level2 hasAnchor" number="1.3">
<h2><span class="header-section-number">1.3</span> File extension<a href="index.html#file-extension" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<p>There is no standard file extension for a FASTQ file, but .fq and
.fastq, are commonly used.</p>
</div>
<div id="see-also" class="section level2 hasAnchor" number="1.4">
<h2><span class="header-section-number">1.4</span> See also<a href="index.html#see-also" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<ul>
<li>:ref:<code>fasta</code></li>
</ul>
</div>
<div id="references" class="section level2 hasAnchor" number="1.5">
<h2><span class="header-section-number">1.5</span> References<a href="index.html#references" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<p>.. [1] Cock et al (2009) The Sanger FASTQ file format for sequences with
quality scores, and the Solexa/Illumina FASTQ variants. Nucleic Acids
Research,</p>
<p>.. [2] Illumina Quality Scores, Tobias Mann, Bioinformatics, San Diego,
Illumina <code>1</code>__</p>
<p>.. |Relationship between <em>Q</em> and <em>p</em> using the Sanger (red) and Solexa
(black) equations (described above). The vertical dotted line indicates
<em>p</em> = 0.05, or equivalently, <em>Q</em> Å 13.| image:: Probability metrics.png</p>
<p>See <a href="http://en.wikipedia.org/wiki/FASTQ_format" class="uri">http://en.wikipedia.org/wiki/FASTQ_format</a></p>
</div>
</div>
</section>
</div>
</div>
</div>
<a href="the-obitools-commands.html" class="navigation navigation-next navigation-unique" aria-label="Next page"><i class="fa fa-angle-right"></i></a>
</div>
</div>
<script src="book_assets/gitbook-2.6.7/js/app.min.js"></script>
<script src="book_assets/gitbook-2.6.7/js/clipboard.min.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-search.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-sharing.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-fontsettings.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-bookdown.js"></script>
<script src="book_assets/gitbook-2.6.7/js/jquery.highlight.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-clipboard.js"></script>
<script>
gitbook.require(["gitbook"], function(gitbook) {
gitbook.start({
"sharing": {
"github": false,
"facebook": true,
"twitter": true,
"linkedin": false,
"weibo": false,
"instapaper": false,
"vk": false,
"whatsapp": false,
"all": ["facebook", "twitter", "linkedin", "weibo", "instapaper"]
},
"fontsettings": {
"theme": "white",
"family": "sans",
"size": 2
},
"edit": {
"link": null,
"text": null
},
"history": {
"link": null,
"text": null
},
"view": {
"link": null,
"text": null
},
"download": ["_main.pdf"],
"search": {
"engine": "fuse",
"options": null
},
"toc": {
"collapse": "subsection"
}
});
});
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
var src = "true";
if (src === "" || src === "true") src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/latest.js?config=TeX-MML-AM_CHTML";
if (location.protocol !== "file:")
if (/^https?:/.test(src))
src = src.replace(/^https?:/, '');
script.src = src;
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>

View File

@ -0,0 +1,421 @@
<!DOCTYPE html>
<html lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>3 Reference documentation for the GO OBITools library | The GO OBITools</title>
<meta name="description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="generator" content="bookdown 0.29 and GitBook 2.6.7" />
<meta property="og:title" content="3 Reference documentation for the GO OBITools library | The GO OBITools" />
<meta property="og:type" content="book" />
<meta property="og:description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="github-repo" content="seankross/bookdown-start" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="3 Reference documentation for the GO OBITools library | The GO OBITools" />
<meta name="twitter:description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="author" content="SEric Coissac" />
<meta name="date" content="2022-08-25" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="prev" href="the-obitools-commands.html"/>
<link rel="next" href="annexes.html"/>
<script src="book_assets/jquery-3.6.0/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/fuse.js@6.4.6/dist/fuse.min.js"></script>
<link href="book_assets/gitbook-2.6.7/css/style.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-table.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-bookdown.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-highlight.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-search.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-fontsettings.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-clipboard.css" rel="stylesheet" />
<link href="book_assets/anchor-sections-1.1.0/anchor-sections.css" rel="stylesheet" />
<link href="book_assets/anchor-sections-1.1.0/anchor-sections-hash.css" rel="stylesheet" />
<script src="book_assets/anchor-sections-1.1.0/anchor-sections.js"></script>
<style type="text/css">
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
</head>
<body>
<div class="book without-animation with-summary font-size-2 font-family-1" data-basepath=".">
<div class="book-summary">
<nav role="navigation">
<ul class="summary">
<li class="chapter" data-level="1" data-path="the-obitools.html"><a href="the-obitools.html"><i class="fa fa-check"></i><b>1</b> The OBITools</a>
<ul>
<li class="chapter" data-level="1.1" data-path="the-obitools.html"><a href="the-obitools.html#aims-of-obitools"><i class="fa fa-check"></i><b>1.1</b> Aims of <em>OBITools</em></a></li>
<li class="chapter" data-level="1.2" data-path="the-obitools.html"><a href="the-obitools.html#file-formats-usable-with-obitools"><i class="fa fa-check"></i><b>1.2</b> File formats usable with <em>OBITools</em></a>
<ul>
<li class="chapter" data-level="1.2.1" data-path="the-obitools.html"><a href="the-obitools.html#the-sequence-files"><i class="fa fa-check"></i><b>1.2.1</b> The sequence files</a></li>
<li class="chapter" data-level="1.2.2" data-path="the-obitools.html"><a href="the-obitools.html#the-iupac-code"><i class="fa fa-check"></i><b>1.2.2</b> The IUPAC Code</a></li>
<li class="chapter" data-level="1.2.3" data-path="the-obitools.html"><a href="the-obitools.html#classical-fasta"><i class="fa fa-check"></i><b>1.2.3</b> The <em>fasta</em> format</a></li>
<li class="chapter" data-level="1.2.4" data-path="the-obitools.html"><a href="the-obitools.html#classical-fastq"><i class="fa fa-check"></i><b>1.2.4</b> The <em>fastq</em> sequence format</a></li>
</ul></li>
<li class="chapter" data-level="1.3" data-path="the-obitools.html"><a href="the-obitools.html#file-extension"><i class="fa fa-check"></i><b>1.3</b> File extension</a></li>
<li class="chapter" data-level="1.4" data-path="the-obitools.html"><a href="the-obitools.html#see-also"><i class="fa fa-check"></i><b>1.4</b> See also</a></li>
<li class="chapter" data-level="1.5" data-path="the-obitools.html"><a href="the-obitools.html#references"><i class="fa fa-check"></i><b>1.5</b> References</a></li>
</ul></li>
<li class="chapter" data-level="2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html"><i class="fa fa-check"></i><b>2</b> The <em>OBITools</em> commands</a>
<ul>
<li class="chapter" data-level="2.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-the-input-files-to-obitools-commands"><i class="fa fa-check"></i><b>2.1</b> Specifying the input files to <em>OBITools</em> commands</a></li>
<li class="chapter" data-level="2.2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#options-common-to-most-of-the-obitools-commands"><i class="fa fa-check"></i><b>2.2</b> Options common to most of the <em>OBITools</em> commands</a>
<ul>
<li class="chapter" data-level="2.2.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-input-format"><i class="fa fa-check"></i><b>2.2.1</b> Specifying input format</a></li>
<li class="chapter" data-level="2.2.2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-output-format"><i class="fa fa-check"></i><b>2.2.2</b> Specifying output format</a></li>
<li class="chapter" data-level="2.2.3" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#format-of-the-annotations-in-fasta-and-fastq-files"><i class="fa fa-check"></i><b>2.2.3</b> Format of the annotations in Fasta and Fastq files</a></li>
</ul></li>
<li class="chapter" data-level="2.3" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#metabarcode-design-and-quality-assessment"><i class="fa fa-check"></i><b>2.3</b> Metabarcode design and quality assessment</a></li>
<li class="chapter" data-level="2.4" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#file-format-conversions"><i class="fa fa-check"></i><b>2.4</b> File format conversions</a></li>
<li class="chapter" data-level="2.5" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#sequence-annotations"><i class="fa fa-check"></i><b>2.5</b> Sequence annotations</a></li>
<li class="chapter" data-level="2.6" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#computations-on-sequences"><i class="fa fa-check"></i><b>2.6</b> Computations on sequences</a>
<ul>
<li class="chapter" data-level="2.6.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#obipairing"><i class="fa fa-check"></i><b>2.6.1</b> <code>obipairing</code></a></li>
</ul></li>
<li class="chapter" data-level="2.7" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#sequence-sampling-and-filtering"><i class="fa fa-check"></i><b>2.7</b> Sequence sampling and filtering</a>
<ul>
<li class="chapter" data-level="2.7.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#utilities"><i class="fa fa-check"></i><b>2.7.1</b> Utilities</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="3" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html"><i class="fa fa-check"></i><b>3</b> Reference documentation for the GO <em>OBITools</em> library</a>
<ul>
<li class="chapter" data-level="3.1" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#biosequence"><i class="fa fa-check"></i><b>3.1</b> BioSequence</a>
<ul>
<li class="chapter" data-level="3.1.1" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#creating-new-instances"><i class="fa fa-check"></i><b>3.1.1</b> Creating new instances</a></li>
<li class="chapter" data-level="3.1.2" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#end-of-life-of-a-biosequence-instance"><i class="fa fa-check"></i><b>3.1.2</b> End of life of a <code>BioSequence</code> instance</a></li>
<li class="chapter" data-level="3.1.3" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#accessing-to-the-elements-of-a-sequence"><i class="fa fa-check"></i><b>3.1.3</b> Accessing to the elements of a sequence</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="4" data-path="annexes.html"><a href="annexes.html"><i class="fa fa-check"></i><b>4</b> Annexes</a>
<ul>
<li class="chapter" data-level="4.0.1" data-path="annexes.html"><a href="annexes.html#sequence-attributes"><i class="fa fa-check"></i><b>4.0.1</b> Sequence attributes</a></li>
</ul></li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i><a href="./">The GO <em>OBITools</em></a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<section class="normal" id="section-">
<div id="reference-documentation-for-the-go-obitools-library" class="section level1 hasAnchor" number="3">
<h1><span class="header-section-number">3</span> Reference documentation for the GO <em>OBITools</em> library<a href="reference-documentation-for-the-go-obitools-library.html#reference-documentation-for-the-go-obitools-library" class="anchor-section" aria-label="Anchor link to header"></a></h1>
<div id="biosequence" class="section level2 hasAnchor" number="3.1">
<h2><span class="header-section-number">3.1</span> BioSequence<a href="reference-documentation-for-the-go-obitools-library.html#biosequence" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<p>The <code>BioSequence</code> class is used to represent biological sequences. It
allows for storing : - the sequence itself as a <code>[]byte</code> - the
sequencing quality score as a <code>[]byte</code> if needed - an identifier as a
<code>string</code> - a definition as a <code>string</code> - a set of <em>(key, value)</em> pairs in
a <code>map[sting]interface{}</code></p>
<p>BioSequence is defined in the obiseq module and is included using the
code</p>
<div class="sourceCode" id="cb7"><pre class="sourceCode go"><code class="sourceCode go"><span id="cb7-1"><a href="reference-documentation-for-the-go-obitools-library.html#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="op">(</span></span>
<span id="cb7-2"><a href="reference-documentation-for-the-go-obitools-library.html#cb7-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq&quot;</span></span>
<span id="cb7-3"><a href="reference-documentation-for-the-go-obitools-library.html#cb7-3" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span></code></pre></div>
<div id="creating-new-instances" class="section level3 hasAnchor" number="3.1.1">
<h3><span class="header-section-number">3.1.1</span> Creating new instances<a href="reference-documentation-for-the-go-obitools-library.html#creating-new-instances" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>To create new instance, use</p>
<ul>
<li><code>MakeBioSequence(id string, sequence []byte, definition string) obiseq.BioSequence</code></li>
<li><code>NewBioSequence(id string, sequence []byte, definition string) *obiseq.BioSequence</code></li>
</ul>
<p>Both create a <code>BioSequence</code> instance, but when the first one returns the
instance, the second returns a pointer on the new instance. Two other
functions <code>MakeEmptyBioSequence</code>, and <code>NewEmptyBioSequence</code> do the same
job but provide an uninitialized objects.</p>
<ul>
<li><code>id</code> parameters corresponds to the unique identifier of the
sequence. It mist be a string constituted of a single word (not
containing any space).</li>
<li><code>sequence</code> is the DNA sequence itself, provided as a <code>byte</code> array
(<code>[]byte</code>).</li>
<li><code>definition</code> is a <code>string</code>, potentially empty, but usualy containing
a sentence explaining what is that sequence.</li>
</ul>
<div class="sourceCode" id="cb8"><pre class="sourceCode go"><code class="sourceCode go"><span id="cb8-1"><a href="reference-documentation-for-the-go-obitools-library.html#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="op">(</span></span>
<span id="cb8-2"><a href="reference-documentation-for-the-go-obitools-library.html#cb8-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq&quot;</span></span>
<span id="cb8-3"><a href="reference-documentation-for-the-go-obitools-library.html#cb8-3" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span>
<span id="cb8-4"><a href="reference-documentation-for-the-go-obitools-library.html#cb8-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb8-5"><a href="reference-documentation-for-the-go-obitools-library.html#cb8-5" aria-hidden="true" tabindex="-1"></a><span class="kw">func</span> main<span class="op">()</span> <span class="op">{</span></span>
<span id="cb8-6"><a href="reference-documentation-for-the-go-obitools-library.html#cb8-6" aria-hidden="true" tabindex="-1"></a> myseq <span class="op">:=</span> obiseq<span class="op">.</span>NewBiosequence<span class="op">(</span></span>
<span id="cb8-7"><a href="reference-documentation-for-the-go-obitools-library.html#cb8-7" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;seq_GH0001&quot;</span><span class="op">,</span></span>
<span id="cb8-8"><a href="reference-documentation-for-the-go-obitools-library.html#cb8-8" aria-hidden="true" tabindex="-1"></a> bytes<span class="op">.</span>FromString<span class="op">(</span><span class="st">&quot;ACGTGTCAGTCG&quot;</span><span class="op">),</span></span>
<span id="cb8-9"><a href="reference-documentation-for-the-go-obitools-library.html#cb8-9" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;A short test sequence&quot;</span><span class="op">,</span></span>
<span id="cb8-10"><a href="reference-documentation-for-the-go-obitools-library.html#cb8-10" aria-hidden="true" tabindex="-1"></a> <span class="op">)</span></span>
<span id="cb8-11"><a href="reference-documentation-for-the-go-obitools-library.html#cb8-11" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
<p>When formated as fasta the parameters correspond to the following schema</p>
<pre><code>&gt;id definition containing potentially several words
sequence</code></pre>
</div>
<div id="end-of-life-of-a-biosequence-instance" class="section level3 hasAnchor" number="3.1.2">
<h3><span class="header-section-number">3.1.2</span> End of life of a <code>BioSequence</code> instance<a href="reference-documentation-for-the-go-obitools-library.html#end-of-life-of-a-biosequence-instance" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>When a <code>BioSequence</code> instance is no more used, it is normally taken in
charge by the GO garbage collector. You can if you want call the
<code>Recycle</code> method on the instance to store the allocated memory element
in a <code>pool</code> to limit allocation effort when many sequences are
manipulated.</p>
</div>
<div id="accessing-to-the-elements-of-a-sequence" class="section level3 hasAnchor" number="3.1.3">
<h3><span class="header-section-number">3.1.3</span> Accessing to the elements of a sequence<a href="reference-documentation-for-the-go-obitools-library.html#accessing-to-the-elements-of-a-sequence" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>The different elements of an <code>obiseq.BioSequence</code> must be accessed using
a set of methods. For the three main elements provided during the
creation of a new instance methodes are :</p>
<ul>
<li><code>Id() string</code></li>
<li><code>Sequence() []byte</code></li>
<li><code>Definition() string</code></li>
</ul>
<p>It exists pending method to change the value of these elements</p>
<ul>
<li><code>SetId(id string)</code></li>
<li><code>SetSequence(sequence []byte)</code></li>
<li><code>SetDefinition(definition string)</code></li>
</ul>
<div class="sourceCode" id="cb10"><pre class="sourceCode go"><code class="sourceCode go"><span id="cb10-1"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="op">(</span></span>
<span id="cb10-2"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;fmt&quot;</span></span>
<span id="cb10-3"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-3" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq&quot;</span></span>
<span id="cb10-4"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-4" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span>
<span id="cb10-5"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-5" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb10-6"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-6" aria-hidden="true" tabindex="-1"></a><span class="kw">func</span> main<span class="op">()</span> <span class="op">{</span></span>
<span id="cb10-7"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-7" aria-hidden="true" tabindex="-1"></a> myseq <span class="op">:=</span> obiseq<span class="op">.</span>NewBiosequence<span class="op">(</span></span>
<span id="cb10-8"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-8" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;seq_GH0001&quot;</span><span class="op">,</span></span>
<span id="cb10-9"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-9" aria-hidden="true" tabindex="-1"></a> bytes<span class="op">.</span>FromString<span class="op">(</span><span class="st">&quot;ACGTGTCAGTCG&quot;</span><span class="op">),</span></span>
<span id="cb10-10"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-10" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;A short test sequence&quot;</span><span class="op">,</span></span>
<span id="cb10-11"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-11" aria-hidden="true" tabindex="-1"></a> <span class="op">)</span></span>
<span id="cb10-12"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-12" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb10-13"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-13" aria-hidden="true" tabindex="-1"></a> fmt<span class="op">.</span>Println<span class="op">(</span>myseq<span class="op">.</span>Id<span class="op">())</span></span>
<span id="cb10-14"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-14" aria-hidden="true" tabindex="-1"></a> myseq<span class="op">.</span>SetId<span class="op">(</span><span class="st">&quot;SPE01_0001&quot;</span><span class="op">)</span></span>
<span id="cb10-15"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-15" aria-hidden="true" tabindex="-1"></a> fmt<span class="op">.</span>Println<span class="op">(</span>myseq<span class="op">.</span>Id<span class="op">())</span></span>
<span id="cb10-16"><a href="reference-documentation-for-the-go-obitools-library.html#cb10-16" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
<div id="different-ways-for-accessing-an-editing-the-sequence" class="section level4 hasAnchor" number="3.1.3.1">
<h4><span class="header-section-number">3.1.3.1</span> Different ways for accessing an editing the sequence<a href="reference-documentation-for-the-go-obitools-library.html#different-ways-for-accessing-an-editing-the-sequence" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<p>If <code>Sequence()</code>and <code>SetSequence(sequence []byte)</code> methods are the basic
ones, several other methods exist.</p>
<ul>
<li><code>String() string</code> return the sequence directly converted to a
<code>string</code> instance.</li>
<li>The <code>Write</code> method family allows for extending an existing sequence
following the buffer protocol.
<ul>
<li><code>Write(data []byte) (int, error)</code> allows for appending a byte
array on 3 end of the sequence.</li>
<li><code>WriteString(data string) (int, error)</code> allows for appending a
<code>string</code>.</li>
<li><code>WriteByte(data byte) error</code> allows for appending a single
<code>byte</code>.</li>
</ul></li>
</ul>
<p>The <code>Clear</code> method empties the sequence buffer.</p>
<div class="sourceCode" id="cb11"><pre class="sourceCode go"><code class="sourceCode go"><span id="cb11-1"><a href="reference-documentation-for-the-go-obitools-library.html#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="op">(</span></span>
<span id="cb11-2"><a href="reference-documentation-for-the-go-obitools-library.html#cb11-2" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;fmt&quot;</span></span>
<span id="cb11-3"><a href="reference-documentation-for-the-go-obitools-library.html#cb11-3" aria-hidden="true" tabindex="-1"></a> <span class="st">&quot;git.metabarcoding.org/lecasofts/go/obitools/pkg/obiseq&quot;</span></span>
<span id="cb11-4"><a href="reference-documentation-for-the-go-obitools-library.html#cb11-4" aria-hidden="true" tabindex="-1"></a><span class="op">)</span></span>
<span id="cb11-5"><a href="reference-documentation-for-the-go-obitools-library.html#cb11-5" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb11-6"><a href="reference-documentation-for-the-go-obitools-library.html#cb11-6" aria-hidden="true" tabindex="-1"></a><span class="kw">func</span> main<span class="op">()</span> <span class="op">{</span></span>
<span id="cb11-7"><a href="reference-documentation-for-the-go-obitools-library.html#cb11-7" aria-hidden="true" tabindex="-1"></a> myseq <span class="op">:=</span> obiseq<span class="op">.</span>NewEmptyBiosequence<span class="op">()</span></span>
<span id="cb11-8"><a href="reference-documentation-for-the-go-obitools-library.html#cb11-8" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb11-9"><a href="reference-documentation-for-the-go-obitools-library.html#cb11-9" aria-hidden="true" tabindex="-1"></a> myseq<span class="op">.</span>WriteString<span class="op">(</span><span class="st">&quot;accc&quot;</span><span class="op">)</span></span>
<span id="cb11-10"><a href="reference-documentation-for-the-go-obitools-library.html#cb11-10" aria-hidden="true" tabindex="-1"></a> myseq<span class="op">.</span>WriteByte<span class="op">(</span><span class="dt">byte</span><span class="op">(</span><span class="ch">&#39;c&#39;</span><span class="op">))</span></span>
<span id="cb11-11"><a href="reference-documentation-for-the-go-obitools-library.html#cb11-11" aria-hidden="true" tabindex="-1"></a> fmt<span class="op">.</span>Println<span class="op">(</span>myseq<span class="op">.</span>String<span class="op">())</span></span>
<span id="cb11-12"><a href="reference-documentation-for-the-go-obitools-library.html#cb11-12" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
</div>
<div id="sequence-quality-scores" class="section level4 hasAnchor" number="3.1.3.2">
<h4><span class="header-section-number">3.1.3.2</span> Sequence quality scores<a href="reference-documentation-for-the-go-obitools-library.html#sequence-quality-scores" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<p>Sequence quality scores cannot be initialized at the time of instance
creation. You must use dedicated methods to add quality scores to a
sequence.</p>
<p>To be coherent the length of both the DNA sequence and que quality score
sequence must be equal. But assessment of this constraint is realized.
It is of the programmer responsability to check that invariant.</p>
<p>While accessing to the quality scores relies on the method
<code>Quality() []byte</code>, setting the quality need to call one of the
following method. They run similarly to their sequence dedicated
conterpart.</p>
<ul>
<li><code>SetQualities(qualities Quality)</code></li>
<li><code>WriteQualities(data []byte) (int, error)</code></li>
<li><code>WriteByteQualities(data byte) error</code></li>
</ul>
<p>In a way analogous to the <code>Clear</code> method, <code>ClearQualities()</code> empties the
sequence of quality scores.</p>
</div>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
<a href="the-obitools-commands.html" class="navigation navigation-prev " aria-label="Previous page"><i class="fa fa-angle-left"></i></a>
<a href="annexes.html" class="navigation navigation-next " aria-label="Next page"><i class="fa fa-angle-right"></i></a>
</div>
</div>
<script src="book_assets/gitbook-2.6.7/js/app.min.js"></script>
<script src="book_assets/gitbook-2.6.7/js/clipboard.min.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-search.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-sharing.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-fontsettings.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-bookdown.js"></script>
<script src="book_assets/gitbook-2.6.7/js/jquery.highlight.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-clipboard.js"></script>
<script>
gitbook.require(["gitbook"], function(gitbook) {
gitbook.start({
"sharing": {
"github": false,
"facebook": true,
"twitter": true,
"linkedin": false,
"weibo": false,
"instapaper": false,
"vk": false,
"whatsapp": false,
"all": ["facebook", "twitter", "linkedin", "weibo", "instapaper"]
},
"fontsettings": {
"theme": "white",
"family": "sans",
"size": 2
},
"edit": {
"link": null,
"text": null
},
"history": {
"link": null,
"text": null
},
"view": {
"link": null,
"text": null
},
"download": ["_main.pdf"],
"search": {
"engine": "fuse",
"options": null
},
"toc": {
"collapse": "subsection"
}
});
});
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
var src = "true";
if (src === "" || src === "true") src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/latest.js?config=TeX-MML-AM_CHTML";
if (location.protocol !== "file:")
if (/^https?:/.test(src))
src = src.replace(/^https?:/, '');
script.src = src;
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,400 @@
<!DOCTYPE html>
<html lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>2 The OBITools commands | The GO OBITools</title>
<meta name="description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="generator" content="bookdown 0.29 and GitBook 2.6.7" />
<meta property="og:title" content="2 The OBITools commands | The GO OBITools" />
<meta property="og:type" content="book" />
<meta property="og:description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="github-repo" content="seankross/bookdown-start" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="2 The OBITools commands | The GO OBITools" />
<meta name="twitter:description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="author" content="SEric Coissac" />
<meta name="date" content="2022-08-25" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="prev" href="the-obitools.html"/>
<link rel="next" href="reference-documentation-for-the-go-obitools-library.html"/>
<script src="book_assets/jquery-3.6.0/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/fuse.js@6.4.6/dist/fuse.min.js"></script>
<link href="book_assets/gitbook-2.6.7/css/style.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-table.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-bookdown.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-highlight.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-search.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-fontsettings.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-clipboard.css" rel="stylesheet" />
<link href="book_assets/anchor-sections-1.1.0/anchor-sections.css" rel="stylesheet" />
<link href="book_assets/anchor-sections-1.1.0/anchor-sections-hash.css" rel="stylesheet" />
<script src="book_assets/anchor-sections-1.1.0/anchor-sections.js"></script>
<style type="text/css">
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
</head>
<body>
<div class="book without-animation with-summary font-size-2 font-family-1" data-basepath=".">
<div class="book-summary">
<nav role="navigation">
<ul class="summary">
<li class="chapter" data-level="1" data-path="the-obitools.html"><a href="the-obitools.html"><i class="fa fa-check"></i><b>1</b> The OBITools</a>
<ul>
<li class="chapter" data-level="1.1" data-path="the-obitools.html"><a href="the-obitools.html#aims-of-obitools"><i class="fa fa-check"></i><b>1.1</b> Aims of <em>OBITools</em></a></li>
<li class="chapter" data-level="1.2" data-path="the-obitools.html"><a href="the-obitools.html#file-formats-usable-with-obitools"><i class="fa fa-check"></i><b>1.2</b> File formats usable with <em>OBITools</em></a>
<ul>
<li class="chapter" data-level="1.2.1" data-path="the-obitools.html"><a href="the-obitools.html#the-sequence-files"><i class="fa fa-check"></i><b>1.2.1</b> The sequence files</a></li>
<li class="chapter" data-level="1.2.2" data-path="the-obitools.html"><a href="the-obitools.html#the-iupac-code"><i class="fa fa-check"></i><b>1.2.2</b> The IUPAC Code</a></li>
<li class="chapter" data-level="1.2.3" data-path="the-obitools.html"><a href="the-obitools.html#classical-fasta"><i class="fa fa-check"></i><b>1.2.3</b> The <em>fasta</em> format</a></li>
<li class="chapter" data-level="1.2.4" data-path="the-obitools.html"><a href="the-obitools.html#classical-fastq"><i class="fa fa-check"></i><b>1.2.4</b> The <em>fastq</em> sequence format</a></li>
</ul></li>
<li class="chapter" data-level="1.3" data-path="the-obitools.html"><a href="the-obitools.html#file-extension"><i class="fa fa-check"></i><b>1.3</b> File extension</a></li>
<li class="chapter" data-level="1.4" data-path="the-obitools.html"><a href="the-obitools.html#see-also"><i class="fa fa-check"></i><b>1.4</b> See also</a></li>
<li class="chapter" data-level="1.5" data-path="the-obitools.html"><a href="the-obitools.html#references"><i class="fa fa-check"></i><b>1.5</b> References</a></li>
</ul></li>
<li class="chapter" data-level="2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html"><i class="fa fa-check"></i><b>2</b> The <em>OBITools</em> commands</a>
<ul>
<li class="chapter" data-level="2.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-the-input-files-to-obitools-commands"><i class="fa fa-check"></i><b>2.1</b> Specifying the input files to <em>OBITools</em> commands</a></li>
<li class="chapter" data-level="2.2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#options-common-to-most-of-the-obitools-commands"><i class="fa fa-check"></i><b>2.2</b> Options common to most of the <em>OBITools</em> commands</a>
<ul>
<li class="chapter" data-level="2.2.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-input-format"><i class="fa fa-check"></i><b>2.2.1</b> Specifying input format</a></li>
<li class="chapter" data-level="2.2.2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-output-format"><i class="fa fa-check"></i><b>2.2.2</b> Specifying output format</a></li>
<li class="chapter" data-level="2.2.3" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#format-of-the-annotations-in-fasta-and-fastq-files"><i class="fa fa-check"></i><b>2.2.3</b> Format of the annotations in Fasta and Fastq files</a></li>
</ul></li>
<li class="chapter" data-level="2.3" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#metabarcode-design-and-quality-assessment"><i class="fa fa-check"></i><b>2.3</b> Metabarcode design and quality assessment</a></li>
<li class="chapter" data-level="2.4" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#file-format-conversions"><i class="fa fa-check"></i><b>2.4</b> File format conversions</a></li>
<li class="chapter" data-level="2.5" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#sequence-annotations"><i class="fa fa-check"></i><b>2.5</b> Sequence annotations</a></li>
<li class="chapter" data-level="2.6" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#computations-on-sequences"><i class="fa fa-check"></i><b>2.6</b> Computations on sequences</a>
<ul>
<li class="chapter" data-level="2.6.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#obipairing"><i class="fa fa-check"></i><b>2.6.1</b> <code>obipairing</code></a></li>
</ul></li>
<li class="chapter" data-level="2.7" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#sequence-sampling-and-filtering"><i class="fa fa-check"></i><b>2.7</b> Sequence sampling and filtering</a>
<ul>
<li class="chapter" data-level="2.7.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#utilities"><i class="fa fa-check"></i><b>2.7.1</b> Utilities</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="3" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html"><i class="fa fa-check"></i><b>3</b> Reference documentation for the GO <em>OBITools</em> library</a>
<ul>
<li class="chapter" data-level="3.1" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#biosequence"><i class="fa fa-check"></i><b>3.1</b> BioSequence</a>
<ul>
<li class="chapter" data-level="3.1.1" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#creating-new-instances"><i class="fa fa-check"></i><b>3.1.1</b> Creating new instances</a></li>
<li class="chapter" data-level="3.1.2" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#end-of-life-of-a-biosequence-instance"><i class="fa fa-check"></i><b>3.1.2</b> End of life of a <code>BioSequence</code> instance</a></li>
<li class="chapter" data-level="3.1.3" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#accessing-to-the-elements-of-a-sequence"><i class="fa fa-check"></i><b>3.1.3</b> Accessing to the elements of a sequence</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="4" data-path="annexes.html"><a href="annexes.html"><i class="fa fa-check"></i><b>4</b> Annexes</a>
<ul>
<li class="chapter" data-level="4.0.1" data-path="annexes.html"><a href="annexes.html#sequence-attributes"><i class="fa fa-check"></i><b>4.0.1</b> Sequence attributes</a></li>
</ul></li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i><a href="./">The GO <em>OBITools</em></a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<section class="normal" id="section-">
<div id="the-obitools-commands" class="section level1 hasAnchor" number="2">
<h1><span class="header-section-number">2</span> The <em>OBITools</em> commands<a href="the-obitools-commands.html#the-obitools-commands" class="anchor-section" aria-label="Anchor link to header"></a></h1>
<div id="specifying-the-input-files-to-obitools-commands" class="section level2 hasAnchor" number="2.1">
<h2><span class="header-section-number">2.1</span> Specifying the input files to <em>OBITools</em> commands<a href="the-obitools-commands.html#specifying-the-input-files-to-obitools-commands" class="anchor-section" aria-label="Anchor link to header"></a></h2>
</div>
<div id="options-common-to-most-of-the-obitools-commands" class="section level2 hasAnchor" number="2.2">
<h2><span class="header-section-number">2.2</span> Options common to most of the <em>OBITools</em> commands<a href="the-obitools-commands.html#options-common-to-most-of-the-obitools-commands" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<div id="specifying-input-format" class="section level3 hasAnchor" number="2.2.1">
<h3><span class="header-section-number">2.2.1</span> Specifying input format<a href="the-obitools-commands.html#specifying-input-format" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>Five sequence formats are accepted for input files. <a href="#fasta-classical" title="Fasta format description">Fasta</a> and <a href="#fastq-classical" title="Fastq format description">Fastq</a> are the main ones, EMBL and Genbank allow the use of flat files produced by these two international databases. The last one, ecoPCR, is maintained for compatibility with previous <em>OBITools</em> and allows to read <em>ecoPCR</em> outputs as sequence files.</p>
<ul>
<li><code>--ecopcr</code> : Read data following the <em>ecoPCR</em> output format.</li>
<li><code>--embl</code> Read data following the <em>EMBL</em> flatfile format.</li>
<li><code>--genbank</code> Read data following the <em>Genbank</em> flatfile format.</li>
</ul>
<p>Several encoding schemes have been proposed for quality scores in <a href="#fastq-classical" title="Fastq format description">Fastq</a> format. Currently, <em>OBITools</em> considers Sanger encoding as the standard. For reasons of compatibility with older datasets produced with <em>Solexa</em> sequencers, it is possible, by using the following option, to force the use of the corresponding quality encoding scheme when reading these older files.</p>
<ul>
<li><code>--solexa</code> Decodes quality string according to the Solexa specification. (default: false)</li>
</ul>
</div>
<div id="specifying-output-format" class="section level3 hasAnchor" number="2.2.2">
<h3><span class="header-section-number">2.2.2</span> Specifying output format<a href="the-obitools-commands.html#specifying-output-format" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>Only two output sequence formats are supported by OBITools, Fasta and Fastq. Fastq is used when output sequences are associated with quality information. Otherwise, Fasta is the default format. However, it is possible to force the output format by using one of the following two options. Forcing the use of Fasta results in the loss of quality information. Conversely, when the Fastq format is forced with sequences that have no quality data, dummy qualities set to 40 for each nucleotide are added.</p>
<ul>
<li><code>--fasta-output</code> Read data following the ecoPCR output format.</li>
<li><code>--fastq-output</code> Read data following the EMBL flatfile format.</li>
</ul>
<p>OBITools allows multiple input files to be specified for a single command.</p>
<ul>
<li><code>--no-order</code> When several input files are provided, indicates that there is no order among them. (default: false)</li>
</ul>
</div>
<div id="format-of-the-annotations-in-fasta-and-fastq-files" class="section level3 hasAnchor" number="2.2.3">
<h3><span class="header-section-number">2.2.3</span> Format of the annotations in Fasta and Fastq files<a href="the-obitools-commands.html#format-of-the-annotations-in-fasta-and-fastq-files" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>OBITools extend the <a href="#fasta-classical" title="Fasta format description">Fasta</a> and <a href="#fastq-classical" title="Fastq format description">Fastq</a> formats by introducing a format for the title lines of these formats allowing to annotate every sequence. While the previous version of OBITools used an <em>ad-hoc</em> format for these annotation, this new version introduce the usage of the standard JSON format to store them.</p>
<p>On input, OBITools automatically recognize the format of the annotations, but two options allows to force the parsing following one of them. You should normally not need to use these options.</p>
<ul>
<li><p><code>--input-OBI-header</code> FASTA/FASTQ title line annotations follow OBI format. (default: false)</p></li>
<li><p><code>--input-json-header</code> FASTA/FASTQ title line annotations follow json format. (default: false)</p></li>
</ul>
<p>On output, by default annotation are formatted using the new JSON format. For compatibility with previous version of OBITools and with external scripts and software, it is possible to force the usage of the previous OBITools format.</p>
<ul>
<li><p><code>--output-OBI-header|-O</code> output FASTA/FASTQ title line annotations follow OBI format. (default: false)</p></li>
<li><p><code>--output-json-header</code> output FASTA/FASTQ title line annotations follow json format. (default: false)</p></li>
</ul>
<div id="system-related-options" class="section level4 hasAnchor" number="2.2.3.1">
<h4><span class="header-section-number">2.2.3.1</span> System related options<a href="the-obitools-commands.html#system-related-options" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<ul>
<li><code>--debug</code> (default: false)</li>
<li><code>--help\|-h\|-?</code> (default: false)</li>
<li><code>--max-cpu &lt;int&gt;</code> Number of parallele threads computing the result (default: 10)</li>
<li><code>--workers\|-w &lt;int&gt;</code> Number of parallele threads computing the result (default: 9)</li>
</ul>
</div>
</div>
</div>
<div id="metabarcode-design-and-quality-assessment" class="section level2 hasAnchor" number="2.3">
<h2><span class="header-section-number">2.3</span> Metabarcode design and quality assessment<a href="the-obitools-commands.html#metabarcode-design-and-quality-assessment" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<div id="obipcr" class="section level4 hasAnchor" number="2.3.0.1">
<h4><span class="header-section-number">2.3.0.1</span> <code>obipcr</code><a href="the-obitools-commands.html#obipcr" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<blockquote>
<p>Replace the <code>ecoPCR</code> original <em>OBITools</em></p>
</blockquote>
</div>
</div>
<div id="file-format-conversions" class="section level2 hasAnchor" number="2.4">
<h2><span class="header-section-number">2.4</span> File format conversions<a href="the-obitools-commands.html#file-format-conversions" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<div id="obiconvert" class="section level4 hasAnchor" number="2.4.0.1">
<h4><span class="header-section-number">2.4.0.1</span> <code>obiconvert</code><a href="the-obitools-commands.html#obiconvert" class="anchor-section" aria-label="Anchor link to header"></a></h4>
</div>
</div>
<div id="sequence-annotations" class="section level2 hasAnchor" number="2.5">
<h2><span class="header-section-number">2.5</span> Sequence annotations<a href="the-obitools-commands.html#sequence-annotations" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<div id="obitag" class="section level4 hasAnchor" number="2.5.0.1">
<h4><span class="header-section-number">2.5.0.1</span> <code>obitag</code><a href="the-obitools-commands.html#obitag" class="anchor-section" aria-label="Anchor link to header"></a></h4>
</div>
</div>
<div id="computations-on-sequences" class="section level2 hasAnchor" number="2.6">
<h2><span class="header-section-number">2.6</span> Computations on sequences<a href="the-obitools-commands.html#computations-on-sequences" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<div id="obipairing" class="section level3 hasAnchor" number="2.6.1">
<h3><span class="header-section-number">2.6.1</span> <code>obipairing</code><a href="the-obitools-commands.html#obipairing" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<blockquote>
<p>Replace the <code>illuminapairedends</code> original <em>OBITools</em></p>
</blockquote>
<div id="obimultiplex" class="section level4 hasAnchor" number="2.6.1.1">
<h4><span class="header-section-number">2.6.1.1</span> <code>obimultiplex</code><a href="the-obitools-commands.html#obimultiplex" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<blockquote>
<p>Replace the <code>ngsfilter</code> original <em>OBITools</em></p>
</blockquote>
</div>
<div id="obicomplement" class="section level4 hasAnchor" number="2.6.1.2">
<h4><span class="header-section-number">2.6.1.2</span> <code>obicomplement</code><a href="the-obitools-commands.html#obicomplement" class="anchor-section" aria-label="Anchor link to header"></a></h4>
</div>
<div id="obiclean" class="section level4 hasAnchor" number="2.6.1.3">
<h4><span class="header-section-number">2.6.1.3</span> <code>obiclean</code><a href="the-obitools-commands.html#obiclean" class="anchor-section" aria-label="Anchor link to header"></a></h4>
</div>
<div id="obiuniq" class="section level4 hasAnchor" number="2.6.1.4">
<h4><span class="header-section-number">2.6.1.4</span> <code>obiuniq</code><a href="the-obitools-commands.html#obiuniq" class="anchor-section" aria-label="Anchor link to header"></a></h4>
</div>
</div>
</div>
<div id="sequence-sampling-and-filtering" class="section level2 hasAnchor" number="2.7">
<h2><span class="header-section-number">2.7</span> Sequence sampling and filtering<a href="the-obitools-commands.html#sequence-sampling-and-filtering" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<div id="obigrep" class="section level4 hasAnchor" number="2.7.0.1">
<h4><span class="header-section-number">2.7.0.1</span> <code>obigrep</code><a href="the-obitools-commands.html#obigrep" class="anchor-section" aria-label="Anchor link to header"></a></h4>
</div>
<div id="utilities" class="section level3 hasAnchor" number="2.7.1">
<h3><span class="header-section-number">2.7.1</span> Utilities<a href="the-obitools-commands.html#utilities" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<div id="obicount" class="section level4 hasAnchor" number="2.7.1.1">
<h4><span class="header-section-number">2.7.1.1</span> <code>obicount</code><a href="the-obitools-commands.html#obicount" class="anchor-section" aria-label="Anchor link to header"></a></h4>
</div>
<div id="obidistribute" class="section level4 hasAnchor" number="2.7.1.2">
<h4><span class="header-section-number">2.7.1.2</span> <code>obidistribute</code><a href="the-obitools-commands.html#obidistribute" class="anchor-section" aria-label="Anchor link to header"></a></h4>
</div>
<div id="obifind" class="section level4 hasAnchor" number="2.7.1.3">
<h4><span class="header-section-number">2.7.1.3</span> <code>obifind</code><a href="the-obitools-commands.html#obifind" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<blockquote>
<p>Replace the <code>ecofind</code> original <em>OBITools.</em></p>
</blockquote>
</div>
</div>
</div>
</div>
</section>
</div>
</div>
</div>
<a href="the-obitools.html" class="navigation navigation-prev " aria-label="Previous page"><i class="fa fa-angle-left"></i></a>
<a href="reference-documentation-for-the-go-obitools-library.html" class="navigation navigation-next " aria-label="Next page"><i class="fa fa-angle-right"></i></a>
</div>
</div>
<script src="book_assets/gitbook-2.6.7/js/app.min.js"></script>
<script src="book_assets/gitbook-2.6.7/js/clipboard.min.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-search.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-sharing.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-fontsettings.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-bookdown.js"></script>
<script src="book_assets/gitbook-2.6.7/js/jquery.highlight.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-clipboard.js"></script>
<script>
gitbook.require(["gitbook"], function(gitbook) {
gitbook.start({
"sharing": {
"github": false,
"facebook": true,
"twitter": true,
"linkedin": false,
"weibo": false,
"instapaper": false,
"vk": false,
"whatsapp": false,
"all": ["facebook", "twitter", "linkedin", "weibo", "instapaper"]
},
"fontsettings": {
"theme": "white",
"family": "sans",
"size": 2
},
"edit": {
"link": null,
"text": null
},
"history": {
"link": null,
"text": null
},
"view": {
"link": null,
"text": null
},
"download": ["_main.pdf"],
"search": {
"engine": "fuse",
"options": null
},
"toc": {
"collapse": "subsection"
}
});
});
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
var src = "true";
if (src === "" || src === "true") src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/latest.js?config=TeX-MML-AM_CHTML";
if (location.protocol !== "file:")
if (/^https?:/.test(src))
src = src.replace(/^https?:/, '');
script.src = src;
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>

554
doc/_book/the-obitools.html Normal file
View File

@ -0,0 +1,554 @@
<!DOCTYPE html>
<html lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>The GO OBITools</title>
<meta name="description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="generator" content="bookdown 0.29 and GitBook 2.6.7" />
<meta property="og:title" content="The GO OBITools" />
<meta property="og:type" content="book" />
<meta property="og:description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="github-repo" content="seankross/bookdown-start" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="The GO OBITools" />
<meta name="twitter:description" content="Description of the principles used into the GO implementation of OBITools." />
<meta name="author" content="SEric Coissac" />
<meta name="date" content="2022-08-25" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="next" href="the-obitools-commands.html"/>
<script src="book_assets/jquery-3.6.0/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/fuse.js@6.4.6/dist/fuse.min.js"></script>
<link href="book_assets/gitbook-2.6.7/css/style.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-table.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-bookdown.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-highlight.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-search.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-fontsettings.css" rel="stylesheet" />
<link href="book_assets/gitbook-2.6.7/css/plugin-clipboard.css" rel="stylesheet" />
<link href="book_assets/anchor-sections-1.1.0/anchor-sections.css" rel="stylesheet" />
<link href="book_assets/anchor-sections-1.1.0/anchor-sections-hash.css" rel="stylesheet" />
<script src="book_assets/anchor-sections-1.1.0/anchor-sections.js"></script>
<style type="text/css">
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
</head>
<body>
<div class="book without-animation with-summary font-size-2 font-family-1" data-basepath=".">
<div class="book-summary">
<nav role="navigation">
<ul class="summary">
<li class="chapter" data-level="1" data-path="the-obitools.html"><a href="the-obitools.html"><i class="fa fa-check"></i><b>1</b> The OBITools</a>
<ul>
<li class="chapter" data-level="1.1" data-path="the-obitools.html"><a href="the-obitools.html#aims-of-obitools"><i class="fa fa-check"></i><b>1.1</b> Aims of <em>OBITools</em></a></li>
<li class="chapter" data-level="1.2" data-path="the-obitools.html"><a href="the-obitools.html#file-formats-usable-with-obitools"><i class="fa fa-check"></i><b>1.2</b> File formats usable with <em>OBITools</em></a>
<ul>
<li class="chapter" data-level="1.2.1" data-path="the-obitools.html"><a href="the-obitools.html#the-sequence-files"><i class="fa fa-check"></i><b>1.2.1</b> The sequence files</a></li>
<li class="chapter" data-level="1.2.2" data-path="the-obitools.html"><a href="the-obitools.html#the-iupac-code"><i class="fa fa-check"></i><b>1.2.2</b> The IUPAC Code</a></li>
<li class="chapter" data-level="1.2.3" data-path="the-obitools.html"><a href="the-obitools.html#classical-fasta"><i class="fa fa-check"></i><b>1.2.3</b> The <em>fasta</em> format</a></li>
<li class="chapter" data-level="1.2.4" data-path="the-obitools.html"><a href="the-obitools.html#classical-fastq"><i class="fa fa-check"></i><b>1.2.4</b> The <em>fastq</em> sequence format</a></li>
</ul></li>
<li class="chapter" data-level="1.3" data-path="the-obitools.html"><a href="the-obitools.html#file-extension"><i class="fa fa-check"></i><b>1.3</b> File extension</a></li>
<li class="chapter" data-level="1.4" data-path="the-obitools.html"><a href="the-obitools.html#see-also"><i class="fa fa-check"></i><b>1.4</b> See also</a></li>
<li class="chapter" data-level="1.5" data-path="the-obitools.html"><a href="the-obitools.html#references"><i class="fa fa-check"></i><b>1.5</b> References</a></li>
</ul></li>
<li class="chapter" data-level="2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html"><i class="fa fa-check"></i><b>2</b> The <em>OBITools</em> commands</a>
<ul>
<li class="chapter" data-level="2.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-the-input-files-to-obitools-commands"><i class="fa fa-check"></i><b>2.1</b> Specifying the input files to <em>OBITools</em> commands</a></li>
<li class="chapter" data-level="2.2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#options-common-to-most-of-the-obitools-commands"><i class="fa fa-check"></i><b>2.2</b> Options common to most of the <em>OBITools</em> commands</a>
<ul>
<li class="chapter" data-level="2.2.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-input-format"><i class="fa fa-check"></i><b>2.2.1</b> Specifying input format</a></li>
<li class="chapter" data-level="2.2.2" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#specifying-output-format"><i class="fa fa-check"></i><b>2.2.2</b> Specifying output format</a></li>
<li class="chapter" data-level="2.2.3" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#format-of-the-annotations-in-fasta-and-fastq-files"><i class="fa fa-check"></i><b>2.2.3</b> Format of the annotations in Fasta and Fastq files</a></li>
</ul></li>
<li class="chapter" data-level="2.3" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#metabarcode-design-and-quality-assessment"><i class="fa fa-check"></i><b>2.3</b> Metabarcode design and quality assessment</a></li>
<li class="chapter" data-level="2.4" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#file-format-conversions"><i class="fa fa-check"></i><b>2.4</b> File format conversions</a></li>
<li class="chapter" data-level="2.5" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#sequence-annotations"><i class="fa fa-check"></i><b>2.5</b> Sequence annotations</a></li>
<li class="chapter" data-level="2.6" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#computations-on-sequences"><i class="fa fa-check"></i><b>2.6</b> Computations on sequences</a>
<ul>
<li class="chapter" data-level="2.6.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#obipairing"><i class="fa fa-check"></i><b>2.6.1</b> <code>obipairing</code></a></li>
</ul></li>
<li class="chapter" data-level="2.7" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#sequence-sampling-and-filtering"><i class="fa fa-check"></i><b>2.7</b> Sequence sampling and filtering</a>
<ul>
<li class="chapter" data-level="2.7.1" data-path="the-obitools-commands.html"><a href="the-obitools-commands.html#utilities"><i class="fa fa-check"></i><b>2.7.1</b> Utilities</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="3" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html"><i class="fa fa-check"></i><b>3</b> Reference documentation for the GO <em>OBITools</em> library</a>
<ul>
<li class="chapter" data-level="3.1" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#biosequence"><i class="fa fa-check"></i><b>3.1</b> BioSequence</a>
<ul>
<li class="chapter" data-level="3.1.1" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#creating-new-instances"><i class="fa fa-check"></i><b>3.1.1</b> Creating new instances</a></li>
<li class="chapter" data-level="3.1.2" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#end-of-life-of-a-biosequence-instance"><i class="fa fa-check"></i><b>3.1.2</b> End of life of a <code>BioSequence</code> instance</a></li>
<li class="chapter" data-level="3.1.3" data-path="reference-documentation-for-the-go-obitools-library.html"><a href="reference-documentation-for-the-go-obitools-library.html#accessing-to-the-elements-of-a-sequence"><i class="fa fa-check"></i><b>3.1.3</b> Accessing to the elements of a sequence</a></li>
</ul></li>
</ul></li>
<li class="chapter" data-level="4" data-path="annexes.html"><a href="annexes.html"><i class="fa fa-check"></i><b>4</b> Annexes</a>
<ul>
<li class="chapter" data-level="4.0.1" data-path="annexes.html"><a href="annexes.html#sequence-attributes"><i class="fa fa-check"></i><b>4.0.1</b> Sequence attributes</a></li>
</ul></li>
</ul>
</nav>
</div>
<div class="book-body">
<div class="body-inner">
<div class="book-header" role="navigation">
<h1>
<i class="fa fa-circle-o-notch fa-spin"></i><a href="./">The GO <em>OBITools</em></a>
</h1>
</div>
<div class="page-wrapper" tabindex="-1" role="main">
<div class="page-inner">
<section class="normal" id="section-">
<div id="header">
<h1 class="title">The GO <em>OBITools</em></h1>
<p class="author"><em>SEric Coissac</em></p>
<p class="date"><em>2022-08-25</em></p>
</div>
<div id="the-obitools" class="section level1 hasAnchor" number="1">
<h1><span class="header-section-number">1</span> The OBITools<a href="the-obitools.html#the-obitools" class="anchor-section" aria-label="Anchor link to header"></a></h1>
<div id="aims-of-obitools" class="section level2 hasAnchor" number="1.1">
<h2><span class="header-section-number">1.1</span> Aims of <em>OBITools</em><a href="the-obitools.html#aims-of-obitools" class="anchor-section" aria-label="Anchor link to header"></a></h2>
</div>
<div id="file-formats-usable-with-obitools" class="section level2 hasAnchor" number="1.2">
<h2><span class="header-section-number">1.2</span> File formats usable with <em>OBITools</em><a href="the-obitools.html#file-formats-usable-with-obitools" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<div id="the-sequence-files" class="section level3 hasAnchor" number="1.2.1">
<h3><span class="header-section-number">1.2.1</span> The sequence files<a href="the-obitools.html#the-sequence-files" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>Sequences can be stored following various format. OBITools knows some of
them. The central formats for sequence files manipulated by OBITools
scripts are the <code>fasta</code> and fastq format. OBITools extends the both
these formats by specifying a syntax to include in the definition line
data qualifying the sequence. All file formats use the <code>IUPAC</code> code for
encoding nucleotides.</p>
</div>
<div id="the-iupac-code" class="section level3 hasAnchor" number="1.2.2">
<h3><span class="header-section-number">1.2.2</span> The IUPAC Code<a href="the-obitools.html#the-iupac-code" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>The International Union of Pure and Applied Chemistry (IUPAC_) defined
the standard code for representing protein or DNA sequences.</p>
<div id="DNA-IUPAC" class="section level4 hasAnchor" number="1.2.2.1">
<h4><span class="header-section-number">1.2.2.1</span> Nucleic IUPAC Code<a href="the-obitools.html#DNA-IUPAC" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<table>
<thead>
<tr class="header">
<th><strong>Code</strong></th>
<th><strong>Nucleotide</strong></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>A</td>
<td>Adenine</td>
</tr>
<tr class="even">
<td>C</td>
<td>Cytosine</td>
</tr>
<tr class="odd">
<td>G</td>
<td>Guanine</td>
</tr>
<tr class="even">
<td>T</td>
<td>Thymine</td>
</tr>
<tr class="odd">
<td>U</td>
<td>Uracil</td>
</tr>
<tr class="even">
<td>R</td>
<td>Purine (A or G)</td>
</tr>
<tr class="odd">
<td>Y</td>
<td>Pyrimidine (C, T, or U)</td>
</tr>
<tr class="even">
<td>M</td>
<td>C or A</td>
</tr>
<tr class="odd">
<td>K</td>
<td>T, U, or G</td>
</tr>
<tr class="even">
<td>W</td>
<td>T, U, or A</td>
</tr>
<tr class="odd">
<td>S</td>
<td>C or G</td>
</tr>
<tr class="even">
<td>B</td>
<td>C, T, U, or G (not A)</td>
</tr>
<tr class="odd">
<td>D</td>
<td>A, T, U, or G (not C)</td>
</tr>
<tr class="even">
<td>H</td>
<td>A, T, U, or C (not G)</td>
</tr>
<tr class="odd">
<td>V</td>
<td>A, C, or G (not T, not U)</td>
</tr>
<tr class="even">
<td>N</td>
<td>Any base (A, C, G, T, or U)</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="classical-fasta" class="section level3 hasAnchor" number="1.2.3">
<h3><span class="header-section-number">1.2.3</span> The <em>fasta</em> format<a href="the-obitools.html#classical-fasta" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>The <strong>fasta format</strong> is certainly the most widely used sequence file
format. This is certainly due to its great simplicity. It was originally
created for the Lipman and Pearson <a href="http://www.ncbi.nlm.nih.gov/pubmed/3162770?dopt=Citation">FASTA
program</a>.
OBITools use in more of the classical :ref:<code>fasta</code> format an
:ref:<code>extended version</code> of this format where structured data are
included in the title line.</p>
<p>In <em>fasta</em> format a sequence is represented by a title line beginning
with a <strong><code>&gt;</code></strong> character and the sequences by itself following the
:doc:<code>iupac</code> code. The sequence is usually split other severals lines of
the same length (expect for the last one)</p>
<pre><code>&gt;my_sequence this is my pretty sequence
ACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGT
GTGCTGACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTGTTT
AACGACGTTGCAGTACGTTGCAGT</code></pre>
<p>This is no special format for the title line excepting that this line
should be unique. Usually the first word following the <strong>&gt;</strong> character
is considered as the sequence identifier. The end of the title line
corresponding to a description of the sequence. Several sequences can be
concatenated in a same file. The description of the next sequence is
just pasted at the end of the record of the previous one</p>
<pre><code>&gt;sequence_A this is my first pretty sequence
ACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGT
GTGCTGACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTGTTT
AACGACGTTGCAGTACGTTGCAGT
&gt;sequence_B this is my second pretty sequence
ACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGT
GTGCTGACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTGTTT
AACGACGTTGCAGTACGTTGCAGT
&gt;sequence_C this is my third pretty sequence
ACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGT
GTGCTGACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTACGTTGCAGTGTTT
AACGACGTTGCAGTACGTTGCAGT</code></pre>
</div>
<div id="classical-fastq" class="section level3 hasAnchor" number="1.2.4">
<h3><span class="header-section-number">1.2.4</span> The <em>fastq</em> sequence format<a href="the-obitools.html#classical-fastq" class="anchor-section" aria-label="Anchor link to header"></a></h3>
<p>.. note::</p>
<pre><code>This article uses material from the Wikipedia article
`FASTQ format `
which is released under the
`Creative Commons Attribution-Share-Alike License 3.0 `</code></pre>
<p><strong>fastq format</strong> is a text-based format for storing both a biological
sequence (usually nucleotide sequence) and its corresponding quality
scores. Both the sequence letter and quality score are encoded with a
single ASCII character for brevity. It was originally developed at the
<code>Wellcome Trust Sanger Institute</code> to bundle a <a href="the-obitools.html#classical-fasta">fasta</a>
sequence and its quality data, but has recently become the <em>de facto</em>
standard for storing the output of high throughput sequencing
instruments such as the Illumina Genome Analyzer Illumina. [1]_</p>
<div id="format" class="section level4 hasAnchor" number="1.2.4.1">
<h4><span class="header-section-number">1.2.4.1</span> Format<a href="the-obitools.html#format" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<p>A fastq file normally uses four lines per sequence.</p>
<ul>
<li>Line 1 begins with a @ character and is followed by a sequence
identifier and an <em>optional</em> description (like a :ref:<code>fasta</code> title
line).</li>
<li>Line 2 is the raw sequence letters.</li>
<li>Line 3 begins with a + character and is <em>optionally</em> followed by
the same sequence identifier (and any description) again.</li>
<li>Line 4 encodes the quality values for the sequence in Line 2, and
must contain the same number of symbols as letters in the sequence.</li>
</ul>
<p>A fastq file containing a single sequence might look like this:</p>
<pre><code>@SEQ_ID
GATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT
+
!&#39;&#39;*((((***+))%%%++)(%%%%).1***-+*&#39;&#39;))**55CCF&gt;&gt;&gt;&gt;&gt;&gt;CCCCCCC65</code></pre>
<p>The character ! represents the lowest quality while ~ is the
highest. Here are the quality value characters in left-to-right
increasing order of quality (<code>ASCII</code>):</p>
<pre><code>!&quot;#$%&amp;&#39;()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~</code></pre>
<p>The original Sanger FASTQ files also allowed the sequence and quality
strings to be wrapped (split over multiple lines), but this is generally
discouraged as it can make parsing complicated due to the unfortunate
choice of “@” and “+” as markers (these characters can also occur in
the quality string).</p>
</div>
<div id="variations" class="section level4 hasAnchor" number="1.2.4.2">
<h4><span class="header-section-number">1.2.4.2</span> Variations<a href="the-obitools.html#variations" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<div id="quality" class="section level5 hasAnchor" number="1.2.4.2.1">
<h5><span class="header-section-number">1.2.4.2.1</span> Quality<a href="the-obitools.html#quality" class="anchor-section" aria-label="Anchor link to header"></a></h5>
<p>A quality value <em>Q</em> is an integer mapping of <em>p</em> (i.e., the probability
that the corresponding base call is incorrect). Two different equations
have been in use. The first is the standard Sanger variant to assess
reliability of a base call, otherwise known as Phred quality score:</p>
<p><span class="math display">\[
Q_\text{sanger} = -10 \, \log_{10} p
\]</span></p>
<p>The Solexa pipeline (i.e., the software delivered with the Illumina
Genome Analyzer) earlier used a different mapping, encoding the odds
<span class="math inline">\(\mathbf{p}/(1-\mathbf{p})\)</span> instead of the probability <span class="math inline">\(\mathbf{p}\)</span>:</p>
<p><span class="math display">\[
Q_\text{solexa-prior to v.1.3} = -10 \, \log_{10} \frac{p}{1-p}
\]</span></p>
<p>Although both mappings are asymptotically identical at higher quality
values, they differ at lower quality levels (i.e., approximately
<span class="math inline">\(\mathbf{p} &gt; 0.05\)</span>, or equivalently, <span class="math inline">\(\mathbf{Q} &lt; 13\)</span>).</p>
<p>|Relationship between <em>Q</em> and <em>p</em> using the Sanger (red) and Solexa
(black) equations (described above). The vertical dotted line indicates
<span class="math inline">\(\mathbf{p}= 0.05\)</span>, or equivalently, <span class="math inline">\(Q = 13\)</span>.|</p>
</div>
</div>
<div id="encoding" class="section level4 hasAnchor" number="1.2.4.3">
<h4><span class="header-section-number">1.2.4.3</span> Encoding<a href="the-obitools.html#encoding" class="anchor-section" aria-label="Anchor link to header"></a></h4>
<ul>
<li>Sanger format can encode a Phred quality score from 0 to 93 using
ASCII 33 to 126 (although in raw read data the Phred quality score
rarely exceeds 60, higher scores are possible in assemblies or read
maps).</li>
<li>Solexa/Illumina 1.0 format can encode a Solexa/Illumina quality
score from -5 to 62 using ASCII 59 to 126 (although in raw read data
Solexa scores from -5 to 40 only are expected)</li>
<li>Starting with Illumina 1.3 and before Illumina 1.8, the format
encoded a Phred quality score from 0 to 62 using ASCII 64 to 126
(although in raw read data Phred scores from 0 to 40 only are
expected).</li>
<li>Starting in Illumina 1.5 and before Illumina 1.8, the Phred scores 0
to 2 have a slightly different meaning. The values 0 and 1 are no
longer used and the value 2, encoded by ASCII 66 “B”.</li>
</ul>
<p>Sequencing Control Software, Version 2.6, Catalog # SY-960-2601, Part
# 15009921 Rev. A, November
2009] <a href="%5Bhttp://watson.nci.nih.gov/solexa/Using_SCSv2.6_15009921_A.pdf\%5D(http://watson.nci.nih.gov/solexa/Using_SCSv2.6_15009921_A.pdf)%7B.uri%7D" class="uri">[http://watson.nci.nih.gov/solexa/Using_SCSv2.6_15009921_A.pdf\\](http://watson.nci.nih.gov/solexa/Using_SCSv2.6_15009921_A.pdf){.uri}</a>
(page 30) states the following: <em>If a read ends with a segment of mostly
low quality (Q15 or below), then all of the quality values in the
segment are replaced with a value of 2 (encoded as the letter B in
Illuminas text-based encoding of quality scores)… This Q2 indicator
does not predict a specific error rate, but rather indicates that a
specific final portion of the read should not be used in further
analyses.</em> Also, the quality score encoded as “B” letter may occur
internally within reads at least as late as pipeline version 1.6, as
shown in the following example:</p>
<pre><code>@HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1
TTAATTGGTAAATAAATCTCCTAATAGCTTAGATNTTACCTTNNNNNNNNNNTAGTTTCTTGAGATTTGTTGGGGGAGACATTTTTGTGATTGCCTTGAT
+HWI-EAS209_0006_FC706VJ:5:58:5894:21141#ATCACG/1
efcfffffcfeefffcffffffddf`feed]`]_Ba_^__[YBBBBBBBBBBRTT\]][]dddd`ddd^dddadd^BBBBBBBBBBBBBBBBBBBBBBBB</code></pre>
<p>An alternative interpretation of this ASCII encoding has been proposed.
Also, in Illumina runs using PhiX controls, the character B was
observed to represent an “unknown quality score”. The error rate of B
reads was roughly 3 phred scores lower the mean observed score of a
given run.</p>
<ul>
<li>Starting in Illumina 1.8, the quality scores have basically returned
to the use of the Sanger format (Phred+33).</li>
</ul>
</div>
</div>
</div>
<div id="file-extension" class="section level2 hasAnchor" number="1.3">
<h2><span class="header-section-number">1.3</span> File extension<a href="the-obitools.html#file-extension" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<p>There is no standard file extension for a FASTQ file, but .fq and
.fastq, are commonly used.</p>
</div>
<div id="see-also" class="section level2 hasAnchor" number="1.4">
<h2><span class="header-section-number">1.4</span> See also<a href="the-obitools.html#see-also" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<ul>
<li>:ref:<code>fasta</code></li>
</ul>
</div>
<div id="references" class="section level2 hasAnchor" number="1.5">
<h2><span class="header-section-number">1.5</span> References<a href="the-obitools.html#references" class="anchor-section" aria-label="Anchor link to header"></a></h2>
<p>.. [1] Cock et al (2009) The Sanger FASTQ file format for sequences with
quality scores, and the Solexa/Illumina FASTQ variants. Nucleic Acids
Research,</p>
<p>.. [2] Illumina Quality Scores, Tobias Mann, Bioinformatics, San Diego,
Illumina <code>1</code>__</p>
<p>.. |Relationship between <em>Q</em> and <em>p</em> using the Sanger (red) and Solexa
(black) equations (described above). The vertical dotted line indicates
<em>p</em> = 0.05, or equivalently, <em>Q</em> Å 13.| image:: Probability metrics.png</p>
<p>See <a href="http://en.wikipedia.org/wiki/FASTQ_format" class="uri">http://en.wikipedia.org/wiki/FASTQ_format</a></p>
</div>
</div>
</section>
</div>
</div>
</div>
<a href="the-obitools-commands.html" class="navigation navigation-next navigation-unique" aria-label="Next page"><i class="fa fa-angle-right"></i></a>
</div>
</div>
<script src="book_assets/gitbook-2.6.7/js/app.min.js"></script>
<script src="book_assets/gitbook-2.6.7/js/clipboard.min.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-search.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-sharing.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-fontsettings.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-bookdown.js"></script>
<script src="book_assets/gitbook-2.6.7/js/jquery.highlight.js"></script>
<script src="book_assets/gitbook-2.6.7/js/plugin-clipboard.js"></script>
<script>
gitbook.require(["gitbook"], function(gitbook) {
gitbook.start({
"sharing": {
"github": false,
"facebook": true,
"twitter": true,
"linkedin": false,
"weibo": false,
"instapaper": false,
"vk": false,
"whatsapp": false,
"all": ["facebook", "twitter", "linkedin", "weibo", "instapaper"]
},
"fontsettings": {
"theme": "white",
"family": "sans",
"size": 2
},
"edit": {
"link": null,
"text": null
},
"history": {
"link": null,
"text": null
},
"view": {
"link": null,
"text": null
},
"download": ["_main.pdf"],
"search": {
"engine": "fuse",
"options": null
},
"toc": {
"collapse": "subsection"
}
});
});
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
var src = "true";
if (src === "" || src === "true") src = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/latest.js?config=TeX-MML-AM_CHTML";
if (location.protocol !== "file:")
if (/^https?:/.test(src))
src = src.replace(/^https?:/, '');
script.src = src;
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>

0
doc/book.bib Normal file
View File

15
doc/doc.Rproj Normal file
View File

@ -0,0 +1,15 @@
Version: 1.0
RestoreWorkspace: Default
SaveWorkspace: Default
AlwaysSaveHistory: Default
EnableCodeIndexing: Yes
UseSpacesForTab: Yes
NumSpacesForTab: 2
Encoding: UTF-8
RnwWeave: Sweave
LaTeX: pdfLaTeX
BuildType: Website

22
doc/index.Rmd Normal file
View File

@ -0,0 +1,22 @@
---
title: "The GO *OBITools*"
author: "SEric Coissac"
date: "2022-08-25"
site: "bookdown::bookdown_site"
documentclass: book
bibliography: [book.bib]
biblio-style: apalike
link-citations: yes
output:
bookdown::gitbook:
lib_dir: "book_assets"
bookdown::pdf_book:
keep_tex: yes
github-repo: seankross/bookdown-start
url: 'http\://seankross.com/bookdown-start/'
description: "Description of the principles used into the GO implementation of *OBITools*."
editor_options:
markdown:
wrap: 72
---