<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://amos.sourceforge.net/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://amos.sourceforge.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mcschatz</id>
		<title>AMOS WIKI - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://amos.sourceforge.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mcschatz"/>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Special:Contributions/Mcschatz"/>
		<updated>2026-04-30T19:48:36Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide</id>
		<title>Programmer&#039;s guide</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide"/>
				<updated>2013-09-11T15:02:38Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Getting AMOS ==&lt;br /&gt;
AMOS can be downloaded from our Sourceforge download site: http://sourceforge.net/project/showfiles.php?group_id=134326 as a tar file, or directly from the AMOS git repository (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The .tar file ===&lt;br /&gt;
If you chose to download AMOS as a .tar file, getting started is as simple as untarring the file, running &amp;quot;./configure&amp;quot; from the top level directory, then &amp;quot;make all&amp;quot;.  For more details see the Getting Started document as well as the INSTALL file provided in the top level directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GIT access ===&lt;br /&gt;
To access AMOS directly,  you can clone a copy of the source code to your local machine&lt;br /&gt;
&lt;br /&gt;
  ## clone the remote master repo to a local copy&lt;br /&gt;
  git clone git://amos.git.sourceforge.net/gitroot/amos/amos &lt;br /&gt;
&lt;br /&gt;
If you are a registered AMOS developer with read/write access to repository, you can checkout the code using:&lt;br /&gt;
&lt;br /&gt;
  ## clone the remote master to a local copy (replace SFNAME with your sourceforge username)&lt;br /&gt;
  git clone ssh://&amp;lt;SFNAME&amp;gt;@git.code.sf.net/p/amos/code&lt;br /&gt;
  &lt;br /&gt;
  ## make some changes&lt;br /&gt;
  &lt;br /&gt;
  ## now commit your changes to your local repo&lt;br /&gt;
  git commit -a -m &amp;quot;brief change message&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ## once you are happy, send the changes to the master repo&lt;br /&gt;
  git push&lt;br /&gt;
  &lt;br /&gt;
  ## update local repo with remote&lt;br /&gt;
  git pull&lt;br /&gt;
  &lt;br /&gt;
This page lists recent changes&lt;br /&gt;
 [http://amos.git.sourceforge.net/git/gitweb.cgi?p=amos/amos;a=summary http://amos.git.sourceforge.net/git/gitweb.cgi?p=amos/amos;a=summary]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are a couples tutorials on how to use git to commit changes, make branches, etc&lt;br /&gt;
&lt;br /&gt;
  [http://git-scm.com/documentation http://git-scm.com/documentation]: Detailed documentation&lt;br /&gt;
  [http://git-scm.com/course/svn.html http://git-scm.com/course/svn.html]: Fast tutorial for svn users&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the AMOS code you will need to create the appropriate configuration files with the command &amp;quot;./bootstrap&amp;quot; run from the top level directory.  You will then be able to continue with compilation as described above under the .tar file.&lt;br /&gt;
&lt;br /&gt;
If you wish to play a more involved role in the development of AMOS, or if you wish to contribute some of your code or bug fixes, please contact us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Autoconf basics (how to add your own code to the source tree) ==&lt;br /&gt;
This section is not meant as documentation for the GNU autoconf package. Below you will learn how to add a program to the AMOS distribution, in an already existing directory.  If you want help with a more complex autoconf operation please contact us at the email listed above.&lt;br /&gt;
&lt;br /&gt;
The template for the Makefile file that will be created by the configure command (see description of compilation above) can be found in the file Makefile.am in each of the directories.  This file consists of two sections: a description of the files that are going to be installed when running &amp;quot;make install&amp;quot;, and a description of each of the files that will be compiled as part of the &amp;quot;make&amp;quot; command.  If you wish to add a program to the AMOS tree, you will thus need to add both a record indicating this program will be installed by the make process, and instructions on how to build this program.  The instructions for adding a script (either a Perl script or an AMOS configuration file), or a C++ program are described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Addding a script to the AMOS tree ===&lt;br /&gt;
To add a script you can simply list it in the &amp;quot;dist_bin_SCRIPTS&amp;quot; variable at the beginning of the Makefile.am file, e.g.:&lt;br /&gt;
&lt;br /&gt;
 dist_bin_SCRIPTS = \&lt;br /&gt;
         bank-unlock.pl&lt;br /&gt;
&lt;br /&gt;
The build process will automatically add a &amp;quot;use lib&amp;quot; line to the beginning of your Perl scripts indicating where the AMOS code is installed.  Furthermore, the #! line will be appropriately modified according to the location of the Perl binary identified by the configure process.&lt;br /&gt;
&lt;br /&gt;
When building AMOS configuration files, the build process will automatically update the BINDIR and NUCMER variable in your file to the values identified by the configure process for the location of the AMOS binary installation directory, and for the location of the nucmer binary (part of the MUMmer distribution).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding a C++ program to the AMOS tree ===&lt;br /&gt;
To add a C++ program to AMOS, you must first add the name of the program to the &amp;quot;bin_PROGRAMS&amp;quot; variable in the Makefile.am file:&lt;br /&gt;
&lt;br /&gt;
 bin_PROGRAMS = \&lt;br /&gt;
        bank2contig  \&lt;br /&gt;
&lt;br /&gt;
You must then specify instructions on how this binary will be built.  These instructions include the location of the source files used in building the program:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_SOURCES = \&lt;br /&gt;
        bank2contig.cc&lt;br /&gt;
&lt;br /&gt;
instructions on additional libraries that might be needed:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_LDADD = \&lt;br /&gt;
        $(top_builddir)/src/Common/libCommon.a \&lt;br /&gt;
        $(top_builddir)/src/AMOS/libAMOS.a&lt;br /&gt;
&lt;br /&gt;
or additional flags:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_CPPFLAGS = \&lt;br /&gt;
    -I$(top_srcdir)/src/Common&lt;br /&gt;
&lt;br /&gt;
If you wish to use the global library and CFLAGS parameters you may provide just the _SOURCES variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AMOS messages and the Perl API ==&lt;br /&gt;
AMOS programs can communicate among each other using a flat file format inspired by the format used by Celera Assembler.  An overview of this file format and the way AMOS objects are stored, is provided on the [[Infrastructure]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMOS distribution provides a Perl module that can be used to parse AMOS (and Celera Assembler) message files.  For a detailed description of the various functions provided by the AMOS::AmosLib module you can use the perldoc documentation:&lt;br /&gt;
&lt;br /&gt;
 $ perldoc AMOS::AmosLib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below we will only describe the use of this module to read and parse AMOS messages.&lt;br /&gt;
&lt;br /&gt;
To include the AMOS::AmosLib module in your perl program you will need to use the command:&lt;br /&gt;
&lt;br /&gt;
 use AMOS::AmosLib;&lt;br /&gt;
&lt;br /&gt;
at the beginning of the code.   If this module is not installed in the Perl search path (which can be set in the PERLLIB environment variable), you might have to also use the Perl command &amp;quot;use lib&amp;quot; to specify the location of the AMOS library.&lt;br /&gt;
&lt;br /&gt;
Like the C++ API (described below), reading AMOS messages from a file involves first reading the message in its entirety, oblivious of the data encoded within, then parsing the message to extract the individual components.  These two steps can be executed as follows:&lt;br /&gt;
&lt;br /&gt;
 my $rec = getRecord(\*STDIN);  # read a record from the standard input&lt;br /&gt;
 my ($id, $fields, $recs) = parseRecord($rec);  # parse the information in the message&lt;br /&gt;
&lt;br /&gt;
The first command retrieves the entire message from the input, i.e. a whole block of text between curly braces.  &lt;br /&gt;
The second command retrieves the three components of the message:&lt;br /&gt;
&lt;br /&gt;
   1. $id - the three letter code of the message (see Types of messages)&lt;br /&gt;
   2. $fields - hash table of the individual fields in the message.  E.g. for a read ($id == &amp;quot;RED&amp;quot;), $$fields{&amp;quot;seq&amp;quot;} represents the sequence of the read.&lt;br /&gt;
   3. $recs - array of any possible sub-messages.  These messages will need to be parsed individually with the parseRecord command.  An example of sub-messages are the TLE (tile) message indicating the position of reads within a contig.  $#$recs - represents the index of the last sub-message (if $#$recs == -1, there are no submessages).&lt;br /&gt;
&lt;br /&gt;
== The C++ API ==&lt;br /&gt;
Below is a quick overview of the AMOS C++ API.  The quickest way to get started is to examine the file src/Bank/bank-tutorial.cc.  This file highlights the interaction with the AMOS bank through the C++ API and contains copious comments meant to guide you through your first AMOS program.&lt;br /&gt;
&lt;br /&gt;
For a detailed description of all AMOS classes refer to the automatically generated doxygen API docs: http://amos.sourceforge.net/docs/api/&lt;br /&gt;
&lt;br /&gt;
The main AMOS datastructure is the bank - an indexed database of assembly objects.  This central datastructure provides allows the integration of multiple software modules that communicate by modifying the objects stored in a shared bank.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Overview of include files ===&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;foundation_AMOS.hh&amp;gt;   all of the below&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;inttypes_AMOS.hh&amp;gt;     integer typedefs&lt;br /&gt;
 #include &amp;lt;exceptions_AMOS.hh&amp;gt;   exception types&lt;br /&gt;
 #include &amp;lt;datatypes_AMOS.hh&amp;gt;    structs&lt;br /&gt;
 #include &amp;lt;databanks_AMOS.hh&amp;gt;    bank types&lt;br /&gt;
 #include &amp;lt;messages_AMOS.hh&amp;gt;     message types and message NCodes&lt;br /&gt;
 #include &amp;lt;universals_AMOS.hh&amp;gt;   assembly classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Basic terminology === &lt;br /&gt;
&lt;br /&gt;
* IID             internal integer identifier and object reference&lt;br /&gt;
* EID             external string identifier&lt;br /&gt;
* BID             bank specific identifier (index of the file store, may be invalidated by bank operations)&lt;br /&gt;
* 3-Code          3-character identifier string for objects and fields&lt;br /&gt;
* N-Code          an integer representation of a 3-code (Encode/Decode functions)&lt;br /&gt;
* message         a single curly-bracketed AMOS message (see  message grammar)&lt;br /&gt;
* sub-message     a single curly-bracketed AMOS message contained by another (see message grammar)&lt;br /&gt;
&lt;br /&gt;
Relative orientation of reads/contigs (used in overlaps or scaffold links)&lt;br /&gt;
&lt;br /&gt;
 normal           ---a---&amp;gt;  ---b---&amp;gt;&lt;br /&gt;
 anti-normal     &amp;lt;---a---  &amp;lt;---b---&lt;br /&gt;
 innie            ---a---&amp;gt; &amp;lt;---b---&lt;br /&gt;
 outie           &amp;lt;---a---   ---b---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dealing with AMOS message files ===&lt;br /&gt;
Reading an AMOS message from a file is as simple as:&lt;br /&gt;
&lt;br /&gt;
 Message_t msg;&lt;br /&gt;
 msg.read (cin);&lt;br /&gt;
&lt;br /&gt;
Note, that the msg object is generic, representing a properly formatted message object (see message grammar), irrespective of the actual assembly object represented by the message.  This object can be used to read arbitrary message files, such as those generated by Celera Assembler, even though the individual objects do not map to AMOS objects.&lt;br /&gt;
&lt;br /&gt;
To assign the message contents to a specific object, e.g. a contig:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig.readMessage(msg);&lt;br /&gt;
&lt;br /&gt;
Note, that the readMessage operation will fail if the message does not properly encode an AMOS contig.&lt;br /&gt;
&lt;br /&gt;
The reverse operation, writing a new message from an internal AMOS object can be simply performed:&lt;br /&gt;
&lt;br /&gt;
 contig.writeMessage(msg);&lt;br /&gt;
 message.write(cout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Communicating with the bank ===&lt;br /&gt;
AMOS banks can be open in two modes: for random access (bank mode), and for sequential access (bank stream mode).  To open a bank you must also specify the type of the objects stored in it, by providing the N-code of the object.  Thus, to open a bank of contigs&lt;br /&gt;
&lt;br /&gt;
 Bank_t contig_bank(Contig_t::NCODE);&lt;br /&gt;
 BankStream_t contig_stream(Contig_t::NCODE);&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
 contig_stream.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The string &amp;quot;mybank.dir&amp;quot; refers to the physical location of the bank on the disk, and represents the name of a directory that contains all the relevant bank files.  In addition to the location of the bank, the open() command may specify a mode of access as B_READ, or B_WRITE, or both (B_READ|B_WRITE) (the default access is B_READ):&lt;br /&gt;
&lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;, B_READ|B_WRITE);&lt;br /&gt;
&lt;br /&gt;
Bank streams can only be used for sequential access, e.g.:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig_stream &amp;gt;&amp;gt; contig;  // read from bank&lt;br /&gt;
 contig_stream &amp;lt;&amp;lt; contig;  // write to bank&lt;br /&gt;
&lt;br /&gt;
The sequential access mode is useful for processing anonymous objects (without an assigned IID or EID), or simply for the ease of use.&lt;br /&gt;
&lt;br /&gt;
Random access banks can be used to perform more complex operations:&lt;br /&gt;
&lt;br /&gt;
 // lookup by IID&lt;br /&gt;
 if (! contig_bank.existsIID(1))&lt;br /&gt;
     cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with iid 1&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 // lookup by EID&lt;br /&gt;
 if (! contig_bank.existsEID(&amp;quot;bigcontig&amp;quot;))&lt;br /&gt;
    cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with eid bigcontig&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.fetch(1, contig);  // retrieve object by IID&lt;br /&gt;
 contig_bank.fetch(&amp;quot;bigcontig&amp;quot;, contig); // retrieve object by EID&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.append(contig); // add an object to the bank&lt;br /&gt;
 contig_bank.remove(1);   // remove an object by IID&lt;br /&gt;
 contig_bank.remove(&amp;quot;bigcontig&amp;quot;); // remove an object by EID&lt;br /&gt;
&lt;br /&gt;
Note that by default objects are not physically removed from the bank when using the remove command, rather they are marked for deletion.  To compact the bank after several remove operations you will need to run&lt;br /&gt;
&lt;br /&gt;
 contig_bank.clean();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Indices ===&lt;br /&gt;
There is often the need to cross-reference the various objects stored in a bank, e.g. to obtain the list of reads present in a contig, or, for a read, to identify the contig or scaffold it belongs to.  Some such relationships are natively represented in the AMOS objects (e.g. contig messages also list the reads belonging to them), for others it is necessary to build lookup tables.  AMOS helps you by providing a generic mechanism for specifying lookup tables linking arbitrary AMOS types.  The AMOS indices are implemented using STL hash multi-maps (allows one-to-many correspondence).  &lt;br /&gt;
&lt;br /&gt;
A simple example on the use of indices is shown below.  The code generates a map linking each read to its mate (this information is normally contained in the Fragment_t object).&lt;br /&gt;
&lt;br /&gt;
 Index_t read2mate;&lt;br /&gt;
 rd2mate.buildReadMate(&amp;quot;mybank&amp;quot;); // build index linking reads to their mates in the bank &amp;quot;mybank&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ID_t mate = rd2mate.lookup(5);   // find mate of read with IID=5&lt;br /&gt;
 if (mate == NULL_ID)                 // if no mate found, returns NULL_ID&lt;br /&gt;
    cerr &amp;lt;&amp;lt;  &amp;quot;Read 5 has no mate &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
This example relied on the pre-defined function buildReadMate that automatically builds an index of reads to mates.  Several such predefined functions are provided, see the documentation for the Index_t object.  If you need to build your own index, for which no predefined build function exists, you can use the insert command to add an identifier pair to the index:&lt;br /&gt;
&lt;br /&gt;
 Index_t obj2obj;&lt;br /&gt;
 obj2obj.insert(id1, id2);&lt;br /&gt;
&lt;br /&gt;
In case of a one-to-many mapping (e.g. all the reads in a scaffold) you can retrieve all the IDs corresponding to a query ID using:&lt;br /&gt;
&lt;br /&gt;
 pair&amp;lt;const_iterator, const_iterator&amp;gt; startend = lookupAll(myid);&lt;br /&gt;
 for (iterator i = startend.first; i != startend.second; i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Found id &amp;quot; &amp;lt;&amp;lt; *i &amp;lt;&amp;lt; endl;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AMOS</id>
		<title>AMOS</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AMOS"/>
				<updated>2011-08-05T04:01:52Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium is committed to the development of open-source whole genome assembly software. The project acronym (AMOS) represents our primary goal -- to produce A Modular, Open-Source whole genome assembler. Open-source so that everyone is welcome to contribute and help build outstanding assembly tools, and modular in nature so that new contributions can be easily inserted into an existing assembly pipeline. This modular design will foster the development of new assembly algorithms and allow the AMOS project to continually grow and improve in hopes of eventually becoming a widely accepted and deployed assembly infrastructure. In this sense, AMOS is both a design philosophy and a software system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quick links:&lt;br /&gt;
* [[AMOS Getting Started]]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=134326 Download]&lt;br /&gt;
* [http://sourceforge.net/projects/amos SourceForge project page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&lt;br /&gt;
* August 5, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.1.0/ Version 3.1.0] of AMOS released!&lt;br /&gt;
* August 2, 2011 - [http://sourceforge.net/projects/amos/files/sample_data/ AMOS Sample Data] posted&lt;br /&gt;
* December 7, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.0.0/ Version 3.0.0] of AMOS released!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Assemblers ===&lt;br /&gt;
* [[ABBA]] - Assembly Boosted By Amino Acid Sequences&lt;br /&gt;
* [[AMOScmp]] - comparative assembler&lt;br /&gt;
* [[AMOScmp-shortReads]] - comparative assembler for short reads (Solexa,454)&lt;br /&gt;
* [[AMOScmp-shortReads-alignmentTrimmed]] - comparative assembler for short reads that uses alignment based trimming&lt;br /&gt;
* [[minimus]] - basic genome assembler for small datasets&lt;br /&gt;
* [[Minimo]] - the minimus assembler with many more options&lt;br /&gt;
* [[minimus2]] - basic genome assembler for two datasets; can also be used as an assembly merge pipeline&lt;br /&gt;
* [[minimus2-blat]] - Same as minimus2 but uses BLAT instead of Nucmer for added speed&lt;br /&gt;
&lt;br /&gt;
=== Validation and Visualization ===&lt;br /&gt;
* [[Hawkeye]] - assembly viewer&lt;br /&gt;
* [[amosvalidate]] - assembly forensics&lt;br /&gt;
* [[FRCurve]] - Feature-Response Curve&lt;br /&gt;
* [[Benchmark]] - assembly benchmark data&lt;br /&gt;
&lt;br /&gt;
=== Scaffolding ===&lt;br /&gt;
* [[Bambus]] - Open source standalone hierarchical scaffolding&lt;br /&gt;
* [[Bambus2]] - Scaffolding Polymorphic Genomes and Metagenomes&lt;br /&gt;
&lt;br /&gt;
=== Trimming, Overlapping, &amp;amp; Error Correction ===&lt;br /&gt;
* [[Figaro]] - statistical vector trimmer&lt;br /&gt;
* [[UMD Overlapper]] - High quality overlap computations&lt;br /&gt;
* [[KI Overlapper]] - Repeat aware overlapper&lt;br /&gt;
* [[AutoEditor]] - Automatic correction of genome sequencing errors&lt;br /&gt;
* [[FastqQC]] - Read composition and quality&lt;br /&gt;
&lt;br /&gt;
=== Utilities ===&lt;br /&gt;
* [[File conversion utilities]] - converting data to and from AMOS&lt;br /&gt;
* [[AMOS Utilities | AMOS Utilities]] - general utilities&lt;br /&gt;
* [[runAmos]] - Pipeline executor&lt;br /&gt;
&lt;br /&gt;
=== AMOS Development ===&lt;br /&gt;
* [[Programmer&amp;#039;s guide]] - Getting started with the Source code&lt;br /&gt;
* [[Infrastructure]] - Developer level details&lt;br /&gt;
* [[Wiki guide]] - Guide for editing the wiki&lt;br /&gt;
&lt;br /&gt;
=== Assembly Tutorials ===&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/assembly_primer.shtml Assembly primer] - overview of genome assembly.&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/contig_representation.shtml Representing assemblies (not just in AMOS)]&lt;br /&gt;
* [http://wgs-assembler.sourceforge.net Running Celera Assembler]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional documentation in development through the [[AMOS Documentation Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download == &lt;br /&gt;
The AMOS source if freely available for download from the File Release Section of our SourceForge project page. Please refer to the COPYING license included in the package for a description of the Artistic License, the same OSI certified open source license used by Perl and countless other packages. Not all of the above packages are included with the standard AMOS distribution, please see the homepage for the software you wish to download to verify that it is included with the AMOS source distribution.&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 Download from SourceForge]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Consortium members ==&lt;br /&gt;
&lt;br /&gt;
There have been numerous positive responses regarding the AMOS initiative, and we expect the list of involved organizations to grow significantly as the project matures. Please contact us if you want to join. The groups currently involved with the development of AMOS are listed below, along with their responsibilities and areas of expertise.&lt;br /&gt;
&lt;br /&gt;
* University of Maryland, Center for Bioinformatics and Computational Biology&lt;br /&gt;
** project organization and direction&lt;br /&gt;
** infrastructure&lt;br /&gt;
** consensus&lt;br /&gt;
** automated sequence editing&lt;br /&gt;
** scaffolding&lt;br /&gt;
** overlap detection&lt;br /&gt;
** contig construction&lt;br /&gt;
&lt;br /&gt;
* The Institute for Genomic Research&lt;br /&gt;
** production pipelines&lt;br /&gt;
** automated finishing tools&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Karolinska Institutet&lt;br /&gt;
** overlap detection&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Marine Biological Laboratory - Woods Hole&lt;br /&gt;
** graphical interface&lt;br /&gt;
** integration of assembly data with analysis (gene, polymorphism, etc.) information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Join the consortium ==&lt;br /&gt;
&lt;br /&gt;
All interested parties are welcome to join or aid the AMOS consortium. Please address all correspondence via Email to:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
To receive information regarding new releases and developments, please subscribe to our moderated, low-traffic users&amp;#039; mailing list:&lt;br /&gt;
&lt;br /&gt;
 amos-users (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bug reports and support ==&lt;br /&gt;
&lt;br /&gt;
For AMOS bug reports or support requests, please browse our SourceForge project page or Email us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium would like to thank the following organizations for their funding and/or support:&lt;br /&gt;
* The National Institutes of Health - grants R01-LM06845, N01-AI-15447&lt;br /&gt;
* The National Science Foundation - grants IIS-9902923, IIS-9820497&lt;br /&gt;
* Department of Homeland Security - cooperative agreement W81XWH-05-2-0051&lt;br /&gt;
* SourceForge.net&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AMOS</id>
		<title>AMOS</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AMOS"/>
				<updated>2011-08-04T19:48:39Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium is committed to the development of open-source whole genome assembly software. The project acronym (AMOS) represents our primary goal -- to produce A Modular, Open-Source whole genome assembler. Open-source so that everyone is welcome to contribute and help build outstanding assembly tools, and modular in nature so that new contributions can be easily inserted into an existing assembly pipeline. This modular design will foster the development of new assembly algorithms and allow the AMOS project to continually grow and improve in hopes of eventually becoming a widely accepted and deployed assembly infrastructure. In this sense, AMOS is both a design philosophy and a software system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quick links:&lt;br /&gt;
* [[AMOS Getting Started]]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=134326 Download]&lt;br /&gt;
* [http://sourceforge.net/projects/amos SourceForge project page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&lt;br /&gt;
* August 2, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.1.0/ Version 3.1.0-rc1] of AMOS released!&lt;br /&gt;
* August 2, 2011 - [http://sourceforge.net/projects/amos/files/sample_data/ AMOS Sample Data] posted&lt;br /&gt;
* December 7, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.0.0/ Version 3.0.0] of AMOS released!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Assemblers ===&lt;br /&gt;
* [[ABBA]] - Assembly Boosted By Amino Acid Sequences&lt;br /&gt;
* [[AMOScmp]] - comparative assembler&lt;br /&gt;
* [[AMOScmp-shortReads]] - comparative assembler for short reads (Solexa,454)&lt;br /&gt;
* [[AMOScmp-shortReads-alignmentTrimmed]] - comparative assembler for short reads that uses alignment based trimming&lt;br /&gt;
* [[minimus]] - basic genome assembler for small datasets&lt;br /&gt;
* [[Minimo]] - the minimus assembler with many more options&lt;br /&gt;
* [[minimus2]] - basic genome assembler for two datasets; can also be used as an assembly merge pipeline&lt;br /&gt;
* [[minimus2-blat]] - Same as minimus2 but uses BLAT instead of Nucmer for added speed&lt;br /&gt;
&lt;br /&gt;
=== Validation and Visualization ===&lt;br /&gt;
* [[Hawkeye]] - assembly viewer&lt;br /&gt;
* [[amosvalidate]] - assembly forensics&lt;br /&gt;
* [[FRCurve]] - Feature-Response Curve&lt;br /&gt;
* [[Benchmark]] - assembly benchmark data&lt;br /&gt;
&lt;br /&gt;
=== Scaffolding ===&lt;br /&gt;
* [[Bambus]] - Open source standalone hierarchical scaffolding&lt;br /&gt;
* [[Bambus2]] - Scaffolding Polymorphic Genomes and Metagenomes&lt;br /&gt;
&lt;br /&gt;
=== Trimming, Overlapping, &amp;amp; Error Correction ===&lt;br /&gt;
* [[Figaro]] - statistical vector trimmer&lt;br /&gt;
* [[UMD Overlapper]] - High quality overlap computations&lt;br /&gt;
* [[KI Overlapper]] - Repeat aware overlapper&lt;br /&gt;
* [[AutoEditor]] - Automatic correction of genome sequencing errors&lt;br /&gt;
* [[FastqQC]] - Read composition and quality&lt;br /&gt;
&lt;br /&gt;
=== Utilities ===&lt;br /&gt;
* [[File conversion utilities]] - converting data to and from AMOS&lt;br /&gt;
* [[AMOS Utilities | AMOS Utilities]] - general utilities&lt;br /&gt;
* [[runAmos]] - Pipeline executor&lt;br /&gt;
&lt;br /&gt;
=== AMOS Development ===&lt;br /&gt;
* [[Programmer&amp;#039;s guide]] - Getting started with the Source code&lt;br /&gt;
* [[Infrastructure]] - Developer level details&lt;br /&gt;
* [[Wiki guide]] - Guide for editing the wiki&lt;br /&gt;
&lt;br /&gt;
=== Assembly Tutorials ===&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/assembly_primer.shtml Assembly primer] - overview of genome assembly.&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/contig_representation.shtml Representing assemblies (not just in AMOS)]&lt;br /&gt;
* [http://wgs-assembler.sourceforge.net Running Celera Assembler]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional documentation in development through the [[AMOS Documentation Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download == &lt;br /&gt;
The AMOS source if freely available for download from the File Release Section of our SourceForge project page. Please refer to the COPYING license included in the package for a description of the Artistic License, the same OSI certified open source license used by Perl and countless other packages. Not all of the above packages are included with the standard AMOS distribution, please see the homepage for the software you wish to download to verify that it is included with the AMOS source distribution.&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 Download from SourceForge]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Consortium members ==&lt;br /&gt;
&lt;br /&gt;
There have been numerous positive responses regarding the AMOS initiative, and we expect the list of involved organizations to grow significantly as the project matures. Please contact us if you want to join. The groups currently involved with the development of AMOS are listed below, along with their responsibilities and areas of expertise.&lt;br /&gt;
&lt;br /&gt;
* University of Maryland, Center for Bioinformatics and Computational Biology&lt;br /&gt;
** project organization and direction&lt;br /&gt;
** infrastructure&lt;br /&gt;
** consensus&lt;br /&gt;
** automated sequence editing&lt;br /&gt;
** scaffolding&lt;br /&gt;
** overlap detection&lt;br /&gt;
** contig construction&lt;br /&gt;
&lt;br /&gt;
* The Institute for Genomic Research&lt;br /&gt;
** production pipelines&lt;br /&gt;
** automated finishing tools&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Karolinska Institutet&lt;br /&gt;
** overlap detection&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Marine Biological Laboratory - Woods Hole&lt;br /&gt;
** graphical interface&lt;br /&gt;
** integration of assembly data with analysis (gene, polymorphism, etc.) information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Join the consortium ==&lt;br /&gt;
&lt;br /&gt;
All interested parties are welcome to join or aid the AMOS consortium. Please address all correspondence via Email to:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
To receive information regarding new releases and developments, please subscribe to our moderated, low-traffic users&amp;#039; mailing list:&lt;br /&gt;
&lt;br /&gt;
 amos-users (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bug reports and support ==&lt;br /&gt;
&lt;br /&gt;
For AMOS bug reports or support requests, please browse our SourceForge project page or Email us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium would like to thank the following organizations for their funding and/or support:&lt;br /&gt;
* The National Institutes of Health - grants R01-LM06845, N01-AI-15447&lt;br /&gt;
* The National Science Foundation - grants IIS-9902923, IIS-9820497&lt;br /&gt;
* Department of Homeland Security - cooperative agreement W81XWH-05-2-0051&lt;br /&gt;
* SourceForge.net&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AMOS</id>
		<title>AMOS</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AMOS"/>
				<updated>2011-08-04T19:47:30Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium is committed to the development of open-source whole genome assembly software. The project acronym (AMOS) represents our primary goal -- to produce A Modular, Open-Source whole genome assembler. Open-source so that everyone is welcome to contribute and help build outstanding assembly tools, and modular in nature so that new contributions can be easily inserted into an existing assembly pipeline. This modular design will foster the development of new assembly algorithms and allow the AMOS project to continually grow and improve in hopes of eventually becoming a widely accepted and deployed assembly infrastructure. In this sense, AMOS is both a design philosophy and a software system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quick links:&lt;br /&gt;
* [[AMOS Getting Started]]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=134326 Download]&lt;br /&gt;
* [http://sourceforge.net/projects/amos SourceForge project page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&lt;br /&gt;
* August 2, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.1.0/ Version 3.1.0-rc1] of AMOS released!&lt;br /&gt;
* August 2, 2011 - [http://sourceforge.net/projects/amos/files/sample_data/ AMOS Sample Data] posted&lt;br /&gt;
* December 7, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.0.0/ Version 3.0.0] of AMOS released!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Assemblers ===&lt;br /&gt;
* [[ABBA]] - Assembly Boosted By Amino Acid Sequences&lt;br /&gt;
* [[AMOScmp]] - comparative assembler&lt;br /&gt;
* [[AMOScmp-shortReads]] - comparative assembler for short reads (Solexa,454)&lt;br /&gt;
* [[AMOScmp-shortReads-alignmentTrimmed]] - comparative assembler for short reads that uses alignment based trimming&lt;br /&gt;
* [[minimus]] - basic genome assembler for small datasets&lt;br /&gt;
* [[Minimo]] - the minimus assembler with many more options&lt;br /&gt;
* [[minimus2]] - basic genome assembler for two datasets; can also be used as an assembly merge pipeline&lt;br /&gt;
* [[minimus2-blat]] - Same as minimus2 but uses BLAT instead of Nucmer for added speed&lt;br /&gt;
&lt;br /&gt;
=== Validation and Visualization ===&lt;br /&gt;
* [[Hawkeye]] - assembly viewer&lt;br /&gt;
* [[amosvalidate]] - assembly forensics&lt;br /&gt;
* [[FRCurve]] - Feature-Response Curve&lt;br /&gt;
* [[Benchmark]] - assembly benchmark data&lt;br /&gt;
&lt;br /&gt;
=== Scaffolding ===&lt;br /&gt;
* [[Bambus]] - Open source standalone hierarchical scaffolding&lt;br /&gt;
* [[Bambus2]] - Scaffolding Polymorphic Genomes and Metagenomes&lt;br /&gt;
&lt;br /&gt;
=== Trimming, Overlapping, &amp;amp; Error Correction ===&lt;br /&gt;
* [[Figaro]] - statistical vector trimmer&lt;br /&gt;
* [[UMD Overlapper]] - High quality overlap computations&lt;br /&gt;
* [[KI Overlapper]] - Repeat aware overlapper&lt;br /&gt;
* [[AutoEditor]] - Automatic correction of genome sequencing errors&lt;br /&gt;
* [[FastqQC]] - Read composition and quality&lt;br /&gt;
&lt;br /&gt;
=== Utilities ===&lt;br /&gt;
* [[File conversion utilities]] - converting data to and from AMOS&lt;br /&gt;
* [[AMOS Utilities | AMOS Utilities]] - general utilities&lt;br /&gt;
* [[runAmos]] - Pipeline executor&lt;br /&gt;
&lt;br /&gt;
=== AMOS Development ===&lt;br /&gt;
* [[Programmer&amp;#039;s guide]] - Getting started with the Source code&lt;br /&gt;
* [[Infrastructure]] - Developer level details&lt;br /&gt;
* [[Wiki guide]] - Guide for editing the wiki&lt;br /&gt;
&lt;br /&gt;
=== Assembly Tutorials ===&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/assembly_primer.shtml Assembly primer] - overview of genome assembly.&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/contig_representation.shtml Representing assemblies (not just in AMOS)]&lt;br /&gt;
* [http://wgs-assembler.sourceforge.net Running Celera Assembler]&lt;br /&gt;
&lt;br /&gt;
Additional documentation in development through the [[AMOS Documentation Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download == &lt;br /&gt;
The AMOS source if freely available for download from the File Release Section of our SourceForge project page. Please refer to the COPYING license included in the package for a description of the Artistic License, the same OSI certified open source license used by Perl and countless other packages. Not all of the above packages are included with the standard AMOS distribution, please see the homepage for the software you wish to download to verify that it is included with the AMOS source distribution.&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 Download from SourceForge]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Consortium members ==&lt;br /&gt;
&lt;br /&gt;
There have been numerous positive responses regarding the AMOS initiative, and we expect the list of involved organizations to grow significantly as the project matures. Please contact us if you want to join. The groups currently involved with the development of AMOS are listed below, along with their responsibilities and areas of expertise.&lt;br /&gt;
&lt;br /&gt;
* University of Maryland, Center for Bioinformatics and Computational Biology&lt;br /&gt;
** project organization and direction&lt;br /&gt;
** infrastructure&lt;br /&gt;
** consensus&lt;br /&gt;
** automated sequence editing&lt;br /&gt;
** scaffolding&lt;br /&gt;
** overlap detection&lt;br /&gt;
** contig construction&lt;br /&gt;
&lt;br /&gt;
* The Institute for Genomic Research&lt;br /&gt;
** production pipelines&lt;br /&gt;
** automated finishing tools&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Karolinska Institutet&lt;br /&gt;
** overlap detection&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Marine Biological Laboratory - Woods Hole&lt;br /&gt;
** graphical interface&lt;br /&gt;
** integration of assembly data with analysis (gene, polymorphism, etc.) information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Join the consortium ==&lt;br /&gt;
&lt;br /&gt;
All interested parties are welcome to join or aid the AMOS consortium. Please address all correspondence via Email to:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
To receive information regarding new releases and developments, please subscribe to our moderated, low-traffic users&amp;#039; mailing list:&lt;br /&gt;
&lt;br /&gt;
 amos-users (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bug reports and support ==&lt;br /&gt;
&lt;br /&gt;
For AMOS bug reports or support requests, please browse our SourceForge project page or Email us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium would like to thank the following organizations for their funding and/or support:&lt;br /&gt;
* The National Institutes of Health - grants R01-LM06845, N01-AI-15447&lt;br /&gt;
* The National Science Foundation - grants IIS-9902923, IIS-9820497&lt;br /&gt;
* Department of Homeland Security - cooperative agreement W81XWH-05-2-0051&lt;br /&gt;
* SourceForge.net&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AMOS</id>
		<title>AMOS</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AMOS"/>
				<updated>2011-08-04T19:45:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium is committed to the development of open-source whole genome assembly software. The project acronym (AMOS) represents our primary goal -- to produce A Modular, Open-Source whole genome assembler. Open-source so that everyone is welcome to contribute and help build outstanding assembly tools, and modular in nature so that new contributions can be easily inserted into an existing assembly pipeline. This modular design will foster the development of new assembly algorithms and allow the AMOS project to continually grow and improve in hopes of eventually becoming a widely accepted and deployed assembly infrastructure. In this sense, AMOS is both a design philosophy and a software system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quick links:&lt;br /&gt;
* [[AMOS Getting Started]]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=134326 Download]&lt;br /&gt;
* [http://sourceforge.net/projects/amos SourceForge project page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&lt;br /&gt;
* August 2, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.1.0/ Version 3.1.0-rc1] of AMOS released!&lt;br /&gt;
* August 2, 2011 - [http://sourceforge.net/projects/amos/files/sample_data/ AMOS Sample Data] posted&lt;br /&gt;
* December 7, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.0.0/ Version 3.0.0] of AMOS released!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Additional documentation in development through the [[AMOS Documentation Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assemblers ===&lt;br /&gt;
* [[ABBA]] - Assembly Boosted By Amino Acid Sequences&lt;br /&gt;
* [[AMOScmp]] - comparative assembler&lt;br /&gt;
* [[AMOScmp-shortReads]] - comparative assembler for short reads (Solexa,454)&lt;br /&gt;
* [[AMOScmp-shortReads-alignmentTrimmed]] - comparative assembler for short reads that uses alignment based trimming&lt;br /&gt;
* [[minimus]] - basic genome assembler for small datasets&lt;br /&gt;
* [[Minimo]] - the minimus assembler with many more options&lt;br /&gt;
* [[minimus2]] - basic genome assembler for two datasets; can also be used as an assembly merge pipeline&lt;br /&gt;
* [[minimus2-blat]] - Same as minimus2 but uses BLAT instead of Nucmer for added speed&lt;br /&gt;
&lt;br /&gt;
=== Validation and Visualization ===&lt;br /&gt;
* [[Hawkeye]] - assembly viewer&lt;br /&gt;
* [[amosvalidate]] - assembly forensics&lt;br /&gt;
* [[FRCurve]] - Feature-Response Curve&lt;br /&gt;
* [[Benchmark]] - assembly benchmark data&lt;br /&gt;
&lt;br /&gt;
=== Scaffolding ===&lt;br /&gt;
* [[Bambus]] - Open source standalone hierarchical scaffolding&lt;br /&gt;
* [[Bambus2]] - Scaffolding Polymorphic Genomes and Metagenomes&lt;br /&gt;
&lt;br /&gt;
=== Trimming, Overlapping, &amp;amp; Error Correction ===&lt;br /&gt;
* [[Figaro]] - statistical vector trimmer&lt;br /&gt;
* [[UMD Overlapper]] - High quality overlap computations&lt;br /&gt;
* [[KI Overlapper]] - Repeat aware overlapper&lt;br /&gt;
* [[AutoEditor]] - Automatic correction of genome sequencing errors&lt;br /&gt;
* [[FastqQC]] - Read composition and quality&lt;br /&gt;
&lt;br /&gt;
=== Utilities ===&lt;br /&gt;
* [[File conversion utilities]] - converting data to and from AMOS&lt;br /&gt;
* [[AMOS Utilities | AMOS Utilities]] - general utilities&lt;br /&gt;
* [[runAmos]] - Pipeline executor&lt;br /&gt;
&lt;br /&gt;
=== AMOS Development ===&lt;br /&gt;
* [[Programmer&amp;#039;s guide]] - Getting started with the Source code&lt;br /&gt;
* [[Infrastructure]] - Developer level details&lt;br /&gt;
* [[Wiki guide]] - Guide for editing the wiki&lt;br /&gt;
&lt;br /&gt;
=== Assembly Tutorials ===&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/assembly_primer.shtml Assembly primer] - overview of genome assembly.&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/contig_representation.shtml Representing assemblies (not just in AMOS)]&lt;br /&gt;
* [http://wgs-assembler.sourceforge.net Running Celera Assembler]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download == &lt;br /&gt;
The AMOS source if freely available for download from the File Release Section of our SourceForge project page. Please refer to the COPYING license included in the package for a description of the Artistic License, the same OSI certified open source license used by Perl and countless other packages. Not all of the above packages are included with the standard AMOS distribution, please see the homepage for the software you wish to download to verify that it is included with the AMOS source distribution.&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 Download from SourceForge]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Consortium members ==&lt;br /&gt;
&lt;br /&gt;
There have been numerous positive responses regarding the AMOS initiative, and we expect the list of involved organizations to grow significantly as the project matures. Please contact us if you want to join. The groups currently involved with the development of AMOS are listed below, along with their responsibilities and areas of expertise.&lt;br /&gt;
&lt;br /&gt;
* University of Maryland, Center for Bioinformatics and Computational Biology&lt;br /&gt;
** project organization and direction&lt;br /&gt;
** infrastructure&lt;br /&gt;
** consensus&lt;br /&gt;
** automated sequence editing&lt;br /&gt;
** scaffolding&lt;br /&gt;
** overlap detection&lt;br /&gt;
** contig construction&lt;br /&gt;
&lt;br /&gt;
* The Institute for Genomic Research&lt;br /&gt;
** production pipelines&lt;br /&gt;
** automated finishing tools&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Karolinska Institutet&lt;br /&gt;
** overlap detection&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Marine Biological Laboratory - Woods Hole&lt;br /&gt;
** graphical interface&lt;br /&gt;
** integration of assembly data with analysis (gene, polymorphism, etc.) information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Join the consortium ==&lt;br /&gt;
&lt;br /&gt;
All interested parties are welcome to join or aid the AMOS consortium. Please address all correspondence via Email to:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
To receive information regarding new releases and developments, please subscribe to our moderated, low-traffic users&amp;#039; mailing list:&lt;br /&gt;
&lt;br /&gt;
 amos-users (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bug reports and support ==&lt;br /&gt;
&lt;br /&gt;
For AMOS bug reports or support requests, please browse our SourceForge project page or Email us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium would like to thank the following organizations for their funding and/or support:&lt;br /&gt;
* The National Institutes of Health - grants R01-LM06845, N01-AI-15447&lt;br /&gt;
* The National Science Foundation - grants IIS-9902923, IIS-9820497&lt;br /&gt;
* Department of Homeland Security - cooperative agreement W81XWH-05-2-0051&lt;br /&gt;
* SourceForge.net&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AMOS</id>
		<title>AMOS</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AMOS"/>
				<updated>2011-08-04T19:45:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium is committed to the development of open-source whole genome assembly software. The project acronym (AMOS) represents our primary goal -- to produce A Modular, Open-Source whole genome assembler. Open-source so that everyone is welcome to contribute and help build outstanding assembly tools, and modular in nature so that new contributions can be easily inserted into an existing assembly pipeline. This modular design will foster the development of new assembly algorithms and allow the AMOS project to continually grow and improve in hopes of eventually becoming a widely accepted and deployed assembly infrastructure. In this sense, AMOS is both a design philosophy and a software system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quick links:&lt;br /&gt;
* [[AMOS Getting Started]]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=134326 Download]&lt;br /&gt;
* [http://sourceforge.net/projects/amos SourceForge project page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&lt;br /&gt;
* August 2, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.1.0/ Version 3.1.0-rc1] of AMOS released!&lt;br /&gt;
* August 2, 2011 - [http://sourceforge.net/projects/amos/files/test_data/ AMOS Sample Data] posted&lt;br /&gt;
* December 7, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.0.0/ Version 3.0.0] of AMOS released!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Additional documentation in development through the [[AMOS Documentation Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assemblers ===&lt;br /&gt;
* [[ABBA]] - Assembly Boosted By Amino Acid Sequences&lt;br /&gt;
* [[AMOScmp]] - comparative assembler&lt;br /&gt;
* [[AMOScmp-shortReads]] - comparative assembler for short reads (Solexa,454)&lt;br /&gt;
* [[AMOScmp-shortReads-alignmentTrimmed]] - comparative assembler for short reads that uses alignment based trimming&lt;br /&gt;
* [[minimus]] - basic genome assembler for small datasets&lt;br /&gt;
* [[Minimo]] - the minimus assembler with many more options&lt;br /&gt;
* [[minimus2]] - basic genome assembler for two datasets; can also be used as an assembly merge pipeline&lt;br /&gt;
* [[minimus2-blat]] - Same as minimus2 but uses BLAT instead of Nucmer for added speed&lt;br /&gt;
&lt;br /&gt;
=== Validation and Visualization ===&lt;br /&gt;
* [[Hawkeye]] - assembly viewer&lt;br /&gt;
* [[amosvalidate]] - assembly forensics&lt;br /&gt;
* [[FRCurve]] - Feature-Response Curve&lt;br /&gt;
* [[Benchmark]] - assembly benchmark data&lt;br /&gt;
&lt;br /&gt;
=== Scaffolding ===&lt;br /&gt;
* [[Bambus]] - Open source standalone hierarchical scaffolding&lt;br /&gt;
* [[Bambus2]] - Scaffolding Polymorphic Genomes and Metagenomes&lt;br /&gt;
&lt;br /&gt;
=== Trimming, Overlapping, &amp;amp; Error Correction ===&lt;br /&gt;
* [[Figaro]] - statistical vector trimmer&lt;br /&gt;
* [[UMD Overlapper]] - High quality overlap computations&lt;br /&gt;
* [[KI Overlapper]] - Repeat aware overlapper&lt;br /&gt;
* [[AutoEditor]] - Automatic correction of genome sequencing errors&lt;br /&gt;
* [[FastqQC]] - Read composition and quality&lt;br /&gt;
&lt;br /&gt;
=== Utilities ===&lt;br /&gt;
* [[File conversion utilities]] - converting data to and from AMOS&lt;br /&gt;
* [[AMOS Utilities | AMOS Utilities]] - general utilities&lt;br /&gt;
* [[runAmos]] - Pipeline executor&lt;br /&gt;
&lt;br /&gt;
=== AMOS Development ===&lt;br /&gt;
* [[Programmer&amp;#039;s guide]] - Getting started with the Source code&lt;br /&gt;
* [[Infrastructure]] - Developer level details&lt;br /&gt;
* [[Wiki guide]] - Guide for editing the wiki&lt;br /&gt;
&lt;br /&gt;
=== Assembly Tutorials ===&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/assembly_primer.shtml Assembly primer] - overview of genome assembly.&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/contig_representation.shtml Representing assemblies (not just in AMOS)]&lt;br /&gt;
* [http://wgs-assembler.sourceforge.net Running Celera Assembler]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download == &lt;br /&gt;
The AMOS source if freely available for download from the File Release Section of our SourceForge project page. Please refer to the COPYING license included in the package for a description of the Artistic License, the same OSI certified open source license used by Perl and countless other packages. Not all of the above packages are included with the standard AMOS distribution, please see the homepage for the software you wish to download to verify that it is included with the AMOS source distribution.&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 Download from SourceForge]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Consortium members ==&lt;br /&gt;
&lt;br /&gt;
There have been numerous positive responses regarding the AMOS initiative, and we expect the list of involved organizations to grow significantly as the project matures. Please contact us if you want to join. The groups currently involved with the development of AMOS are listed below, along with their responsibilities and areas of expertise.&lt;br /&gt;
&lt;br /&gt;
* University of Maryland, Center for Bioinformatics and Computational Biology&lt;br /&gt;
** project organization and direction&lt;br /&gt;
** infrastructure&lt;br /&gt;
** consensus&lt;br /&gt;
** automated sequence editing&lt;br /&gt;
** scaffolding&lt;br /&gt;
** overlap detection&lt;br /&gt;
** contig construction&lt;br /&gt;
&lt;br /&gt;
* The Institute for Genomic Research&lt;br /&gt;
** production pipelines&lt;br /&gt;
** automated finishing tools&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Karolinska Institutet&lt;br /&gt;
** overlap detection&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Marine Biological Laboratory - Woods Hole&lt;br /&gt;
** graphical interface&lt;br /&gt;
** integration of assembly data with analysis (gene, polymorphism, etc.) information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Join the consortium ==&lt;br /&gt;
&lt;br /&gt;
All interested parties are welcome to join or aid the AMOS consortium. Please address all correspondence via Email to:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
To receive information regarding new releases and developments, please subscribe to our moderated, low-traffic users&amp;#039; mailing list:&lt;br /&gt;
&lt;br /&gt;
 amos-users (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bug reports and support ==&lt;br /&gt;
&lt;br /&gt;
For AMOS bug reports or support requests, please browse our SourceForge project page or Email us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium would like to thank the following organizations for their funding and/or support:&lt;br /&gt;
* The National Institutes of Health - grants R01-LM06845, N01-AI-15447&lt;br /&gt;
* The National Science Foundation - grants IIS-9902923, IIS-9820497&lt;br /&gt;
* Department of Homeland Security - cooperative agreement W81XWH-05-2-0051&lt;br /&gt;
* SourceForge.net&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Hawkeye</id>
		<title>Hawkeye</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Hawkeye"/>
				<updated>2011-08-03T06:55:38Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | [[Image:HawkeyeLogo.jpg]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
An Interactive Visual Analytics Tool for Genome Assemblies.&lt;br /&gt;
&lt;br /&gt;
[http://schatzlab.cshl.edu/ Michael Schatz] - &lt;br /&gt;
[http://www.cbcb.umd.edu/~amp Adam Phillippy] - &lt;br /&gt;
[http://www.cs.umd.edu/~ben/ Ben Schneiderman] - &lt;br /&gt;
[http://www.cbcb.umd.edu/~salzberg Steven Salzberg] -&lt;br /&gt;
[http://www.cbcb.umd.edu/~mpop Mihai Pop]&lt;br /&gt;
&lt;br /&gt;
Version 2.0 - August 2011&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Publication: &lt;br /&gt;
&lt;br /&gt;
[http://genomebiology.com/2007/8/3/R34 Hawkeye: a visual analytics tool for genome assemblies].&lt;br /&gt;
&lt;br /&gt;
Schatz, M.C., Phillippy, A.M., Shneiderman, B., Salzberg, S.L. (2007)  Genome Biology 8:R34.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&lt;br /&gt;
Genome assembly remains an inexact science. Even when accomplished with the best software available, the assembly of a genome often contains numerous errors, both small and large. Hawkeye is a visual analytics tool for genome assembly analysis and validation, designed to aid in identifying and correcting assembly errors. Hawkeye blends the best practices from information and scientific visualization to facilitate inspection of large-scale assembly data while minimizing the time needed to detect mis-assemblies and make accurate judgments of assembly quality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All levels of the assembly data hierarchy are made accessible to users, along with summary statistics and common assembly metrics. A ranking component guides investigation towards likely mis-assemblies or interesting features to support the task at hand. Wherever possible, high-level overviews, dynamic filtering, and automated clustering are leveraged to focus attention and highlight anomalies in the data. Hawkeyes effectiveness has been proven on several genome projects, where it has been used both to improve quality and to validate the correctness of complex genomes. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hawkeye is compatible with most widely used assemblers, including Phrap, ARACHNE, Celera Assembler, Newbler, AMOS, and assemblies deposited in the NCBI Assembly Archive. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Click for a presentation on [http://www.cbcb.umd.edu/~mschatz/Presentations/AMOS_Validation_Visualization.pdf AMOS Assembly Validation and Visualization]. [1.4MB]&lt;br /&gt;
* Click for a [http://www.cbcb.umd.edu/~mschatz/hawkeyedemo.wmv recorded demonstration] of using Hawkeye to analyze a mis-assembly. [2.2MB] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:HawkeyeLaunchpadThumb.png|frame|[[Hawkeye Launch Pad]] - Assembly Statistics and Overview]]&lt;br /&gt;
|[[Image:HawkeyeScaffoldThumb.png|frame|[[Hawkeye Scaffold View]] - Scaffolds, Contigs, Reads &amp;amp; Mates]]&lt;br /&gt;
|[[Image:HawkeyeContigThumb.png|frame|[[Hawkeye Contig View]] - Reads, SNPs, Quality Values &amp;amp; Traces]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build &amp;amp; Installation ==&lt;br /&gt;
Hawkeye comes in source form with the AMOS distribution. You should build the entire AMOS distribution even if you only want to run Hawkeye so all of the necessary convertors and libraries are available. You can download the AMOS source package from:&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 http://sourceforge.net/project/showfiles.php?group_id=134326].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hawkeye requires Qt 4.x is installed to run. The latest version of Qt is currently 4.7.3 and can be downloaded from the Qt website for Unix and Mac OS X: [http://qt.nokia.com/downloads http://qt.nokia.com/downloads]. Many linux distributions come with the Qt runtime libraries by default, but do not have the development package installed. You must install both the runtime libraries and the development package (header files) to build Hawkeye. &lt;br /&gt;
&lt;br /&gt;
The general build process is to run &amp;#039;./configure; make; make install&amp;#039; in the AMOS source directory. You may need to explicitly specify the Qt directories to configure when building AMOS with the following options:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ configure --help&lt;br /&gt;
 &amp;lt;snip&amp;gt;&lt;br /&gt;
  --with-Qt4-dir=DIR       DIR is equal to QTDIR if you have followed the&lt;br /&gt;
                          installation instructions of Trolltech. Header files&lt;br /&gt;
                          are in DIR/include, binary utilities are in DIR/bin&lt;br /&gt;
                          and the library is in DIR/lib. Use the options below&lt;br /&gt;
                          to override these defaults&lt;br /&gt;
  --with-Qt4-include-dir=DIR&lt;br /&gt;
  --with-Qt4-bin-dir=DIR&lt;br /&gt;
  --with-Qt4-lib-dir=DIR&lt;br /&gt;
  --with-Qt4-lib=LIB       Use -lLIB to link the Qt4 library&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More information is available in the INSTALL file within the AMOS tarball.&lt;br /&gt;
&lt;br /&gt;
If you cannot get configure to find or recognize Qt on your system, the alternative build option is to build AMOS without hawkeye, and then use the Qt build script qmake to build hawkeye seperately&lt;br /&gt;
  cd amos&lt;br /&gt;
  ./configure&lt;br /&gt;
  make&lt;br /&gt;
  cd src/hawkeye&lt;br /&gt;
  qmake&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launching Hawkeye ==&lt;br /&gt;
Hawkeye reads the assembly data from an AMOS bank. A bank is a special directory of binary encoded files containing all information on an assembly. A bank is created by the AMOS assemblers directly, or by converting the results of others assemblers into AMOS format. This is typically done with the tools [[toAmos]] and [[bank-transact]]. toAmos reads the assembly files and converts them to plaintext AMOS message formats, and bank-transact reads those messages and creates the binary encoded bank directory. See the [[File conversion utilities]] for more information.&lt;br /&gt;
&lt;br /&gt;
As a convenience, a few sample banks are available online at [http://sourceforge.net/projects/amos/files/test_data/ http://sourceforge.net/projects/amos/files/test_data/]&lt;br /&gt;
&lt;br /&gt;
After downloading and unpacking, these can be viewed using&lt;br /&gt;
&lt;br /&gt;
  $ hawkeye staph_aureus.ctg2533.bnk&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  $ hawkeye staph_aureus.bnk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
&lt;br /&gt;
Create the bank human.bnk from the files human.frg and human.asm, which are the input and output files for the Celera Assembler. More information on converting to AMOS is available in the [[toAmos]] documentation.&lt;br /&gt;
&lt;br /&gt;
 $ toAmos -f human.frg -a human.asm -o - | bank-transact -m - -b human.bnk -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the bank human.bnk from an ace file, which is an output format for many assemblers including Phrap, Arachne, and Newbler. Check your assembler&amp;#039;s documentation for more information on creating ACE files. Note the ACE file contains all of the sequence information, so it is not necessary to import the fasta files separately. More information on converting to AMOS is available in the [[toAmos]] documentation.&lt;br /&gt;
&lt;br /&gt;
 $ toAmos -ace human.ace -o - | bank-transact -m - -b human.bnk -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the bank human.bnk from an assembly archive XML file called ASSEMBLY.xml. Note all of the read fasta files should be concatentated into a single TRACEINFO.seq file, and the read qualities files should be concatenated into a single TRACEINFO.qual file, and the TRACEINFO.xml file should be present as well. More information is available in the [[tarchive2amos]] documentation.&lt;br /&gt;
&lt;br /&gt;
 $ tarchive2amos -o human -assembly ASSEMBLY.xml TRACEINFO.seq;&lt;br /&gt;
 $ bank-transact -m human.afg -b human.bnk -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the bank has been built, launch the viewer by running hawkeye on the bank directory. This will open your assembly to the [[Hawkeye Launch Pad]] where you can see an overview of your assembly and select scaffolds or contigs for closer investigation:&lt;br /&gt;
&lt;br /&gt;
 $ hawkeye human.bnk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Command Line Options ==&lt;br /&gt;
The options available are listed by specifying -h.&lt;br /&gt;
&lt;br /&gt;
 $ hawkeye -h&lt;br /&gt;
 Usage: hawkeye [options] [bankname [contigid [position]]]&lt;br /&gt;
 Options:&lt;br /&gt;
   -c &amp;lt;path&amp;gt;   Add a chromatogram path&lt;br /&gt;
   -D &amp;lt;DB&amp;gt;     Set the chromatogram DB&lt;br /&gt;
   -T          Enable Trace Fetch cmd&lt;br /&gt;
   -p &amp;lt;port&amp;gt;   Initialize Server on this port&lt;br /&gt;
   -K &amp;lt;kmer&amp;gt;   Load File of kmers&lt;br /&gt;
   -h          Display this help&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A typical execution will be &amp;quot;hawkeye prefix.bnk&amp;quot; which will load the assembly from the bank named prefix.bnk. &lt;br /&gt;
&lt;br /&gt;
Hawkeye can display k-mer coverage in addition to read or insert coverage in the coverage plot region. To do so, you must pre-compute the k-mer counts in your assembly. AMOS comes bundled with a tool &amp;#039;count-kmers&amp;#039; that can be used for this purpose. A typical execution is to count the occurencs of k-mers (k=22) in your reads, and plot those values. A sufficient long k-mer should unique be in your genome, so the average k-mer coverage indicates the depth of read coverage, and spikes in k-mer coverage indicate repetitive regions. This is displayed as follows:&lt;br /&gt;
&lt;br /&gt;
 $ count-kmers -r human.bnk &amp;gt; human.22mers&lt;br /&gt;
 $ hawkeye -K human.22mers human.bnk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by NIH award R01-LM06845, the National Institute of Allergy and Infectious Disease under contract NIH-NIAID-DMID- 04-34, HHSN266200400038C, and DHS/HSARPA award W81XWH-05-2-0051 to SLS.&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Hawkeye</id>
		<title>Hawkeye</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Hawkeye"/>
				<updated>2011-08-03T06:53:18Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | [[Image:HawkeyeLogo.jpg]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
An Interactive Visual Analytics Tool for Genome Assemblies.&lt;br /&gt;
&lt;br /&gt;
[http://schatzlab.cshl.edu/~mschatz Michael Schatz] - &lt;br /&gt;
[http://www.cbcb.umd.edu/~amp Adam Phillippy] - &lt;br /&gt;
[http://www.cs.umd.edu/~ben/ Ben Schneiderman] - &lt;br /&gt;
[http://www.cbcb.umd.edu/~salzberg Steven Salzberg] -&lt;br /&gt;
[http://www.cbcb.umd.edu/~mpop Mihai Pop]&lt;br /&gt;
&lt;br /&gt;
Version 2.0 - August 2011&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Publication: &lt;br /&gt;
&lt;br /&gt;
[http://genomebiology.com/2007/8/3/R34 Hawkeye: a visual analytics tool for genome assemblies].&lt;br /&gt;
&lt;br /&gt;
Schatz, M.C., Phillippy, A.M., Shneiderman, B., Salzberg, S.L. (2007)  Genome Biology 8:R34.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&lt;br /&gt;
Genome assembly remains an inexact science. Even when accomplished with the best software available, the assembly of a genome often contains numerous errors, both small and large. Hawkeye is a visual analytics tool for genome assembly analysis and validation, designed to aid in identifying and correcting assembly errors. Hawkeye blends the best practices from information and scientific visualization to facilitate inspection of large-scale assembly data while minimizing the time needed to detect mis-assemblies and make accurate judgments of assembly quality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All levels of the assembly data hierarchy are made accessible to users, along with summary statistics and common assembly metrics. A ranking component guides investigation towards likely mis-assemblies or interesting features to support the task at hand. Wherever possible, high-level overviews, dynamic filtering, and automated clustering are leveraged to focus attention and highlight anomalies in the data. Hawkeyes effectiveness has been proven on several genome projects, where it has been used both to improve quality and to validate the correctness of complex genomes. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hawkeye is compatible with most widely used assemblers, including Phrap, ARACHNE, Celera Assembler, Newbler, AMOS, and assemblies deposited in the NCBI Assembly Archive. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Click for a presentation on [http://www.cbcb.umd.edu/~mschatz/Presentations/AMOS_Validation_Visualization.pdf AMOS Assembly Validation and Visualization]. [1.4MB]&lt;br /&gt;
* Click for a [http://www.cbcb.umd.edu/~mschatz/hawkeyedemo.wmv recorded demonstration] of using Hawkeye to analyze a mis-assembly. [2.2MB] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:HawkeyeLaunchpadThumb.png|frame|[[Hawkeye Launch Pad]] - Assembly Statistics and Overview]]&lt;br /&gt;
|[[Image:HawkeyeScaffoldThumb.png|frame|[[Hawkeye Scaffold View]] - Scaffolds, Contigs, Reads &amp;amp; Mates]]&lt;br /&gt;
|[[Image:HawkeyeContigThumb.png|frame|[[Hawkeye Contig View]] - Reads, SNPs, Quality Values &amp;amp; Traces]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build &amp;amp; Installation ==&lt;br /&gt;
Hawkeye comes in source form with the AMOS distribution. You should build the entire AMOS distribution even if you only want to run Hawkeye so all of the necessary convertors and libraries are available. You can download the AMOS source package from:&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 http://sourceforge.net/project/showfiles.php?group_id=134326].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hawkeye requires Qt 4.x is installed to run. The latest version of Qt is currently 4.7.3 and can be downloaded from the Qt website for Unix and Mac OS X: [http://qt.nokia.com/downloads http://qt.nokia.com/downloads]. Many linux distributions come with the Qt runtime libraries by default, but do not have the development package installed. You must install both the runtime libraries and the development package (header files) to build Hawkeye. &lt;br /&gt;
&lt;br /&gt;
The general build process is to run &amp;#039;./configure; make; make install&amp;#039; in the AMOS source directory. You may need to explicitly specify the Qt directories to configure when building AMOS with the following options:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ configure --help&lt;br /&gt;
 &amp;lt;snip&amp;gt;&lt;br /&gt;
  --with-Qt4-dir=DIR       DIR is equal to QTDIR if you have followed the&lt;br /&gt;
                          installation instructions of Trolltech. Header files&lt;br /&gt;
                          are in DIR/include, binary utilities are in DIR/bin&lt;br /&gt;
                          and the library is in DIR/lib. Use the options below&lt;br /&gt;
                          to override these defaults&lt;br /&gt;
  --with-Qt4-include-dir=DIR&lt;br /&gt;
  --with-Qt4-bin-dir=DIR&lt;br /&gt;
  --with-Qt4-lib-dir=DIR&lt;br /&gt;
  --with-Qt4-lib=LIB       Use -lLIB to link the Qt4 library&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More information is available in the INSTALL file within the AMOS tarball.&lt;br /&gt;
&lt;br /&gt;
If you cannot get configure to find or recognize Qt on your system, the alternative build option is to build AMOS without hawkeye, and then use the Qt build script qmake to build hawkeye seperately&lt;br /&gt;
  cd amos&lt;br /&gt;
  ./configure&lt;br /&gt;
  make&lt;br /&gt;
  cd src/hawkeye&lt;br /&gt;
  qmake&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launching Hawkeye ==&lt;br /&gt;
Hawkeye reads the assembly data from an AMOS bank. A bank is a special directory of binary encoded files containing all information on an assembly. A bank is created by the AMOS assemblers directly, or by converting the results of others assemblers into AMOS format. This is typically done with the tools [[toAmos]] and [[bank-transact]]. toAmos reads the assembly files and converts them to plaintext AMOS message formats, and bank-transact reads those messages and creates the binary encoded bank directory. See the [[File conversion utilities]] for more information.&lt;br /&gt;
&lt;br /&gt;
As a convenience, a few sample banks are available online at [http://sourceforge.net/projects/amos/files/test_data/ http://sourceforge.net/projects/amos/files/test_data/]&lt;br /&gt;
&lt;br /&gt;
After downloading and unpacking, these can be viewed using&lt;br /&gt;
&lt;br /&gt;
  $ hawkeye staph_aureus.ctg2533.bnk&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
  $ hawkeye staph_aureus.bnk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
&lt;br /&gt;
Create the bank human.bnk from the files human.frg and human.asm, which are the input and output files for the Celera Assembler. More information on converting to AMOS is available in the [[toAmos]] documentation.&lt;br /&gt;
&lt;br /&gt;
 $ toAmos -f human.frg -a human.asm -o - | bank-transact -m - -b human.bnk -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the bank human.bnk from an ace file, which is an output format for many assemblers including Phrap, Arachne, and Newbler. Check your assembler&amp;#039;s documentation for more information on creating ACE files. Note the ACE file contains all of the sequence information, so it is not necessary to import the fasta files separately. More information on converting to AMOS is available in the [[toAmos]] documentation.&lt;br /&gt;
&lt;br /&gt;
 $ toAmos -ace human.ace -o - | bank-transact -m - -b human.bnk -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the bank human.bnk from an assembly archive XML file called ASSEMBLY.xml. Note all of the read fasta files should be concatentated into a single TRACEINFO.seq file, and the read qualities files should be concatenated into a single TRACEINFO.qual file, and the TRACEINFO.xml file should be present as well. More information is available in the [[tarchive2amos]] documentation.&lt;br /&gt;
&lt;br /&gt;
 $ tarchive2amos -o human -assembly ASSEMBLY.xml TRACEINFO.seq;&lt;br /&gt;
 $ bank-transact -m human.afg -b human.bnk -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the bank has been built, launch the viewer by running hawkeye on the bank directory. This will open your assembly to the [[Hawkeye Launch Pad]] where you can see an overview of your assembly and select scaffolds or contigs for closer investigation:&lt;br /&gt;
&lt;br /&gt;
 $ hawkeye human.bnk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Command Line Options ==&lt;br /&gt;
The options available are listed by specifying -h.&lt;br /&gt;
&lt;br /&gt;
 $ hawkeye -h&lt;br /&gt;
 Usage: hawkeye [options] [bankname [contigid [position]]]&lt;br /&gt;
 Options:&lt;br /&gt;
   -c &amp;lt;path&amp;gt;   Add a chromatogram path&lt;br /&gt;
   -D &amp;lt;DB&amp;gt;     Set the chromatogram DB&lt;br /&gt;
   -T          Enable Trace Fetch cmd&lt;br /&gt;
   -p &amp;lt;port&amp;gt;   Initialize Server on this port&lt;br /&gt;
   -K &amp;lt;kmer&amp;gt;   Load File of kmers&lt;br /&gt;
   -h          Display this help&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A typical execution will be &amp;quot;hawkeye prefix.bnk&amp;quot; which will load the assembly from the bank named prefix.bnk. &lt;br /&gt;
&lt;br /&gt;
Hawkeye can display k-mer coverage in addition to read or insert coverage in the coverage plot region. To do so, you must pre-compute the k-mer counts in your assembly. AMOS comes bundled with a tool &amp;#039;count-kmers&amp;#039; that can be used for this purpose. A typical execution is to count the occurencs of k-mers (k=22) in your reads, and plot those values. A sufficient long k-mer should unique be in your genome, so the average k-mer coverage indicates the depth of read coverage, and spikes in k-mer coverage indicate repetitive regions. This is displayed as follows:&lt;br /&gt;
&lt;br /&gt;
 $ count-kmers -r human.bnk &amp;gt; human.22mers&lt;br /&gt;
 $ hawkeye -K human.22mers human.bnk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by NIH award R01-LM06845, the National Institute of Allergy and Infectious Disease under contract NIH-NIAID-DMID- 04-34, HHSN266200400038C, and DHS/HSARPA award W81XWH-05-2-0051 to SLS.&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Hawkeye</id>
		<title>Hawkeye</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Hawkeye"/>
				<updated>2011-08-03T06:49:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | [[Image:HawkeyeLogo.jpg]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
An Interactive Visual Analytics Tool for Genome Assemblies.&lt;br /&gt;
&lt;br /&gt;
[http://schatzlab.cshl.edu/~mschatz Michael Schatz] - &lt;br /&gt;
[http://www.cbcb.umd.edu/~amp Adam Phillippy] - &lt;br /&gt;
[http://www.cs.umd.edu/~ben/ Ben Schneiderman] - &lt;br /&gt;
[http://www.cbcb.umd.edu/~salzberg Steven Salzberg] -&lt;br /&gt;
[http://www.cbcb.umd.edu/~mpop Mihai Pop]&lt;br /&gt;
&lt;br /&gt;
Version 2.0 - August 2011&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Publication: &lt;br /&gt;
&lt;br /&gt;
[http://genomebiology.com/2007/8/3/R34 Hawkeye: a visual analytics tool for genome assemblies].&lt;br /&gt;
&lt;br /&gt;
Schatz, M.C., Phillippy, A.M., Shneiderman, B., Salzberg, S.L. (2007)  Genome Biology 8:R34.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Abstract ==&lt;br /&gt;
&lt;br /&gt;
Genome assembly remains an inexact science. Even when accomplished with the best software available, the assembly of a genome often contains numerous errors, both small and large. Hawkeye is a visual analytics tool for genome assembly analysis and validation, designed to aid in identifying and correcting assembly errors. Hawkeye blends the best practices from information and scientific visualization to facilitate inspection of large-scale assembly data while minimizing the time needed to detect mis-assemblies and make accurate judgments of assembly quality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All levels of the assembly data hierarchy are made accessible to users, along with summary statistics and common assembly metrics. A ranking component guides investigation towards likely mis-assemblies or interesting features to support the task at hand. Wherever possible, high-level overviews, dynamic filtering, and automated clustering are leveraged to focus attention and highlight anomalies in the data. Hawkeyes effectiveness has been proven on several genome projects, where it has been used both to improve quality and to validate the correctness of complex genomes. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hawkeye is compatible with most widely used assemblers, including Phrap, ARACHNE, Celera Assembler, Newbler, AMOS, and assemblies deposited in the NCBI Assembly Archive. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Click for a presentation on [http://www.cbcb.umd.edu/~mschatz/Presentations/AMOS_Validation_Visualization.pdf AMOS Assembly Validation and Visualization]. [1.4MB]&lt;br /&gt;
* Click for a [http://www.cbcb.umd.edu/~mschatz/hawkeyedemo.wmv recorded demonstration] of using Hawkeye to analyze a mis-assembly. [2.2MB] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:HawkeyeLaunchpadThumb.png|frame|[[Hawkeye Launch Pad]] - Assembly Statistics and Overview]]&lt;br /&gt;
|[[Image:HawkeyeScaffoldThumb.png|frame|[[Hawkeye Scaffold View]] - Scaffolds, Contigs, Reads &amp;amp; Mates]]&lt;br /&gt;
|[[Image:HawkeyeContigThumb.png|frame|[[Hawkeye Contig View]] - Reads, SNPs, Quality Values &amp;amp; Traces]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Build &amp;amp; Installation ==&lt;br /&gt;
Hawkeye comes in source form with the AMOS distribution. You should build the entire AMOS distribution even if you only want to run Hawkeye so all of the necessary convertors and libraries are available. You can download the AMOS source package from:&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 http://sourceforge.net/project/showfiles.php?group_id=134326].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hawkeye requires Qt 4.x is installed to run. The latest version of Qt is currently 4.7.3 and can be downloaded from the Qt website for Unix and Mac OS X: [http://qt.nokia.com/downloads http://qt.nokia.com/downloads]. Many linux distributions come with the Qt runtime libraries by default, but do not have the development package installed. You must install both the runtime libraries and the development package (header files) to build Hawkeye. &lt;br /&gt;
&lt;br /&gt;
The general build process is to run &amp;#039;./configure; make; make install&amp;#039; in the AMOS source directory. You may need to explicitly specify the Qt directories to configure when building AMOS with the following options:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ configure --help&lt;br /&gt;
 &amp;lt;snip&amp;gt;&lt;br /&gt;
  --with-Qt4-dir=DIR       DIR is equal to QTDIR if you have followed the&lt;br /&gt;
                          installation instructions of Trolltech. Header files&lt;br /&gt;
                          are in DIR/include, binary utilities are in DIR/bin&lt;br /&gt;
                          and the library is in DIR/lib. Use the options below&lt;br /&gt;
                          to override these defaults&lt;br /&gt;
  --with-Qt4-include-dir=DIR&lt;br /&gt;
  --with-Qt4-bin-dir=DIR&lt;br /&gt;
  --with-Qt4-lib-dir=DIR&lt;br /&gt;
  --with-Qt4-lib=LIB       Use -lLIB to link the Qt4 library&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More information is available in the INSTALL file within the AMOS tarball.&lt;br /&gt;
&lt;br /&gt;
If you cannot get configure to find or recognize Qt on your system, the alternative build option is to build AMOS without hawkeye, and then use the Qt build script qmake to build hawkeye seperately&lt;br /&gt;
  cd amos&lt;br /&gt;
  ./configure&lt;br /&gt;
  make&lt;br /&gt;
  cd src/hawkeye&lt;br /&gt;
  qmake&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Launching Hawkeye ==&lt;br /&gt;
Hawkeye reads the assembly data from an AMOS bank. A bank is a special directory of binary encoded files containing all information on an assembly. A bank is created by the AMOS assemblers directly, or by converting the results of others assemblers into AMOS format. This is typically done with the tools [[toAmos]] and [[bank-transact]]. toAmos reads the assembly files and converts them to plaintext AMOS message formats, and bank-transact reads those messages and creates the binary encoded bank directory. See the [[File conversion utilities]] for more information.&lt;br /&gt;
&lt;br /&gt;
As a convenience, a few sample banks are available online at [http://sourceforge.net/projects/amos/files/test_data/ http://sourceforge.net/projects/amos/files/test_data/]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
&lt;br /&gt;
Create the bank human.bnk from the files human.frg and human.asm, which are the input and output files for the Celera Assembler. More information on converting to AMOS is available in the [[toAmos]] documentation.&lt;br /&gt;
&lt;br /&gt;
 $ toAmos -f human.frg -a human.asm -o - | bank-transact -m - -b human.bnk -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the bank human.bnk from an ace file, which is an output format for many assemblers including Phrap, Arachne, and Newbler. Check your assembler&amp;#039;s documentation for more information on creating ACE files. Note the ACE file contains all of the sequence information, so it is not necessary to import the fasta files separately. More information on converting to AMOS is available in the [[toAmos]] documentation.&lt;br /&gt;
&lt;br /&gt;
 $ toAmos -ace human.ace -o - | bank-transact -m - -b human.bnk -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create the bank human.bnk from an assembly archive XML file called ASSEMBLY.xml. Note all of the read fasta files should be concatentated into a single TRACEINFO.seq file, and the read qualities files should be concatenated into a single TRACEINFO.qual file, and the TRACEINFO.xml file should be present as well. More information is available in the [[tarchive2amos]] documentation.&lt;br /&gt;
&lt;br /&gt;
 $ tarchive2amos -o human -assembly ASSEMBLY.xml TRACEINFO.seq;&lt;br /&gt;
 $ bank-transact -m human.afg -b human.bnk -c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once the bank has been built, launch the viewer by running hawkeye on the bank directory. This will open your assembly to the [[Hawkeye Launch Pad]] where you can see an overview of your assembly and select scaffolds or contigs for closer investigation:&lt;br /&gt;
&lt;br /&gt;
 $ hawkeye human.bnk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Command Line Options ==&lt;br /&gt;
The options available are listed by specifying -h.&lt;br /&gt;
&lt;br /&gt;
 $ hawkeye -h&lt;br /&gt;
 Usage: hawkeye [options] [bankname [contigid [position]]]&lt;br /&gt;
 Options:&lt;br /&gt;
   -c &amp;lt;path&amp;gt;   Add a chromatogram path&lt;br /&gt;
   -D &amp;lt;DB&amp;gt;     Set the chromatogram DB&lt;br /&gt;
   -T          Enable Trace Fetch cmd&lt;br /&gt;
   -p &amp;lt;port&amp;gt;   Initialize Server on this port&lt;br /&gt;
   -K &amp;lt;kmer&amp;gt;   Load File of kmers&lt;br /&gt;
   -h          Display this help&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A typical execution will be &amp;quot;hawkeye prefix.bnk&amp;quot; which will load the assembly from the bank named prefix.bnk. Specifying a path with -c allows you to set a location for the viewer to find the chromatograms for the project. You may set multiple paths, and hawkeye will search each one. Similiarily, the -d option also specifies locations for the chromatograms, but this is for &amp;quot;TIGR style&amp;quot; naming schemes to be used in conjunction with the -D option. More work is under development to simplify chromatogram access. The -p option allows you to set a TCP port for Hawkeye to accept commands from, especially for integration with mummerplot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that to view chromatograms within the viewer you need to both have the chromatograms available, and have the chromatogram positions available in the bank or in the trace files. The chromatogram positions are the positions of the peaks in the traces where the base call were made. They can be loaded into the bank with &amp;quot;updateBankPositions bankname posfile&amp;quot; where bankname is the name of the bank and posfile is a file encoding the positions for each read. Some trace file formats such as SCF have the positions encoded within, and it will not be necessary to load the positions into the bank.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your reads are in the trace archive, and you set the name (EID) of the reads to be ti numbers, then you can fetch the traces and chromatogram positions on the fly from the trace archive by enabling the Trace Fetch Command (-T). With this enabled, Hawkeye will execute the following system command to load a trace:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ curl &amp;quot;http://www.ncbi.nlm.nih.gov/Traces/previous/trace.fcgi?\&lt;br /&gt;
            cmd=java&amp;amp;j=scf&amp;amp;val=%EID%&amp;amp;ti=%EID%&amp;quot; -s -o %TRACECACHE%/%EID%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note you need to have curl installed in your current path. If your organization has its own trace server, you can replace this command with one for your organization, by modifying AMOS/src/bankViewer/DataStore.cc. More information on the Trace Fetch Command is comming soon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hawkeye can display k-mer coverage in addition to read or insert coverage in the coverage plot region. To do so, you must pre-compute the k-mer counts in your assembly. AMOS comes bundled with a tool &amp;#039;count-kmers&amp;#039; that can be used for this purpose. A typical execution is to count the occurencs of k-mers (k=22) in your reads, and plot those values. A sufficient long k-mer should unique be in your genome, so the average k-mer coverage indicates the depth of read coverage, and spikes in k-mer coverage indicate repetitive regions. This is displayed as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ count-kmers -r human.bnk &amp;gt; human.22mers&lt;br /&gt;
 $ hawkeye -K human.22mers human.bnk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sample Assembly ==&lt;br /&gt;
A sample assembly is available here: [http://www.cbcb.umd.edu/software/amos/gb6.small.afg.bz2 gb6.small.afg.bz2] (4.6MB)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The assembly is a small selection from Bacillus Anthracis consisting of 4 small scaffolds of 11 contigs created from 6249 reads. It is in a compressed AMOS message file. Download it, and then view it as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ bunzip2 gb6.small.afg.bz2&lt;br /&gt;
 $ bank-transact -m gb6.small.afg -b gb6.small.bnk -c&lt;br /&gt;
 $ hawkeye -T gb6.small.bnk&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Specifying -T enables the trace fetch command so that traces can be viewed on-the-fly from the NCBI trace archive. See [[#Command Line Options]] for more information. See the [[Hawkeye Launch Pad]] documentation for a description of how to navigate this assembly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by NIH award R01-LM06845, the National Institute of Allergy and Infectious Disease under contract NIH-NIAID-DMID- 04-34, HHSN266200400038C, and DHS/HSARPA award W81XWH-05-2-0051 to SLS.&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AMOS</id>
		<title>AMOS</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AMOS"/>
				<updated>2011-08-03T06:36:15Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium is committed to the development of open-source whole genome assembly software. The project acronym (AMOS) represents our primary goal -- to produce A Modular, Open-Source whole genome assembler. Open-source so that everyone is welcome to contribute and help build outstanding assembly tools, and modular in nature so that new contributions can be easily inserted into an existing assembly pipeline. This modular design will foster the development of new assembly algorithms and allow the AMOS project to continually grow and improve in hopes of eventually becoming a widely accepted and deployed assembly infrastructure. In this sense, AMOS is both a design philosophy and a software system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quick links:&lt;br /&gt;
* [[AMOS Getting Started]]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=134326 Download]&lt;br /&gt;
* [http://sourceforge.net/projects/amos SourceForge project page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&lt;br /&gt;
* August 2, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.1.0/ Version 3.1.0-rc1] of AMOS released!&lt;br /&gt;
* August 2, 2011 - [http://sourceforge.net/projects/amos/files/test_data/ AMOS Test Data] posted&lt;br /&gt;
* December 7, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.0.0/ Version 3.0.0] of AMOS released!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Additional documentation in development through the [[AMOS Documentation Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assemblers ===&lt;br /&gt;
* [[ABBA]] - Assembly Boosted By Amino Acid Sequences&lt;br /&gt;
* [[AMOScmp]] - comparative assembler&lt;br /&gt;
* [[AMOScmp-shortReads]] - comparative assembler for short reads (Solexa,454)&lt;br /&gt;
* [[AMOScmp-shortReads-alignmentTrimmed]] - comparative assembler for short reads that uses alignment based trimming&lt;br /&gt;
* [[minimus]] - basic genome assembler for small datasets&lt;br /&gt;
* [[Minimo]] - the minimus assembler with many more options&lt;br /&gt;
* [[minimus2]] - basic genome assembler for two datasets; can also be used as an assembly merge pipeline&lt;br /&gt;
* [[minimus2-blat]] - Same as minimus2 but uses BLAT instead of Nucmer for added speed&lt;br /&gt;
&lt;br /&gt;
=== Validation and Visualization ===&lt;br /&gt;
* [[Hawkeye]] - assembly viewer&lt;br /&gt;
* [[amosvalidate]] - assembly forensics&lt;br /&gt;
* [[FRCurve]] - Feature-Response Curve&lt;br /&gt;
* [[Benchmark]] - assembly benchmark data&lt;br /&gt;
&lt;br /&gt;
=== Scaffolding ===&lt;br /&gt;
* [[Bambus]] - Open source standalone hierarchical scaffolding&lt;br /&gt;
* [[Bambus2]] - Scaffolding Polymorphic Genomes and Metagenomes&lt;br /&gt;
&lt;br /&gt;
=== Trimming, Overlapping, &amp;amp; Error Correction ===&lt;br /&gt;
* [[Figaro]] - statistical vector trimmer&lt;br /&gt;
* [[UMD Overlapper]] - High quality overlap computations&lt;br /&gt;
* [[KI Overlapper]] - Repeat aware overlapper&lt;br /&gt;
* [[AutoEditor]] - Automatic correction of genome sequencing errors&lt;br /&gt;
* [[FastqQC]] - Read composition and quality&lt;br /&gt;
&lt;br /&gt;
=== Utilities ===&lt;br /&gt;
* [[File conversion utilities]] - converting data to and from AMOS&lt;br /&gt;
* [[AMOS Utilities | AMOS Utilities]] - general utilities&lt;br /&gt;
* [[runAmos]] - Pipeline executor&lt;br /&gt;
&lt;br /&gt;
=== AMOS Development ===&lt;br /&gt;
* [[Programmer&amp;#039;s guide]] - Getting started with the Source code&lt;br /&gt;
* [[Infrastructure]] - Developer level details&lt;br /&gt;
* [[Wiki guide]] - Guide for editing the wiki&lt;br /&gt;
&lt;br /&gt;
=== Assembly Tutorials ===&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/assembly_primer.shtml Assembly primer] - overview of genome assembly.&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/contig_representation.shtml Representing assemblies (not just in AMOS)]&lt;br /&gt;
* [http://wgs-assembler.sourceforge.net Running Celera Assembler]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download == &lt;br /&gt;
The AMOS source if freely available for download from the File Release Section of our SourceForge project page. Please refer to the COPYING license included in the package for a description of the Artistic License, the same OSI certified open source license used by Perl and countless other packages. Not all of the above packages are included with the standard AMOS distribution, please see the homepage for the software you wish to download to verify that it is included with the AMOS source distribution.&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 Download from SourceForge]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Consortium members ==&lt;br /&gt;
&lt;br /&gt;
There have been numerous positive responses regarding the AMOS initiative, and we expect the list of involved organizations to grow significantly as the project matures. Please contact us if you want to join. The groups currently involved with the development of AMOS are listed below, along with their responsibilities and areas of expertise.&lt;br /&gt;
&lt;br /&gt;
* University of Maryland, Center for Bioinformatics and Computational Biology&lt;br /&gt;
** project organization and direction&lt;br /&gt;
** infrastructure&lt;br /&gt;
** consensus&lt;br /&gt;
** automated sequence editing&lt;br /&gt;
** scaffolding&lt;br /&gt;
** overlap detection&lt;br /&gt;
** contig construction&lt;br /&gt;
&lt;br /&gt;
* The Institute for Genomic Research&lt;br /&gt;
** production pipelines&lt;br /&gt;
** automated finishing tools&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Karolinska Institutet&lt;br /&gt;
** overlap detection&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Marine Biological Laboratory - Woods Hole&lt;br /&gt;
** graphical interface&lt;br /&gt;
** integration of assembly data with analysis (gene, polymorphism, etc.) information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Join the consortium ==&lt;br /&gt;
&lt;br /&gt;
All interested parties are welcome to join or aid the AMOS consortium. Please address all correspondence via Email to:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
To receive information regarding new releases and developments, please subscribe to our moderated, low-traffic users&amp;#039; mailing list:&lt;br /&gt;
&lt;br /&gt;
 amos-users (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bug reports and support ==&lt;br /&gt;
&lt;br /&gt;
For AMOS bug reports or support requests, please browse our SourceForge project page or Email us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium would like to thank the following organizations for their funding and/or support:&lt;br /&gt;
* The National Institutes of Health - grants R01-LM06845, N01-AI-15447&lt;br /&gt;
* The National Science Foundation - grants IIS-9902923, IIS-9820497&lt;br /&gt;
* Department of Homeland Security - cooperative agreement W81XWH-05-2-0051&lt;br /&gt;
* SourceForge.net&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AMOS</id>
		<title>AMOS</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AMOS"/>
				<updated>2011-08-03T06:35:52Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium is committed to the development of open-source whole genome assembly software. The project acronym (AMOS) represents our primary goal -- to produce A Modular, Open-Source whole genome assembler. Open-source so that everyone is welcome to contribute and help build outstanding assembly tools, and modular in nature so that new contributions can be easily inserted into an existing assembly pipeline. This modular design will foster the development of new assembly algorithms and allow the AMOS project to continually grow and improve in hopes of eventually becoming a widely accepted and deployed assembly infrastructure. In this sense, AMOS is both a design philosophy and a software system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quick links:&lt;br /&gt;
* [[AMOS Getting Started]]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=134326 Download]&lt;br /&gt;
* [http://sourceforge.net/projects/amos SourceForge project page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&lt;br /&gt;
* August 2, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.1.0/ Version 3.1.0-rc1] of AMOS released!&lt;br /&gt;
* August 2, 2011 - [http://sourceforge.net/projects/amos/files/test_data/ AMOS Test Data] posted&lt;br /&gt;
* December 7, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.0.0/ Version 3.0.0] of AMOS released!&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Additional documentation in development through the [[AMOS Documentation Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assemblers ===&lt;br /&gt;
* [[ABBA]] - Assembly Boosted By Amino Acid Sequences&lt;br /&gt;
* [[AMOScmp]] - comparative assembler&lt;br /&gt;
* [[AMOScmp-shortReads]] - comparative assembler for short reads (Solexa,454)&lt;br /&gt;
* [[AMOScmp-shortReads-alignmentTrimmed]] - comparative assembler for short reads that uses alignment based trimming&lt;br /&gt;
* [[minimus]] - basic genome assembler for small datasets&lt;br /&gt;
* [[Minimo]] - the minimus assembler with many more options&lt;br /&gt;
* [[minimus2]] - basic genome assembler for two datasets; can also be used as an assembly merge pipeline&lt;br /&gt;
* [[minimus2-blat]] - Same as minimus2 but uses BLAT instead of Nucmer for added speed&lt;br /&gt;
&lt;br /&gt;
=== Validation and Visualization ===&lt;br /&gt;
* [[Hawkeye]] - assembly viewer&lt;br /&gt;
* [[amosvalidate]] - assembly forensics&lt;br /&gt;
* [[FRCurve]] - Feature-Response Curve&lt;br /&gt;
* [[Benchmark]] - assembly benchmark data&lt;br /&gt;
&lt;br /&gt;
=== Scaffolding ===&lt;br /&gt;
* [[Bambus]] - Open source standalone hierarchical scaffolding&lt;br /&gt;
* [[Bambus2]] - Scaffolding Polymorphic Genomes and Metagenomes&lt;br /&gt;
&lt;br /&gt;
=== Trimming, Overlapping, &amp;amp; Error Correction ===&lt;br /&gt;
* [[Figaro]] - statistical vector trimmer&lt;br /&gt;
* [[UMD Overlapper]] - High quality overlap computations&lt;br /&gt;
* [[KI Overlapper]] - Repeat aware overlapper&lt;br /&gt;
* [[AutoEditor]] - Automatic correction of genome sequencing errors&lt;br /&gt;
* [[FastqQC]] - Read composition and quality&lt;br /&gt;
&lt;br /&gt;
=== Utilities ===&lt;br /&gt;
* [[File conversion utilities]] - converting data to and from AMOS&lt;br /&gt;
* [[AMOS Utilities | AMOS Utilities]] - general utilities&lt;br /&gt;
* [[runAmos]] - Pipeline executor&lt;br /&gt;
&lt;br /&gt;
=== AMOS Development ===&lt;br /&gt;
* [[Programmer&amp;#039;s guide]] - Getting started with the Source code&lt;br /&gt;
* [[Infrastructure]] - Developer level details&lt;br /&gt;
* [[Wiki guide]] - Guide for editing the wiki&lt;br /&gt;
&lt;br /&gt;
=== Assembly Tutorials ===&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/assembly_primer.shtml Assembly primer] - overview of genome assembly.&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/contig_representation.shtml Representing assemblies (not just in AMOS)]&lt;br /&gt;
* [http://wgs-assembler.sourceforge.net Running Celera Assembler]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download == &lt;br /&gt;
The AMOS source if freely available for download from the File Release Section of our SourceForge project page. Please refer to the COPYING license included in the package for a description of the Artistic License, the same OSI certified open source license used by Perl and countless other packages. Not all of the above packages are included with the standard AMOS distribution, please see the homepage for the software you wish to download to verify that it is included with the AMOS source distribution.&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 Download from SourceForge]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Consortium members ==&lt;br /&gt;
&lt;br /&gt;
There have been numerous positive responses regarding the AMOS initiative, and we expect the list of involved organizations to grow significantly as the project matures. Please contact us if you want to join. The groups currently involved with the development of AMOS are listed below, along with their responsibilities and areas of expertise.&lt;br /&gt;
&lt;br /&gt;
* University of Maryland, Center for Bioinformatics and Computational Biology&lt;br /&gt;
** project organization and direction&lt;br /&gt;
** infrastructure&lt;br /&gt;
** consensus&lt;br /&gt;
** automated sequence editing&lt;br /&gt;
** scaffolding&lt;br /&gt;
** overlap detection&lt;br /&gt;
** contig construction&lt;br /&gt;
&lt;br /&gt;
* The Institute for Genomic Research&lt;br /&gt;
** production pipelines&lt;br /&gt;
** automated finishing tools&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Karolinska Institutet&lt;br /&gt;
** overlap detection&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Marine Biological Laboratory - Woods Hole&lt;br /&gt;
** graphical interface&lt;br /&gt;
** integration of assembly data with analysis (gene, polymorphism, etc.) information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Join the consortium ==&lt;br /&gt;
&lt;br /&gt;
All interested parties are welcome to join or aid the AMOS consortium. Please address all correspondence via Email to:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
To receive information regarding new releases and developments, please subscribe to our moderated, low-traffic users&amp;#039; mailing list:&lt;br /&gt;
&lt;br /&gt;
 amos-users (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bug reports and support ==&lt;br /&gt;
&lt;br /&gt;
For AMOS bug reports or support requests, please browse our SourceForge project page or Email us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium would like to thank the following organizations for their funding and/or support:&lt;br /&gt;
* The National Institutes of Health - grants R01-LM06845, N01-AI-15447&lt;br /&gt;
* The National Science Foundation - grants IIS-9902923, IIS-9820497&lt;br /&gt;
* Department of Homeland Security - cooperative agreement W81XWH-05-2-0051&lt;br /&gt;
* SourceForge.net&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AMOS</id>
		<title>AMOS</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AMOS"/>
				<updated>2011-08-03T06:35:02Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium is committed to the development of open-source whole genome assembly software. The project acronym (AMOS) represents our primary goal -- to produce A Modular, Open-Source whole genome assembler. Open-source so that everyone is welcome to contribute and help build outstanding assembly tools, and modular in nature so that new contributions can be easily inserted into an existing assembly pipeline. This modular design will foster the development of new assembly algorithms and allow the AMOS project to continually grow and improve in hopes of eventually becoming a widely accepted and deployed assembly infrastructure. In this sense, AMOS is both a design philosophy and a software system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quick links:&lt;br /&gt;
* [[AMOS Getting Started]]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=134326 Download]&lt;br /&gt;
* [http://sourceforge.net/projects/amos SourceForge project page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&lt;br /&gt;
* August 2, 2010 - [http://sourceforge.net/projects/amos/files/amos/3.1.0/ Version 3.1.0-rc1] of AMOS released!&lt;br /&gt;
* August 2, 2011 - [http://sourceforge.net/projects/amos/files/test_data/ AMOS Test Data] posted&lt;br /&gt;
* December 7, 2010 - Version 3.0.0 of AMOS released!&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Additional documentation in development through the [[AMOS Documentation Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assemblers ===&lt;br /&gt;
* [[ABBA]] - Assembly Boosted By Amino Acid Sequences&lt;br /&gt;
* [[AMOScmp]] - comparative assembler&lt;br /&gt;
* [[AMOScmp-shortReads]] - comparative assembler for short reads (Solexa,454)&lt;br /&gt;
* [[AMOScmp-shortReads-alignmentTrimmed]] - comparative assembler for short reads that uses alignment based trimming&lt;br /&gt;
* [[minimus]] - basic genome assembler for small datasets&lt;br /&gt;
* [[Minimo]] - the minimus assembler with many more options&lt;br /&gt;
* [[minimus2]] - basic genome assembler for two datasets; can also be used as an assembly merge pipeline&lt;br /&gt;
* [[minimus2-blat]] - Same as minimus2 but uses BLAT instead of Nucmer for added speed&lt;br /&gt;
&lt;br /&gt;
=== Validation and Visualization ===&lt;br /&gt;
* [[Hawkeye]] - assembly viewer&lt;br /&gt;
* [[amosvalidate]] - assembly forensics&lt;br /&gt;
* [[FRCurve]] - Feature-Response Curve&lt;br /&gt;
* [[Benchmark]] - assembly benchmark data&lt;br /&gt;
&lt;br /&gt;
=== Scaffolding ===&lt;br /&gt;
* [[Bambus]] - Open source standalone hierarchical scaffolding&lt;br /&gt;
* [[Bambus2]] - Scaffolding Polymorphic Genomes and Metagenomes&lt;br /&gt;
&lt;br /&gt;
=== Trimming, Overlapping, &amp;amp; Error Correction ===&lt;br /&gt;
* [[Figaro]] - statistical vector trimmer&lt;br /&gt;
* [[UMD Overlapper]] - High quality overlap computations&lt;br /&gt;
* [[KI Overlapper]] - Repeat aware overlapper&lt;br /&gt;
* [[AutoEditor]] - Automatic correction of genome sequencing errors&lt;br /&gt;
* [[FastqQC]] - Read composition and quality&lt;br /&gt;
&lt;br /&gt;
=== Utilities ===&lt;br /&gt;
* [[File conversion utilities]] - converting data to and from AMOS&lt;br /&gt;
* [[AMOS Utilities | AMOS Utilities]] - general utilities&lt;br /&gt;
* [[runAmos]] - Pipeline executor&lt;br /&gt;
&lt;br /&gt;
=== AMOS Development ===&lt;br /&gt;
* [[Programmer&amp;#039;s guide]] - Getting started with the Source code&lt;br /&gt;
* [[Infrastructure]] - Developer level details&lt;br /&gt;
* [[Wiki guide]] - Guide for editing the wiki&lt;br /&gt;
&lt;br /&gt;
=== Assembly Tutorials ===&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/assembly_primer.shtml Assembly primer] - overview of genome assembly.&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/contig_representation.shtml Representing assemblies (not just in AMOS)]&lt;br /&gt;
* [http://wgs-assembler.sourceforge.net Running Celera Assembler]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download == &lt;br /&gt;
The AMOS source if freely available for download from the File Release Section of our SourceForge project page. Please refer to the COPYING license included in the package for a description of the Artistic License, the same OSI certified open source license used by Perl and countless other packages. Not all of the above packages are included with the standard AMOS distribution, please see the homepage for the software you wish to download to verify that it is included with the AMOS source distribution.&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 Download from SourceForge]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Consortium members ==&lt;br /&gt;
&lt;br /&gt;
There have been numerous positive responses regarding the AMOS initiative, and we expect the list of involved organizations to grow significantly as the project matures. Please contact us if you want to join. The groups currently involved with the development of AMOS are listed below, along with their responsibilities and areas of expertise.&lt;br /&gt;
&lt;br /&gt;
* University of Maryland, Center for Bioinformatics and Computational Biology&lt;br /&gt;
** project organization and direction&lt;br /&gt;
** infrastructure&lt;br /&gt;
** consensus&lt;br /&gt;
** automated sequence editing&lt;br /&gt;
** scaffolding&lt;br /&gt;
** overlap detection&lt;br /&gt;
** contig construction&lt;br /&gt;
&lt;br /&gt;
* The Institute for Genomic Research&lt;br /&gt;
** production pipelines&lt;br /&gt;
** automated finishing tools&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Karolinska Institutet&lt;br /&gt;
** overlap detection&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Marine Biological Laboratory - Woods Hole&lt;br /&gt;
** graphical interface&lt;br /&gt;
** integration of assembly data with analysis (gene, polymorphism, etc.) information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Join the consortium ==&lt;br /&gt;
&lt;br /&gt;
All interested parties are welcome to join or aid the AMOS consortium. Please address all correspondence via Email to:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
To receive information regarding new releases and developments, please subscribe to our moderated, low-traffic users&amp;#039; mailing list:&lt;br /&gt;
&lt;br /&gt;
 amos-users (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bug reports and support ==&lt;br /&gt;
&lt;br /&gt;
For AMOS bug reports or support requests, please browse our SourceForge project page or Email us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium would like to thank the following organizations for their funding and/or support:&lt;br /&gt;
* The National Institutes of Health - grants R01-LM06845, N01-AI-15447&lt;br /&gt;
* The National Science Foundation - grants IIS-9902923, IIS-9820497&lt;br /&gt;
* Department of Homeland Security - cooperative agreement W81XWH-05-2-0051&lt;br /&gt;
* SourceForge.net&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide</id>
		<title>Programmer&#039;s guide</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide"/>
				<updated>2011-07-25T00:10:27Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Getting AMOS ==&lt;br /&gt;
AMOS can be downloaded from our Sourceforge download site: http://sourceforge.net/project/showfiles.php?group_id=134326 as a tar file, or directly from the AMOS git repository (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The .tar file ===&lt;br /&gt;
If you chose to download AMOS as a .tar file, getting started is as simple as untarring the file, running &amp;quot;./configure&amp;quot; from the top level directory, then &amp;quot;make all&amp;quot;.  For more details see the Getting Started document as well as the INSTALL file provided in the top level directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GIT access ===&lt;br /&gt;
To access AMOS directly,  you can clone a copy of the source code to your local machine&lt;br /&gt;
&lt;br /&gt;
  ## clone the remote master repo to a local copy&lt;br /&gt;
  git clone git://amos.git.sourceforge.net/gitroot/amos/amos &lt;br /&gt;
&lt;br /&gt;
If you are a registered AMOS developer with read/write access to repository, you can checkout the code using:&lt;br /&gt;
&lt;br /&gt;
  ## clone the remote master to a local copy (replace SFNAME with your sourceforge username)&lt;br /&gt;
  git clone ssh://&amp;lt;SFNAME&amp;gt;@amos.git.sourceforge.net/gitroot/amos/amos&lt;br /&gt;
  &lt;br /&gt;
  ## make some changes&lt;br /&gt;
  &lt;br /&gt;
  ## now commit your changes to your local repo&lt;br /&gt;
  git commit -a -m &amp;quot;brief change message&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ## once you are happy, send the changes to the master repo&lt;br /&gt;
  git push&lt;br /&gt;
  &lt;br /&gt;
  ## update local repo with remote&lt;br /&gt;
  git pull&lt;br /&gt;
  &lt;br /&gt;
This page lists recent changes&lt;br /&gt;
 [http://amos.git.sourceforge.net/git/gitweb.cgi?p=amos/amos;a=summary http://amos.git.sourceforge.net/git/gitweb.cgi?p=amos/amos;a=summary]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are a couples tutorials on how to use git to commit changes, make branches, etc&lt;br /&gt;
&lt;br /&gt;
  [http://git-scm.com/documentation http://git-scm.com/documentation]: Detailed documentation&lt;br /&gt;
  [http://git-scm.com/course/svn.html http://git-scm.com/course/svn.html]: Fast tutorial for svn users&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the AMOS code you will need to create the appropriate configuration files with the command &amp;quot;./bootstrap&amp;quot; run from the top level directory.  You will then be able to continue with compilation as described above under the .tar file.&lt;br /&gt;
&lt;br /&gt;
If you wish to play a more involved role in the development of AMOS, or if you wish to contribute some of your code or bug fixes, please contact us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Autoconf basics (how to add your own code to the source tree) ==&lt;br /&gt;
This section is not meant as documentation for the GNU autoconf package. Below you will learn how to add a program to the AMOS distribution, in an already existing directory.  If you want help with a more complex autoconf operation please contact us at the email listed above.&lt;br /&gt;
&lt;br /&gt;
The template for the Makefile file that will be created by the configure command (see description of compilation above) can be found in the file Makefile.am in each of the directories.  This file consists of two sections: a description of the files that are going to be installed when running &amp;quot;make install&amp;quot;, and a description of each of the files that will be compiled as part of the &amp;quot;make&amp;quot; command.  If you wish to add a program to the AMOS tree, you will thus need to add both a record indicating this program will be installed by the make process, and instructions on how to build this program.  The instructions for adding a script (either a Perl script or an AMOS configuration file), or a C++ program are described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Addding a script to the AMOS tree ===&lt;br /&gt;
To add a script you can simply list it in the &amp;quot;dist_bin_SCRIPTS&amp;quot; variable at the beginning of the Makefile.am file, e.g.:&lt;br /&gt;
&lt;br /&gt;
 dist_bin_SCRIPTS = \&lt;br /&gt;
         bank-unlock.pl&lt;br /&gt;
&lt;br /&gt;
The build process will automatically add a &amp;quot;use lib&amp;quot; line to the beginning of your Perl scripts indicating where the AMOS code is installed.  Furthermore, the #! line will be appropriately modified according to the location of the Perl binary identified by the configure process.&lt;br /&gt;
&lt;br /&gt;
When building AMOS configuration files, the build process will automatically update the BINDIR and NUCMER variable in your file to the values identified by the configure process for the location of the AMOS binary installation directory, and for the location of the nucmer binary (part of the MUMmer distribution).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding a C++ program to the AMOS tree ===&lt;br /&gt;
To add a C++ program to AMOS, you must first add the name of the program to the &amp;quot;bin_PROGRAMS&amp;quot; variable in the Makefile.am file:&lt;br /&gt;
&lt;br /&gt;
 bin_PROGRAMS = \&lt;br /&gt;
        bank2contig  \&lt;br /&gt;
&lt;br /&gt;
You must then specify instructions on how this binary will be built.  These instructions include the location of the source files used in building the program:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_SOURCES = \&lt;br /&gt;
        bank2contig.cc&lt;br /&gt;
&lt;br /&gt;
instructions on additional libraries that might be needed:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_LDADD = \&lt;br /&gt;
        $(top_builddir)/src/Common/libCommon.a \&lt;br /&gt;
        $(top_builddir)/src/AMOS/libAMOS.a&lt;br /&gt;
&lt;br /&gt;
or additional flags:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_CPPFLAGS = \&lt;br /&gt;
    -I$(top_srcdir)/src/Common&lt;br /&gt;
&lt;br /&gt;
If you wish to use the global library and CFLAGS parameters you may provide just the _SOURCES variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AMOS messages and the Perl API ==&lt;br /&gt;
AMOS programs can communicate among each other using a flat file format inspired by the format used by Celera Assembler.  An overview of this file format and the way AMOS objects are stored, is provided on the [[Infrastructure]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMOS distribution provides a Perl module that can be used to parse AMOS (and Celera Assembler) message files.  For a detailed description of the various functions provided by the AMOS::AmosLib module you can use the perldoc documentation:&lt;br /&gt;
&lt;br /&gt;
 $ perldoc AMOS::AmosLib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below we will only describe the use of this module to read and parse AMOS messages.&lt;br /&gt;
&lt;br /&gt;
To include the AMOS::AmosLib module in your perl program you will need to use the command:&lt;br /&gt;
&lt;br /&gt;
 use AMOS::AmosLib;&lt;br /&gt;
&lt;br /&gt;
at the beginning of the code.   If this module is not installed in the Perl search path (which can be set in the PERLLIB environment variable), you might have to also use the Perl command &amp;quot;use lib&amp;quot; to specify the location of the AMOS library.&lt;br /&gt;
&lt;br /&gt;
Like the C++ API (described below), reading AMOS messages from a file involves first reading the message in its entirety, oblivious of the data encoded within, then parsing the message to extract the individual components.  These two steps can be executed as follows:&lt;br /&gt;
&lt;br /&gt;
 my $rec = getRecord(\*STDIN);  # read a record from the standard input&lt;br /&gt;
 my ($id, $fields, $recs) = parseRecord($rec);  # parse the information in the message&lt;br /&gt;
&lt;br /&gt;
The first command retrieves the entire message from the input, i.e. a whole block of text between curly braces.  &lt;br /&gt;
The second command retrieves the three components of the message:&lt;br /&gt;
&lt;br /&gt;
   1. $id - the three letter code of the message (see Types of messages)&lt;br /&gt;
   2. $fields - hash table of the individual fields in the message.  E.g. for a read ($id == &amp;quot;RED&amp;quot;), $$fields{&amp;quot;seq&amp;quot;} represents the sequence of the read.&lt;br /&gt;
   3. $recs - array of any possible sub-messages.  These messages will need to be parsed individually with the parseRecord command.  An example of sub-messages are the TLE (tile) message indicating the position of reads within a contig.  $#$recs - represents the index of the last sub-message (if $#$recs == -1, there are no submessages).&lt;br /&gt;
&lt;br /&gt;
== The C++ API ==&lt;br /&gt;
Below is a quick overview of the AMOS C++ API.  The quickest way to get started is to examine the file src/Bank/bank-tutorial.cc.  This file highlights the interaction with the AMOS bank through the C++ API and contains copious comments meant to guide you through your first AMOS program.&lt;br /&gt;
&lt;br /&gt;
For a detailed description of all AMOS classes refer to the automatically generated doxygen API docs.&lt;br /&gt;
&lt;br /&gt;
The main AMOS datastructure is the bank - an indexed database of assembly objects.  This central datastructure provides allows the integration of multiple software modules that communicate by modifying the objects stored in a shared bank.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Overview of include files ===&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;foundation_AMOS.hh&amp;gt;   all of the below&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;inttypes_AMOS.hh&amp;gt;     integer typedefs&lt;br /&gt;
 #include &amp;lt;exceptions_AMOS.hh&amp;gt;   exception types&lt;br /&gt;
 #include &amp;lt;datatypes_AMOS.hh&amp;gt;    structs&lt;br /&gt;
 #include &amp;lt;databanks_AMOS.hh&amp;gt;    bank types&lt;br /&gt;
 #include &amp;lt;messages_AMOS.hh&amp;gt;     message types and message NCodes&lt;br /&gt;
 #include &amp;lt;universals_AMOS.hh&amp;gt;   assembly classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Basic terminology === &lt;br /&gt;
&lt;br /&gt;
* IID             internal integer identifier and object reference&lt;br /&gt;
* EID             external string identifier&lt;br /&gt;
* BID             bank specific identifier (index of the file store, may be invalidated by bank operations)&lt;br /&gt;
* 3-Code          3-character identifier string for objects and fields&lt;br /&gt;
* N-Code          an integer representation of a 3-code (Encode/Decode functions)&lt;br /&gt;
* message         a single curly-bracketed AMOS message (see  message grammar)&lt;br /&gt;
* sub-message     a single curly-bracketed AMOS message contained by another (see message grammar)&lt;br /&gt;
&lt;br /&gt;
Relative orientation of reads/contigs (used in overlaps or scaffold links)&lt;br /&gt;
&lt;br /&gt;
 normal           ---a---&amp;gt;  ---b---&amp;gt;&lt;br /&gt;
 anti-normal     &amp;lt;---a---  &amp;lt;---b---&lt;br /&gt;
 innie            ---a---&amp;gt; &amp;lt;---b---&lt;br /&gt;
 outie           &amp;lt;---a---   ---b---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dealing with AMOS message files ===&lt;br /&gt;
Reading an AMOS message from a file is as simple as:&lt;br /&gt;
&lt;br /&gt;
 Message_t msg;&lt;br /&gt;
 msg.read (cin);&lt;br /&gt;
&lt;br /&gt;
Note, that the msg object is generic, representing a properly formatted message object (see message grammar), irrespective of the actual assembly object represented by the message.  This object can be used to read arbitrary message files, such as those generated by Celera Assembler, even though the individual objects do not map to AMOS objects.&lt;br /&gt;
&lt;br /&gt;
To assign the message contents to a specific object, e.g. a contig:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig.readMessage(msg);&lt;br /&gt;
&lt;br /&gt;
Note, that the readMessage operation will fail if the message does not properly encode an AMOS contig.&lt;br /&gt;
&lt;br /&gt;
The reverse operation, writing a new message from an internal AMOS object can be simply performed:&lt;br /&gt;
&lt;br /&gt;
 contig.writeMessage(msg);&lt;br /&gt;
 message.write(cout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Communicating with the bank ===&lt;br /&gt;
AMOS banks can be open in two modes: for random access (bank mode), and for sequential access (bank stream mode).  To open a bank you must also specify the type of the objects stored in it, by providing the N-code of the object.  Thus, to open a bank of contigs&lt;br /&gt;
&lt;br /&gt;
 Bank_t contig_bank(Contig_t::NCODE);&lt;br /&gt;
 BankStream_t contig_stream(Contig_t::NCODE);&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
 contig_stream.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The string &amp;quot;mybank.dir&amp;quot; refers to the physical location of the bank on the disk, and represents the name of a directory that contains all the relevant bank files.  In addition to the location of the bank, the open() command may specify a mode of access as B_READ, or B_WRITE, or both (B_READ|B_WRITE) (the default access is B_READ):&lt;br /&gt;
&lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;, B_READ|B_WRITE);&lt;br /&gt;
&lt;br /&gt;
Bank streams can only be used for sequential access, e.g.:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig_stream &amp;gt;&amp;gt; contig;  // read from bank&lt;br /&gt;
 contig_stream &amp;lt;&amp;lt; contig;  // write to bank&lt;br /&gt;
&lt;br /&gt;
The sequential access mode is useful for processing anonymous objects (without an assigned IID or EID), or simply for the ease of use.&lt;br /&gt;
&lt;br /&gt;
Random access banks can be used to perform more complex operations:&lt;br /&gt;
&lt;br /&gt;
 // lookup by IID&lt;br /&gt;
 if (! contig_bank.existsIID(1))&lt;br /&gt;
     cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with iid 1&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 // lookup by EID&lt;br /&gt;
 if (! contig_bank.existsEID(&amp;quot;bigcontig&amp;quot;))&lt;br /&gt;
    cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with eid bigcontig&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.fetch(1, contig);  // retrieve object by IID&lt;br /&gt;
 contig_bank.fetch(&amp;quot;bigcontig&amp;quot;, contig); // retrieve object by EID&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.append(contig); // add an object to the bank&lt;br /&gt;
 contig_bank.remove(1);   // remove an object by IID&lt;br /&gt;
 contig_bank.remove(&amp;quot;bigcontig&amp;quot;); // remove an object by EID&lt;br /&gt;
&lt;br /&gt;
Note that by default objects are not physically removed from the bank when using the remove command, rather they are marked for deletion.  To compact the bank after several remove operations you will need to run&lt;br /&gt;
&lt;br /&gt;
 contig_bank.clean();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Indices ===&lt;br /&gt;
There is often the need to cross-reference the various objects stored in a bank, e.g. to obtain the list of reads present in a contig, or, for a read, to identify the contig or scaffold it belongs to.  Some such relationships are natively represented in the AMOS objects (e.g. contig messages also list the reads belonging to them), for others it is necessary to build lookup tables.  AMOS helps you by providing a generic mechanism for specifying lookup tables linking arbitrary AMOS types.  The AMOS indices are implemented using STL hash multi-maps (allows one-to-many correspondence).  &lt;br /&gt;
&lt;br /&gt;
A simple example on the use of indices is shown below.  The code generates a map linking each read to its mate (this information is normally contained in the Fragment_t object).&lt;br /&gt;
&lt;br /&gt;
 Index_t read2mate;&lt;br /&gt;
 rd2mate.buildReadMate(&amp;quot;mybank&amp;quot;); // build index linking reads to their mates in the bank &amp;quot;mybank&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ID_t mate = rd2mate.lookup(5);   // find mate of read with IID=5&lt;br /&gt;
 if (mate == NULL_ID)                 // if no mate found, returns NULL_ID&lt;br /&gt;
    cerr &amp;lt;&amp;lt;  &amp;quot;Read 5 has no mate &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
This example relied on the pre-defined function buildReadMate that automatically builds an index of reads to mates.  Several such predefined functions are provided, see the documentation for the Index_t object.  If you need to build your own index, for which no predefined build function exists, you can use the insert command to add an identifier pair to the index:&lt;br /&gt;
&lt;br /&gt;
 Index_t obj2obj;&lt;br /&gt;
 obj2obj.insert(id1, id2);&lt;br /&gt;
&lt;br /&gt;
In case of a one-to-many mapping (e.g. all the reads in a scaffold) you can retrieve all the IDs corresponding to a query ID using:&lt;br /&gt;
&lt;br /&gt;
 pair&amp;lt;const_iterator, const_iterator&amp;gt; startend = lookupAll(myid);&lt;br /&gt;
 for (iterator i = startend.first; i != startend.second; i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Found id &amp;quot; &amp;lt;&amp;lt; *i &amp;lt;&amp;lt; endl;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide</id>
		<title>Programmer&#039;s guide</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide"/>
				<updated>2011-07-25T00:09:14Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Getting AMOS ==&lt;br /&gt;
AMOS can be downloaded from our Sourceforge download site: http://sourceforge.net/project/showfiles.php?group_id=134326 as a tar file, or directly from the AMOS git repository (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The .tar file ===&lt;br /&gt;
If you chose to download AMOS as a .tar file, getting started is as simple as untarring the file, running &amp;quot;./configure&amp;quot; from the top level directory, then &amp;quot;make all&amp;quot;.  For more details see the Getting Started document as well as the INSTALL file provided in the top level directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GIT access ===&lt;br /&gt;
To access AMOS directly,  you can clone a copy of the source code to your local machine&lt;br /&gt;
&lt;br /&gt;
  ## clone the remote master repo to a local copy&lt;br /&gt;
  git clone git://amos.git.sourceforge.net/gitroot/amos/amos &lt;br /&gt;
&lt;br /&gt;
If you are a registered AMOS developer with read/write access to repository, you can checkout the code using:&lt;br /&gt;
&lt;br /&gt;
  ## clone the remote master to a local copy (replace SFNAME with your sourceforge username)&lt;br /&gt;
  git clone ssh://&amp;lt;SFNAME&amp;gt;@amos.git.sourceforge.net/gitroot/amos/amos&lt;br /&gt;
  &lt;br /&gt;
  ## make some changes&lt;br /&gt;
  &lt;br /&gt;
  ## now commit your changes to your local repo&lt;br /&gt;
  git commit -a -m &amp;quot;brief change message&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ## once you are happy, send the changes to the master repo&lt;br /&gt;
  git push&lt;br /&gt;
  &lt;br /&gt;
  ## update local repo with remote&lt;br /&gt;
  git pull&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Here are a couples tutorials on how to use git to commit changes, make branches, etc&lt;br /&gt;
&lt;br /&gt;
  [http://git-scm.com/documentation http://git-scm.com/documentation]: Detailed documentation&lt;br /&gt;
  [http://git-scm.com/course/svn.html http://git-scm.com/course/svn.html]: Fast tutorial for svn users&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the AMOS code you will need to create the appropriate configuration files with the command &amp;quot;./bootstrap&amp;quot; run from the top level directory.  You will then be able to continue with compilation as described above under the .tar file.&lt;br /&gt;
&lt;br /&gt;
If you wish to play a more involved role in the development of AMOS, or if you wish to contribute some of your code or bug fixes, please contact us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Autoconf basics (how to add your own code to the source tree) ==&lt;br /&gt;
This section is not meant as documentation for the GNU autoconf package. Below you will learn how to add a program to the AMOS distribution, in an already existing directory.  If you want help with a more complex autoconf operation please contact us at the email listed above.&lt;br /&gt;
&lt;br /&gt;
The template for the Makefile file that will be created by the configure command (see description of compilation above) can be found in the file Makefile.am in each of the directories.  This file consists of two sections: a description of the files that are going to be installed when running &amp;quot;make install&amp;quot;, and a description of each of the files that will be compiled as part of the &amp;quot;make&amp;quot; command.  If you wish to add a program to the AMOS tree, you will thus need to add both a record indicating this program will be installed by the make process, and instructions on how to build this program.  The instructions for adding a script (either a Perl script or an AMOS configuration file), or a C++ program are described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Addding a script to the AMOS tree ===&lt;br /&gt;
To add a script you can simply list it in the &amp;quot;dist_bin_SCRIPTS&amp;quot; variable at the beginning of the Makefile.am file, e.g.:&lt;br /&gt;
&lt;br /&gt;
 dist_bin_SCRIPTS = \&lt;br /&gt;
         bank-unlock.pl&lt;br /&gt;
&lt;br /&gt;
The build process will automatically add a &amp;quot;use lib&amp;quot; line to the beginning of your Perl scripts indicating where the AMOS code is installed.  Furthermore, the #! line will be appropriately modified according to the location of the Perl binary identified by the configure process.&lt;br /&gt;
&lt;br /&gt;
When building AMOS configuration files, the build process will automatically update the BINDIR and NUCMER variable in your file to the values identified by the configure process for the location of the AMOS binary installation directory, and for the location of the nucmer binary (part of the MUMmer distribution).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding a C++ program to the AMOS tree ===&lt;br /&gt;
To add a C++ program to AMOS, you must first add the name of the program to the &amp;quot;bin_PROGRAMS&amp;quot; variable in the Makefile.am file:&lt;br /&gt;
&lt;br /&gt;
 bin_PROGRAMS = \&lt;br /&gt;
        bank2contig  \&lt;br /&gt;
&lt;br /&gt;
You must then specify instructions on how this binary will be built.  These instructions include the location of the source files used in building the program:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_SOURCES = \&lt;br /&gt;
        bank2contig.cc&lt;br /&gt;
&lt;br /&gt;
instructions on additional libraries that might be needed:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_LDADD = \&lt;br /&gt;
        $(top_builddir)/src/Common/libCommon.a \&lt;br /&gt;
        $(top_builddir)/src/AMOS/libAMOS.a&lt;br /&gt;
&lt;br /&gt;
or additional flags:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_CPPFLAGS = \&lt;br /&gt;
    -I$(top_srcdir)/src/Common&lt;br /&gt;
&lt;br /&gt;
If you wish to use the global library and CFLAGS parameters you may provide just the _SOURCES variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AMOS messages and the Perl API ==&lt;br /&gt;
AMOS programs can communicate among each other using a flat file format inspired by the format used by Celera Assembler.  An overview of this file format and the way AMOS objects are stored, is provided on the [[Infrastructure]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMOS distribution provides a Perl module that can be used to parse AMOS (and Celera Assembler) message files.  For a detailed description of the various functions provided by the AMOS::AmosLib module you can use the perldoc documentation:&lt;br /&gt;
&lt;br /&gt;
 $ perldoc AMOS::AmosLib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below we will only describe the use of this module to read and parse AMOS messages.&lt;br /&gt;
&lt;br /&gt;
To include the AMOS::AmosLib module in your perl program you will need to use the command:&lt;br /&gt;
&lt;br /&gt;
 use AMOS::AmosLib;&lt;br /&gt;
&lt;br /&gt;
at the beginning of the code.   If this module is not installed in the Perl search path (which can be set in the PERLLIB environment variable), you might have to also use the Perl command &amp;quot;use lib&amp;quot; to specify the location of the AMOS library.&lt;br /&gt;
&lt;br /&gt;
Like the C++ API (described below), reading AMOS messages from a file involves first reading the message in its entirety, oblivious of the data encoded within, then parsing the message to extract the individual components.  These two steps can be executed as follows:&lt;br /&gt;
&lt;br /&gt;
 my $rec = getRecord(\*STDIN);  # read a record from the standard input&lt;br /&gt;
 my ($id, $fields, $recs) = parseRecord($rec);  # parse the information in the message&lt;br /&gt;
&lt;br /&gt;
The first command retrieves the entire message from the input, i.e. a whole block of text between curly braces.  &lt;br /&gt;
The second command retrieves the three components of the message:&lt;br /&gt;
&lt;br /&gt;
   1. $id - the three letter code of the message (see Types of messages)&lt;br /&gt;
   2. $fields - hash table of the individual fields in the message.  E.g. for a read ($id == &amp;quot;RED&amp;quot;), $$fields{&amp;quot;seq&amp;quot;} represents the sequence of the read.&lt;br /&gt;
   3. $recs - array of any possible sub-messages.  These messages will need to be parsed individually with the parseRecord command.  An example of sub-messages are the TLE (tile) message indicating the position of reads within a contig.  $#$recs - represents the index of the last sub-message (if $#$recs == -1, there are no submessages).&lt;br /&gt;
&lt;br /&gt;
== The C++ API ==&lt;br /&gt;
Below is a quick overview of the AMOS C++ API.  The quickest way to get started is to examine the file src/Bank/bank-tutorial.cc.  This file highlights the interaction with the AMOS bank through the C++ API and contains copious comments meant to guide you through your first AMOS program.&lt;br /&gt;
&lt;br /&gt;
For a detailed description of all AMOS classes refer to the automatically generated doxygen API docs.&lt;br /&gt;
&lt;br /&gt;
The main AMOS datastructure is the bank - an indexed database of assembly objects.  This central datastructure provides allows the integration of multiple software modules that communicate by modifying the objects stored in a shared bank.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Overview of include files ===&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;foundation_AMOS.hh&amp;gt;   all of the below&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;inttypes_AMOS.hh&amp;gt;     integer typedefs&lt;br /&gt;
 #include &amp;lt;exceptions_AMOS.hh&amp;gt;   exception types&lt;br /&gt;
 #include &amp;lt;datatypes_AMOS.hh&amp;gt;    structs&lt;br /&gt;
 #include &amp;lt;databanks_AMOS.hh&amp;gt;    bank types&lt;br /&gt;
 #include &amp;lt;messages_AMOS.hh&amp;gt;     message types and message NCodes&lt;br /&gt;
 #include &amp;lt;universals_AMOS.hh&amp;gt;   assembly classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Basic terminology === &lt;br /&gt;
&lt;br /&gt;
* IID             internal integer identifier and object reference&lt;br /&gt;
* EID             external string identifier&lt;br /&gt;
* BID             bank specific identifier (index of the file store, may be invalidated by bank operations)&lt;br /&gt;
* 3-Code          3-character identifier string for objects and fields&lt;br /&gt;
* N-Code          an integer representation of a 3-code (Encode/Decode functions)&lt;br /&gt;
* message         a single curly-bracketed AMOS message (see  message grammar)&lt;br /&gt;
* sub-message     a single curly-bracketed AMOS message contained by another (see message grammar)&lt;br /&gt;
&lt;br /&gt;
Relative orientation of reads/contigs (used in overlaps or scaffold links)&lt;br /&gt;
&lt;br /&gt;
 normal           ---a---&amp;gt;  ---b---&amp;gt;&lt;br /&gt;
 anti-normal     &amp;lt;---a---  &amp;lt;---b---&lt;br /&gt;
 innie            ---a---&amp;gt; &amp;lt;---b---&lt;br /&gt;
 outie           &amp;lt;---a---   ---b---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dealing with AMOS message files ===&lt;br /&gt;
Reading an AMOS message from a file is as simple as:&lt;br /&gt;
&lt;br /&gt;
 Message_t msg;&lt;br /&gt;
 msg.read (cin);&lt;br /&gt;
&lt;br /&gt;
Note, that the msg object is generic, representing a properly formatted message object (see message grammar), irrespective of the actual assembly object represented by the message.  This object can be used to read arbitrary message files, such as those generated by Celera Assembler, even though the individual objects do not map to AMOS objects.&lt;br /&gt;
&lt;br /&gt;
To assign the message contents to a specific object, e.g. a contig:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig.readMessage(msg);&lt;br /&gt;
&lt;br /&gt;
Note, that the readMessage operation will fail if the message does not properly encode an AMOS contig.&lt;br /&gt;
&lt;br /&gt;
The reverse operation, writing a new message from an internal AMOS object can be simply performed:&lt;br /&gt;
&lt;br /&gt;
 contig.writeMessage(msg);&lt;br /&gt;
 message.write(cout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Communicating with the bank ===&lt;br /&gt;
AMOS banks can be open in two modes: for random access (bank mode), and for sequential access (bank stream mode).  To open a bank you must also specify the type of the objects stored in it, by providing the N-code of the object.  Thus, to open a bank of contigs&lt;br /&gt;
&lt;br /&gt;
 Bank_t contig_bank(Contig_t::NCODE);&lt;br /&gt;
 BankStream_t contig_stream(Contig_t::NCODE);&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
 contig_stream.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The string &amp;quot;mybank.dir&amp;quot; refers to the physical location of the bank on the disk, and represents the name of a directory that contains all the relevant bank files.  In addition to the location of the bank, the open() command may specify a mode of access as B_READ, or B_WRITE, or both (B_READ|B_WRITE) (the default access is B_READ):&lt;br /&gt;
&lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;, B_READ|B_WRITE);&lt;br /&gt;
&lt;br /&gt;
Bank streams can only be used for sequential access, e.g.:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig_stream &amp;gt;&amp;gt; contig;  // read from bank&lt;br /&gt;
 contig_stream &amp;lt;&amp;lt; contig;  // write to bank&lt;br /&gt;
&lt;br /&gt;
The sequential access mode is useful for processing anonymous objects (without an assigned IID or EID), or simply for the ease of use.&lt;br /&gt;
&lt;br /&gt;
Random access banks can be used to perform more complex operations:&lt;br /&gt;
&lt;br /&gt;
 // lookup by IID&lt;br /&gt;
 if (! contig_bank.existsIID(1))&lt;br /&gt;
     cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with iid 1&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 // lookup by EID&lt;br /&gt;
 if (! contig_bank.existsEID(&amp;quot;bigcontig&amp;quot;))&lt;br /&gt;
    cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with eid bigcontig&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.fetch(1, contig);  // retrieve object by IID&lt;br /&gt;
 contig_bank.fetch(&amp;quot;bigcontig&amp;quot;, contig); // retrieve object by EID&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.append(contig); // add an object to the bank&lt;br /&gt;
 contig_bank.remove(1);   // remove an object by IID&lt;br /&gt;
 contig_bank.remove(&amp;quot;bigcontig&amp;quot;); // remove an object by EID&lt;br /&gt;
&lt;br /&gt;
Note that by default objects are not physically removed from the bank when using the remove command, rather they are marked for deletion.  To compact the bank after several remove operations you will need to run&lt;br /&gt;
&lt;br /&gt;
 contig_bank.clean();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Indices ===&lt;br /&gt;
There is often the need to cross-reference the various objects stored in a bank, e.g. to obtain the list of reads present in a contig, or, for a read, to identify the contig or scaffold it belongs to.  Some such relationships are natively represented in the AMOS objects (e.g. contig messages also list the reads belonging to them), for others it is necessary to build lookup tables.  AMOS helps you by providing a generic mechanism for specifying lookup tables linking arbitrary AMOS types.  The AMOS indices are implemented using STL hash multi-maps (allows one-to-many correspondence).  &lt;br /&gt;
&lt;br /&gt;
A simple example on the use of indices is shown below.  The code generates a map linking each read to its mate (this information is normally contained in the Fragment_t object).&lt;br /&gt;
&lt;br /&gt;
 Index_t read2mate;&lt;br /&gt;
 rd2mate.buildReadMate(&amp;quot;mybank&amp;quot;); // build index linking reads to their mates in the bank &amp;quot;mybank&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ID_t mate = rd2mate.lookup(5);   // find mate of read with IID=5&lt;br /&gt;
 if (mate == NULL_ID)                 // if no mate found, returns NULL_ID&lt;br /&gt;
    cerr &amp;lt;&amp;lt;  &amp;quot;Read 5 has no mate &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
This example relied on the pre-defined function buildReadMate that automatically builds an index of reads to mates.  Several such predefined functions are provided, see the documentation for the Index_t object.  If you need to build your own index, for which no predefined build function exists, you can use the insert command to add an identifier pair to the index:&lt;br /&gt;
&lt;br /&gt;
 Index_t obj2obj;&lt;br /&gt;
 obj2obj.insert(id1, id2);&lt;br /&gt;
&lt;br /&gt;
In case of a one-to-many mapping (e.g. all the reads in a scaffold) you can retrieve all the IDs corresponding to a query ID using:&lt;br /&gt;
&lt;br /&gt;
 pair&amp;lt;const_iterator, const_iterator&amp;gt; startend = lookupAll(myid);&lt;br /&gt;
 for (iterator i = startend.first; i != startend.second; i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Found id &amp;quot; &amp;lt;&amp;lt; *i &amp;lt;&amp;lt; endl;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide</id>
		<title>Programmer&#039;s guide</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide"/>
				<updated>2011-07-25T00:08:50Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Getting AMOS ==&lt;br /&gt;
AMOS can be downloaded from our Sourceforge download site: http://sourceforge.net/project/showfiles.php?group_id=134326 as a tar file, or directly from the AMOS git repository (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The .tar file ===&lt;br /&gt;
If you chose to download AMOS as a .tar file, getting started is as simple as untarring the file, running &amp;quot;./configure&amp;quot; from the top level directory, then &amp;quot;make all&amp;quot;.  For more details see the Getting Started document as well as the INSTALL file provided in the top level directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GIT access ===&lt;br /&gt;
To access AMOS directly,  you can clone a copy of the source code to your local machine&lt;br /&gt;
&lt;br /&gt;
  ## clone the remote master repo to a local copy&lt;br /&gt;
  git clone git://amos.git.sourceforge.net/gitroot/amos/amos &lt;br /&gt;
&lt;br /&gt;
If you are a registered AMOS developer with read/write access to repository, you can checkout the code using:&lt;br /&gt;
&lt;br /&gt;
  ## clone the remote master to a local copy (replace SFNAME with your sourceforge username)&lt;br /&gt;
  git clone ssh://&amp;lt;SFNAME&amp;gt;@amos.git.sourceforge.net/gitroot/amos/amos&lt;br /&gt;
  &lt;br /&gt;
  ## make some changes&lt;br /&gt;
  &lt;br /&gt;
  ## now commit your changes to your local repo&lt;br /&gt;
  git commit -a -m &amp;quot;brief change message&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  ## once you are happy, send the changes to the master repo&lt;br /&gt;
  git push&lt;br /&gt;
  &lt;br /&gt;
  ## update local repo with remote&lt;br /&gt;
  git pull&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Here are a couples tutorials on how to use git to commit changes, make branches, etc&lt;br /&gt;
&lt;br /&gt;
  [http://git-scm.com/documentation http://git-scm.com/documentation]: Detailed documentation&lt;br /&gt;
  [http://git-scm.com/course/svn.html http://git-scm.com/course/svn.html]: Fast tutorial for svn users&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the AMOS code you will need to create the appropriate configuration files with the command &amp;quot;./bootstrap&amp;quot; run from the top level directory.  You will then be able to continue with compilation as described above under the .tar file.&lt;br /&gt;
&lt;br /&gt;
If you wish to play a more involved role in the development of AMOS, or if you wish to contribute some of your code or bug fixes, please contact us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Autoconf basics (how to add your own code to the CVS tree) ==&lt;br /&gt;
This section is not meant as documentation for the GNU autoconf package. Below you will learn how to add a program to the AMOS distribution, in an already existing directory.  If you want help with a more complex autoconf operation please contact us at the email listed above.&lt;br /&gt;
&lt;br /&gt;
The template for the Makefile file that will be created by the configure command (see description of compilation above) can be found in the file Makefile.am in each of the directories.  This file consists of two sections: a description of the files that are going to be installed when running &amp;quot;make install&amp;quot;, and a description of each of the files that will be compiled as part of the &amp;quot;make&amp;quot; command.  If you wish to add a program to the AMOS tree, you will thus need to add both a record indicating this program will be installed by the make process, and instructions on how to build this program.  The instructions for adding a script (either a Perl script or an AMOS configuration file), or a C++ program are described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Addding a script to the AMOS tree ===&lt;br /&gt;
To add a script you can simply list it in the &amp;quot;dist_bin_SCRIPTS&amp;quot; variable at the beginning of the Makefile.am file, e.g.:&lt;br /&gt;
&lt;br /&gt;
 dist_bin_SCRIPTS = \&lt;br /&gt;
         bank-unlock.pl&lt;br /&gt;
&lt;br /&gt;
The build process will automatically add a &amp;quot;use lib&amp;quot; line to the beginning of your Perl scripts indicating where the AMOS code is installed.  Furthermore, the #! line will be appropriately modified according to the location of the Perl binary identified by the configure process.&lt;br /&gt;
&lt;br /&gt;
When building AMOS configuration files, the build process will automatically update the BINDIR and NUCMER variable in your file to the values identified by the configure process for the location of the AMOS binary installation directory, and for the location of the nucmer binary (part of the MUMmer distribution).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding a C++ program to the AMOS tree ===&lt;br /&gt;
To add a C++ program to AMOS, you must first add the name of the program to the &amp;quot;bin_PROGRAMS&amp;quot; variable in the Makefile.am file:&lt;br /&gt;
&lt;br /&gt;
 bin_PROGRAMS = \&lt;br /&gt;
        bank2contig  \&lt;br /&gt;
&lt;br /&gt;
You must then specify instructions on how this binary will be built.  These instructions include the location of the source files used in building the program:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_SOURCES = \&lt;br /&gt;
        bank2contig.cc&lt;br /&gt;
&lt;br /&gt;
instructions on additional libraries that might be needed:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_LDADD = \&lt;br /&gt;
        $(top_builddir)/src/Common/libCommon.a \&lt;br /&gt;
        $(top_builddir)/src/AMOS/libAMOS.a&lt;br /&gt;
&lt;br /&gt;
or additional flags:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_CPPFLAGS = \&lt;br /&gt;
    -I$(top_srcdir)/src/Common&lt;br /&gt;
&lt;br /&gt;
If you wish to use the global library and CFLAGS parameters you may provide just the _SOURCES variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AMOS messages and the Perl API ==&lt;br /&gt;
AMOS programs can communicate among each other using a flat file format inspired by the format used by Celera Assembler.  An overview of this file format and the way AMOS objects are stored, is provided on the [[Infrastructure]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMOS distribution provides a Perl module that can be used to parse AMOS (and Celera Assembler) message files.  For a detailed description of the various functions provided by the AMOS::AmosLib module you can use the perldoc documentation:&lt;br /&gt;
&lt;br /&gt;
 $ perldoc AMOS::AmosLib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below we will only describe the use of this module to read and parse AMOS messages.&lt;br /&gt;
&lt;br /&gt;
To include the AMOS::AmosLib module in your perl program you will need to use the command:&lt;br /&gt;
&lt;br /&gt;
 use AMOS::AmosLib;&lt;br /&gt;
&lt;br /&gt;
at the beginning of the code.   If this module is not installed in the Perl search path (which can be set in the PERLLIB environment variable), you might have to also use the Perl command &amp;quot;use lib&amp;quot; to specify the location of the AMOS library.&lt;br /&gt;
&lt;br /&gt;
Like the C++ API (described below), reading AMOS messages from a file involves first reading the message in its entirety, oblivious of the data encoded within, then parsing the message to extract the individual components.  These two steps can be executed as follows:&lt;br /&gt;
&lt;br /&gt;
 my $rec = getRecord(\*STDIN);  # read a record from the standard input&lt;br /&gt;
 my ($id, $fields, $recs) = parseRecord($rec);  # parse the information in the message&lt;br /&gt;
&lt;br /&gt;
The first command retrieves the entire message from the input, i.e. a whole block of text between curly braces.  &lt;br /&gt;
The second command retrieves the three components of the message:&lt;br /&gt;
&lt;br /&gt;
   1. $id - the three letter code of the message (see Types of messages)&lt;br /&gt;
   2. $fields - hash table of the individual fields in the message.  E.g. for a read ($id == &amp;quot;RED&amp;quot;), $$fields{&amp;quot;seq&amp;quot;} represents the sequence of the read.&lt;br /&gt;
   3. $recs - array of any possible sub-messages.  These messages will need to be parsed individually with the parseRecord command.  An example of sub-messages are the TLE (tile) message indicating the position of reads within a contig.  $#$recs - represents the index of the last sub-message (if $#$recs == -1, there are no submessages).&lt;br /&gt;
&lt;br /&gt;
== The C++ API ==&lt;br /&gt;
Below is a quick overview of the AMOS C++ API.  The quickest way to get started is to examine the file src/Bank/bank-tutorial.cc.  This file highlights the interaction with the AMOS bank through the C++ API and contains copious comments meant to guide you through your first AMOS program.&lt;br /&gt;
&lt;br /&gt;
For a detailed description of all AMOS classes refer to the automatically generated doxygen API docs.&lt;br /&gt;
&lt;br /&gt;
The main AMOS datastructure is the bank - an indexed database of assembly objects.  This central datastructure provides allows the integration of multiple software modules that communicate by modifying the objects stored in a shared bank.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Overview of include files ===&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;foundation_AMOS.hh&amp;gt;   all of the below&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;inttypes_AMOS.hh&amp;gt;     integer typedefs&lt;br /&gt;
 #include &amp;lt;exceptions_AMOS.hh&amp;gt;   exception types&lt;br /&gt;
 #include &amp;lt;datatypes_AMOS.hh&amp;gt;    structs&lt;br /&gt;
 #include &amp;lt;databanks_AMOS.hh&amp;gt;    bank types&lt;br /&gt;
 #include &amp;lt;messages_AMOS.hh&amp;gt;     message types and message NCodes&lt;br /&gt;
 #include &amp;lt;universals_AMOS.hh&amp;gt;   assembly classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Basic terminology === &lt;br /&gt;
&lt;br /&gt;
* IID             internal integer identifier and object reference&lt;br /&gt;
* EID             external string identifier&lt;br /&gt;
* BID             bank specific identifier (index of the file store, may be invalidated by bank operations)&lt;br /&gt;
* 3-Code          3-character identifier string for objects and fields&lt;br /&gt;
* N-Code          an integer representation of a 3-code (Encode/Decode functions)&lt;br /&gt;
* message         a single curly-bracketed AMOS message (see  message grammar)&lt;br /&gt;
* sub-message     a single curly-bracketed AMOS message contained by another (see message grammar)&lt;br /&gt;
&lt;br /&gt;
Relative orientation of reads/contigs (used in overlaps or scaffold links)&lt;br /&gt;
&lt;br /&gt;
 normal           ---a---&amp;gt;  ---b---&amp;gt;&lt;br /&gt;
 anti-normal     &amp;lt;---a---  &amp;lt;---b---&lt;br /&gt;
 innie            ---a---&amp;gt; &amp;lt;---b---&lt;br /&gt;
 outie           &amp;lt;---a---   ---b---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dealing with AMOS message files ===&lt;br /&gt;
Reading an AMOS message from a file is as simple as:&lt;br /&gt;
&lt;br /&gt;
 Message_t msg;&lt;br /&gt;
 msg.read (cin);&lt;br /&gt;
&lt;br /&gt;
Note, that the msg object is generic, representing a properly formatted message object (see message grammar), irrespective of the actual assembly object represented by the message.  This object can be used to read arbitrary message files, such as those generated by Celera Assembler, even though the individual objects do not map to AMOS objects.&lt;br /&gt;
&lt;br /&gt;
To assign the message contents to a specific object, e.g. a contig:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig.readMessage(msg);&lt;br /&gt;
&lt;br /&gt;
Note, that the readMessage operation will fail if the message does not properly encode an AMOS contig.&lt;br /&gt;
&lt;br /&gt;
The reverse operation, writing a new message from an internal AMOS object can be simply performed:&lt;br /&gt;
&lt;br /&gt;
 contig.writeMessage(msg);&lt;br /&gt;
 message.write(cout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Communicating with the bank ===&lt;br /&gt;
AMOS banks can be open in two modes: for random access (bank mode), and for sequential access (bank stream mode).  To open a bank you must also specify the type of the objects stored in it, by providing the N-code of the object.  Thus, to open a bank of contigs&lt;br /&gt;
&lt;br /&gt;
 Bank_t contig_bank(Contig_t::NCODE);&lt;br /&gt;
 BankStream_t contig_stream(Contig_t::NCODE);&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
 contig_stream.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The string &amp;quot;mybank.dir&amp;quot; refers to the physical location of the bank on the disk, and represents the name of a directory that contains all the relevant bank files.  In addition to the location of the bank, the open() command may specify a mode of access as B_READ, or B_WRITE, or both (B_READ|B_WRITE) (the default access is B_READ):&lt;br /&gt;
&lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;, B_READ|B_WRITE);&lt;br /&gt;
&lt;br /&gt;
Bank streams can only be used for sequential access, e.g.:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig_stream &amp;gt;&amp;gt; contig;  // read from bank&lt;br /&gt;
 contig_stream &amp;lt;&amp;lt; contig;  // write to bank&lt;br /&gt;
&lt;br /&gt;
The sequential access mode is useful for processing anonymous objects (without an assigned IID or EID), or simply for the ease of use.&lt;br /&gt;
&lt;br /&gt;
Random access banks can be used to perform more complex operations:&lt;br /&gt;
&lt;br /&gt;
 // lookup by IID&lt;br /&gt;
 if (! contig_bank.existsIID(1))&lt;br /&gt;
     cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with iid 1&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 // lookup by EID&lt;br /&gt;
 if (! contig_bank.existsEID(&amp;quot;bigcontig&amp;quot;))&lt;br /&gt;
    cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with eid bigcontig&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.fetch(1, contig);  // retrieve object by IID&lt;br /&gt;
 contig_bank.fetch(&amp;quot;bigcontig&amp;quot;, contig); // retrieve object by EID&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.append(contig); // add an object to the bank&lt;br /&gt;
 contig_bank.remove(1);   // remove an object by IID&lt;br /&gt;
 contig_bank.remove(&amp;quot;bigcontig&amp;quot;); // remove an object by EID&lt;br /&gt;
&lt;br /&gt;
Note that by default objects are not physically removed from the bank when using the remove command, rather they are marked for deletion.  To compact the bank after several remove operations you will need to run&lt;br /&gt;
&lt;br /&gt;
 contig_bank.clean();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Indices ===&lt;br /&gt;
There is often the need to cross-reference the various objects stored in a bank, e.g. to obtain the list of reads present in a contig, or, for a read, to identify the contig or scaffold it belongs to.  Some such relationships are natively represented in the AMOS objects (e.g. contig messages also list the reads belonging to them), for others it is necessary to build lookup tables.  AMOS helps you by providing a generic mechanism for specifying lookup tables linking arbitrary AMOS types.  The AMOS indices are implemented using STL hash multi-maps (allows one-to-many correspondence).  &lt;br /&gt;
&lt;br /&gt;
A simple example on the use of indices is shown below.  The code generates a map linking each read to its mate (this information is normally contained in the Fragment_t object).&lt;br /&gt;
&lt;br /&gt;
 Index_t read2mate;&lt;br /&gt;
 rd2mate.buildReadMate(&amp;quot;mybank&amp;quot;); // build index linking reads to their mates in the bank &amp;quot;mybank&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ID_t mate = rd2mate.lookup(5);   // find mate of read with IID=5&lt;br /&gt;
 if (mate == NULL_ID)                 // if no mate found, returns NULL_ID&lt;br /&gt;
    cerr &amp;lt;&amp;lt;  &amp;quot;Read 5 has no mate &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
This example relied on the pre-defined function buildReadMate that automatically builds an index of reads to mates.  Several such predefined functions are provided, see the documentation for the Index_t object.  If you need to build your own index, for which no predefined build function exists, you can use the insert command to add an identifier pair to the index:&lt;br /&gt;
&lt;br /&gt;
 Index_t obj2obj;&lt;br /&gt;
 obj2obj.insert(id1, id2);&lt;br /&gt;
&lt;br /&gt;
In case of a one-to-many mapping (e.g. all the reads in a scaffold) you can retrieve all the IDs corresponding to a query ID using:&lt;br /&gt;
&lt;br /&gt;
 pair&amp;lt;const_iterator, const_iterator&amp;gt; startend = lookupAll(myid);&lt;br /&gt;
 for (iterator i = startend.first; i != startend.second; i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Found id &amp;quot; &amp;lt;&amp;lt; *i &amp;lt;&amp;lt; endl;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide</id>
		<title>Programmer&#039;s guide</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide"/>
				<updated>2011-07-25T00:07:53Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Getting AMOS ==&lt;br /&gt;
AMOS can be downloaded from our Sourceforge download site: http://sourceforge.net/project/showfiles.php?group_id=134326 as a tar file, or directly from the AMOS git repository (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The .tar file ===&lt;br /&gt;
If you chose to download AMOS as a .tar file, getting started is as simple as untarring the file, running &amp;quot;./configure&amp;quot; from the top level directory, then &amp;quot;make all&amp;quot;.  For more details see the Getting Started document as well as the INSTALL file provided in the top level directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GIT access ===&lt;br /&gt;
To access AMOS directly,  you can clone a copy of the source code to your local machine&lt;br /&gt;
&lt;br /&gt;
  ## clone the remote master repo to a local copy&lt;br /&gt;
  git clone git://amos.git.sourceforge.net/gitroot/amos/amos &lt;br /&gt;
&lt;br /&gt;
  ## make some changes&lt;br /&gt;
&lt;br /&gt;
  ## now commit your changes to your local repo&lt;br /&gt;
  git commit -a -m &amp;quot;brief change message&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  ## once you are happy, send the changes to the master repo&lt;br /&gt;
  git push&lt;br /&gt;
&lt;br /&gt;
  ## update local repo with remote&lt;br /&gt;
  git pull&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are a registered AMOS developer with read/write access to repository, you can checkout the code using:&lt;br /&gt;
&lt;br /&gt;
  git clone ssh://&amp;lt;SFNAME&amp;gt;@amos.git.sourceforge.net/gitroot/amos/amos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are a couples tutorials on how to use git to commit changes, make branches, etc&lt;br /&gt;
&lt;br /&gt;
  [http://git-scm.com/documentation http://git-scm.com/documentation]: Detailed documentation&lt;br /&gt;
  [http://git-scm.com/course/svn.html http://git-scm.com/course/svn.html]: Fast tutorial for svn users&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the AMOS code you will need to create the appropriate configuration files with the command &amp;quot;./bootstrap&amp;quot; run from the top level directory.  You will then be able to continue with compilation as described above under the .tar file.&lt;br /&gt;
&lt;br /&gt;
If you wish to play a more involved role in the development of AMOS, or if you wish to contribute some of your code or bug fixes, please contact us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Autoconf basics (how to add your own code to the CVS tree) ==&lt;br /&gt;
This section is not meant as documentation for the GNU autoconf package. Below you will learn how to add a program to the AMOS distribution, in an already existing directory.  If you want help with a more complex autoconf operation please contact us at the email listed above.&lt;br /&gt;
&lt;br /&gt;
The template for the Makefile file that will be created by the configure command (see description of compilation above) can be found in the file Makefile.am in each of the directories.  This file consists of two sections: a description of the files that are going to be installed when running &amp;quot;make install&amp;quot;, and a description of each of the files that will be compiled as part of the &amp;quot;make&amp;quot; command.  If you wish to add a program to the AMOS tree, you will thus need to add both a record indicating this program will be installed by the make process, and instructions on how to build this program.  The instructions for adding a script (either a Perl script or an AMOS configuration file), or a C++ program are described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Addding a script to the AMOS tree ===&lt;br /&gt;
To add a script you can simply list it in the &amp;quot;dist_bin_SCRIPTS&amp;quot; variable at the beginning of the Makefile.am file, e.g.:&lt;br /&gt;
&lt;br /&gt;
 dist_bin_SCRIPTS = \&lt;br /&gt;
         bank-unlock.pl&lt;br /&gt;
&lt;br /&gt;
The build process will automatically add a &amp;quot;use lib&amp;quot; line to the beginning of your Perl scripts indicating where the AMOS code is installed.  Furthermore, the #! line will be appropriately modified according to the location of the Perl binary identified by the configure process.&lt;br /&gt;
&lt;br /&gt;
When building AMOS configuration files, the build process will automatically update the BINDIR and NUCMER variable in your file to the values identified by the configure process for the location of the AMOS binary installation directory, and for the location of the nucmer binary (part of the MUMmer distribution).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding a C++ program to the AMOS tree ===&lt;br /&gt;
To add a C++ program to AMOS, you must first add the name of the program to the &amp;quot;bin_PROGRAMS&amp;quot; variable in the Makefile.am file:&lt;br /&gt;
&lt;br /&gt;
 bin_PROGRAMS = \&lt;br /&gt;
        bank2contig  \&lt;br /&gt;
&lt;br /&gt;
You must then specify instructions on how this binary will be built.  These instructions include the location of the source files used in building the program:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_SOURCES = \&lt;br /&gt;
        bank2contig.cc&lt;br /&gt;
&lt;br /&gt;
instructions on additional libraries that might be needed:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_LDADD = \&lt;br /&gt;
        $(top_builddir)/src/Common/libCommon.a \&lt;br /&gt;
        $(top_builddir)/src/AMOS/libAMOS.a&lt;br /&gt;
&lt;br /&gt;
or additional flags:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_CPPFLAGS = \&lt;br /&gt;
    -I$(top_srcdir)/src/Common&lt;br /&gt;
&lt;br /&gt;
If you wish to use the global library and CFLAGS parameters you may provide just the _SOURCES variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AMOS messages and the Perl API ==&lt;br /&gt;
AMOS programs can communicate among each other using a flat file format inspired by the format used by Celera Assembler.  An overview of this file format and the way AMOS objects are stored, is provided on the [[Infrastructure]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMOS distribution provides a Perl module that can be used to parse AMOS (and Celera Assembler) message files.  For a detailed description of the various functions provided by the AMOS::AmosLib module you can use the perldoc documentation:&lt;br /&gt;
&lt;br /&gt;
 $ perldoc AMOS::AmosLib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below we will only describe the use of this module to read and parse AMOS messages.&lt;br /&gt;
&lt;br /&gt;
To include the AMOS::AmosLib module in your perl program you will need to use the command:&lt;br /&gt;
&lt;br /&gt;
 use AMOS::AmosLib;&lt;br /&gt;
&lt;br /&gt;
at the beginning of the code.   If this module is not installed in the Perl search path (which can be set in the PERLLIB environment variable), you might have to also use the Perl command &amp;quot;use lib&amp;quot; to specify the location of the AMOS library.&lt;br /&gt;
&lt;br /&gt;
Like the C++ API (described below), reading AMOS messages from a file involves first reading the message in its entirety, oblivious of the data encoded within, then parsing the message to extract the individual components.  These two steps can be executed as follows:&lt;br /&gt;
&lt;br /&gt;
 my $rec = getRecord(\*STDIN);  # read a record from the standard input&lt;br /&gt;
 my ($id, $fields, $recs) = parseRecord($rec);  # parse the information in the message&lt;br /&gt;
&lt;br /&gt;
The first command retrieves the entire message from the input, i.e. a whole block of text between curly braces.  &lt;br /&gt;
The second command retrieves the three components of the message:&lt;br /&gt;
&lt;br /&gt;
   1. $id - the three letter code of the message (see Types of messages)&lt;br /&gt;
   2. $fields - hash table of the individual fields in the message.  E.g. for a read ($id == &amp;quot;RED&amp;quot;), $$fields{&amp;quot;seq&amp;quot;} represents the sequence of the read.&lt;br /&gt;
   3. $recs - array of any possible sub-messages.  These messages will need to be parsed individually with the parseRecord command.  An example of sub-messages are the TLE (tile) message indicating the position of reads within a contig.  $#$recs - represents the index of the last sub-message (if $#$recs == -1, there are no submessages).&lt;br /&gt;
&lt;br /&gt;
== The C++ API ==&lt;br /&gt;
Below is a quick overview of the AMOS C++ API.  The quickest way to get started is to examine the file src/Bank/bank-tutorial.cc.  This file highlights the interaction with the AMOS bank through the C++ API and contains copious comments meant to guide you through your first AMOS program.&lt;br /&gt;
&lt;br /&gt;
For a detailed description of all AMOS classes refer to the automatically generated doxygen API docs.&lt;br /&gt;
&lt;br /&gt;
The main AMOS datastructure is the bank - an indexed database of assembly objects.  This central datastructure provides allows the integration of multiple software modules that communicate by modifying the objects stored in a shared bank.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Overview of include files ===&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;foundation_AMOS.hh&amp;gt;   all of the below&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;inttypes_AMOS.hh&amp;gt;     integer typedefs&lt;br /&gt;
 #include &amp;lt;exceptions_AMOS.hh&amp;gt;   exception types&lt;br /&gt;
 #include &amp;lt;datatypes_AMOS.hh&amp;gt;    structs&lt;br /&gt;
 #include &amp;lt;databanks_AMOS.hh&amp;gt;    bank types&lt;br /&gt;
 #include &amp;lt;messages_AMOS.hh&amp;gt;     message types and message NCodes&lt;br /&gt;
 #include &amp;lt;universals_AMOS.hh&amp;gt;   assembly classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Basic terminology === &lt;br /&gt;
&lt;br /&gt;
* IID             internal integer identifier and object reference&lt;br /&gt;
* EID             external string identifier&lt;br /&gt;
* BID             bank specific identifier (index of the file store, may be invalidated by bank operations)&lt;br /&gt;
* 3-Code          3-character identifier string for objects and fields&lt;br /&gt;
* N-Code          an integer representation of a 3-code (Encode/Decode functions)&lt;br /&gt;
* message         a single curly-bracketed AMOS message (see  message grammar)&lt;br /&gt;
* sub-message     a single curly-bracketed AMOS message contained by another (see message grammar)&lt;br /&gt;
&lt;br /&gt;
Relative orientation of reads/contigs (used in overlaps or scaffold links)&lt;br /&gt;
&lt;br /&gt;
 normal           ---a---&amp;gt;  ---b---&amp;gt;&lt;br /&gt;
 anti-normal     &amp;lt;---a---  &amp;lt;---b---&lt;br /&gt;
 innie            ---a---&amp;gt; &amp;lt;---b---&lt;br /&gt;
 outie           &amp;lt;---a---   ---b---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dealing with AMOS message files ===&lt;br /&gt;
Reading an AMOS message from a file is as simple as:&lt;br /&gt;
&lt;br /&gt;
 Message_t msg;&lt;br /&gt;
 msg.read (cin);&lt;br /&gt;
&lt;br /&gt;
Note, that the msg object is generic, representing a properly formatted message object (see message grammar), irrespective of the actual assembly object represented by the message.  This object can be used to read arbitrary message files, such as those generated by Celera Assembler, even though the individual objects do not map to AMOS objects.&lt;br /&gt;
&lt;br /&gt;
To assign the message contents to a specific object, e.g. a contig:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig.readMessage(msg);&lt;br /&gt;
&lt;br /&gt;
Note, that the readMessage operation will fail if the message does not properly encode an AMOS contig.&lt;br /&gt;
&lt;br /&gt;
The reverse operation, writing a new message from an internal AMOS object can be simply performed:&lt;br /&gt;
&lt;br /&gt;
 contig.writeMessage(msg);&lt;br /&gt;
 message.write(cout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Communicating with the bank ===&lt;br /&gt;
AMOS banks can be open in two modes: for random access (bank mode), and for sequential access (bank stream mode).  To open a bank you must also specify the type of the objects stored in it, by providing the N-code of the object.  Thus, to open a bank of contigs&lt;br /&gt;
&lt;br /&gt;
 Bank_t contig_bank(Contig_t::NCODE);&lt;br /&gt;
 BankStream_t contig_stream(Contig_t::NCODE);&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
 contig_stream.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The string &amp;quot;mybank.dir&amp;quot; refers to the physical location of the bank on the disk, and represents the name of a directory that contains all the relevant bank files.  In addition to the location of the bank, the open() command may specify a mode of access as B_READ, or B_WRITE, or both (B_READ|B_WRITE) (the default access is B_READ):&lt;br /&gt;
&lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;, B_READ|B_WRITE);&lt;br /&gt;
&lt;br /&gt;
Bank streams can only be used for sequential access, e.g.:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig_stream &amp;gt;&amp;gt; contig;  // read from bank&lt;br /&gt;
 contig_stream &amp;lt;&amp;lt; contig;  // write to bank&lt;br /&gt;
&lt;br /&gt;
The sequential access mode is useful for processing anonymous objects (without an assigned IID or EID), or simply for the ease of use.&lt;br /&gt;
&lt;br /&gt;
Random access banks can be used to perform more complex operations:&lt;br /&gt;
&lt;br /&gt;
 // lookup by IID&lt;br /&gt;
 if (! contig_bank.existsIID(1))&lt;br /&gt;
     cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with iid 1&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 // lookup by EID&lt;br /&gt;
 if (! contig_bank.existsEID(&amp;quot;bigcontig&amp;quot;))&lt;br /&gt;
    cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with eid bigcontig&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.fetch(1, contig);  // retrieve object by IID&lt;br /&gt;
 contig_bank.fetch(&amp;quot;bigcontig&amp;quot;, contig); // retrieve object by EID&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.append(contig); // add an object to the bank&lt;br /&gt;
 contig_bank.remove(1);   // remove an object by IID&lt;br /&gt;
 contig_bank.remove(&amp;quot;bigcontig&amp;quot;); // remove an object by EID&lt;br /&gt;
&lt;br /&gt;
Note that by default objects are not physically removed from the bank when using the remove command, rather they are marked for deletion.  To compact the bank after several remove operations you will need to run&lt;br /&gt;
&lt;br /&gt;
 contig_bank.clean();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Indices ===&lt;br /&gt;
There is often the need to cross-reference the various objects stored in a bank, e.g. to obtain the list of reads present in a contig, or, for a read, to identify the contig or scaffold it belongs to.  Some such relationships are natively represented in the AMOS objects (e.g. contig messages also list the reads belonging to them), for others it is necessary to build lookup tables.  AMOS helps you by providing a generic mechanism for specifying lookup tables linking arbitrary AMOS types.  The AMOS indices are implemented using STL hash multi-maps (allows one-to-many correspondence).  &lt;br /&gt;
&lt;br /&gt;
A simple example on the use of indices is shown below.  The code generates a map linking each read to its mate (this information is normally contained in the Fragment_t object).&lt;br /&gt;
&lt;br /&gt;
 Index_t read2mate;&lt;br /&gt;
 rd2mate.buildReadMate(&amp;quot;mybank&amp;quot;); // build index linking reads to their mates in the bank &amp;quot;mybank&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ID_t mate = rd2mate.lookup(5);   // find mate of read with IID=5&lt;br /&gt;
 if (mate == NULL_ID)                 // if no mate found, returns NULL_ID&lt;br /&gt;
    cerr &amp;lt;&amp;lt;  &amp;quot;Read 5 has no mate &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
This example relied on the pre-defined function buildReadMate that automatically builds an index of reads to mates.  Several such predefined functions are provided, see the documentation for the Index_t object.  If you need to build your own index, for which no predefined build function exists, you can use the insert command to add an identifier pair to the index:&lt;br /&gt;
&lt;br /&gt;
 Index_t obj2obj;&lt;br /&gt;
 obj2obj.insert(id1, id2);&lt;br /&gt;
&lt;br /&gt;
In case of a one-to-many mapping (e.g. all the reads in a scaffold) you can retrieve all the IDs corresponding to a query ID using:&lt;br /&gt;
&lt;br /&gt;
 pair&amp;lt;const_iterator, const_iterator&amp;gt; startend = lookupAll(myid);&lt;br /&gt;
 for (iterator i = startend.first; i != startend.second; i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Found id &amp;quot; &amp;lt;&amp;lt; *i &amp;lt;&amp;lt; endl;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide</id>
		<title>Programmer&#039;s guide</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide"/>
				<updated>2011-07-24T23:32:09Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Getting AMOS ==&lt;br /&gt;
AMOS can be downloaded from our Sourceforge download site: http://sourceforge.net/project/showfiles.php?group_id=134326 as a tar file, or directly from the AMOS git repository (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The .tar file ===&lt;br /&gt;
If you chose to download AMOS as a .tar file, getting started is as simple as untarring the file, running &amp;quot;./configure&amp;quot; from the top level directory, then &amp;quot;make all&amp;quot;.  For more details see the Getting Started document as well as the INSTALL file provided in the top level directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GIT access ===&lt;br /&gt;
To access AMOS directly,  you can clone a copy of the source code to your local machine&lt;br /&gt;
&lt;br /&gt;
  git clone git://amos.git.sourceforge.net/gitroot/amos/amos &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are a registered AMOS developer with read/write access to repository, you can checkout the code using:&lt;br /&gt;
&lt;br /&gt;
  git clone ssh://&amp;lt;SFNAME&amp;gt;@amos.git.sourceforge.net/gitroot/amos/amos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are a couples tutorials on how to use git to commit changes, make branches, etc&lt;br /&gt;
&lt;br /&gt;
  [http://git-scm.com/documentation http://git-scm.com/documentation]: Detailed documentation&lt;br /&gt;
  [http://git-scm.com/course/svn.html http://git-scm.com/course/svn.html]: Fast tutorial for svn users&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the AMOS code you will need to create the appropriate configuration files with the command &amp;quot;./bootstrap&amp;quot; run from the top level directory.  You will then be able to continue with compilation as described above under the .tar file.&lt;br /&gt;
&lt;br /&gt;
If you wish to play a more involved role in the development of AMOS, or if you wish to contribute some of your code or bug fixes, please contact us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Autoconf basics (how to add your own code to the CVS tree) ==&lt;br /&gt;
This section is not meant as documentation for the GNU autoconf package. Below you will learn how to add a program to the AMOS distribution, in an already existing directory.  If you want help with a more complex autoconf operation please contact us at the email listed above.&lt;br /&gt;
&lt;br /&gt;
The template for the Makefile file that will be created by the configure command (see description of compilation above) can be found in the file Makefile.am in each of the directories.  This file consists of two sections: a description of the files that are going to be installed when running &amp;quot;make install&amp;quot;, and a description of each of the files that will be compiled as part of the &amp;quot;make&amp;quot; command.  If you wish to add a program to the AMOS tree, you will thus need to add both a record indicating this program will be installed by the make process, and instructions on how to build this program.  The instructions for adding a script (either a Perl script or an AMOS configuration file), or a C++ program are described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Addding a script to the AMOS tree ===&lt;br /&gt;
To add a script you can simply list it in the &amp;quot;dist_bin_SCRIPTS&amp;quot; variable at the beginning of the Makefile.am file, e.g.:&lt;br /&gt;
&lt;br /&gt;
 dist_bin_SCRIPTS = \&lt;br /&gt;
         bank-unlock.pl&lt;br /&gt;
&lt;br /&gt;
The build process will automatically add a &amp;quot;use lib&amp;quot; line to the beginning of your Perl scripts indicating where the AMOS code is installed.  Furthermore, the #! line will be appropriately modified according to the location of the Perl binary identified by the configure process.&lt;br /&gt;
&lt;br /&gt;
When building AMOS configuration files, the build process will automatically update the BINDIR and NUCMER variable in your file to the values identified by the configure process for the location of the AMOS binary installation directory, and for the location of the nucmer binary (part of the MUMmer distribution).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding a C++ program to the AMOS tree ===&lt;br /&gt;
To add a C++ program to AMOS, you must first add the name of the program to the &amp;quot;bin_PROGRAMS&amp;quot; variable in the Makefile.am file:&lt;br /&gt;
&lt;br /&gt;
 bin_PROGRAMS = \&lt;br /&gt;
        bank2contig  \&lt;br /&gt;
&lt;br /&gt;
You must then specify instructions on how this binary will be built.  These instructions include the location of the source files used in building the program:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_SOURCES = \&lt;br /&gt;
        bank2contig.cc&lt;br /&gt;
&lt;br /&gt;
instructions on additional libraries that might be needed:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_LDADD = \&lt;br /&gt;
        $(top_builddir)/src/Common/libCommon.a \&lt;br /&gt;
        $(top_builddir)/src/AMOS/libAMOS.a&lt;br /&gt;
&lt;br /&gt;
or additional flags:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_CPPFLAGS = \&lt;br /&gt;
    -I$(top_srcdir)/src/Common&lt;br /&gt;
&lt;br /&gt;
If you wish to use the global library and CFLAGS parameters you may provide just the _SOURCES variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AMOS messages and the Perl API ==&lt;br /&gt;
AMOS programs can communicate among each other using a flat file format inspired by the format used by Celera Assembler.  An overview of this file format and the way AMOS objects are stored, is provided on the [[Infrastructure]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMOS distribution provides a Perl module that can be used to parse AMOS (and Celera Assembler) message files.  For a detailed description of the various functions provided by the AMOS::AmosLib module you can use the perldoc documentation:&lt;br /&gt;
&lt;br /&gt;
 $ perldoc AMOS::AmosLib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below we will only describe the use of this module to read and parse AMOS messages.&lt;br /&gt;
&lt;br /&gt;
To include the AMOS::AmosLib module in your perl program you will need to use the command:&lt;br /&gt;
&lt;br /&gt;
 use AMOS::AmosLib;&lt;br /&gt;
&lt;br /&gt;
at the beginning of the code.   If this module is not installed in the Perl search path (which can be set in the PERLLIB environment variable), you might have to also use the Perl command &amp;quot;use lib&amp;quot; to specify the location of the AMOS library.&lt;br /&gt;
&lt;br /&gt;
Like the C++ API (described below), reading AMOS messages from a file involves first reading the message in its entirety, oblivious of the data encoded within, then parsing the message to extract the individual components.  These two steps can be executed as follows:&lt;br /&gt;
&lt;br /&gt;
 my $rec = getRecord(\*STDIN);  # read a record from the standard input&lt;br /&gt;
 my ($id, $fields, $recs) = parseRecord($rec);  # parse the information in the message&lt;br /&gt;
&lt;br /&gt;
The first command retrieves the entire message from the input, i.e. a whole block of text between curly braces.  &lt;br /&gt;
The second command retrieves the three components of the message:&lt;br /&gt;
&lt;br /&gt;
   1. $id - the three letter code of the message (see Types of messages)&lt;br /&gt;
   2. $fields - hash table of the individual fields in the message.  E.g. for a read ($id == &amp;quot;RED&amp;quot;), $$fields{&amp;quot;seq&amp;quot;} represents the sequence of the read.&lt;br /&gt;
   3. $recs - array of any possible sub-messages.  These messages will need to be parsed individually with the parseRecord command.  An example of sub-messages are the TLE (tile) message indicating the position of reads within a contig.  $#$recs - represents the index of the last sub-message (if $#$recs == -1, there are no submessages).&lt;br /&gt;
&lt;br /&gt;
== The C++ API ==&lt;br /&gt;
Below is a quick overview of the AMOS C++ API.  The quickest way to get started is to examine the file src/Bank/bank-tutorial.cc.  This file highlights the interaction with the AMOS bank through the C++ API and contains copious comments meant to guide you through your first AMOS program.&lt;br /&gt;
&lt;br /&gt;
For a detailed description of all AMOS classes refer to the automatically generated doxygen API docs.&lt;br /&gt;
&lt;br /&gt;
The main AMOS datastructure is the bank - an indexed database of assembly objects.  This central datastructure provides allows the integration of multiple software modules that communicate by modifying the objects stored in a shared bank.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Overview of include files ===&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;foundation_AMOS.hh&amp;gt;   all of the below&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;inttypes_AMOS.hh&amp;gt;     integer typedefs&lt;br /&gt;
 #include &amp;lt;exceptions_AMOS.hh&amp;gt;   exception types&lt;br /&gt;
 #include &amp;lt;datatypes_AMOS.hh&amp;gt;    structs&lt;br /&gt;
 #include &amp;lt;databanks_AMOS.hh&amp;gt;    bank types&lt;br /&gt;
 #include &amp;lt;messages_AMOS.hh&amp;gt;     message types and message NCodes&lt;br /&gt;
 #include &amp;lt;universals_AMOS.hh&amp;gt;   assembly classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Basic terminology === &lt;br /&gt;
&lt;br /&gt;
* IID             internal integer identifier and object reference&lt;br /&gt;
* EID             external string identifier&lt;br /&gt;
* BID             bank specific identifier (index of the file store, may be invalidated by bank operations)&lt;br /&gt;
* 3-Code          3-character identifier string for objects and fields&lt;br /&gt;
* N-Code          an integer representation of a 3-code (Encode/Decode functions)&lt;br /&gt;
* message         a single curly-bracketed AMOS message (see  message grammar)&lt;br /&gt;
* sub-message     a single curly-bracketed AMOS message contained by another (see message grammar)&lt;br /&gt;
&lt;br /&gt;
Relative orientation of reads/contigs (used in overlaps or scaffold links)&lt;br /&gt;
&lt;br /&gt;
 normal           ---a---&amp;gt;  ---b---&amp;gt;&lt;br /&gt;
 anti-normal     &amp;lt;---a---  &amp;lt;---b---&lt;br /&gt;
 innie            ---a---&amp;gt; &amp;lt;---b---&lt;br /&gt;
 outie           &amp;lt;---a---   ---b---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dealing with AMOS message files ===&lt;br /&gt;
Reading an AMOS message from a file is as simple as:&lt;br /&gt;
&lt;br /&gt;
 Message_t msg;&lt;br /&gt;
 msg.read (cin);&lt;br /&gt;
&lt;br /&gt;
Note, that the msg object is generic, representing a properly formatted message object (see message grammar), irrespective of the actual assembly object represented by the message.  This object can be used to read arbitrary message files, such as those generated by Celera Assembler, even though the individual objects do not map to AMOS objects.&lt;br /&gt;
&lt;br /&gt;
To assign the message contents to a specific object, e.g. a contig:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig.readMessage(msg);&lt;br /&gt;
&lt;br /&gt;
Note, that the readMessage operation will fail if the message does not properly encode an AMOS contig.&lt;br /&gt;
&lt;br /&gt;
The reverse operation, writing a new message from an internal AMOS object can be simply performed:&lt;br /&gt;
&lt;br /&gt;
 contig.writeMessage(msg);&lt;br /&gt;
 message.write(cout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Communicating with the bank ===&lt;br /&gt;
AMOS banks can be open in two modes: for random access (bank mode), and for sequential access (bank stream mode).  To open a bank you must also specify the type of the objects stored in it, by providing the N-code of the object.  Thus, to open a bank of contigs&lt;br /&gt;
&lt;br /&gt;
 Bank_t contig_bank(Contig_t::NCODE);&lt;br /&gt;
 BankStream_t contig_stream(Contig_t::NCODE);&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
 contig_stream.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The string &amp;quot;mybank.dir&amp;quot; refers to the physical location of the bank on the disk, and represents the name of a directory that contains all the relevant bank files.  In addition to the location of the bank, the open() command may specify a mode of access as B_READ, or B_WRITE, or both (B_READ|B_WRITE) (the default access is B_READ):&lt;br /&gt;
&lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;, B_READ|B_WRITE);&lt;br /&gt;
&lt;br /&gt;
Bank streams can only be used for sequential access, e.g.:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig_stream &amp;gt;&amp;gt; contig;  // read from bank&lt;br /&gt;
 contig_stream &amp;lt;&amp;lt; contig;  // write to bank&lt;br /&gt;
&lt;br /&gt;
The sequential access mode is useful for processing anonymous objects (without an assigned IID or EID), or simply for the ease of use.&lt;br /&gt;
&lt;br /&gt;
Random access banks can be used to perform more complex operations:&lt;br /&gt;
&lt;br /&gt;
 // lookup by IID&lt;br /&gt;
 if (! contig_bank.existsIID(1))&lt;br /&gt;
     cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with iid 1&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 // lookup by EID&lt;br /&gt;
 if (! contig_bank.existsEID(&amp;quot;bigcontig&amp;quot;))&lt;br /&gt;
    cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with eid bigcontig&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.fetch(1, contig);  // retrieve object by IID&lt;br /&gt;
 contig_bank.fetch(&amp;quot;bigcontig&amp;quot;, contig); // retrieve object by EID&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.append(contig); // add an object to the bank&lt;br /&gt;
 contig_bank.remove(1);   // remove an object by IID&lt;br /&gt;
 contig_bank.remove(&amp;quot;bigcontig&amp;quot;); // remove an object by EID&lt;br /&gt;
&lt;br /&gt;
Note that by default objects are not physically removed from the bank when using the remove command, rather they are marked for deletion.  To compact the bank after several remove operations you will need to run&lt;br /&gt;
&lt;br /&gt;
 contig_bank.clean();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Indices ===&lt;br /&gt;
There is often the need to cross-reference the various objects stored in a bank, e.g. to obtain the list of reads present in a contig, or, for a read, to identify the contig or scaffold it belongs to.  Some such relationships are natively represented in the AMOS objects (e.g. contig messages also list the reads belonging to them), for others it is necessary to build lookup tables.  AMOS helps you by providing a generic mechanism for specifying lookup tables linking arbitrary AMOS types.  The AMOS indices are implemented using STL hash multi-maps (allows one-to-many correspondence).  &lt;br /&gt;
&lt;br /&gt;
A simple example on the use of indices is shown below.  The code generates a map linking each read to its mate (this information is normally contained in the Fragment_t object).&lt;br /&gt;
&lt;br /&gt;
 Index_t read2mate;&lt;br /&gt;
 rd2mate.buildReadMate(&amp;quot;mybank&amp;quot;); // build index linking reads to their mates in the bank &amp;quot;mybank&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ID_t mate = rd2mate.lookup(5);   // find mate of read with IID=5&lt;br /&gt;
 if (mate == NULL_ID)                 // if no mate found, returns NULL_ID&lt;br /&gt;
    cerr &amp;lt;&amp;lt;  &amp;quot;Read 5 has no mate &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
This example relied on the pre-defined function buildReadMate that automatically builds an index of reads to mates.  Several such predefined functions are provided, see the documentation for the Index_t object.  If you need to build your own index, for which no predefined build function exists, you can use the insert command to add an identifier pair to the index:&lt;br /&gt;
&lt;br /&gt;
 Index_t obj2obj;&lt;br /&gt;
 obj2obj.insert(id1, id2);&lt;br /&gt;
&lt;br /&gt;
In case of a one-to-many mapping (e.g. all the reads in a scaffold) you can retrieve all the IDs corresponding to a query ID using:&lt;br /&gt;
&lt;br /&gt;
 pair&amp;lt;const_iterator, const_iterator&amp;gt; startend = lookupAll(myid);&lt;br /&gt;
 for (iterator i = startend.first; i != startend.second; i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Found id &amp;quot; &amp;lt;&amp;lt; *i &amp;lt;&amp;lt; endl;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide</id>
		<title>Programmer&#039;s guide</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide"/>
				<updated>2011-07-24T23:30:51Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Getting AMOS ==&lt;br /&gt;
AMOS can be downloaded from our Sourceforge download site: http://sourceforge.net/project/showfiles.php?group_id=134326 as a tar file, or directly from the AMOS git repository (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The .tar file ===&lt;br /&gt;
If you chose to download AMOS as a .tar file, getting started is as simple as untarring the file, running &amp;quot;./configure&amp;quot; from the top level directory, then &amp;quot;make all&amp;quot;.  For more details see the Getting Started document as well as the INSTALL file provided in the top level directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GIT access ===&lt;br /&gt;
To access AMOS directly,  you can clone a copy of the source code to your local machine&lt;br /&gt;
&lt;br /&gt;
  git clone git://amos.git.sourceforge.net/gitroot/amos/amos &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are a registered AMOS developer with read/write access to repository, you can checkout the code using:&lt;br /&gt;
&lt;br /&gt;
  git clone ssh://&amp;lt;SFNAME&amp;gt;@amos.git.sourceforge.net/gitroot/amos/amos&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a tutorial on how to use git to commit changes, make branches, etc&lt;br /&gt;
&lt;br /&gt;
  [http://git-scm.com/documentation http://git-scm.com/documentation]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the AMOS code you will need to create the appropriate configuration files with the command &amp;quot;./bootstrap&amp;quot; run from the top level directory.  You will then be able to continue with compilation as described above under the .tar file.&lt;br /&gt;
&lt;br /&gt;
If you wish to play a more involved role in the development of AMOS, or if you wish to contribute some of your code or bug fixes, please contact us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Autoconf basics (how to add your own code to the CVS tree) ==&lt;br /&gt;
This section is not meant as documentation for the GNU autoconf package. Below you will learn how to add a program to the AMOS distribution, in an already existing directory.  If you want help with a more complex autoconf operation please contact us at the email listed above.&lt;br /&gt;
&lt;br /&gt;
The template for the Makefile file that will be created by the configure command (see description of compilation above) can be found in the file Makefile.am in each of the directories.  This file consists of two sections: a description of the files that are going to be installed when running &amp;quot;make install&amp;quot;, and a description of each of the files that will be compiled as part of the &amp;quot;make&amp;quot; command.  If you wish to add a program to the AMOS tree, you will thus need to add both a record indicating this program will be installed by the make process, and instructions on how to build this program.  The instructions for adding a script (either a Perl script or an AMOS configuration file), or a C++ program are described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Addding a script to the AMOS tree ===&lt;br /&gt;
To add a script you can simply list it in the &amp;quot;dist_bin_SCRIPTS&amp;quot; variable at the beginning of the Makefile.am file, e.g.:&lt;br /&gt;
&lt;br /&gt;
 dist_bin_SCRIPTS = \&lt;br /&gt;
         bank-unlock.pl&lt;br /&gt;
&lt;br /&gt;
The build process will automatically add a &amp;quot;use lib&amp;quot; line to the beginning of your Perl scripts indicating where the AMOS code is installed.  Furthermore, the #! line will be appropriately modified according to the location of the Perl binary identified by the configure process.&lt;br /&gt;
&lt;br /&gt;
When building AMOS configuration files, the build process will automatically update the BINDIR and NUCMER variable in your file to the values identified by the configure process for the location of the AMOS binary installation directory, and for the location of the nucmer binary (part of the MUMmer distribution).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding a C++ program to the AMOS tree ===&lt;br /&gt;
To add a C++ program to AMOS, you must first add the name of the program to the &amp;quot;bin_PROGRAMS&amp;quot; variable in the Makefile.am file:&lt;br /&gt;
&lt;br /&gt;
 bin_PROGRAMS = \&lt;br /&gt;
        bank2contig  \&lt;br /&gt;
&lt;br /&gt;
You must then specify instructions on how this binary will be built.  These instructions include the location of the source files used in building the program:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_SOURCES = \&lt;br /&gt;
        bank2contig.cc&lt;br /&gt;
&lt;br /&gt;
instructions on additional libraries that might be needed:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_LDADD = \&lt;br /&gt;
        $(top_builddir)/src/Common/libCommon.a \&lt;br /&gt;
        $(top_builddir)/src/AMOS/libAMOS.a&lt;br /&gt;
&lt;br /&gt;
or additional flags:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_CPPFLAGS = \&lt;br /&gt;
    -I$(top_srcdir)/src/Common&lt;br /&gt;
&lt;br /&gt;
If you wish to use the global library and CFLAGS parameters you may provide just the _SOURCES variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AMOS messages and the Perl API ==&lt;br /&gt;
AMOS programs can communicate among each other using a flat file format inspired by the format used by Celera Assembler.  An overview of this file format and the way AMOS objects are stored, is provided on the [[Infrastructure]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMOS distribution provides a Perl module that can be used to parse AMOS (and Celera Assembler) message files.  For a detailed description of the various functions provided by the AMOS::AmosLib module you can use the perldoc documentation:&lt;br /&gt;
&lt;br /&gt;
 $ perldoc AMOS::AmosLib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below we will only describe the use of this module to read and parse AMOS messages.&lt;br /&gt;
&lt;br /&gt;
To include the AMOS::AmosLib module in your perl program you will need to use the command:&lt;br /&gt;
&lt;br /&gt;
 use AMOS::AmosLib;&lt;br /&gt;
&lt;br /&gt;
at the beginning of the code.   If this module is not installed in the Perl search path (which can be set in the PERLLIB environment variable), you might have to also use the Perl command &amp;quot;use lib&amp;quot; to specify the location of the AMOS library.&lt;br /&gt;
&lt;br /&gt;
Like the C++ API (described below), reading AMOS messages from a file involves first reading the message in its entirety, oblivious of the data encoded within, then parsing the message to extract the individual components.  These two steps can be executed as follows:&lt;br /&gt;
&lt;br /&gt;
 my $rec = getRecord(\*STDIN);  # read a record from the standard input&lt;br /&gt;
 my ($id, $fields, $recs) = parseRecord($rec);  # parse the information in the message&lt;br /&gt;
&lt;br /&gt;
The first command retrieves the entire message from the input, i.e. a whole block of text between curly braces.  &lt;br /&gt;
The second command retrieves the three components of the message:&lt;br /&gt;
&lt;br /&gt;
   1. $id - the three letter code of the message (see Types of messages)&lt;br /&gt;
   2. $fields - hash table of the individual fields in the message.  E.g. for a read ($id == &amp;quot;RED&amp;quot;), $$fields{&amp;quot;seq&amp;quot;} represents the sequence of the read.&lt;br /&gt;
   3. $recs - array of any possible sub-messages.  These messages will need to be parsed individually with the parseRecord command.  An example of sub-messages are the TLE (tile) message indicating the position of reads within a contig.  $#$recs - represents the index of the last sub-message (if $#$recs == -1, there are no submessages).&lt;br /&gt;
&lt;br /&gt;
== The C++ API ==&lt;br /&gt;
Below is a quick overview of the AMOS C++ API.  The quickest way to get started is to examine the file src/Bank/bank-tutorial.cc.  This file highlights the interaction with the AMOS bank through the C++ API and contains copious comments meant to guide you through your first AMOS program.&lt;br /&gt;
&lt;br /&gt;
For a detailed description of all AMOS classes refer to the automatically generated doxygen API docs.&lt;br /&gt;
&lt;br /&gt;
The main AMOS datastructure is the bank - an indexed database of assembly objects.  This central datastructure provides allows the integration of multiple software modules that communicate by modifying the objects stored in a shared bank.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Overview of include files ===&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;foundation_AMOS.hh&amp;gt;   all of the below&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;inttypes_AMOS.hh&amp;gt;     integer typedefs&lt;br /&gt;
 #include &amp;lt;exceptions_AMOS.hh&amp;gt;   exception types&lt;br /&gt;
 #include &amp;lt;datatypes_AMOS.hh&amp;gt;    structs&lt;br /&gt;
 #include &amp;lt;databanks_AMOS.hh&amp;gt;    bank types&lt;br /&gt;
 #include &amp;lt;messages_AMOS.hh&amp;gt;     message types and message NCodes&lt;br /&gt;
 #include &amp;lt;universals_AMOS.hh&amp;gt;   assembly classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Basic terminology === &lt;br /&gt;
&lt;br /&gt;
* IID             internal integer identifier and object reference&lt;br /&gt;
* EID             external string identifier&lt;br /&gt;
* BID             bank specific identifier (index of the file store, may be invalidated by bank operations)&lt;br /&gt;
* 3-Code          3-character identifier string for objects and fields&lt;br /&gt;
* N-Code          an integer representation of a 3-code (Encode/Decode functions)&lt;br /&gt;
* message         a single curly-bracketed AMOS message (see  message grammar)&lt;br /&gt;
* sub-message     a single curly-bracketed AMOS message contained by another (see message grammar)&lt;br /&gt;
&lt;br /&gt;
Relative orientation of reads/contigs (used in overlaps or scaffold links)&lt;br /&gt;
&lt;br /&gt;
 normal           ---a---&amp;gt;  ---b---&amp;gt;&lt;br /&gt;
 anti-normal     &amp;lt;---a---  &amp;lt;---b---&lt;br /&gt;
 innie            ---a---&amp;gt; &amp;lt;---b---&lt;br /&gt;
 outie           &amp;lt;---a---   ---b---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dealing with AMOS message files ===&lt;br /&gt;
Reading an AMOS message from a file is as simple as:&lt;br /&gt;
&lt;br /&gt;
 Message_t msg;&lt;br /&gt;
 msg.read (cin);&lt;br /&gt;
&lt;br /&gt;
Note, that the msg object is generic, representing a properly formatted message object (see message grammar), irrespective of the actual assembly object represented by the message.  This object can be used to read arbitrary message files, such as those generated by Celera Assembler, even though the individual objects do not map to AMOS objects.&lt;br /&gt;
&lt;br /&gt;
To assign the message contents to a specific object, e.g. a contig:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig.readMessage(msg);&lt;br /&gt;
&lt;br /&gt;
Note, that the readMessage operation will fail if the message does not properly encode an AMOS contig.&lt;br /&gt;
&lt;br /&gt;
The reverse operation, writing a new message from an internal AMOS object can be simply performed:&lt;br /&gt;
&lt;br /&gt;
 contig.writeMessage(msg);&lt;br /&gt;
 message.write(cout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Communicating with the bank ===&lt;br /&gt;
AMOS banks can be open in two modes: for random access (bank mode), and for sequential access (bank stream mode).  To open a bank you must also specify the type of the objects stored in it, by providing the N-code of the object.  Thus, to open a bank of contigs&lt;br /&gt;
&lt;br /&gt;
 Bank_t contig_bank(Contig_t::NCODE);&lt;br /&gt;
 BankStream_t contig_stream(Contig_t::NCODE);&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
 contig_stream.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The string &amp;quot;mybank.dir&amp;quot; refers to the physical location of the bank on the disk, and represents the name of a directory that contains all the relevant bank files.  In addition to the location of the bank, the open() command may specify a mode of access as B_READ, or B_WRITE, or both (B_READ|B_WRITE) (the default access is B_READ):&lt;br /&gt;
&lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;, B_READ|B_WRITE);&lt;br /&gt;
&lt;br /&gt;
Bank streams can only be used for sequential access, e.g.:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig_stream &amp;gt;&amp;gt; contig;  // read from bank&lt;br /&gt;
 contig_stream &amp;lt;&amp;lt; contig;  // write to bank&lt;br /&gt;
&lt;br /&gt;
The sequential access mode is useful for processing anonymous objects (without an assigned IID or EID), or simply for the ease of use.&lt;br /&gt;
&lt;br /&gt;
Random access banks can be used to perform more complex operations:&lt;br /&gt;
&lt;br /&gt;
 // lookup by IID&lt;br /&gt;
 if (! contig_bank.existsIID(1))&lt;br /&gt;
     cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with iid 1&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 // lookup by EID&lt;br /&gt;
 if (! contig_bank.existsEID(&amp;quot;bigcontig&amp;quot;))&lt;br /&gt;
    cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with eid bigcontig&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.fetch(1, contig);  // retrieve object by IID&lt;br /&gt;
 contig_bank.fetch(&amp;quot;bigcontig&amp;quot;, contig); // retrieve object by EID&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.append(contig); // add an object to the bank&lt;br /&gt;
 contig_bank.remove(1);   // remove an object by IID&lt;br /&gt;
 contig_bank.remove(&amp;quot;bigcontig&amp;quot;); // remove an object by EID&lt;br /&gt;
&lt;br /&gt;
Note that by default objects are not physically removed from the bank when using the remove command, rather they are marked for deletion.  To compact the bank after several remove operations you will need to run&lt;br /&gt;
&lt;br /&gt;
 contig_bank.clean();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Indices ===&lt;br /&gt;
There is often the need to cross-reference the various objects stored in a bank, e.g. to obtain the list of reads present in a contig, or, for a read, to identify the contig or scaffold it belongs to.  Some such relationships are natively represented in the AMOS objects (e.g. contig messages also list the reads belonging to them), for others it is necessary to build lookup tables.  AMOS helps you by providing a generic mechanism for specifying lookup tables linking arbitrary AMOS types.  The AMOS indices are implemented using STL hash multi-maps (allows one-to-many correspondence).  &lt;br /&gt;
&lt;br /&gt;
A simple example on the use of indices is shown below.  The code generates a map linking each read to its mate (this information is normally contained in the Fragment_t object).&lt;br /&gt;
&lt;br /&gt;
 Index_t read2mate;&lt;br /&gt;
 rd2mate.buildReadMate(&amp;quot;mybank&amp;quot;); // build index linking reads to their mates in the bank &amp;quot;mybank&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ID_t mate = rd2mate.lookup(5);   // find mate of read with IID=5&lt;br /&gt;
 if (mate == NULL_ID)                 // if no mate found, returns NULL_ID&lt;br /&gt;
    cerr &amp;lt;&amp;lt;  &amp;quot;Read 5 has no mate &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
This example relied on the pre-defined function buildReadMate that automatically builds an index of reads to mates.  Several such predefined functions are provided, see the documentation for the Index_t object.  If you need to build your own index, for which no predefined build function exists, you can use the insert command to add an identifier pair to the index:&lt;br /&gt;
&lt;br /&gt;
 Index_t obj2obj;&lt;br /&gt;
 obj2obj.insert(id1, id2);&lt;br /&gt;
&lt;br /&gt;
In case of a one-to-many mapping (e.g. all the reads in a scaffold) you can retrieve all the IDs corresponding to a query ID using:&lt;br /&gt;
&lt;br /&gt;
 pair&amp;lt;const_iterator, const_iterator&amp;gt; startend = lookupAll(myid);&lt;br /&gt;
 for (iterator i = startend.first; i != startend.second; i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Found id &amp;quot; &amp;lt;&amp;lt; *i &amp;lt;&amp;lt; endl;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Dumpreads</id>
		<title>Dumpreads</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Dumpreads"/>
				<updated>2011-04-14T22:41:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: Created page with &amp;#039;dumpreads extracts reads from a bank and reports them in fasta or fastq format     .USAGE.     dumpreads  [options] &amp;lt;bank path&amp;gt;    .DESCRIPTION.     Takes an AMOS bank directory …&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;dumpreads extracts reads from a bank and reports them in fasta or fastq format&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  .USAGE.&lt;br /&gt;
    dumpreads  [options] &amp;lt;bank path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  .DESCRIPTION.&lt;br /&gt;
    Takes an AMOS bank directory and dumps selected reads to&lt;br /&gt;
    stdout in FASTA or FASTQ format.&lt;br /&gt;
&lt;br /&gt;
  .OPTIONS.&lt;br /&gt;
    -f            Dump reads in fastq format&lt;br /&gt;
    -Q int        Use this as the min base quality (default: 33 / Sanger FASTQ)&lt;br /&gt;
    -q            Dump qualities in fasta format instead of sequence&lt;br /&gt;
    -e            Use EIDs for FastA header instead of IIDs&lt;br /&gt;
    -r            Ignore clear range and dump entire sequence&lt;br /&gt;
    -c            Display clear range information on FASTA header for TIGR Assembler&lt;br /&gt;
    -E file       Dump just the eids listed in file&lt;br /&gt;
    -I file       Dump just the iids listed in file&lt;br /&gt;
    -L num        Set the maximum number of bases per line (Default: 70)&lt;br /&gt;
    -m num        Minimum IID to display (not included) (Default all; not compatible with -e,-E,-I options)&lt;br /&gt;
    -M num        Maximum IID to display (included) (Default all; not compatible with -e,-E,-I options)&lt;br /&gt;
    -h            Display help information&lt;br /&gt;
    -s            Disregard bank locks and write permissions (spy mode)&lt;br /&gt;
    -v            Display the compatible bank version&lt;br /&gt;
  &lt;br /&gt;
  .KEYWORDS.&lt;br /&gt;
    amos bank, reads, converters&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/File_conversion_utilities</id>
		<title>File conversion utilities</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/File_conversion_utilities"/>
				<updated>2011-04-14T22:39:12Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The ASM File converters are a collection of utilities for converting sequence and assembly data between the most widely used data formats as well as to and from the AMOS message format. Examples of the data handled by these utilities are: Trace Archive data and ancillary information, .ACE assembly format, TIGR Assembler input and output formats, Celera Assembler message format, and Arachne input and output formats.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== To AMOS formats ==&lt;br /&gt;
&lt;br /&gt;
=== Reads, Libraries, etc. ===&lt;br /&gt;
==== From Trace Archive ====&lt;br /&gt;
&lt;br /&gt;
* [[tarchive2amos]] - from NCBI Trace Archive and/or Assembly archive to AMOS. Also simple .seq/.qual to amos converter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== From sequence/quality files ====&lt;br /&gt;
&lt;br /&gt;
* [[tarchive2amos]] - from NCBI Trace Archive and/or Assembly archive to AMOS. Also simple .seq/.qual to amos converter&lt;br /&gt;
* [[toAmos]] - universal converter from many sequence/assembly formats to AMOS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== From Celera Assembler ====&lt;br /&gt;
&lt;br /&gt;
* [[toAmos]] - universal converter from many sequence/assembly formats to AMOS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== From .phd files ====&lt;br /&gt;
&lt;br /&gt;
* [[phd2afg]] - from .PHD files to AMOS message file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Contigs, Scaffolds, etc. ===&lt;br /&gt;
==== From Assembly Archive ====&lt;br /&gt;
&lt;br /&gt;
* [[tarchive2amos]] - from NCBI Trace Archive and/or Assembly archive to AMOS. Also simple .seq/.qual to amos converter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== From .ACE files (phrap, arachne) ====&lt;br /&gt;
&lt;br /&gt;
* [[toAmos]] - universal converter from many sequence/assembly formats to AMOS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== From Celera Assembler ====&lt;br /&gt;
&lt;br /&gt;
* [[toAmos]] - universal converter from many sequence/assembly formats to AMOS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== From TIGR assembler ====&lt;br /&gt;
&lt;br /&gt;
* [[toAmos]] - universal converter from many sequence/assembly formats to AMOS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From AMOS formats ==&lt;br /&gt;
=== Reads, Libraries, etc. ===&lt;br /&gt;
==== To Celera Assembler ====&lt;br /&gt;
&lt;br /&gt;
* [[amos2frg]] - from AMOS message file to Celera Assembler message file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== To sequence/quality files, etc. ====&lt;br /&gt;
&lt;br /&gt;
* [[amos2sq]] - from AMOS message file to .seq/.qual files&lt;br /&gt;
* [[amos2mates]] - from AMOS message file to Bambus .mates file&lt;br /&gt;
* [[dumpreads]] - report reads from bank in fasta or fastq format&lt;br /&gt;
* [[select-reads]] - utility to select reads by iid/eid from a bank. Allows both inclusive and exclusive queries.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Contigs, Scaffolds, etc. ===&lt;br /&gt;
==== To Assembly Archive ====&lt;br /&gt;
&lt;br /&gt;
====To .ACE files====&lt;br /&gt;
&lt;br /&gt;
* [[amos2ace]] - the name says it all - from AMOS to .ACE format&lt;br /&gt;
&lt;br /&gt;
==== To TIGR Assembler ====&lt;br /&gt;
&lt;br /&gt;
* [[bank2contig]] - from AMOS bank to TIGR Assembler .contig files (similar to GDE .align files).&lt;br /&gt;
&lt;br /&gt;
==== To FASTA ====&lt;br /&gt;
&lt;br /&gt;
* [[bank2fasta]] - from contigs stored in a bank to multi-fasta file of their consensus.&lt;br /&gt;
* [[bank2scaff]] - from scaffolds stored in a bank to a variety of formats, including multi-fasta file&lt;br /&gt;
&lt;br /&gt;
==== To SAM ====&lt;br /&gt;
&lt;br /&gt;
* [[bank2contig]] - from contigs stored in a bank to the [http://samtools.sf.net SAM] format&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Celera Assembler Converters ==&lt;br /&gt;
=== To Celera Assembler ===&lt;br /&gt;
&lt;br /&gt;
* [[tarchive2ca]] - from NCBI Trace Archive to Celera Assembler input&lt;br /&gt;
&lt;br /&gt;
=== From Celera Assembler ===&lt;br /&gt;
&lt;br /&gt;
* [[toAmos]] - universal converter from many sequence/assembly formats to AMOS&lt;br /&gt;
* [[ca2ace]] - from the output of Celera Assembler to .ACE files&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Bambus2</id>
		<title>Bambus2</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Bambus2"/>
				<updated>2011-01-14T04:06:05Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.cs.umd.edu/~sergek/ Sergey Koren] and &lt;br /&gt;
[http://www.cbcb.umd.edu/~mpop/ Mihai Pop]&lt;br /&gt;
&lt;br /&gt;
Scaffolding represents the task of ordering and orienting contigs by incorporating additional information about their relative placement along the genome. The original Bambus package was the first general purpose scaffolders made available as an open source package. We are happy to announce the arrival of Bambus 2.0, the second generation Bambus scaffolder available as an open source package. While most other scaffolders are closely tied to a specific assembly program, Bambus accepts the output from most current assemblers and provides the user with great flexibility in choosing the scaffolding parameters. In particular, Bambus is able to accept contig linking data other than specified by mate-pairs. Such sources of information include alignment to a reference genome (Bambus can directly use the output of MUMmer), physical mapping data, or information about gene synteny. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Getting data into Bambus 2 requires you convert your assembly to AMOS format. Here is my recipe:&lt;br /&gt;
&lt;br /&gt;
 [[toAmos]] \&lt;br /&gt;
  -s my.fa \&lt;br /&gt;
  -c my.contig \&lt;br /&gt;
  -m my.mates \&lt;br /&gt;
  -o my.afg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need the .fa to list the contigs within the GFD-like contig file (annoying but true). You don&amp;#039;t need accurate sequences in the .fa, you just need something to make the format valid. The .contig and .mates are as expected for [[Bambus]].&lt;br /&gt;
&lt;br /&gt;
The resulting .afg is then &amp;#039;banked&amp;#039; with:&lt;br /&gt;
&lt;br /&gt;
 [[bank-transact]] -c \&lt;br /&gt;
  -b my.bnk \&lt;br /&gt;
  -m my.afg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more details, see the info here: http://www.cbcb.umd.edu/software/bambus/, which I have reproduced here [[Bambus 2.0/quick start guide]].&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Bambus2</id>
		<title>Bambus2</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Bambus2"/>
				<updated>2011-01-14T04:05:19Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.cs.umd.edu/~sergek/ Sergey Koren] and &lt;br /&gt;
[http://www.cbcb.umd.edu/~mpop/ Mihai Pop]&lt;br /&gt;
&lt;br /&gt;
Scaffolding represents the task of ordering and orienting contigs by incorporating additional information about their relative placement along the genome. The original Bambus package was the first general purpose scaffolders made available as an open source package. We are happy to announce the arrival of Bambus 2.0, the second generation Bambus scaffolder available as an open source package. While most other scaffolders are closely tied to a specific assembly program, Bambus accepts the output from most current assemblers and provides the user with great flexibility in choosing the scaffolding parameters. In particular, Bambus is able to accept contig linking data other than specified by mate-pairs. Such sources of information include alignment to a reference genome (Bambus can directly use the output of MUMmer), physical mapping data, or information about gene synteny. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Getting data into Bambus 2 can be a pain. Here is my recipe:&lt;br /&gt;
&lt;br /&gt;
 [[toAmos]] \&lt;br /&gt;
  -s my.fa \&lt;br /&gt;
  -c my.contig \&lt;br /&gt;
  -m my.mates \&lt;br /&gt;
  -o my.afg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need the .fa to list the contigs within the GFD-like contig file (annoying but true). You don&amp;#039;t need accurate sequences in the .fa, you just need something to make the format valid. The .contig and .mates are as expected for [[Bambus]].&lt;br /&gt;
&lt;br /&gt;
The resulting .afg is then &amp;#039;banked&amp;#039; with:&lt;br /&gt;
&lt;br /&gt;
 [[bank-transact]] -c \&lt;br /&gt;
  -b my.bnk \&lt;br /&gt;
  -m my.afg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more details, see the info here: http://www.cbcb.umd.edu/software/bambus/, which I have reproduced here [[Bambus 2.0/quick start guide]].&lt;br /&gt;
[[Media:Example.ogg]]&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Bambus2</id>
		<title>Bambus2</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Bambus2"/>
				<updated>2011-01-14T04:04:50Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.cs.umd.edu/~sergek/ Sergey Koren]&lt;br /&gt;
[http://www.cbcb.umd.edu/~mpop/ Mihai Pop]&lt;br /&gt;
&lt;br /&gt;
Scaffolding represents the task of ordering and orienting contigs by incorporating additional information about their relative placement along the genome. The original Bambus package was the first general purpose scaffolders made available as an open source package. We are happy to announce the arrival of Bambus 2.0, the second generation Bambus scaffolder available as an open source package. While most other scaffolders are closely tied to a specific assembly program, Bambus accepts the output from most current assemblers and provides the user with great flexibility in choosing the scaffolding parameters. In particular, Bambus is able to accept contig linking data other than specified by mate-pairs. Such sources of information include alignment to a reference genome (Bambus can directly use the output of MUMmer), physical mapping data, or information about gene synteny. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Getting data into Bambus 2 can be a pain. Here is my recipe:&lt;br /&gt;
&lt;br /&gt;
 [[toAmos]] \&lt;br /&gt;
  -s my.fa \&lt;br /&gt;
  -c my.contig \&lt;br /&gt;
  -m my.mates \&lt;br /&gt;
  -o my.afg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need the .fa to list the contigs within the GFD-like contig file (annoying but true). You don&amp;#039;t need accurate sequences in the .fa, you just need something to make the format valid. The .contig and .mates are as expected for [[Bambus]].&lt;br /&gt;
&lt;br /&gt;
The resulting .afg is then &amp;#039;banked&amp;#039; with:&lt;br /&gt;
&lt;br /&gt;
 [[bank-transact]] -c \&lt;br /&gt;
  -b my.bnk \&lt;br /&gt;
  -m my.afg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For more details, see the info here: http://www.cbcb.umd.edu/software/bambus/, which I have reproduced here [[Bambus 2.0/quick start guide]].&lt;br /&gt;
[[Media:Example.ogg]]&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide</id>
		<title>Programmer&#039;s guide</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Programmer%27s_guide"/>
				<updated>2010-09-09T16:08:55Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Getting AMOS ==&lt;br /&gt;
AMOS can be downloaded from our Sourceforge download site: http://sourceforge.net/project/showfiles.php?group_id=134326 as a tar file, or directly from the AMOS CVS (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The .tar file ===&lt;br /&gt;
If you chose to download AMOS as a .tar file, getting started is as simple as untarring the file, running &amp;quot;./configure&amp;quot; from the top level directory, then &amp;quot;make all&amp;quot;.  For more details see the Getting Started document as well as the INSTALL file provided in the top level directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Direct CVS access ===&lt;br /&gt;
To access AMOS directly through anonymous CVS, use the following settings:&lt;br /&gt;
&lt;br /&gt;
 CVSROOT=pserver:anonymous@cvs.sourceforge.net:/cvsroot/amos&lt;br /&gt;
 CVS_RSH=ssh&lt;br /&gt;
&lt;br /&gt;
You can then retrieve the AMOS distribution with the command:&lt;br /&gt;
&lt;br /&gt;
 co -P AMOS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are a registered AMOS developer with read/write access to CVS, you can checkout the code using:&lt;br /&gt;
&lt;br /&gt;
  cvs -z3 -d:ext:&amp;lt;SFNAME&amp;gt;@amos.cvs.sf.net:/cvsroot/amos co -P AMOS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before being able to compile the AMOS code you will need to create the appropriate configuration files with the command &amp;quot;./bootstrap&amp;quot; run from the top level directory.  You will then be able to continue with compilation as described above under the .tar file.&lt;br /&gt;
&lt;br /&gt;
If you wish to play a more involved role in the development of AMOS, or if you wish to contribute some of your code or bug fixes, please contact us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Autoconf basics (how to add your own code to the CVS tree) ==&lt;br /&gt;
This section is not meant as documentation for the GNU autoconf package. Below you will learn how to add a program to the AMOS distribution, in an already existing directory.  If you want help with a more complex autoconf operation please contact us at the email listed above.&lt;br /&gt;
&lt;br /&gt;
The template for the Makefile file that will be created by the configure command (see description of compilation above) can be found in the file Makefile.am in each of the directories.  This file consists of two sections: a description of the files that are going to be installed when running &amp;quot;make install&amp;quot;, and a description of each of the files that will be compiled as part of the &amp;quot;make&amp;quot; command.  If you wish to add a program to the AMOS tree, you will thus need to add both a record indicating this program will be installed by the make process, and instructions on how to build this program.  The instructions for adding a script (either a Perl script or an AMOS configuration file), or a C++ program are described below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Addding a script to the AMOS tree ===&lt;br /&gt;
To add a script you can simply list it in the &amp;quot;dist_bin_SCRIPTS&amp;quot; variable at the beginning of the Makefile.am file, e.g.:&lt;br /&gt;
&lt;br /&gt;
 dist_bin_SCRIPTS = \&lt;br /&gt;
         bank-unlock.pl&lt;br /&gt;
&lt;br /&gt;
The build process will automatically add a &amp;quot;use lib&amp;quot; line to the beginning of your Perl scripts indicating where the AMOS code is installed.  Furthermore, the #! line will be appropriately modified according to the location of the Perl binary identified by the configure process.&lt;br /&gt;
&lt;br /&gt;
When building AMOS configuration files, the build process will automatically update the BINDIR and NUCMER variable in your file to the values identified by the configure process for the location of the AMOS binary installation directory, and for the location of the nucmer binary (part of the MUMmer distribution).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Adding a C++ program to the AMOS tree ===&lt;br /&gt;
To add a C++ program to AMOS, you must first add the name of the program to the &amp;quot;bin_PROGRAMS&amp;quot; variable in the Makefile.am file:&lt;br /&gt;
&lt;br /&gt;
 bin_PROGRAMS = \&lt;br /&gt;
        bank2contig  \&lt;br /&gt;
&lt;br /&gt;
You must then specify instructions on how this binary will be built.  These instructions include the location of the source files used in building the program:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_SOURCES = \&lt;br /&gt;
        bank2contig.cc&lt;br /&gt;
&lt;br /&gt;
instructions on additional libraries that might be needed:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_LDADD = \&lt;br /&gt;
        $(top_builddir)/src/Common/libCommon.a \&lt;br /&gt;
        $(top_builddir)/src/AMOS/libAMOS.a&lt;br /&gt;
&lt;br /&gt;
or additional flags:&lt;br /&gt;
&lt;br /&gt;
 bank2contig_CPPFLAGS = \&lt;br /&gt;
    -I$(top_srcdir)/src/Common&lt;br /&gt;
&lt;br /&gt;
If you wish to use the global library and CFLAGS parameters you may provide just the _SOURCES variable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== AMOS messages and the Perl API ==&lt;br /&gt;
AMOS programs can communicate among each other using a flat file format inspired by the format used by Celera Assembler.  An overview of this file format and the way AMOS objects are stored, is provided on the [[Infrastructure]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMOS distribution provides a Perl module that can be used to parse AMOS (and Celera Assembler) message files.  For a detailed description of the various functions provided by the AMOS::AmosLib module you can use the perldoc documentation:&lt;br /&gt;
&lt;br /&gt;
 $ perldoc AMOS::AmosLib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below we will only describe the use of this module to read and parse AMOS messages.&lt;br /&gt;
&lt;br /&gt;
To include the AMOS::AmosLib module in your perl program you will need to use the command:&lt;br /&gt;
&lt;br /&gt;
 use AMOS::AmosLib;&lt;br /&gt;
&lt;br /&gt;
at the beginning of the code.   If this module is not installed in the Perl search path (which can be set in the PERLLIB environment variable), you might have to also use the Perl command &amp;quot;use lib&amp;quot; to specify the location of the AMOS library.&lt;br /&gt;
&lt;br /&gt;
Like the C++ API (described below), reading AMOS messages from a file involves first reading the message in its entirety, oblivious of the data encoded within, then parsing the message to extract the individual components.  These two steps can be executed as follows:&lt;br /&gt;
&lt;br /&gt;
 my $rec = getRecord(\*STDIN);  # read a record from the standard input&lt;br /&gt;
 my ($id, $fields, $recs) = parseRecord($rec);  # parse the information in the message&lt;br /&gt;
&lt;br /&gt;
The first command retrieves the entire message from the input, i.e. a whole block of text between curly braces.  &lt;br /&gt;
The second command retrieves the three components of the message:&lt;br /&gt;
&lt;br /&gt;
   1. $id - the three letter code of the message (see Types of messages)&lt;br /&gt;
   2. $fields - hash table of the individual fields in the message.  E.g. for a read ($id == &amp;quot;RED&amp;quot;), $$fields{&amp;quot;seq&amp;quot;} represents the sequence of the read.&lt;br /&gt;
   3. $recs - array of any possible sub-messages.  These messages will need to be parsed individually with the parseRecord command.  An example of sub-messages are the TLE (tile) message indicating the position of reads within a contig.  $#$recs - represents the index of the last sub-message (if $#$recs == -1, there are no submessages).&lt;br /&gt;
&lt;br /&gt;
== The C++ API ==&lt;br /&gt;
Below is a quick overview of the AMOS C++ API.  The quickest way to get started is to examine the file src/Bank/bank-tutorial.cc.  This file highlights the interaction with the AMOS bank through the C++ API and contains copious comments meant to guide you through your first AMOS program.&lt;br /&gt;
&lt;br /&gt;
For a detailed description of all AMOS classes refer to the automatically generated doxygen API docs.&lt;br /&gt;
&lt;br /&gt;
The main AMOS datastructure is the bank - an indexed database of assembly objects.  This central datastructure provides allows the integration of multiple software modules that communicate by modifying the objects stored in a shared bank.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Overview of include files ===&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;foundation_AMOS.hh&amp;gt;   all of the below&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;inttypes_AMOS.hh&amp;gt;     integer typedefs&lt;br /&gt;
 #include &amp;lt;exceptions_AMOS.hh&amp;gt;   exception types&lt;br /&gt;
 #include &amp;lt;datatypes_AMOS.hh&amp;gt;    structs&lt;br /&gt;
 #include &amp;lt;databanks_AMOS.hh&amp;gt;    bank types&lt;br /&gt;
 #include &amp;lt;messages_AMOS.hh&amp;gt;     message types and message NCodes&lt;br /&gt;
 #include &amp;lt;universals_AMOS.hh&amp;gt;   assembly classes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Basic terminology === &lt;br /&gt;
&lt;br /&gt;
* IID             internal integer identifier and object reference&lt;br /&gt;
* EID             external string identifier&lt;br /&gt;
* BID             bank specific identifier (index of the file store, may be invalidated by bank operations)&lt;br /&gt;
* 3-Code          3-character identifier string for objects and fields&lt;br /&gt;
* N-Code          an integer representation of a 3-code (Encode/Decode functions)&lt;br /&gt;
* message         a single curly-bracketed AMOS message (see  message grammar)&lt;br /&gt;
* sub-message     a single curly-bracketed AMOS message contained by another (see message grammar)&lt;br /&gt;
&lt;br /&gt;
Relative orientation of reads/contigs (used in overlaps or scaffold links)&lt;br /&gt;
&lt;br /&gt;
 normal           ---a---&amp;gt;  ---b---&amp;gt;&lt;br /&gt;
 anti-normal     &amp;lt;---a---  &amp;lt;---b---&lt;br /&gt;
 innie            ---a---&amp;gt; &amp;lt;---b---&lt;br /&gt;
 outie           &amp;lt;---a---   ---b---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Dealing with AMOS message files ===&lt;br /&gt;
Reading an AMOS message from a file is as simple as:&lt;br /&gt;
&lt;br /&gt;
 Message_t msg;&lt;br /&gt;
 msg.read (cin);&lt;br /&gt;
&lt;br /&gt;
Note, that the msg object is generic, representing a properly formatted message object (see message grammar), irrespective of the actual assembly object represented by the message.  This object can be used to read arbitrary message files, such as those generated by Celera Assembler, even though the individual objects do not map to AMOS objects.&lt;br /&gt;
&lt;br /&gt;
To assign the message contents to a specific object, e.g. a contig:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig.readMessage(msg);&lt;br /&gt;
&lt;br /&gt;
Note, that the readMessage operation will fail if the message does not properly encode an AMOS contig.&lt;br /&gt;
&lt;br /&gt;
The reverse operation, writing a new message from an internal AMOS object can be simply performed:&lt;br /&gt;
&lt;br /&gt;
 contig.writeMessage(msg);&lt;br /&gt;
 message.write(cout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Communicating with the bank ===&lt;br /&gt;
AMOS banks can be open in two modes: for random access (bank mode), and for sequential access (bank stream mode).  To open a bank you must also specify the type of the objects stored in it, by providing the N-code of the object.  Thus, to open a bank of contigs&lt;br /&gt;
&lt;br /&gt;
 Bank_t contig_bank(Contig_t::NCODE);&lt;br /&gt;
 BankStream_t contig_stream(Contig_t::NCODE);&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
 contig_stream.open(&amp;quot;mybank.dir&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
The string &amp;quot;mybank.dir&amp;quot; refers to the physical location of the bank on the disk, and represents the name of a directory that contains all the relevant bank files.  In addition to the location of the bank, the open() command may specify a mode of access as B_READ, or B_WRITE, or both (B_READ|B_WRITE) (the default access is B_READ):&lt;br /&gt;
&lt;br /&gt;
 contig_bank.open(&amp;quot;mybank.dir&amp;quot;, B_READ|B_WRITE);&lt;br /&gt;
&lt;br /&gt;
Bank streams can only be used for sequential access, e.g.:&lt;br /&gt;
&lt;br /&gt;
 Contig_t contig;&lt;br /&gt;
 contig_stream &amp;gt;&amp;gt; contig;  // read from bank&lt;br /&gt;
 contig_stream &amp;lt;&amp;lt; contig;  // write to bank&lt;br /&gt;
&lt;br /&gt;
The sequential access mode is useful for processing anonymous objects (without an assigned IID or EID), or simply for the ease of use.&lt;br /&gt;
&lt;br /&gt;
Random access banks can be used to perform more complex operations:&lt;br /&gt;
&lt;br /&gt;
 // lookup by IID&lt;br /&gt;
 if (! contig_bank.existsIID(1))&lt;br /&gt;
     cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with iid 1&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 // lookup by EID&lt;br /&gt;
 if (! contig_bank.existsEID(&amp;quot;bigcontig&amp;quot;))&lt;br /&gt;
    cerr &amp;lt;&amp;lt; &amp;quot;Cannot find object with eid bigcontig&amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.fetch(1, contig);  // retrieve object by IID&lt;br /&gt;
 contig_bank.fetch(&amp;quot;bigcontig&amp;quot;, contig); // retrieve object by EID&lt;br /&gt;
 &lt;br /&gt;
 contig_bank.append(contig); // add an object to the bank&lt;br /&gt;
 contig_bank.remove(1);   // remove an object by IID&lt;br /&gt;
 contig_bank.remove(&amp;quot;bigcontig&amp;quot;); // remove an object by EID&lt;br /&gt;
&lt;br /&gt;
Note that by default objects are not physically removed from the bank when using the remove command, rather they are marked for deletion.  To compact the bank after several remove operations you will need to run&lt;br /&gt;
&lt;br /&gt;
 contig_bank.clean();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Indices ===&lt;br /&gt;
There is often the need to cross-reference the various objects stored in a bank, e.g. to obtain the list of reads present in a contig, or, for a read, to identify the contig or scaffold it belongs to.  Some such relationships are natively represented in the AMOS objects (e.g. contig messages also list the reads belonging to them), for others it is necessary to build lookup tables.  AMOS helps you by providing a generic mechanism for specifying lookup tables linking arbitrary AMOS types.  The AMOS indices are implemented using STL hash multi-maps (allows one-to-many correspondence).  &lt;br /&gt;
&lt;br /&gt;
A simple example on the use of indices is shown below.  The code generates a map linking each read to its mate (this information is normally contained in the Fragment_t object).&lt;br /&gt;
&lt;br /&gt;
 Index_t read2mate;&lt;br /&gt;
 rd2mate.buildReadMate(&amp;quot;mybank&amp;quot;); // build index linking reads to their mates in the bank &amp;quot;mybank&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ID_t mate = rd2mate.lookup(5);   // find mate of read with IID=5&lt;br /&gt;
 if (mate == NULL_ID)                 // if no mate found, returns NULL_ID&lt;br /&gt;
    cerr &amp;lt;&amp;lt;  &amp;quot;Read 5 has no mate &amp;quot; &amp;lt;&amp;lt; endl;&lt;br /&gt;
&lt;br /&gt;
This example relied on the pre-defined function buildReadMate that automatically builds an index of reads to mates.  Several such predefined functions are provided, see the documentation for the Index_t object.  If you need to build your own index, for which no predefined build function exists, you can use the insert command to add an identifier pair to the index:&lt;br /&gt;
&lt;br /&gt;
 Index_t obj2obj;&lt;br /&gt;
 obj2obj.insert(id1, id2);&lt;br /&gt;
&lt;br /&gt;
In case of a one-to-many mapping (e.g. all the reads in a scaffold) you can retrieve all the IDs corresponding to a query ID using:&lt;br /&gt;
&lt;br /&gt;
 pair&amp;lt;const_iterator, const_iterator&amp;gt; startend = lookupAll(myid);&lt;br /&gt;
 for (iterator i = startend.first; i != startend.second; i++)&lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Found id &amp;quot; &amp;lt;&amp;lt; *i &amp;lt;&amp;lt; endl;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/FastqQC</id>
		<title>FastqQC</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/FastqQC"/>
				<updated>2010-05-17T19:34:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quality check a fastq for position dependent sequencing or quality biases&lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
  fastqqc.pl -tsv file.fq &amp;gt; file.fq.qc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Fastqqc.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FastqQC Plot ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## R script for generating quality plot&lt;br /&gt;
## Shows the per position sequence composition (A=red, T=orange, G=green, C=cyan, N=black)&lt;br /&gt;
## And the per position average quality value (dashed-purple line)&lt;br /&gt;
prefix=&amp;quot;s_7&amp;quot;&lt;br /&gt;
dir=&amp;quot;./&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pdf(paste(paste(dir,prefix,sep=&amp;quot;&amp;quot;),&amp;quot;.qc.pdf&amp;quot;,sep=&amp;quot;&amp;quot;))&lt;br /&gt;
par(mfrow=c(2,1))&lt;br /&gt;
&lt;br /&gt;
qc1pre = paste(prefix,&amp;quot;_1&amp;quot;, sep=&amp;quot;&amp;quot;)&lt;br /&gt;
qc1name=paste(dir, qc1pre,&amp;quot;_sequence.txt.qc&amp;quot;, sep=&amp;quot;&amp;quot;)&lt;br /&gt;
qc1 &amp;lt;- read.table(qc1name, header=TRUE)&lt;br /&gt;
qc2pre = paste(prefix,&amp;quot;_2&amp;quot;, sep=&amp;quot;&amp;quot;)&lt;br /&gt;
qc2name=paste(dir, qc2pre,&amp;quot;_sequence.txt.qc&amp;quot;, sep=&amp;quot;&amp;quot;)&lt;br /&gt;
qc2 &amp;lt;- read.table(qc2name, header=TRUE)&lt;br /&gt;
&lt;br /&gt;
len&amp;lt;-dim(qc1)[1]&lt;br /&gt;
&lt;br /&gt;
plot(qc1$pos, qc1$X.A, type=&amp;quot;l&amp;quot;, col=&amp;quot;red&amp;quot;, ylim=c(0,40), xlab=&amp;quot;&amp;quot;, ylab=&amp;quot;&amp;quot;, main=qc1pre, axes=FALSE, frame.plot=TRUE)&lt;br /&gt;
lines(qc1$pos, qc1$X.C, col=&amp;quot;cyan&amp;quot;)&lt;br /&gt;
lines(qc1$pos, qc1$X.G, col=&amp;quot;green&amp;quot;)&lt;br /&gt;
lines(qc1$pos, qc1$X.T, col=&amp;quot;orange&amp;quot;)&lt;br /&gt;
lines(qc1$pos, qc1$X.N, col=&amp;quot;black&amp;quot;)&lt;br /&gt;
lines(qc1$pos, qc1$Q, col=&amp;quot;purple&amp;quot;, lty=2)&lt;br /&gt;
abline(v=seq(0,len,10), col=&amp;quot;grey&amp;quot;, lty=3)&lt;br /&gt;
abline(h=seq(0,len,10), col=&amp;quot;grey&amp;quot;, lty=3)&lt;br /&gt;
axis(side=1, at=seq(0,len,by=10))&lt;br /&gt;
axis(side=2, at=seq(0,len,by=10))&lt;br /&gt;
&lt;br /&gt;
plot(qc2$pos, qc2$X.A, type=&amp;quot;l&amp;quot;, col=&amp;quot;red&amp;quot;, ylim=c(0,40), xlab=&amp;quot;&amp;quot;, ylab=&amp;quot;&amp;quot;, main=qc2pre, frame.plot=TRUE)&lt;br /&gt;
lines(qc2$pos, qc2$X.C, col=&amp;quot;cyan&amp;quot;)&lt;br /&gt;
lines(qc2$pos, qc2$X.G, col=&amp;quot;green&amp;quot;)&lt;br /&gt;
lines(qc2$pos, qc2$X.T, col=&amp;quot;orange&amp;quot;)&lt;br /&gt;
lines(qc2$pos, qc2$X.N, col=&amp;quot;black&amp;quot;)&lt;br /&gt;
lines(qc2$pos, qc2$Q, col=&amp;quot;purple&amp;quot;, lty=2)&lt;br /&gt;
abline(v=seq(0,len,10), col=&amp;quot;grey&amp;quot;, lty=3)&lt;br /&gt;
abline(h=seq(0,len,10), col=&amp;quot;grey&amp;quot;, lty=3)&lt;br /&gt;
axis(side=1, at=seq(0,len,by=10))&lt;br /&gt;
axis(side=2, at=seq(0,len,by=10))&lt;br /&gt;
&lt;br /&gt;
dev.off()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AMOS_Getting_Started</id>
		<title>AMOS Getting Started</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AMOS_Getting_Started"/>
				<updated>2010-04-26T17:15:53Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
Is AMOS an assembler?  is one of the first questions we are asked.  The short answer is no.  AMOS is not an assembler, rather a software infrastructure for developing assembly tools.  If you are only interested in running an off-the-shelf assembler on your shotgun data, do not despair, AMOS provides two such assemblers: AMOScmp - a comparative assembler; and Minimus - a basic assembler for small datasets.  However it is important to realize that, with a little bit of programming, you can use AMOS to put together your own shotgun assembler customized for the specific characteristics of your data.  &lt;br /&gt;
&lt;br /&gt;
This page will provide you with the basic information needed to get started using AMOS.  Advanced AMOS users can go directly to in-depth resources from the main page [[AMOS]].&lt;br /&gt;
&lt;br /&gt;
== Downloading AMOS ==&lt;br /&gt;
AMOS can be downloaded from Sourceforge using the following link: [http://sourceforge.net/project/showfiles.php?group_id=134326 http://sourceforge.net/project/showfiles.php?group_id=134326]&lt;br /&gt;
&lt;br /&gt;
No need to remember this URL as you can easily reach it from the [AMOS main page].&lt;br /&gt;
&lt;br /&gt;
This link will bring you to the Sourceforge download page for our project.  While older versions of our code are also available for download from this page we recommend you download the latest version to take advantage of the full functionality of the code.&lt;br /&gt;
&lt;br /&gt;
AMOS is released as a source-code package, with the exception of the OSX version of the assembly viewer Hawkeye, that can be downloaded as a binary from the File Release section of the download page.  Instructions for compiling and installing AMOS are provided below.  &lt;br /&gt;
&lt;br /&gt;
If you want to edit the source code, you should download the code from CVS following the directions here: [http://sourceforge.net/scm/?type=cvs&amp;amp;group_id=134326 http://sourceforge.net/scm/?type=cvs&amp;amp;group_id=134326]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installing AMOS ==&lt;br /&gt;
After reading this section make sure you also read the INSTALL file distributed with AMOS.  This file may contain information pertaining to the latest version of AMOS that is not included here.&lt;br /&gt;
&lt;br /&gt;
=== Normal installation ===&lt;br /&gt;
The AMOS source package has a name like: amos-1.4.5.tar.gz where 1.4.5 is the version of the code.  Once you untar this file (using &amp;quot;tar -xzf amos-1.4.5.tar.gz&amp;quot; in Linux, or &amp;quot;gunzip -d amos-1.4.5.tar.gz | tar xf -&amp;quot; in other flavors of Unix) you will find the current AMOS distribution in a directory named amos-1.4.5.  The next steps assume you have cd&amp;#039;d into this directory.&lt;br /&gt;
&lt;br /&gt;
AMOS uses the [http://www.gnu.org/software/autoconf GNU autoconf] package to reduce cross-platform compatibility issues.  Before compiling the code you will need to run the configure script that will probe your system for the locations of all software packages required by AMOS.&lt;br /&gt;
&lt;br /&gt;
By simply running:&lt;br /&gt;
&lt;br /&gt;
 ./configure&lt;br /&gt;
&lt;br /&gt;
you will prepare AMOS to be installed in the directory hosting the source package.  This is OK if you are just testing AMOS.  We recommend, however, that you provide the configure script with a more permanent home for AMOS, e.g.:&lt;br /&gt;
&lt;br /&gt;
 ./configure --prefix=/usr/local&lt;br /&gt;
&lt;br /&gt;
will ultimately lead the AMOS directory hierarchy to be installed underneath /usr/local/.  &lt;br /&gt;
&lt;br /&gt;
After running configure, make sure you check the messages left on your screen to make sure no errors occured.  Errors during the configure step can lead to an incomplete build.&lt;br /&gt;
&lt;br /&gt;
To compile the code you need to simply run:&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
followed by&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
to install AMOS into the directory selected with the --prefix option to configure.  &lt;br /&gt;
&lt;br /&gt;
Normally, these steps are sufficient to install AMOS on most UNIX systems.  If you encounter errors during configuration or compilation, or if you are trying to install AMOS on an OSX or Cygwin system, please read the following sub-sections.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Specifying the location of MUMmer ===&lt;br /&gt;
If the configure script gives you a message like:&lt;br /&gt;
&lt;br /&gt;
 WARNING! nucmer was not found but is required to run AMOScmp&lt;br /&gt;
    install nucmer if planning on using AMOScmp&lt;br /&gt;
&lt;br /&gt;
you either have not installed the [http://mummer.sourceforge.net/ MUMmer] package, or you have installed it in a location where the configure script cannot find it.  MUMmer (the nucmer program in particular) is required by the comparative assembler [[AMOScmp]].&lt;br /&gt;
&lt;br /&gt;
To remedy this situation, please install MUMmer following instructions found at [http://mummer.sourceforge.net http://mummer.sourceforge.net].  &lt;br /&gt;
&lt;br /&gt;
If MUMmer is already installed, but configure cannot find it, you can specify the location of the nucmer program by setting the environment variably NUCMER, e.g.:&lt;br /&gt;
&lt;br /&gt;
 NUCMER=/usr/local/bin/mummer/nucmer&lt;br /&gt;
 export NUCMER&lt;br /&gt;
&lt;br /&gt;
in a &amp;quot;traditional&amp;quot; shell (sh, bash, ksh, etc.), or&lt;br /&gt;
&lt;br /&gt;
 setenv NUCMER /usr/local/bin/mummer/nucmer&lt;br /&gt;
&lt;br /&gt;
in csh or tcsh.  Of course you&amp;#039;ll need to replace /usr/local/bin/mummer/nucmer with the actual location of this program on your system.&lt;br /&gt;
Specifying the location of the QT library&lt;br /&gt;
On most Unix installations (see below for OSX and Cygwin), the QT library should be properly installed and AMOS will make without any problems.  If, however, you notice a message like:&lt;br /&gt;
&lt;br /&gt;
 WARNING! Qt3 toolkit was not found but is required to run AMOS GUIs&lt;br /&gt;
&lt;br /&gt;
the configure process was not able to find the QT library on your system.  Check with your system administrator to have this toolkit installed on your system.  If, however, you are certain the toolkit is installed, but AMOS still didn&amp;#039;t find it, you can directly specify the location of the toolkit directory, or specifically the include, bin, and lib directories, where QT is installed, and the name of the library file, using the following options to the configure script:&lt;br /&gt;
&lt;br /&gt;
 --with_Qt_dir&lt;br /&gt;
 --with_Qt_include_dir&lt;br /&gt;
 --with_Qt_lib_dir&lt;br /&gt;
 --with_Qt_bin_dir&lt;br /&gt;
 --with_Qt_lib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OSX installation ===&lt;br /&gt;
Download QT/Mac 3.3.x from Trolltech.&lt;br /&gt;
&lt;br /&gt;
As of 4/12/06, the most recent version is available at:  ftp://ftp.trolltech.com/qt/source/qt-mac-free-3.3.6.tar.gz&lt;br /&gt;
&lt;br /&gt;
Follow the Trolltech instructions for building QT. Make sure to set the environment variable QTDIR appropriately.&lt;br /&gt;
&lt;br /&gt;
Run ./configure to configure AMOS. Note the QT configure tests may fail. Run make to build AMOS.  Then run:&lt;br /&gt;
&lt;br /&gt;
 cd src/bankViewer&lt;br /&gt;
 $QTDIR/bin/qmake&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
The Hawkeye binary will then build in the Hawkeye directory. You will have to manually copy it to your bin directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cygwin installation ===&lt;br /&gt;
Make sure you have the following packages installed:&lt;br /&gt;
&lt;br /&gt;
* Base:&lt;br /&gt;
** ash&lt;br /&gt;
** coreutils&lt;br /&gt;
** gawk&lt;br /&gt;
** gzip&lt;br /&gt;
&lt;br /&gt;
* Devel:&lt;br /&gt;
** gcc-g++&lt;br /&gt;
** make&lt;br /&gt;
&lt;br /&gt;
* X11:&lt;br /&gt;
** qt3&lt;br /&gt;
** qt3-bin&lt;br /&gt;
** qt3-devel&lt;br /&gt;
** xorig-x11-* (all x11 packages, including fonts)&lt;br /&gt;
&lt;br /&gt;
Run ./configure from the top level source directory.  Note the QT configure tests will fail. Run make to build AMOS except for the Hawkeye directory. Then run:&lt;br /&gt;
&lt;br /&gt;
 cd src/bankViewer&lt;br /&gt;
 qmake-qt3&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
The Hawkeye binary will then build in the bankViewer directory. You will have to manually copy it to your bin directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running AMOS ==&lt;br /&gt;
&lt;br /&gt;
=== Basic AMOS concepts ===&lt;br /&gt;
AMOS consists of a collection of modules that operate on a central data-structure called a bank.  A bank is really just a directory that contains a database (organized as a collection of indexed files) comprising assembly related objects such as reads, contigs, scaffolds, etc.  The modules thus communicate with each other by making changes to the bank.  For example, an assembler might consist of three modules: an overlapper, a contigger, and a multi-aligner.  The overlapper will first read the shotgun reads from the bank, compare them to each other and write back to the bank a list of overlaps, i.e. pairs of reads that match each other.  The contigger then reads the collection of overlaps and makes sense out of it, by producing a layout of the reads that is consistent with most of the observed overlaps.  The contigger then writes these contigs (contiguous chunks of the genome) to the bank.  Finally, the multi-aligner reads from the bank both the reads and the contigs, builds a multiple alignment of the reads, using as a guide the layout of the reads produced by the contigger, then updates the contigs with the detailed alignment information.  Thus, the three programs were able to communicate with each other using the bank as an intermediate storage space.  If this litle description didn&amp;#039;t make much sense to you, check out our [http://www.cbcb.umd.edu/research/assembly_primer.shtml Genome Assembly Primer].  It also has pointers to future reading.&lt;br /&gt;
&lt;br /&gt;
Objects in the bank may be identified by one, or both of the following identifiers:  IID (internal identifier) - an integer identifier, internal to AMOS; and EID (external identifier) - a string representing some external identifier of the record, e.g. the original name of a sequencing read.  Both identifiers must be unique for a specific object type, but may be shared by multiple objects.  For example, there can only be one contig with an IID equal to 1, however there can be both a contig, and a read, and an overlap, all with the IID = 1.&lt;br /&gt;
Message files&lt;br /&gt;
The AMOS banks are not the only mechanism for AMOS modules to communicate with each other, and to the &amp;quot;outside world&amp;quot;.  AMOS also uses a flat-file format (AMOS message files) inspired  by the format used in Celera Assembler.  This format is generally used as an intermediate format for converting to and from external file formats.  The AMOS message files are then used to populate the data-structures present in a bank.  &lt;br /&gt;
&lt;br /&gt;
For more details on the AMOS message file format check out the [[Infrastructure]] pages.  The use of message files will be described in more detail in the remainder of this tutorial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Reading and writing banks ====&lt;br /&gt;
To learn how to generate AMOS message files check out the section called Creating inputs for AMOS.  Assuming you already have an AMOS message file, most of the modules will require that the information from this file be loaded into a bank.  This section describes the commands used to transfer information between a bank and the message file.&lt;br /&gt;
&lt;br /&gt;
The command bank-transact can be used to load a message file into a bank.  In its simplest invocation:&lt;br /&gt;
&lt;br /&gt;
 bank-transact -b mybank -m mymessagefile&lt;br /&gt;
&lt;br /&gt;
bank-transact loads the messages in mymessagefile into the bank mybank.  Note that this invocation assume the bank already exists, and bank-transact will fail otherwise.  When creating a new bank you can run:&lt;br /&gt;
&lt;br /&gt;
 bank-transact -c -b mybank -m mymessagefile&lt;br /&gt;
&lt;br /&gt;
The option -c stands for &amp;quot;create&amp;quot;.  By also providing the option -f  (force), the bank will be overwritten if it already exists.&lt;br /&gt;
&lt;br /&gt;
The contents of a bank can be output into a flat-file format with the command:&lt;br /&gt;
&lt;br /&gt;
 bank-report -b mybank&lt;br /&gt;
&lt;br /&gt;
By default bank-report outputs all the data in the bank.  The output can be restricted to certain message types by providing the 3 letter codes of the messages to be output, e.g:&lt;br /&gt;
&lt;br /&gt;
 bank-report -b mybank CTG RED&lt;br /&gt;
&lt;br /&gt;
will output all the contigs (CTG) and read (RED) records.  In addition bank-report allows the user to specify a list of EIDs (option -E) or a list of IIDs (option -I) that will be reported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Bank locking ====&lt;br /&gt;
To allow concurrent access to the bank, AMOS programs lock the bank while the operate on it.  There are two types of locks: for reading, and writing.  If a bank is locked for reading, other read accesses are allowed but no writes.  If a bank is locked for writing, no concurrent accesses are allowed.  Some of the AMOS tools (such as the viewer Hawkeye), have an option to load a bank in &amp;quot;inspect&amp;quot; mode, i.e. the code ignores any locks placed on the bank.&lt;br /&gt;
&lt;br /&gt;
In certain situations, if a program accessing the bank crashes, the bank may remain locked, prohibiting further access.  All existing locks can be removed with the command (make sure that another user is not accessing the same bank):&lt;br /&gt;
&lt;br /&gt;
 bank-unlock mybank&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Bank versions ====&lt;br /&gt;
The specific format of the AMOS bank is closely related to the current version of the AMOS software.  The banks are not backward compatible, i.e., a bank produced by AMOS 1.0 will not be readable by AMOS 1.5.  A simple solution for reading a bank created by an older version of AMOS is to output the contents of the bank using bank-report (the AMOS distribution contains old versions of the bank-report code, e.g. bank-report-1.1) , then reload the bank with the most recent bank-transact command.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Pipelines ====&lt;br /&gt;
As it has hopefully become clear from the introduction to AMOS above, most genome assembly tasks involve the sequential execution of several modules, in an assembly line (or pipeline) fashion.   AMOS provides a mechanism for quickly putting together simple pipelines.   By &amp;quot;simple&amp;quot; we mean situations where the specific assembly task involves running several programs in order, without the need for more complex control structures such as &amp;quot;if&amp;quot; statements or loops.  To implement complex pipelines you will have to rely on Perl or another complex programming language.  &lt;br /&gt;
&lt;br /&gt;
An AMOS pipelines are described in a simple interpreted language, and consist of a series of steps that are executed in order.  The steps are meant to provide a logical breakdown of the individual assembly tasks, representing the execution of one or more programs.  Each step in a pipeline is identified by a step number (a throw-back to the days of the Basic language) providing the user with a mechanism to execute only some of the steps of a pipeline.  &lt;br /&gt;
&lt;br /&gt;
To learn more about AMOS pipelines and how to write them, check out the documentation for [[runAmos]] (the pipeline executor), or check out one of the pipelines distributed with AMOS (AMOScmp and minimus are good starting points).&lt;br /&gt;
&lt;br /&gt;
=== Creating inputs for AMOS ===&lt;br /&gt;
The inputs to most AMOS programs must be provided in the AMOS message format.  For help converting non-AMOS file formats into message files see the [[File conversion utilities]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Running AMOScmp ===&lt;br /&gt;
AMOScmp is a comparative assembler that can be used to assemble reads from one genome (called the target) using as a template the sequence of a related genome (called the reference).  Read the AMOScmp documentation for a  detailed description of this program.&lt;br /&gt;
&lt;br /&gt;
By default, running AMOScmp as follows:&lt;br /&gt;
&lt;br /&gt;
 AMOScmp prefix&lt;br /&gt;
&lt;br /&gt;
assumes that the target is provided in the AMOS message file prefix.afg, and the reference in the file prefix.1con.  To use different file locations, you can set the variables TGT and REF, either directly within the AMOScmp script, or on the command line:&lt;br /&gt;
&lt;br /&gt;
 AMOScmp -D &amp;quot;TGT=mytarget.afg&amp;quot; -D &amp;quot;REF=myreference.1con&amp;quot;  prefix&lt;br /&gt;
&lt;br /&gt;
The prefix must still be provided as it is used to generate the name of the output files.&lt;br /&gt;
&lt;br /&gt;
AMOScmp will populate a bank named prefix.bnk, and will load into it a set of contigs, as well as a scaffold, linking together contigs that are adjacent along the reference.  In addition, AMOScmp outputs the set of contigs as both a multi-FASTA file prefix.fasta, and a TIGR .contig file prefix.contig.  Note that the consensus of the contigs (reported in the FASTA file) is generated from the target genome, and may differ from the reference genome (after all, the goal of the assembler is to assemble the target).  In fact, AMOScmp uses sophisticated algorithms for detecting differences between the target and reference in order to prevent misassemblies.  For more information refer to:&lt;br /&gt;
&lt;br /&gt;
M. Pop, A. Phillippy, A.L. Delcher and S.L. Salzberg. [http://www.cbcb.umd.edu/papers/Pop%20et%20al%20Comparative.pdf Comparative genome assembly]. Briefings in Bioinformatics. 5(3), pp. 237-248, 2004.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Running minimus ===&lt;br /&gt;
Minimus is a basic genome assembler that can be used for small assembly jobs (e.g. a single gene, or a viral genome).  Minimus is currently used as a central component of the Influenza A sequencing pipeline at The Institute for Genomic Research. Read the [[minimus]] documentation for more information.&lt;br /&gt;
&lt;br /&gt;
To run minimus you must provide a set of shotgun reads in an AMOS message file.  Running:&lt;br /&gt;
&lt;br /&gt;
 minimus prefix&lt;br /&gt;
&lt;br /&gt;
assumes the input is in file prefix.afg.  After running, minimus populates the bank prefix.bnk with a set of contigs, furthermore it reports the contigs in both a FASTA file (prefix.fasta) and a TIGR .contig file (prefix.contig).   Note that minimus does not use mate-pairs.  In essence it is, in Celera Assembler terminology, a unitigger.  Any mate-pair information provided in the .afg will be silently ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Viewing the result of an assembly ===&lt;br /&gt;
The content of a  bank can be viewed with a program called Hawkeye:&lt;br /&gt;
&lt;br /&gt;
 hawkeye mybank&lt;br /&gt;
&lt;br /&gt;
For detailed information on how to use Hawkeye, refer to the [[Hawkeye]] documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Validating assemblies ===&lt;br /&gt;
Even the best genome assemblers sometimes make mistakes.  AMOS provides a mechanism to run several checks on the output of an assembler (assuming the data are already stored in a bank), through a script called amosvalidate.  Amosvalidate runs through the assembly and identifies several types of inconsistencies, such as clusters of SNPs in the assembled reads, clusters of mate-pairs that are too close or too far from each other (with respect to the estimated library sizes), and unassembled reads that do not properly match the assembly.  A full description of these measures is beyond the scope of this document.  We are currently submitting a manuscript describing the tools included in amosvalidate and will update this page when it gets published.&lt;br /&gt;
&lt;br /&gt;
All the potential assembly problems identified by amosvalidate are written back into the bank as features, i.e ranges along the assembly.  Each feature is tagged with the problem that was identified in that region.  Typically, users then load the assembly in the Hawkeye viewer and examine the assembly in the tagged regions.  Alternatively, the features may be extracted from the bank and processed automatically by specialized software (e.g. several assemblies of a same genome can be compared by the number of features identified in the assembly - the assembly with fewer features is likely &amp;quot;better&amp;quot;).  &lt;br /&gt;
&lt;br /&gt;
Running amosvalidate is as simple as:&lt;br /&gt;
&lt;br /&gt;
 amosvalidate prefix&lt;br /&gt;
&lt;br /&gt;
where prefix.bnk is the location of the bank.&lt;br /&gt;
&lt;br /&gt;
== Getting help ==&lt;br /&gt;
To report bugs in AMOS, or to get help, email us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforget (dot) net&lt;br /&gt;
&lt;br /&gt;
To receive information regarding new releases and developments, please [http://lists.sourceforge.net/lists/listinfo/amos-users subscribe] to our moderated, low-traffic users&amp;#039; mailing list:&lt;br /&gt;
&lt;br /&gt;
 amos-users (at) lists (dot) sourceforget (dot) net&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/FastqQC</id>
		<title>FastqQC</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/FastqQC"/>
				<updated>2009-11-30T18:56:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: Created page with &amp;#039;Quality check a fastq for position dependent sequencing or quality biases  Example   fastqqc.pl -tsv file.fq &amp;gt; file.fq.qc   File:Fastqqc.png   == FastqQC Plot ==  &amp;lt;pre&amp;gt; ## R …&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Quality check a fastq for position dependent sequencing or quality biases&lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
  fastqqc.pl -tsv file.fq &amp;gt; file.fq.qc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Fastqqc.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FastqQC Plot ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## R script for generating quality plot&lt;br /&gt;
## Shows the per position sequence composition (A=red, T=orange, G=green, C=cyan, N=black)&lt;br /&gt;
## And the per position average quality value (dashed-purple line)&lt;br /&gt;
prefix=&amp;quot;s_7&amp;quot;&lt;br /&gt;
dir=&amp;quot;./&amp;quot;&lt;br /&gt;
&lt;br /&gt;
pdf(paste(paste(dir,prefix,sep=&amp;quot;&amp;quot;),&amp;quot;.qc.pdf&amp;quot;,sep=&amp;quot;&amp;quot;))&lt;br /&gt;
par(mfrow=c(2,1))&lt;br /&gt;
&lt;br /&gt;
qc1pre = paste(prefix,&amp;quot;_1&amp;quot;, sep=&amp;quot;&amp;quot;)&lt;br /&gt;
qc1name=paste(dir, qc1pre,&amp;quot;_sequence.txt.qc&amp;quot;, sep=&amp;quot;&amp;quot;)&lt;br /&gt;
qc1 &amp;lt;- read.table(qc1name, header=TRUE)&lt;br /&gt;
qc2pre = paste(prefix,&amp;quot;_2&amp;quot;, sep=&amp;quot;&amp;quot;)&lt;br /&gt;
qc2name=paste(dir, qc2pre,&amp;quot;_sequence.txt.qc&amp;quot;, sep=&amp;quot;&amp;quot;)&lt;br /&gt;
qc2 &amp;lt;- read.table(qc2name, header=TRUE)&lt;br /&gt;
&lt;br /&gt;
plot(qc1$pos, qc1$X.A, type=&amp;quot;l&amp;quot;, col=&amp;quot;red&amp;quot;, ylim=c(0,40), xlab=&amp;quot;&amp;quot;, ylab=&amp;quot;&amp;quot;, main=qc1pre, axes=FALSE, frame.plot=TRUE)&lt;br /&gt;
lines(qc1$pos, qc1$X.C, col=&amp;quot;cyan&amp;quot;)&lt;br /&gt;
lines(qc1$pos, qc1$X.G, col=&amp;quot;green&amp;quot;)&lt;br /&gt;
lines(qc1$pos, qc1$X.T, col=&amp;quot;orange&amp;quot;)&lt;br /&gt;
lines(qc1$pos, qc1$X.N, col=&amp;quot;black&amp;quot;)&lt;br /&gt;
lines(qc1$pos, qc1$Q, col=&amp;quot;purple&amp;quot;, lty=2)&lt;br /&gt;
abline(v=seq(0,80,10), col=&amp;quot;grey&amp;quot;, lty=3)&lt;br /&gt;
abline(h=seq(0,80,10), col=&amp;quot;grey&amp;quot;, lty=3)&lt;br /&gt;
axis(side=1, at=seq(0,80,by=10))&lt;br /&gt;
axis(side=2, at=seq(0,80,by=10))&lt;br /&gt;
&lt;br /&gt;
plot(qc2$pos, qc2$X.A, type=&amp;quot;l&amp;quot;, col=&amp;quot;red&amp;quot;, ylim=c(0,40), xlab=&amp;quot;&amp;quot;, ylab=&amp;quot;&amp;quot;, main=qc2pre, frame.plot=TRUE)&lt;br /&gt;
lines(qc2$pos, qc2$X.C, col=&amp;quot;cyan&amp;quot;)&lt;br /&gt;
lines(qc2$pos, qc2$X.G, col=&amp;quot;green&amp;quot;)&lt;br /&gt;
lines(qc2$pos, qc2$X.T, col=&amp;quot;orange&amp;quot;)&lt;br /&gt;
lines(qc2$pos, qc2$X.N, col=&amp;quot;black&amp;quot;)&lt;br /&gt;
lines(qc2$pos, qc2$Q, col=&amp;quot;purple&amp;quot;, lty=2)&lt;br /&gt;
abline(v=seq(0,80,10), col=&amp;quot;grey&amp;quot;, lty=3)&lt;br /&gt;
abline(h=seq(0,80,10), col=&amp;quot;grey&amp;quot;, lty=3)&lt;br /&gt;
axis(side=1, at=seq(0,80,by=10))&lt;br /&gt;
axis(side=2, at=seq(0,80,by=10))&lt;br /&gt;
&lt;br /&gt;
dev.off()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/File:Fastqqc.png</id>
		<title>File:Fastqqc.png</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/File:Fastqqc.png"/>
				<updated>2009-11-30T18:53:56Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AMOS</id>
		<title>AMOS</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AMOS"/>
				<updated>2009-11-30T18:49:22Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium is committed to the development of open-source whole genome assembly software. The project acronym (AMOS) represents our primary goal -- to produce A Modular, Open-Source whole genome assembler. Open-source so that everyone is welcome to contribute and help build outstanding assembly tools, and modular in nature so that new contributions can be easily inserted into an existing assembly pipeline. This modular design will foster the development of new assembly algorithms and allow the AMOS project to continually grow and improve in hopes of eventually becoming a widely accepted and deployed assembly infrastructure. In this sense, AMOS is both a design philosophy and a software system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quick links:&lt;br /&gt;
* [[AMOS Getting Started]]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=134326 Download]&lt;br /&gt;
* [http://sourceforge.net/projects/amos SourceForge project page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&lt;br /&gt;
* July 12, 2009 - AMOS website moved to MediaWiki&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Additional documentation in development through the [[AMOS Documentation Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assemblers ===&lt;br /&gt;
* [[ABBA]] - Assembly Boosted By Amino Acid Sequences&lt;br /&gt;
* [[minimus]] - basic genome assembler for small datasets&lt;br /&gt;
* [[minimus2]] - basic genome assembler for two datasets; can also be used as an assembly merge pipeline&lt;br /&gt;
* [[AMOScmp]] - comparative assembler&lt;br /&gt;
* [[AMOScmp-shortReads]] - comparative assembler for short reads (Solexa,454)&lt;br /&gt;
* [[AMOScmp-shortReads-alignmentTrimmed]] - comparative assembler for short reads that uses alignment based trimming&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Validation and Visualization ===&lt;br /&gt;
* [[Hawkeye]] - assembly viewer&lt;br /&gt;
* [[amosvalidate]] - assembly forensics&lt;br /&gt;
* [[Benchmark]] - assembly benchmark data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scaffolding ===&lt;br /&gt;
* [[Bambus]] - Open source standalone hierarchical scaffolding&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Trimming, Overlapping, &amp;amp; Error Correction ===&lt;br /&gt;
* [[Figaro]] - statistical vector trimmer&lt;br /&gt;
* [[UMD Overlapper]] - High quality overlap computations&lt;br /&gt;
* [[KI Overlapper]] - Repeat aware overlapper&lt;br /&gt;
* [[AutoEditor]] - Automatic correction of genome sequencing errors&lt;br /&gt;
* [[FastqQC]] - Read composition and quality&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilities ===&lt;br /&gt;
* [[File conversion utilities]] - converting data to and from AMOS&lt;br /&gt;
* [[AMOS Utilities | AMOS Utilities]] - general utilities&lt;br /&gt;
* [[runAmos]] - Pipeline executor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AMOS Development ===&lt;br /&gt;
* [[Programmer&amp;#039;s guide]] - Getting started with the Source code&lt;br /&gt;
* [[Infrastructure]] - Developer level details&lt;br /&gt;
* [[Wiki guide]] - Guide for editing the wiki&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assembly Tutorials ===&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/assembly_primer.shtml Assembly primer] - overview of genome assembly.&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/contig_representation.shtml Representing assemblies (not just in AMOS)]&lt;br /&gt;
* [http://wgs-assembler.sourceforge.net Running Celera Assembler]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download == &lt;br /&gt;
The AMOS source if freely available for download from the File Release Section of our SourceForge project page. Please refer to the COPYING license included in the package for a description of the Artistic License, the same OSI certified open source license used by Perl and countless other packages. Not all of the above packages are included with the standard AMOS distribution, please see the homepage for the software you wish to download to verify that it is included with the AMOS source distribution.&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 Download from SourceForge]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Consortium members ==&lt;br /&gt;
&lt;br /&gt;
There have been numerous positive responses regarding the AMOS initiative, and we expect the list of involved organizations to grow significantly as the project matures. Please contact us if you want to join. The groups currently involved with the development of AMOS are listed below, along with their responsibilities and areas of expertise.&lt;br /&gt;
&lt;br /&gt;
* University of Maryland, Center for Bioinformatics and Computational Biology&lt;br /&gt;
** project organization and direction&lt;br /&gt;
** infrastructure&lt;br /&gt;
** consensus&lt;br /&gt;
** automated sequence editing&lt;br /&gt;
** scaffolding&lt;br /&gt;
** overlap detection&lt;br /&gt;
** contig construction&lt;br /&gt;
&lt;br /&gt;
* The Institute for Genomic Research&lt;br /&gt;
** production pipelines&lt;br /&gt;
** automated finishing tools&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Karolinska Institutet&lt;br /&gt;
** overlap detection&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Marine Biological Laboratory - Woods Hole&lt;br /&gt;
** graphical interface&lt;br /&gt;
** integration of assembly data with analysis (gene, polymorphism, etc.) information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Join the consortium ==&lt;br /&gt;
&lt;br /&gt;
All interested parties are welcome to join or aid the AMOS consortium. Please address all correspondence via Email to:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
To receive information regarding new releases and developments, please subscribe to our moderated, low-traffic users&amp;#039; mailing list:&lt;br /&gt;
&lt;br /&gt;
 amos-users (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bug reports and support ==&lt;br /&gt;
&lt;br /&gt;
For AMOS bug reports or support requests, please browse our SourceForge project page or Email us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium would like to thank the following organizations for their funding and/or support:&lt;br /&gt;
* The National Institutes of Health - grants R01-LM06845, N01-AI-15447&lt;br /&gt;
* The National Science Foundation - grants IIS-9902923, IIS-9820497&lt;br /&gt;
* Department of Homeland Security - cooperative agreement W81XWH-05-2-0051&lt;br /&gt;
* SourceForge.net&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Wiki_guide</id>
		<title>Wiki guide</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Wiki_guide"/>
				<updated>2009-11-30T02:36:05Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This website uses [http://mediawiki.org MediaWiki] to organize and present the content, the same software used to run the [http://www.wikipedia.org WikiPedia]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Editing a page ==&lt;br /&gt;
&lt;br /&gt;
Once you are logged in, you can edit any page by clicking on the edit tab on the top of each page. You can then add content by typing in the text box, and format it by adding special tags around your text. For example, putting a word in double brackets [[ ]], creates a link to that page in the wiki. Click on the edit tab of any page to see how it is formatted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Add New Page ==&lt;br /&gt;
The easiest way to add a new page is to first edit an existing page to include a link with double brackets to the page you want to add. Save the page, and then click on the link- you&amp;#039;ll be sent to a new empty page to edit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special pages ==&lt;br /&gt;
* [[Special:UserRights]] - Grant write access to the wiki&lt;br /&gt;
* [[Special:SpecialPages]] - A whole collection of special pages&lt;br /&gt;
* [[Special:WantedPages]] - links to pages that don&amp;#039;t exist&lt;br /&gt;
* [[Special:LonelyPages]] - pages with no in-bound links&lt;br /&gt;
* [[MediaWiki:Sidebar]] - edit the sidebar, see [http://www.mediawiki.org/wiki/Manual:Interface/Sidebar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See these pages for details on adding pages and formating your content.&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents User&amp;#039;s Guide] for information on using the wiki software.&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Logo ==&lt;br /&gt;
Click on the following image to upload a new version of the PNG logo image for your project:&lt;br /&gt;
&lt;br /&gt;
[[Image:MediaWikiSidebarLogo.png]]&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/File:AutoEditor.png</id>
		<title>File:AutoEditor.png</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/File:AutoEditor.png"/>
				<updated>2009-11-23T22:41:21Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AutoEditor</id>
		<title>AutoEditor</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AutoEditor"/>
				<updated>2009-11-23T22:41:00Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AutoEditor.png|right]]&lt;br /&gt;
&lt;br /&gt;
By using information from an assembly of a genome, a new program called AutoEditor significantly improves base calling accuracy over that achieved by previous algorithms. This in turn improves the overall accuracy of genome sequences and facilitates the use of these sequences for polymorphism discovery. We describe the algorithm and its application in a large set of recent genome sequencing projects. The number of erroneous base calls in these projects was reduced by 80%. In an analysis of over one million corrections, we found that AutoEditor made just one error per 8828 corrections. By substantially increasing the accuracy of base calling, AutoEditor can dramatically accelerate the process of finishing genomes, which involves closing all gaps and ensuring minimum quality standards for the final sequence. It also greatly improves our ability to discover single nucleotide polymorphisms (SNPs) between closely related strains and isolates of the same species.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Publication: [http://nar.oxfordjournals.org/cgi/content/full/32/2/562 &amp;quot;Automated correction of genome sequence errors.&amp;quot;] Gajer P, Schatz M, Salzberg SL, Nucleic Acids Research, 2004. 32(2):562-9.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
* [ftp://ftp.cbcb.umd.edu/pub/software/autoEditor/autoEditor-1.20.tar.gz Source Code]&lt;br /&gt;
* [ftp://ftp.cbcb.umd.edu/pub/software/autoEditor/autoEditor-1.20-sample.tar.gz Sample Data]&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AutoEditor</id>
		<title>AutoEditor</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AutoEditor"/>
				<updated>2009-11-23T22:40:06Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[File:AutoEditor.png|right]&lt;br /&gt;
&lt;br /&gt;
By using information from an assembly of a genome, a new program called AutoEditor significantly improves base calling accuracy over that achieved by previous algorithms. This in turn improves the overall accuracy of genome sequences and facilitates the use of these sequences for polymorphism discovery. We describe the algorithm and its application in a large set of recent genome sequencing projects. The number of erroneous base calls in these projects was reduced by 80%. In an analysis of over one million corrections, we found that AutoEditor made just one error per 8828 corrections. By substantially increasing the accuracy of base calling, AutoEditor can dramatically accelerate the process of finishing genomes, which involves closing all gaps and ensuring minimum quality standards for the final sequence. It also greatly improves our ability to discover single nucleotide polymorphisms (SNPs) between closely related strains and isolates of the same species.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Publication: [http://nar.oxfordjournals.org/cgi/content/full/32/2/562 &amp;quot;Automated correction of genome sequence errors.&amp;quot;] Gajer P, Schatz M, Salzberg SL, Nucleic Acids Research, 2004. 32(2):562-9.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
* [ftp://ftp.cbcb.umd.edu/pub/software/autoEditor/autoEditor-1.20.tar.gz Source Code]&lt;br /&gt;
* [ftp://ftp.cbcb.umd.edu/pub/software/autoEditor/autoEditor-1.20-sample.tar.gz Sample Data]&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AutoEditor</id>
		<title>AutoEditor</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AutoEditor"/>
				<updated>2009-11-23T21:23:38Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;By using information from an assembly of a genome, a new program called AutoEditor significantly improves base calling accuracy over that achieved by previous algorithms. This in turn improves the overall accuracy of genome sequences and facilitates the use of these sequences for polymorphism discovery. We describe the algorithm and its application in a large set of recent genome sequencing projects. The number of erroneous base calls in these projects was reduced by 80%. In an analysis of over one million corrections, we found that AutoEditor made just one error per 8828 corrections. By substantially increasing the accuracy of base calling, AutoEditor can dramatically accelerate the process of finishing genomes, which involves closing all gaps and ensuring minimum quality standards for the final sequence. It also greatly improves our ability to discover single nucleotide polymorphisms (SNPs) between closely related strains and isolates of the same species.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Publication: [http://nar.oxfordjournals.org/cgi/content/full/32/2/562 &amp;quot;Automated correction of genome sequence errors.&amp;quot;] Gajer P, Schatz M, Salzberg SL, Nucleic Acids Research, 2004. 32(2):562-9.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
* [ftp://ftp.cbcb.umd.edu/pub/software/autoEditor/autoEditor-1.20.tar.gz Source Code]&lt;br /&gt;
* [ftp://ftp.cbcb.umd.edu/pub/software/autoEditor/autoEditor-1.20-sample.tar.gz Sample Data]&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AutoEditor</id>
		<title>AutoEditor</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AutoEditor"/>
				<updated>2009-11-23T21:23:10Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
By using information from an assembly of a genome, a new program called AutoEditor significantly improves base calling accuracy over that achieved by previous algorithms. This in turn improves the overall accuracy of genome sequences and facilitates the use of these sequences for polymorphism discovery. We describe the algorithm and its application in a large set of recent genome sequencing projects. The number of erroneous base calls in these projects was reduced by 80%. In an analysis of over one million corrections, we found that AutoEditor made just one error per 8828 corrections. By substantially increasing the accuracy of base calling, AutoEditor can dramatically accelerate the process of finishing genomes, which involves closing all gaps and ensuring minimum quality standards for the final sequence. It also greatly improves our ability to discover single nucleotide polymorphisms (SNPs) between closely related strains and isolates of the same species.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Publication: [http://nar.oxfordjournals.org/cgi/content/full/32/2/562 &amp;quot;Automated correction of genome sequence errors.&amp;quot;] Gajer P, Schatz M, Salzberg SL, Nucleic Acids Research, 2004. 32(2):562-9.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[ftp://ftp.cbcb.umd.edu/pub/software/autoEditor/autoEditor-1.20.tar.gz Source Code]&lt;br /&gt;
[ftp://ftp.cbcb.umd.edu/pub/software/autoEditor/autoEditor-1.20-sample.tar.gz Sample Data]&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/LibAMOS_Quick_Reference</id>
		<title>LibAMOS Quick Reference</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/LibAMOS_Quick_Reference"/>
				<updated>2009-11-02T02:22:13Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= libAMOS API quick reference =&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;foundation_AMOS.hh&amp;gt;   all of the below&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;inttypes_AMOS.hh&amp;gt;     integer typedefs&lt;br /&gt;
 #include &amp;lt;exceptions_AMOS.hh&amp;gt;   exception types&lt;br /&gt;
 #include &amp;lt;datatypes_AMOS.hh&amp;gt;    structs&lt;br /&gt;
 #include &amp;lt;databanks_AMOS.hh&amp;gt;    bank types&lt;br /&gt;
 #include &amp;lt;messages_AMOS.hh&amp;gt;     message types and message NCodes&lt;br /&gt;
 #include &amp;lt;universals_AMOS.hh&amp;gt;   assembly classes&lt;br /&gt;
&lt;br /&gt;
= TERMINOLOGY = &lt;br /&gt;
 IID             internal integer identifier and object reference&lt;br /&gt;
 EID             external string identifier&lt;br /&gt;
 BID             bank specific identifier (index of the file store)&lt;br /&gt;
 3-Code          3-character identifier string for objects and fields&lt;br /&gt;
 N-Code          an integer representation of a 3-code (Encode/Decode functions)&lt;br /&gt;
 message         a single curly-bracketed AMOS message&lt;br /&gt;
 sub-message     a single curly-bracketed AMOS message contained by another&lt;br /&gt;
 normal           ---a---&amp;gt;  ---b---&amp;gt;&lt;br /&gt;
 anti-normal     &amp;lt;---a---  &amp;lt;---b---&lt;br /&gt;
 innie            ---a---&amp;gt; &amp;lt;---b---&lt;br /&gt;
 outie           &amp;lt;---a---   ---b---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= GLOBAL NAMESPACE =&lt;br /&gt;
== TYPEDEFS ==&lt;br /&gt;
 [u]int(bits)_t  signed or unsigned 8,16,32,64 bit integers&lt;br /&gt;
 &lt;br /&gt;
 ID_t            uint32_t        integer identifier&lt;br /&gt;
 NCode_t         uint32_t        integer object identifier&lt;br /&gt;
 SD_t            uint32_t        standard deviation&lt;br /&gt;
 Size_t          int32_t         size type&lt;br /&gt;
 Status_t        char            object status&lt;br /&gt;
 Pos_t           int32_t         position type &lt;br /&gt;
&lt;br /&gt;
= &amp;quot;AMOS&amp;quot; NAMESPACE =&lt;br /&gt;
== CONSTANTS ==&lt;br /&gt;
 NCODE_SIZE      3               length of NCode string&lt;br /&gt;
 NULL_NCODE      0               null object code&lt;br /&gt;
 NULL_ID         0               null identifier&lt;br /&gt;
 NULL_STATUS     0               null status&lt;br /&gt;
 MIN_QUALITY     &amp;#039;0&amp;#039;             minimum quality score&lt;br /&gt;
 MAX_QUALITY     &amp;#039;0&amp;#039; + 63        maximum quality score&lt;br /&gt;
 NULL_CHAR       &amp;#039;\0&amp;#039;            null character&lt;br /&gt;
 NL_CHAR         &amp;#039;\n&amp;#039;            newline character&lt;br /&gt;
 NULL_STRING     string(&amp;quot;&amp;quot;)      null string&lt;br /&gt;
 MAX_ID          (1&amp;lt;&amp;lt;32)-1       maximum identifier&lt;br /&gt;
 MAX_SIZE        (1&amp;lt;&amp;lt;31)-1       maximum size&lt;br /&gt;
 MAX_POS         (1&amp;lt;&amp;lt;31)-1       maximum position&lt;br /&gt;
 &lt;br /&gt;
 E_ADD           &amp;#039;A&amp;#039;             bank addition event&lt;br /&gt;
 E_DELETE        &amp;#039;D&amp;#039;             bank deletion event&lt;br /&gt;
 E_REPLACE       &amp;#039;R&amp;#039;             bank replacement event&lt;br /&gt;
 F_IID           Encode(&amp;quot;iid&amp;quot;)   internal identifier (IID) field NCode&lt;br /&gt;
 M_READ          Encode(&amp;quot;RED&amp;quot;)   read message NCode&lt;br /&gt;
 F_*                             see API for full list of fields&lt;br /&gt;
 M_*                             see API for full list of messages&lt;br /&gt;
&lt;br /&gt;
= FUNCTIONS =&lt;br /&gt;
 BankExists (NCode_t, string)    check for a bank of type in dir&lt;br /&gt;
 string Decode (NCode_t)         NCode_t to string&lt;br /&gt;
 NCode_t Encode (string)         string to NCode_t&lt;br /&gt;
 ostream &amp;lt;&amp;lt; Exception_t          write AMOS exception info to stream&lt;br /&gt;
 ostream &amp;lt;&amp;lt; exception            write std exception info to stream&lt;br /&gt;
 readLE (istream, int*)          read a little-endian int from a stream&lt;br /&gt;
 writeLE (ostream, int*)         write a little-endian int to a stream&lt;br /&gt;
 char Qual2Char (uint8_t)        convert a qual score to a viewable char&lt;br /&gt;
 uint8_t Char2Qual (char)        convert a viewable qual char to a qual score&lt;br /&gt;
 SafeCalloc (size_t, size_t)     same as calloc but throws AMOS exception&lt;br /&gt;
 SafeMalloc (size_t)             same as malloc but throws AMOS exception&lt;br /&gt;
 SafeRealloc (void*, size_t)     same as realloc but throws AMOS exception&lt;br /&gt;
 SafeStrdup (const char*)        same as strdup but throws AMOS exception &lt;br /&gt;
&lt;br /&gt;
= CLASSES =&lt;br /&gt;
 Bank_t                         random access bank&lt;br /&gt;
      BankStream_t              stream-style access bank&lt;br /&gt;
 Exception_t                    general exception&lt;br /&gt;
     AlignmentException_t       alignment error exception&lt;br /&gt;
     AllocException_t           allocation error exception&lt;br /&gt;
     ArgumentException_t        logical parameter error exception&lt;br /&gt;
     IOException_t              I/O error exception&lt;br /&gt;
 IBankable_t                    bank-able object interface&lt;br /&gt;
     Universal_t                bank-able and message-able object&lt;br /&gt;
          Contig_t&lt;br /&gt;
          Feature_t&lt;br /&gt;
          Fragment_t&lt;br /&gt;
          Group_t&lt;br /&gt;
          Index_t&lt;br /&gt;
          Kmer_t&lt;br /&gt;
          Layout_t&lt;br /&gt;
          Library_t&lt;br /&gt;
          Link_t&lt;br /&gt;
               ContigLink_t&lt;br /&gt;
               ScaffoldLink_t&lt;br /&gt;
               Edge_t&lt;br /&gt;
                    ContigEdge_t&lt;br /&gt;
                    ScaffoldEdge_t&lt;br /&gt;
          Matepair_t&lt;br /&gt;
          Overlap_t&lt;br /&gt;
          Scaffold_t&lt;br /&gt;
          Sequence_t&lt;br /&gt;
               Contig_t&lt;br /&gt;
               Read_t&lt;br /&gt;
 IMessageable_t                 message-able object interface&lt;br /&gt;
     Distribution_t&lt;br /&gt;
     IDMap_t                    IID, EID, BID mapping&lt;br /&gt;
     Tile_t&lt;br /&gt;
     Universal_t*&lt;br /&gt;
 Message_t                      message I/O class&lt;br /&gt;
 Range_t                        linear range&lt;br /&gt;
 BankSet_t                      complete set of banks hashed by NCode&lt;br /&gt;
 BankStreamSet_t                complete set of bank streams hashed by NCode&lt;br /&gt;
 UniversalSet_t                 complete set of universals hashed by NCode&lt;br /&gt;
&lt;br /&gt;
= EXAMPLES =&lt;br /&gt;
== MESSAGE to BANK ==&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 #include &amp;lt;foundation_AMOS.hh&amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace AMOS; &lt;br /&gt;
 &lt;br /&gt;
 int main ( )&lt;br /&gt;
 {&lt;br /&gt;
   Message_t msg;&lt;br /&gt;
   Universal_t obj;&lt;br /&gt;
   BankStream_t bank(Universal_t::NCODE); &lt;br /&gt;
   &lt;br /&gt;
   try {&lt;br /&gt;
     bank.create (&amp;quot;bankdir&amp;quot;);&lt;br /&gt;
     while ( msg.read (cin) )   // gets next message from cin&lt;br /&gt;
     {&lt;br /&gt;
       obj.readMessage (msg);   // gets obj from msg&lt;br /&gt;
       bank &amp;lt;&amp;lt; obj;             // appends obj to bank&lt;br /&gt;
     }&lt;br /&gt;
     bank.close( );&lt;br /&gt;
   }&lt;br /&gt;
   catch (Exception_t &amp;amp; e) {&lt;br /&gt;
     cerr &amp;lt;&amp;lt; &amp;quot;ERROR: -- AMOS Exception --&amp;quot; &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; e;&lt;br /&gt;
   }&lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== BANK to MESSAGE ==&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 int main ( )&lt;br /&gt;
 {&lt;br /&gt;
   Message_t msg;&lt;br /&gt;
   Universal_t obj;&lt;br /&gt;
   BankStream_t bank(Universal_t::NCODE); &lt;br /&gt;
 &lt;br /&gt;
   try {&lt;br /&gt;
     bank.open (&amp;quot;bankdir&amp;quot;);&lt;br /&gt;
     while ( bank &amp;gt;&amp;gt; obj )      // fetches next banked object&lt;br /&gt;
     {&lt;br /&gt;
       obj.writeMessage (msg);  // writes the obj to msg&lt;br /&gt;
       msg.write (cout);        // writes message to cout&lt;br /&gt;
     }&lt;br /&gt;
     bank.close( );&lt;br /&gt;
   }&lt;br /&gt;
   catch (Exception_t &amp;amp; e) {&lt;br /&gt;
     cerr &amp;lt;&amp;lt; “FATAL: “ &amp;lt;&amp;lt; e . what( ) &amp;lt;&amp;lt; endl&lt;br /&gt;
          &amp;lt;&amp;lt; “  could not complete, abort” &amp;lt;&amp;lt; endl;&lt;br /&gt;
   }&lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RANDOM FETCH ==&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 int main ( )&lt;br /&gt;
 {&lt;br /&gt;
   ID_t iid;&lt;br /&gt;
   Read_t red;   Bank_t bank(Read_t::NCODE); &lt;br /&gt;
 &lt;br /&gt;
   bank.open (&amp;quot;bankdir&amp;quot;);&lt;br /&gt;
   if ( (iid = bank.lookupIID (“GBSAA01TF”)) != NULL_ID )&lt;br /&gt;
   {&lt;br /&gt;
     bank.fetch (iid, red);            // gets the read by IID&lt;br /&gt;
     bank.fetch (“GBSAA01TF”, red);    // gets same read by EID&lt;br /&gt;
   }&lt;br /&gt;
   bank.close( );&lt;br /&gt;
   &lt;br /&gt;
   return 0; &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/LibAMOS_Quick_Reference</id>
		<title>LibAMOS Quick Reference</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/LibAMOS_Quick_Reference"/>
				<updated>2009-11-02T02:20:28Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: Created page with &amp;#039;= libAMOS API quick reference =   #include &amp;lt;foundation_AMOS.hh&amp;gt;   all of the below    #include &amp;lt;inttypes_AMOS.hh&amp;gt;     integer typedefs  #include &amp;lt;exceptions_AMOS.hh&amp;gt;   exception …&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= libAMOS API quick reference =&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;foundation_AMOS.hh&amp;gt;   all of the below&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;inttypes_AMOS.hh&amp;gt;     integer typedefs&lt;br /&gt;
 #include &amp;lt;exceptions_AMOS.hh&amp;gt;   exception types&lt;br /&gt;
 #include &amp;lt;datatypes_AMOS.hh&amp;gt;    structs&lt;br /&gt;
 #include &amp;lt;databanks_AMOS.hh&amp;gt;    bank types&lt;br /&gt;
 #include &amp;lt;messages_AMOS.hh&amp;gt;     message types and message NCodes&lt;br /&gt;
 #include &amp;lt;universals_AMOS.hh&amp;gt;   assembly classes&lt;br /&gt;
&lt;br /&gt;
= TERMINOLOGY = &lt;br /&gt;
 IID             internal integer identifier and object reference&lt;br /&gt;
 EID             external string identifier&lt;br /&gt;
 BID             bank specific identifier (index of the file store)&lt;br /&gt;
 3-Code          3-character identifier string for objects and fields&lt;br /&gt;
 N-Code          an integer representation of a 3-code (Encode/Decode functions)&lt;br /&gt;
 message         a single curly-bracketed AMOS message&lt;br /&gt;
 sub-message     a single curly-bracketed AMOS message contained by another&lt;br /&gt;
 normal           ---a---&amp;gt;  ---b---&amp;gt;&lt;br /&gt;
 anti-normal     &amp;lt;---a---  &amp;lt;---b---&lt;br /&gt;
 innie            ---a---&amp;gt; &amp;lt;---b---&lt;br /&gt;
 outie           &amp;lt;---a---   ---b---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= GLOBAL NAMESPACE =&lt;br /&gt;
== TYPEDEFS ==&lt;br /&gt;
 [u]int(bits)_t  signed or unsigned 8,16,32,64 bit integers&lt;br /&gt;
 &lt;br /&gt;
 ID_t            uint32_t        integer identifier&lt;br /&gt;
 NCode_t         uint32_t        integer object identifier&lt;br /&gt;
 SD_t            uint32_t        standard deviation&lt;br /&gt;
 Size_t          int32_t         size type&lt;br /&gt;
 Status_t        char            object status&lt;br /&gt;
 Pos_t           int32_t         position type &lt;br /&gt;
&lt;br /&gt;
= &amp;quot;AMOS&amp;quot; NAMESPACE =&lt;br /&gt;
== CONSTANTS ==&lt;br /&gt;
 NCODE_SIZE      3               length of NCode string&lt;br /&gt;
 NULL_NCODE      0               null object code&lt;br /&gt;
 NULL_ID         0               null identifier&lt;br /&gt;
 NULL_STATUS     0               null status&lt;br /&gt;
 MIN_QUALITY     &amp;#039;0&amp;#039;             minimum quality score&lt;br /&gt;
 MAX_QUALITY     &amp;#039;0&amp;#039; + 63        maximum quality score&lt;br /&gt;
 NULL_CHAR       &amp;#039;\0&amp;#039;            null character&lt;br /&gt;
 NL_CHAR         &amp;#039;\n&amp;#039;            newline character&lt;br /&gt;
 NULL_STRING     string(&amp;quot;&amp;quot;)      null string&lt;br /&gt;
 �&lt;br /&gt;
 MAX_ID          (1&amp;lt;&amp;lt;32)-1       maximum identifier&lt;br /&gt;
 MAX_SIZE        (1&amp;lt;&amp;lt;31)-1       maximum size&lt;br /&gt;
 MAX_POS         (1&amp;lt;&amp;lt;31)-1       maximum position&lt;br /&gt;
 &lt;br /&gt;
 E_ADD           &amp;#039;A&amp;#039;             bank addition event&lt;br /&gt;
 E_DELETE        &amp;#039;D&amp;#039;             bank deletion event&lt;br /&gt;
 E_REPLACE       &amp;#039;R&amp;#039;             bank replacement event&lt;br /&gt;
 F_IID           Encode(&amp;quot;iid&amp;quot;)   internal identifier (IID) field NCode&lt;br /&gt;
 M_READ          Encode(&amp;quot;RED&amp;quot;)   read message NCode&lt;br /&gt;
 F_*                             see API for full list of fields&lt;br /&gt;
 M_*                             see API for full list of messages&lt;br /&gt;
&lt;br /&gt;
= FUNCTIONS =&lt;br /&gt;
 BankExists (NCode_t, string)    check for a bank of type in dir&lt;br /&gt;
 string Decode (NCode_t)         NCode_t to string&lt;br /&gt;
 NCode_t Encode (string)         string to NCode_t&lt;br /&gt;
 ostream &amp;lt;&amp;lt; Exception_t          write AMOS exception info to stream&lt;br /&gt;
 ostream &amp;lt;&amp;lt; exception            write std exception info to stream&lt;br /&gt;
 readLE (istream, int*)          read a little-endian int from a stream&lt;br /&gt;
 writeLE (ostream, int*)         write a little-endian int to a stream&lt;br /&gt;
 char Qual2Char (uint8_t)        convert a qual score to a viewable char&lt;br /&gt;
 uint8_t Char2Qual (char)        convert a viewable qual char to a qual score&lt;br /&gt;
 SafeCalloc (size_t, size_t)     same as calloc but throws AMOS exception&lt;br /&gt;
 SafeMalloc (size_t)             same as malloc but throws AMOS exception&lt;br /&gt;
 SafeRealloc (void*, size_t)     same as realloc but throws AMOS exception&lt;br /&gt;
 SafeStrdup (const char*)        same as strdup but throws AMOS exception &lt;br /&gt;
&lt;br /&gt;
= CLASSES =&lt;br /&gt;
 Bank_t                         random access bank&lt;br /&gt;
      BankStream_t              stream-style access bank&lt;br /&gt;
 Exception_t                    general exception&lt;br /&gt;
     AlignmentException_t       alignment error exception&lt;br /&gt;
     AllocException_t           allocation error exception&lt;br /&gt;
     ArgumentException_t        logical parameter error exception&lt;br /&gt;
     IOException_t              I/O error exception&lt;br /&gt;
 IBankable_t                    bank-able object interface&lt;br /&gt;
     Universal_t                bank-able and message-able object&lt;br /&gt;
          Contig_t&lt;br /&gt;
          Feature_t&lt;br /&gt;
          Fragment_t&lt;br /&gt;
          Group_t&lt;br /&gt;
          Index_t&lt;br /&gt;
          Kmer_t&lt;br /&gt;
          Layout_t&lt;br /&gt;
          Library_t&lt;br /&gt;
          Link_t&lt;br /&gt;
               ContigLink_t&lt;br /&gt;
               ScaffoldLink_t&lt;br /&gt;
               Edge_t&lt;br /&gt;
                    ContigEdge_t&lt;br /&gt;
                    ScaffoldEdge_t&lt;br /&gt;
          Matepair_t&lt;br /&gt;
          Overlap_t&lt;br /&gt;
          Scaffold_t&lt;br /&gt;
          Sequence_t&lt;br /&gt;
               Contig_t&lt;br /&gt;
               Read_t&lt;br /&gt;
 IMessageable_t                 message-able object interface&lt;br /&gt;
     Distribution_t&lt;br /&gt;
     IDMap_t                    IID, EID, BID mapping&lt;br /&gt;
     Tile_t&lt;br /&gt;
     Universal_t*&lt;br /&gt;
 Message_t                      message I/O class&lt;br /&gt;
 Range_t                        linear range&lt;br /&gt;
 BankSet_t                      complete set of banks hashed by NCode&lt;br /&gt;
 BankStreamSet_t                complete set of bank streams hashed by NCode&lt;br /&gt;
 UniversalSet_t                 complete set of universals hashed by NCode&lt;br /&gt;
&lt;br /&gt;
= EXAMPLES =&lt;br /&gt;
== MESSAGE to BANK ==&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 #include &amp;lt;foundation_AMOS.hh&amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 using namespace AMOS; &lt;br /&gt;
 &lt;br /&gt;
 int main ( )&lt;br /&gt;
 {&lt;br /&gt;
   Message_t msg;&lt;br /&gt;
   Universal_t obj;&lt;br /&gt;
   BankStream_t bank(Universal_t::NCODE); &lt;br /&gt;
&lt;br /&gt;
   try {&lt;br /&gt;
     bank.create (&amp;quot;bankdir&amp;quot;);&lt;br /&gt;
     while ( msg.read (cin) )   // gets next message from cin&lt;br /&gt;
     {&lt;br /&gt;
       obj.readMessage (msg);   // gets obj from msg&lt;br /&gt;
       bank &amp;lt;&amp;lt; obj;             // appends obj to bank&lt;br /&gt;
     }&lt;br /&gt;
     bank.close( );&lt;br /&gt;
   }&lt;br /&gt;
   catch (Exception_t &amp;amp; e) {&lt;br /&gt;
     cerr &amp;lt;&amp;lt; &amp;quot;ERROR: -- AMOS Exception --&amp;quot; &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; e;&lt;br /&gt;
   }&lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== BANK to MESSAGE ==&lt;br /&gt;
 &lt;br /&gt;
  ...&lt;br /&gt;
  int main ( )&lt;br /&gt;
 {&lt;br /&gt;
   Message_t msg;&lt;br /&gt;
   Universal_t obj;&lt;br /&gt;
   BankStream_t bank(Universal_t::NCODE); &lt;br /&gt;
&lt;br /&gt;
   try {&lt;br /&gt;
     bank.open (&amp;quot;bankdir&amp;quot;);&lt;br /&gt;
     while ( bank &amp;gt;&amp;gt; obj )      // fetches next banked object&lt;br /&gt;
     {&lt;br /&gt;
       obj.writeMessage (msg);  // writes the obj to msg&lt;br /&gt;
       msg.write (cout);        // writes message to cout&lt;br /&gt;
     }&lt;br /&gt;
     bank.close( );&lt;br /&gt;
   }&lt;br /&gt;
   catch (Exception_t &amp;amp; e) {&lt;br /&gt;
     cerr &amp;lt;&amp;lt; “FATAL: “ &amp;lt;&amp;lt; e . what( ) &amp;lt;&amp;lt; endl&lt;br /&gt;
          &amp;lt;&amp;lt; “  could not complete, abort” &amp;lt;&amp;lt; endl;&lt;br /&gt;
   }&lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RANDOM FETCH ==&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 int main ( )&lt;br /&gt;
 {&lt;br /&gt;
   ID_t iid;&lt;br /&gt;
   Read_t red;   Bank_t bank(Read_t::NCODE); &lt;br /&gt;
&lt;br /&gt;
   bank.open (&amp;quot;bankdir&amp;quot;);&lt;br /&gt;
   if ( (iid = bank.lookupIID (“GBSAA01TF”)) != NULL_ID )&lt;br /&gt;
   {&lt;br /&gt;
     bank.fetch (iid, red);            // gets the read by IID&lt;br /&gt;
     bank.fetch (“GBSAA01TF”, red);    // gets same read by EID&lt;br /&gt;
   }&lt;br /&gt;
   bank.close( );&lt;br /&gt;
   &lt;br /&gt;
   return 0; &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Message_Grammar</id>
		<title>Message Grammar</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Message_Grammar"/>
				<updated>2009-11-02T02:16:11Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AMOS 3-code message specification&lt;br /&gt;
&lt;br /&gt;
v1.3.0&lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
&lt;br /&gt;
* Whitespace is not allowed between symbols unless otherwise noted.&lt;br /&gt;
* Character symbols are defined with Perl style character classes.&lt;br /&gt;
* A multi-line field may not contain any lines that consist of a single period followed by a newline, as this is reserved for terminating the multi-line field.&lt;br /&gt;
* Modeled on Celera Assembler 3-code format: &amp;quot;A Whole-Genome Assembly of Drosophila.&amp;quot; Myers E, Sutton G, et. al., Science, 2000. 287(5461):2196-204.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GRAMMAR:&lt;br /&gt;
&lt;br /&gt;
   Char:&lt;br /&gt;
 	[^\n]&lt;br /&gt;
 &lt;br /&gt;
   Chars:&lt;br /&gt;
 	Char&lt;br /&gt;
 	Chars Char&lt;br /&gt;
 &lt;br /&gt;
   Field:&lt;br /&gt;
 	Message&lt;br /&gt;
 	FieldName FieldSeparator Line&lt;br /&gt;
 	FieldName FieldSeparator NewLine Lines FieldTerminator NewLine&lt;br /&gt;
 &lt;br /&gt;
  Fields:&lt;br /&gt;
 	Field&lt;br /&gt;
 	Fields Field&lt;br /&gt;
 &lt;br /&gt;
  FieldName:&lt;br /&gt;
 	LowerChar LowerChar LowerChar&lt;br /&gt;
 &lt;br /&gt;
  FieldSeparator:&lt;br /&gt;
 	[:]&lt;br /&gt;
 &lt;br /&gt;
  FieldTerminator:&lt;br /&gt;
 	[.]&lt;br /&gt;
 &lt;br /&gt;
  Line:&lt;br /&gt;
 	Chars NewLine&lt;br /&gt;
 &lt;br /&gt;
  Lines:&lt;br /&gt;
 	Line&lt;br /&gt;
 	Lines Line&lt;br /&gt;
 &lt;br /&gt;
  LowerChar:&lt;br /&gt;
 	[a-z0-9]&lt;br /&gt;
 &lt;br /&gt;
  Message:&lt;br /&gt;
 	MessageOpen MessageType NewLine Fields MessageClose NewLine&lt;br /&gt;
 &lt;br /&gt;
  MessageClose:&lt;br /&gt;
 	[}]&lt;br /&gt;
 &lt;br /&gt;
  MessageOpen:&lt;br /&gt;
 	[{]&lt;br /&gt;
 &lt;br /&gt;
  MessageType:&lt;br /&gt;
 	UpperChar UpperChar UpperChar&lt;br /&gt;
 &lt;br /&gt;
  NewLine:&lt;br /&gt;
 	[\n]&lt;br /&gt;
 &lt;br /&gt;
  UpperChar:&lt;br /&gt;
 	[A-Z0-9]&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Message_Grammar</id>
		<title>Message Grammar</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Message_Grammar"/>
				<updated>2009-11-02T02:14:58Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: Created page with &amp;#039;AMOS 3-code message specification  v1.3.0  NOTES:  * Whitespace is not allowed between symbols unless otherwise noted. * Character symbols are defined with Perl style character c…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AMOS 3-code message specification&lt;br /&gt;
&lt;br /&gt;
v1.3.0&lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
&lt;br /&gt;
* Whitespace is not allowed between symbols unless otherwise noted.&lt;br /&gt;
* Character symbols are defined with Perl style character classes.&lt;br /&gt;
* A multi-line field may not contain any lines that consist of a single period followed by a newline, as this is reserved for terminating the multi-line field.&lt;br /&gt;
* Modeled on Celera Assembler 3-code format.&lt;br /&gt;
  &amp;quot;A Whole-Genome Assembly of Drosophila.&amp;quot; Myers E, Sutton G, et. al., Science, 2000. 287(5461):2196-204.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GRAMMAR:&lt;br /&gt;
&lt;br /&gt;
 Char:&lt;br /&gt;
	[^\n]&lt;br /&gt;
&lt;br /&gt;
 Chars:&lt;br /&gt;
	Char&lt;br /&gt;
	Chars Char&lt;br /&gt;
&lt;br /&gt;
 Field:&lt;br /&gt;
	Message&lt;br /&gt;
	FieldName FieldSeparator Line&lt;br /&gt;
	FieldName FieldSeparator NewLine Lines FieldTerminator NewLine&lt;br /&gt;
&lt;br /&gt;
 Fields:&lt;br /&gt;
	Field&lt;br /&gt;
	Fields Field&lt;br /&gt;
&lt;br /&gt;
 FieldName:&lt;br /&gt;
	LowerChar LowerChar LowerChar&lt;br /&gt;
&lt;br /&gt;
 FieldSeparator:&lt;br /&gt;
	[:]&lt;br /&gt;
&lt;br /&gt;
 FieldTerminator:&lt;br /&gt;
	[.]&lt;br /&gt;
&lt;br /&gt;
 Line:&lt;br /&gt;
	Chars NewLine&lt;br /&gt;
&lt;br /&gt;
 Lines:&lt;br /&gt;
	Line&lt;br /&gt;
	Lines Line&lt;br /&gt;
&lt;br /&gt;
 LowerChar:&lt;br /&gt;
	[a-z0-9]&lt;br /&gt;
&lt;br /&gt;
 Message:&lt;br /&gt;
	MessageOpen MessageType NewLine Fields MessageClose NewLine&lt;br /&gt;
&lt;br /&gt;
 MessageClose:&lt;br /&gt;
	[}]&lt;br /&gt;
&lt;br /&gt;
 MessageOpen:&lt;br /&gt;
	[{]&lt;br /&gt;
&lt;br /&gt;
 MessageType:&lt;br /&gt;
	UpperChar UpperChar UpperChar&lt;br /&gt;
&lt;br /&gt;
 NewLine:&lt;br /&gt;
	[\n]&lt;br /&gt;
&lt;br /&gt;
 UpperChar:&lt;br /&gt;
	[A-Z0-9]&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Message_Types</id>
		<title>Message Types</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Message_Types"/>
				<updated>2009-11-02T02:13:04Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AMOS 3-code message types&lt;br /&gt;
&lt;br /&gt;
v1.3.0&lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
&lt;br /&gt;
* See message_grammar.rtf for the message file format definition.&lt;br /&gt;
* All fields are optional, but some programs might not like missing fields (e.g. a seq field without a qlt field).Empty fields are not allowed. If there is no data for a given filed, omit it from the message.&lt;br /&gt;
* Acceptable field data is represented by Perl regular expressions. All regular expressions will be contained in parens () or brackets []. If uncontained, interpret characters as literal.&lt;br /&gt;
* Field or message references are contained in &amp;lt;&amp;gt;.&lt;br /&gt;
Strict field ordering is not required. The ordering of fields in this definition is arbitrary.&lt;br /&gt;
* Message inheritance is noted in C++ style. Fields inherited from a parent message will be listed but not described.&lt;br /&gt;
* Ranges are specified as a pair of positions [x,y) where x is exclusive and y is inclusive. Thus, the range 4,6 would represent the 2 symbols at positions 4 and 5. Sequence positions are also indexed by this gap coordinate system, which essentially translates to a 0 based indexing scheme. e.g. the range [2,5) for the list 0,1,2,3,4,5,6 would define the sublist 2,3,4. Reversed ranges are also allowed, for example (5,2] would define the subset 4,3,2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TYPES:&lt;br /&gt;
&lt;br /&gt;
== Universal_t : IBankable_t, IMessagable_t ==&lt;br /&gt;
 &lt;br /&gt;
 {UNV&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* act - Action. [A]dd, [D]elete, [R]eplace message. If absent, default action will be addition.&lt;br /&gt;
* iid – Internal (AMOS) ID. This integer ID must be unique among all objects of the same type. This is the ID used for all object links and thus is mandatory if other objects are to link to this one.&lt;br /&gt;
* eid - External ID. This string ID must be unique among all objects of the same type. The ID may not contain any newlines, but may be any length.&lt;br /&gt;
* com - Free-from comment field.&lt;br /&gt;
* flg – Two generic boolean flags (A/B), default to zero if unspecified.&lt;br /&gt;
* sts – Object status character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contig_t : Sequence_t ==&lt;br /&gt;
  &lt;br /&gt;
 {CTG&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  seq:(\n(.*\n)*).&lt;br /&gt;
  qlt:(\n(.*\n)*).&lt;br /&gt;
  &amp;lt;TLE message&amp;gt;*&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;TLE message&amp;gt; - Tiling of underlying reads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ContigEdge_t : ContigLink_t, Edge_t ==&lt;br /&gt;
 &lt;br /&gt;
 {CTE&lt;br /&gt;
   act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  nds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
  adj:[NAOI]&lt;br /&gt;
  std:(\d+)&lt;br /&gt;
  sze:(-?\d+)&lt;br /&gt;
  typ:[XMOPAS]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
  lnk:(\n(&amp;lt;iid&amp;gt;\n)*)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* obj – Removed. All nodes are Contig_t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ContigLink_t : Link_t ==&lt;br /&gt;
&lt;br /&gt;
 {CTL&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  nds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
  adj:[NAOI]&lt;br /&gt;
  std:(\d+)&lt;br /&gt;
  sze:(-?\d+)&lt;br /&gt;
  typ:[XMOPAS]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* obj – Removed. All nodes are Contig_t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Distribution_t : IMessagable_t ==&lt;br /&gt;
&lt;br /&gt;
 {DST&lt;br /&gt;
  mea:(\d+)&lt;br /&gt;
  std:(\d+)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* mea - Mean.&lt;br /&gt;
* std - Standard deviation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Edge_t : Link_t ==&lt;br /&gt;
&lt;br /&gt;
 {EDG&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  nds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
  adj:[NAOI]&lt;br /&gt;
  std:(\d+)&lt;br /&gt;
  sze:(-?\d+)&lt;br /&gt;
  typ:[XMOPAS]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
  lnk:(\n(&amp;lt;iid&amp;gt;\n)*).&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* lnk - List of bundled links, referenced by their IIDs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Feature_t : Universal_t ==&lt;br /&gt;
&lt;br /&gt;
 {FEA&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  clr:(\d+,\d+)&lt;br /&gt;
  typ:[RUJCOP.]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
* clr – Range/position of the feature.&lt;br /&gt;
* typ – Feature type. [R]epeat, [U]nitig, [J]oin, [C]overage, [O]RF, [P]olymorphism.&lt;br /&gt;
* src - Source of the feature, e.g. a contig, referenced by its IID and type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fragment_t : Universal_t ==&lt;br /&gt;
 &lt;br /&gt;
 {FRG&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  lib:&amp;lt;iid&amp;gt;&lt;br /&gt;
  rds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  sze:(\d+)&lt;br /&gt;
  typ:[XBITW]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
* lib - Parent library, referenced by its IID.&lt;br /&gt;
* rds – The paired sequencing reads, referenced by their IIDs.&lt;br /&gt;
* sze - Size of the fragment, if known.&lt;br /&gt;
* typ - Type of fragment. [X]Other, [B]AC, [I]nsert, [T]ransposon, [W]alk.&lt;br /&gt;
* src - Source of this piece of DNA, e.g. a BAC fragment, referenced by its IID and type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Group_t : Universal_t ==&lt;br /&gt;
 &lt;br /&gt;
 {GRP&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  mbr:(\n(&amp;lt;iid&amp;gt;\n)*).&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt; &lt;br /&gt;
 }  &lt;br /&gt;
&lt;br /&gt;
* mbr - List of group members, referenced by IID.&lt;br /&gt;
* obj - The object type of the members.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== IDMap_t : IMessagable_t ==&lt;br /&gt;
 &lt;br /&gt;
 {MAP&lt;br /&gt;
  sze:(\d+)&lt;br /&gt;
  map:(\n(&amp;lt;bid&amp;gt;\t&amp;lt;iid&amp;gt;\t&amp;lt;eid&amp;gt;\n)*).&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
* sze - Number of ID triples in the map.&lt;br /&gt;
* map - List of ID triples, BID &amp;lt;-&amp;gt; IID &amp;lt;-&amp;gt; EID.&lt;br /&gt;
* obj - The object type of the ID triples.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index_t : Universal_t ==&lt;br /&gt;
 &lt;br /&gt;
 {IDX&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  sze:(\d+)&lt;br /&gt;
  map:(\n(&amp;lt;iid&amp;gt;\t&amp;lt;iid&amp;gt;\n)*).&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
* sze - Number of ID pairs in the index.&lt;br /&gt;
* map - List of ID pairs, IID -&amp;gt; IID&lt;br /&gt;
* obj - The object type of the ID pairs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kmer_t : Universal_t ==&lt;br /&gt;
&lt;br /&gt;
 {KMR&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  cnt:(\d+)&lt;br /&gt;
  seq:([ACGT]+)&lt;br /&gt;
  rds:(\n(&amp;lt;iid&amp;gt;\n)*).&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* cnt - Number of occurrences of this Kmer.&lt;br /&gt;
* seq - Sequence of this Kmer.&lt;br /&gt;
* rds - List of reads that contain this Kmer, referenced by their IIDs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Layout_t : Universal_t ==&lt;br /&gt;
&lt;br /&gt;
 {LAY&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  &amp;lt;TLE message&amp;gt;* &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;TLE message&amp;gt; - Tiling of underlying reads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Library_t : Universal_t ==&lt;br /&gt;
 &lt;br /&gt;
 {LIB&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  &amp;lt;DST message&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;DST message&amp;gt; - Library size distribution stats.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Link_t : Universal_t ==&lt;br /&gt;
 &lt;br /&gt;
 {LNK&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  nds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
  adj:[NAOI]&lt;br /&gt;
  std:(\d+) &lt;br /&gt;
  sze:(-?\d+)&lt;br /&gt;
  typ:[XMOPAS]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* nds – The linked nodes, referenced by their IIDs.&lt;br /&gt;
* obj – The object type of the nodes.&lt;br /&gt;
* adj - Node adjacency. [N]ormal, [A]nti-normal, [I]nnie, [O]utie which are EB, BE, EE, BB adjacencies respectively.&lt;br /&gt;
* std - Standard deviation of the link size.&lt;br /&gt;
* sze - Size of link.&lt;br /&gt;
* typ - Type of link. [X]Other, [M]atepair, [O]verlap, [P]hysical, [A]lignment, [S]ynteny.&lt;br /&gt;
* src - Source of the link, e.g. fragment information, referenced by its IID and type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overlap_t : Universal_t ==&lt;br /&gt;
&lt;br /&gt;
 {OVL&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  rds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  adj:[NAIO]&lt;br /&gt;
  ahg:(-?\d+)&lt;br /&gt;
  bhg:(-?\d+)&lt;br /&gt;
  scr:(\d+)&lt;br /&gt;
  flg:([01]{3})&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* rds – The overlapping reads, referenced by their IIDs.&lt;br /&gt;
* adj - Read adjacency. [N]ormal, [A]nti-normal, [I]nnie, [O]utie which are EB, BE, EE, BB overlaps respectively.&lt;br /&gt;
* ahg - Ahang. Length of the non-overlapping portion of the first read.&lt;br /&gt;
* bhg - Bhang. Length of the non-overlapping portion of the second read.&lt;br /&gt;
* scr – An unsigned integer overlap score.&lt;br /&gt;
* flg – Universal_t flags plus one additional flag (A/B/C), default to zero if unspecified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Read_t : Sequence_t ==&lt;br /&gt;
&lt;br /&gt;
 {RED&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  frg:&amp;lt;iid&amp;gt;&lt;br /&gt;
  typ:[XECBW]&lt;br /&gt;
  clr:(\d+,\d+)&lt;br /&gt;
  vcr:(\d+,\d+)&lt;br /&gt;
  qcr:(\d+,\d+)&lt;br /&gt;
  pos:(-?\d+)&lt;br /&gt;
  bcp:(\n(\d+\n)*).&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* frg - The parent fragment, referenced by its IID.&lt;br /&gt;
* typ - Type of read. [X]Other, [E]nd, [C]ontig, [B]AC, [W]alk.&lt;br /&gt;
* clr - The acting clear range.&lt;br /&gt;
* vcr - Vector clear range.&lt;br /&gt;
* qcr - Quality clear range.&lt;br /&gt;
* pos - Approximate position on the parent fragment. Positive if counting from left and oriented forward, negative if counting from right and reverse orientated. 0 if unknown.&lt;br /&gt;
* bcp – Absolute base call positions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scaffold_t : Universal_t ==&lt;br /&gt;
 &lt;br /&gt;
 {SCF&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  edg:(\n(&amp;lt;iid&amp;gt;\n)*).&lt;br /&gt;
  &amp;lt;TLE message&amp;gt;*&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* edg - List of contig edges, referenced by their IIDs.&lt;br /&gt;
* &amp;lt;TLE message&amp;gt; - Tiling of the underlying contigs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ScaffoldEdge_t : ScaffoldLink_t, Edge_t ==&lt;br /&gt;
 &lt;br /&gt;
 {SCE&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  nds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
  adj:[NAOI]&lt;br /&gt;
  std:(\d+)&lt;br /&gt;
  sze:(-?\d+)&lt;br /&gt;
  typ:[XMOPAS]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
  lnk:(\n(&amp;lt;iid&amp;gt;\n)*)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* obj – Removed. All nodes are Scaffold_t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ScaffoldLink_t : Link_t ==&lt;br /&gt;
&lt;br /&gt;
 {SCL&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  nds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
  adj:[NAOI]&lt;br /&gt;
  std:(\d+)&lt;br /&gt;
  sze:(-?\d+)&lt;br /&gt;
  typ:[XMOPAS]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* obj – Removed. All nodes are Scaffold_t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sequence_t : Universal_t ==&lt;br /&gt;
&lt;br /&gt;
 {SEQ&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  seq:(\n(.*\n)*).&lt;br /&gt;
  qlt:(\n(.*\n)*).&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* seq - Sequence base call information.&lt;br /&gt;
* qlt - Sequence quality information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tile_t : IMessageable_t ==&lt;br /&gt;
 &lt;br /&gt;
 {TLE&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;&lt;br /&gt;
  off:(-?\d+)&lt;br /&gt;
  clr:(\d+,\d+)&lt;br /&gt;
  gap:(\n(-?\d+\n)*).&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
* src - Tiled sequence, referenced by its IID. Type of sequence is implied by how this record is nested, e.g. a TLE in a CTG represents a RED, while a TLE in a SCF represents a CTG.&lt;br /&gt;
* off - Offset of the tile from the beginning of the reference.&lt;br /&gt;
* clr - Usable range of the tile, relative to the tile’s coordinates.&lt;br /&gt;
* gap - List of delta encoded gap positions.&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Message_Types</id>
		<title>Message Types</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Message_Types"/>
				<updated>2009-11-02T02:08:28Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: Created page with &amp;#039;AMOS 3-code message types  v1.3.0  NOTES:  - See message_grammar.rtf for the message file format definition. - All fields are optional, but some programs might not like missing f…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;AMOS 3-code message types&lt;br /&gt;
&lt;br /&gt;
v1.3.0&lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
&lt;br /&gt;
- See message_grammar.rtf for the message file format definition.&lt;br /&gt;
- All fields are optional, but some programs might not like missing fields (e.g. a seq field without a qlt field).Empty fields are not allowed. If there is no data for a given filed, omit it from the message.&lt;br /&gt;
- Acceptable field data is represented by Perl regular expressions. All regular expressions will be contained in parens () or brackets []. If uncontained, interpret characters as literal.&lt;br /&gt;
- Field or message references are contained in &amp;lt;&amp;gt;.&lt;br /&gt;
Strict field ordering is not required. The ordering of fields in this definition is arbitrary.&lt;br /&gt;
- Message inheritance is noted in C++ style. Fields inherited from a parent message will be listed but not described.&lt;br /&gt;
- Ranges are specified as a pair of positions [x,y) where x is exclusive and y is inclusive. Thus, the range 4,6 would represent the 2 symbols at positions 4 and 5. Sequence positions are also indexed by this gap coordinate system, which essentially translates to a 0 based indexing scheme. e.g. the range [2,5) for the list 0,1,2,3,4,5,6 would define the sublist 2,3,4. Reversed ranges are also allowed, for example (5,2] would define the subset 4,3,2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TYPES:&lt;br /&gt;
&lt;br /&gt;
== Universal_t : IBankable_t, IMessagable_t ==&lt;br /&gt;
 &lt;br /&gt;
 {UNV&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
act- Action. [A]dd, [D]elete, [R]eplace message. If absent, default action will be addition.&lt;br /&gt;
iid – Internal (AMOS) ID. This integer ID must be unique among all objects of the same type. This is the ID used for all object links and thus is mandatory if other objects are to link to this one.&lt;br /&gt;
eid - External ID. This string ID must be unique among all objects of the same type. The ID may not contain any newlines, but may be any length.&lt;br /&gt;
com - Free-from comment field.&lt;br /&gt;
flg – Two generic boolean flags (A/B), default to zero if unspecified.&lt;br /&gt;
sts – Object status character.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Contig_t : Sequence_t ==&lt;br /&gt;
  &lt;br /&gt;
 {CTG&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  seq:(\n(.*\n)*).&lt;br /&gt;
  qlt:(\n(.*\n)*).&lt;br /&gt;
  &amp;lt;TLE message&amp;gt;*&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;TLE message&amp;gt; - Tiling of underlying reads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ContigEdge_t : ContigLink_t, Edge_t ==&lt;br /&gt;
 &lt;br /&gt;
 {CTE&lt;br /&gt;
   act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  nds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
  adj:[NAOI]&lt;br /&gt;
  std:(\d+)&lt;br /&gt;
  sze:(-?\d+)&lt;br /&gt;
  typ:[XMOPAS]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
  lnk:(\n(&amp;lt;iid&amp;gt;\n)*)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
obj – Removed. All nodes are Contig_t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ContigLink_t : Link_t ==&lt;br /&gt;
&lt;br /&gt;
 {CTL&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  nds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
  adj:[NAOI]&lt;br /&gt;
  std:(\d+)&lt;br /&gt;
  sze:(-?\d+)&lt;br /&gt;
  typ:[XMOPAS]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
obj – Removed. All nodes are Contig_t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Distribution_t : IMessagable_t ==&lt;br /&gt;
&lt;br /&gt;
 {DST&lt;br /&gt;
  mea:(\d+)&lt;br /&gt;
  std:(\d+)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
mea - Mean.&lt;br /&gt;
std - Standard deviation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Edge_t : Link_t ==&lt;br /&gt;
&lt;br /&gt;
 {EDG&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  nds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
  adj:[NAOI]&lt;br /&gt;
  std:(\d+)&lt;br /&gt;
  sze:(-?\d+)&lt;br /&gt;
  typ:[XMOPAS]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
  lnk:(\n(&amp;lt;iid&amp;gt;\n)*).&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
lnk - List of bundled links, referenced by their IIDs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Feature_t : Universal_t ==&lt;br /&gt;
&lt;br /&gt;
 {FEA&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  clr:(\d+,\d+)&lt;br /&gt;
  typ:[RUJCOP.]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
clr – Range/position of the feature.&lt;br /&gt;
typ – Feature type. [R]epeat, [U]nitig, [J]oin, [C]overage, [O]RF, [P]olymorphism.&lt;br /&gt;
src - Source of the feature, e.g. a contig, referenced by its IID and type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fragment_t : Universal_t ==&lt;br /&gt;
 &lt;br /&gt;
 {FRG&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  lib:&amp;lt;iid&amp;gt;&lt;br /&gt;
  rds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  sze:(\d+)&lt;br /&gt;
  typ:[XBITW]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
lib - Parent library, referenced by its IID.&lt;br /&gt;
rds – The paired sequencing reads, referenced by their IIDs.&lt;br /&gt;
sze - Size of the fragment, if known.&lt;br /&gt;
typ - Type of fragment. [X]Other, [B]AC, [I]nsert, [T]ransposon, [W]alk.&lt;br /&gt;
src - Source of this piece of DNA, e.g. a BAC fragment, referenced by its IID and type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Group_t : Universal_t ==&lt;br /&gt;
 &lt;br /&gt;
 {GRP&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  mbr:(\n(&amp;lt;iid&amp;gt;\n)*).&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt; &lt;br /&gt;
 }  &lt;br /&gt;
&lt;br /&gt;
mbr - List of group members, referenced by IID.&lt;br /&gt;
obj - The object type of the members.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== IDMap_t : IMessagable_t ==&lt;br /&gt;
 &lt;br /&gt;
 {MAP&lt;br /&gt;
 sze:(\d+)&lt;br /&gt;
 map:(\n(&amp;lt;bid&amp;gt;\t&amp;lt;iid&amp;gt;\t&amp;lt;eid&amp;gt;\n)*).&lt;br /&gt;
 obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
sze - Number of ID triples in the map.&lt;br /&gt;
map - List of ID triples, BID &amp;lt;-&amp;gt; IID &amp;lt;-&amp;gt; EID.&lt;br /&gt;
obj - The object type of the ID triples.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Index_t : Universal_t ==&lt;br /&gt;
 &lt;br /&gt;
 {IDX&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  sze:(\d+)&lt;br /&gt;
  map:(\n(&amp;lt;iid&amp;gt;\t&amp;lt;iid&amp;gt;\n)*).&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
sze - Number of ID pairs in the index.&lt;br /&gt;
map - List of ID pairs, IID -&amp;gt; IID&lt;br /&gt;
obj - The object type of the ID pairs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Kmer_t : Universal_t ==&lt;br /&gt;
&lt;br /&gt;
 {KMR&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  cnt:(\d+)&lt;br /&gt;
  seq:([ACGT]+)&lt;br /&gt;
  rds:(\n(&amp;lt;iid&amp;gt;\n)*).&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
cnt - Number of occurrences of this Kmer.&lt;br /&gt;
seq - Sequence of this Kmer.&lt;br /&gt;
rds - List of reads that contain this Kmer, referenced by their IIDs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Layout_t : Universal_t ==&lt;br /&gt;
&lt;br /&gt;
 {LAY&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  &amp;lt;TLE message&amp;gt;* &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TLE message&amp;gt; - Tiling of underlying reads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Library_t : Universal_t ==&lt;br /&gt;
 &lt;br /&gt;
 {LIB&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  &amp;lt;DST message&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;DST message&amp;gt; - Library size distribution stats.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Link_t : Universal_t ==&lt;br /&gt;
 &lt;br /&gt;
 {LNK&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  nds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
  adj:[NAOI]&lt;br /&gt;
  std:(\d+) &lt;br /&gt;
  sze:(-?\d+)&lt;br /&gt;
  typ:[XMOPAS]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
nds – The linked nodes, referenced by their IIDs.&lt;br /&gt;
obj – The object type of the nodes.&lt;br /&gt;
adj - Node adjacency. [N]ormal, [A]nti-normal, [I]nnie, [O]utie which are EB, BE, EE, BB adjacencies respectively.&lt;br /&gt;
std - Standard deviation of the link size.&lt;br /&gt;
sze - Size of link.&lt;br /&gt;
typ - Type of link. [X]Other, [M]atepair, [O]verlap, [P]hysical, [A]lignment, [S]ynteny.&lt;br /&gt;
src - Source of the link, e.g. fragment information, referenced by its IID and type.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overlap_t : Universal_t ==&lt;br /&gt;
&lt;br /&gt;
 {OVL&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  rds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  adj:[NAIO]&lt;br /&gt;
  ahg:(-?\d+)&lt;br /&gt;
  bhg:(-?\d+)&lt;br /&gt;
  scr:(\d+)&lt;br /&gt;
  flg:([01]{3})&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
rds – The overlapping reads, referenced by their IIDs.&lt;br /&gt;
adj - Read adjacency. [N]ormal, [A]nti-normal, [I]nnie, [O]utie which are EB, BE, EE, BB overlaps respectively.&lt;br /&gt;
ahg - Ahang. Length of the non-overlapping portion of the first read.&lt;br /&gt;
bhg - Bhang. Length of the non-overlapping portion of the second read.&lt;br /&gt;
scr – An unsigned integer overlap score.&lt;br /&gt;
flg – Universal_t flags plus one additional flag (A/B/C), default to zero if unspecified.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Read_t : Sequence_t ==&lt;br /&gt;
&lt;br /&gt;
 {RED&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  frg:&amp;lt;iid&amp;gt;&lt;br /&gt;
  typ:[XECBW]&lt;br /&gt;
  clr:(\d+,\d+)&lt;br /&gt;
  vcr:(\d+,\d+)&lt;br /&gt;
  qcr:(\d+,\d+)&lt;br /&gt;
  pos:(-?\d+)&lt;br /&gt;
  bcp:(\n(\d+\n)*).&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
frg - The parent fragment, referenced by its IID.&lt;br /&gt;
typ - Type of read. [X]Other, [E]nd, [C]ontig, [B]AC, [W]alk.&lt;br /&gt;
clr - The acting clear range.&lt;br /&gt;
vcr - Vector clear range.&lt;br /&gt;
qcr - Quality clear range.&lt;br /&gt;
pos - Approximate position on the parent fragment. Positive if counting from left and oriented forward, negative if counting from right and reverse orientated. 0 if unknown.&lt;br /&gt;
bcp – Absolute base call positions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scaffold_t : Universal_t ==&lt;br /&gt;
 &lt;br /&gt;
 {SCF&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  edg:(\n(&amp;lt;iid&amp;gt;\n)*).&lt;br /&gt;
  &amp;lt;TLE message&amp;gt;*&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
edg - List of contig edges, referenced by their IIDs.&lt;br /&gt;
&amp;lt;TLE message&amp;gt; - Tiling of the underlying contigs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ScaffoldEdge_t : ScaffoldLink_t, Edge_t ==&lt;br /&gt;
 &lt;br /&gt;
 {SCE&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  nds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
  adj:[NAOI]&lt;br /&gt;
  std:(\d+)&lt;br /&gt;
  sze:(-?\d+)&lt;br /&gt;
  typ:[XMOPAS]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
  lnk:(\n(&amp;lt;iid&amp;gt;\n)*)&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
obj – Removed. All nodes are Scaffold_t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ScaffoldLink_t : Link_t ==&lt;br /&gt;
&lt;br /&gt;
 {SCL&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  nds:&amp;lt;iid&amp;gt;,&amp;lt;iid&amp;gt;&lt;br /&gt;
  obj:&amp;lt;message type&amp;gt;&lt;br /&gt;
  adj:[NAOI]&lt;br /&gt;
  std:(\d+)&lt;br /&gt;
  sze:(-?\d+)&lt;br /&gt;
  typ:[XMOPAS]&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;,&amp;lt;message type&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
obj – Removed. All nodes are Scaffold_t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sequence_t : Universal_t ==&lt;br /&gt;
&lt;br /&gt;
 {SEQ&lt;br /&gt;
  act:[ADR]&lt;br /&gt;
  iid:(\d+)&lt;br /&gt;
  eid:(.+)&lt;br /&gt;
  com:(\n(.*\n)*).&lt;br /&gt;
  flg:([01]{2})&lt;br /&gt;
  sts:[.]&lt;br /&gt;
  seq:(\n(.*\n)*).&lt;br /&gt;
  qlt:(\n(.*\n)*).&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
seq - Sequence base call information.&lt;br /&gt;
qlt - Sequence quality information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tile_t : IMessageable_t ==&lt;br /&gt;
 &lt;br /&gt;
 {TLE&lt;br /&gt;
  src:&amp;lt;iid&amp;gt;&lt;br /&gt;
  off:(-?\d+)&lt;br /&gt;
  clr:(\d+,\d+)&lt;br /&gt;
  gap:(\n(-?\d+\n)*).&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
src - Tiled sequence, referenced by its IID. Type of sequence is implied by how this record is nested, e.g. a TLE in a CTG represents a RED, while a TLE in a SCF represents a CTG.&lt;br /&gt;
off - Offset of the tile from the beginning of the reference.&lt;br /&gt;
clr - Usable range of the tile, relative to the tile’s coordinates.&lt;br /&gt;
gap - List of delta encoded gap positions.&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Infrastructure</id>
		<title>Infrastructure</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Infrastructure"/>
				<updated>2009-11-02T01:57:14Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The principal benefit of the AMOS project is its modular design, but in order to facilitate many, isolated components, a robust infrastructure is desirable. In response to this need, TIGR has developed numerous C++ classes for the efficient storage of assembly data types. These assembly objects can be written to and read from a central data repository, allowing for separate modules to build on and improve existing assemblies in discrete steps. This allows an assembly pipeline to run its steps in any order, and for data snapshots to be preserved at any time. In order to convey the assembly data outside of the C++ classes, we have implemented an ASCII message format modeled on that used by Celera Assembler*. This message format will be the unifying standard for all external module communication, and allow for the data snapshots to be output in a concise, text format. The API (application programming interface) for the AMOS foundation classes and the specification for the AMOS message format can be found in the sections below.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;A Whole-Genome Assembly of Drosophila.&amp;quot; Myers E, Sutton G, et. al., Science, 2000. 287(5461):2196-204.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== libAMOS ==&lt;br /&gt;
The AMOS API describes the programming interface for all of the AMOS foundation classes. Currently these classes are implemented in C++, but could ported to other languages as long as the API was preserved. The implementation can be found in the latest distribution under the src/AMOS project directory. These classes comprise the libAMOS.a library. This library contains the tools necessary to handle and manipulate AMOS messages, data-banks and internal assembly data structures such as sequencing reads, contigs, scaffolds, etc. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More Information: [http://amos.sourceforge.net/docs/api libAMOS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== libSlice ==&lt;br /&gt;
&lt;br /&gt;
libSlice is a C++ library that provides the user with a parametric implementation of the Churchill-Waterman algorithm for computing the consensus base from a column in a multiple alignment of reads. This task is an essential part of any consensus module. The implementation can be found in the latest distribution under the src/Slice project directory. These C structs comprise the libSlice.a library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More Information: [http://slicetools.sourceforge.net/ libSlice]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== libAlign ==&lt;br /&gt;
&lt;br /&gt;
libAlign is a robust multi-alignment library for consensus generation. It can efficiently handle large inputs and is able to identify and correctly align slightly misplaced and/or low-similarity reads in the input. The implementation can be found in the latest distribution under the src/Align project directory. These classes comprise the libAlign.a library and depend on the libSlice library.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== File format specs ==&lt;br /&gt;
The AMOS file types and message formats are defined in various specification documents, which can be found by following the below link. These documents also provide information on how to use messages for module communication and general development procedure recommendations.&lt;br /&gt;
&lt;br /&gt;
=== [[Message Types]] ===&lt;br /&gt;
&lt;br /&gt;
Describes expected fields for AMOS message types.  This document is a good starting point if you want to write your own parser for AMOS files.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== [[Message Grammar]] ===&lt;br /&gt;
&lt;br /&gt;
Describes grammar requirements for AMOS messages.  Parsers for this file format are provided both in Perl (see AMOS::AmosLib) and C++ (the Message_t type in the API).   Note that this format is inspired from the format developed at Celera Genomics for Celera Assembler.  The AMOS parsers can be used to parse Celera files as well, however the specific data types are different between AMOS and Celera Assembler.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=== [[libAMOS Quick Reference]] ===&lt;br /&gt;
&lt;br /&gt;
Quick reference guide to the libAMOS C++ library.  This document contains definitions of the main concepts needed in writing AMOS code and provides you with code examples for performing basic bank access operations.&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Bank2contig</id>
		<title>Bank2contig</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Bank2contig"/>
				<updated>2009-09-23T20:28:11Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: Created page with &amp;#039;bank2contig is a general converter from AMOS banks into a variety of other contig formats.  == TIGR Assembler / GDE Contig Format ==  The .contig format is a simple text format f…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;bank2contig is a general converter from AMOS banks into a variety of other contig formats.&lt;br /&gt;
&lt;br /&gt;
== TIGR Assembler / GDE Contig Format ==&lt;br /&gt;
&lt;br /&gt;
The .contig format is a simple text format for encoding read to contig alignments. This is the default output format for bank2contig. The layout format (-L) is the same as the contig format, except no sequence information is written. This is useful for listing the reads in each contig, their positions, clear ranges, etc.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 ##56487 19 1623 bases, 00000000 checksum.&lt;br /&gt;
 TTAGACCCAGGAGAAG-CATAAAATTTTCAGAGCCATCTGATGTAGGAGGAAGTTATGAA&lt;br /&gt;
 #000035230611N10F(0) [RC] 711 bases, 00000000 checksum. {720 10} &amp;lt;1 710&amp;gt;&lt;br /&gt;
 TTAGACCCAGGAGAAG-CATAAAATTTTCAGAGCCATCTGATGTAGGAGGAAGTTATGAA&lt;br /&gt;
&lt;br /&gt;
* Each contig is preceded by a header starting with ##, followed by the contig identifier, number of reads aligned to it, and the number of bases in the padded consensus.  If generated by TIGR Assembler, these records also contain an 8-digit checksum, however most converters generate a blank checksum (it&amp;#039;s not used by any code anyway).&lt;br /&gt;
&lt;br /&gt;
* The contig sequence, listed after the &amp;quot;##&amp;quot; header, is padded with the gap character.&lt;br /&gt;
&lt;br /&gt;
* Each read aligned to the consensus is preceded by a header starting with a single &amp;quot;#&amp;quot; character.  Provided in parantheses, is the 0-based offset of the read in the consensus.   Within the square brackets the string &amp;quot;RC&amp;quot; indicates the read was reverse complemented, a fact also indicated in the representation of the clear range within the braces ({720 10}).  The clear range is 1-based with respect to the unpadded/ungapped read sequence.  Note the low number is 10, meaning the first 9 bases (1-9) have been trimmed from the beginning (5&amp;#039; end) of the read. There may also be bases trimmed at the end of the read (3&amp;#039; end) beyond base 720, but this format does not record how many bases there are. Next comes the coordinates of the read along the ungapped 1-based consensus are provided within angle brackets (&amp;lt;1 710&amp;gt;). This header also contains a checksum (largely ignored) and information about the number of bases following it.&lt;br /&gt;
&lt;br /&gt;
* After the read header, the aligned section of the read (the bases within the clear range alone) is provided in padded form, and in the correct orientation (complemented if necessary).  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SAM Conversion ==&lt;br /&gt;
The [http://samtools.sf.net SAM (Sequence Alignment/Map)] format is a generic format for storing large nucleotide sequence alignments, used in the 1000 genomes project and many others.&lt;br /&gt;
&lt;br /&gt;
bank2contig is a basic converter from the AMOS assembly format into SAM format. It works from AMOS Banks (indexed binary format), and outputs the assembled reads with extended CIGAR strings compatible with the samtools library. At this time it does not convert mate or library information, but should be sufficient for analyzing &amp;amp; visualizing the read to contig alignments from a variety of assembly formats, including AMOS, Celera Assembler, phrap, velvet, etc.&lt;br /&gt;
&lt;br /&gt;
The basic steps are:&lt;br /&gt;
&lt;br /&gt;
1. Create AMOS AFG file: AMOScmp, Minimus, &amp;amp; velvet automatically create AFG files&lt;br /&gt;
&lt;br /&gt;
 # Or convert ACE File&lt;br /&gt;
 $ toAmos -ace data.ace -o data.afg&lt;br /&gt;
 &lt;br /&gt;
 # Or convert Celera Assembler&lt;br /&gt;
 $ toAmos -frg data.frg -a data.asm -o data.afg&lt;br /&gt;
&lt;br /&gt;
2. Create AMOS bank&lt;br /&gt;
 $ bank-transact -m data.afg -b data.bnk -c&lt;br /&gt;
&lt;br /&gt;
3. Create contig fasta &amp;amp; SAM alignment file&lt;br /&gt;
 $ bank2fasta -i -b data.bnk &amp;gt; data.fa&lt;br /&gt;
 $ bank2contig -i -s data.bnk &amp;gt; data.sam&lt;br /&gt;
&lt;br /&gt;
5. Load with samtools and view alignments&lt;br /&gt;
 $ samtools faidx data.fa                            # index the contig FASTA&lt;br /&gt;
 $ samtools import data.fa.fai data.sam data.bam     # SAM-&amp;gt;BAM&lt;br /&gt;
 $ samtools index data.bam                           # index BAM&lt;br /&gt;
 $ samtools tview data.bam data.fa                   # view alignments&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DNPTrapper ==&lt;br /&gt;
&lt;br /&gt;
[http://dnptrapper.sourceforge.net/ DNPTrapper] is an assembly editing and visualization tool specifically designed for manual analysis and finishing of repeated regions. It differs from previous tools by providing flexibility and an overview that greatly simplifies the finishing process, by allowing the user to view whole repeat regions at once and to edit assembly errors manually by drag and drop. The program implements and visualizes the results of a previously described statistical method that detects defined nucleotide positions (DNPs, representing single base differences between repeat units) in the presence of sequencing errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
 bank2contig -T data.bnk &amp;gt; data.xml&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simple Layout ==&lt;br /&gt;
&lt;br /&gt;
The simple layout format (-S) is a simple tab deliminated file with the ids of the reads in the contig. The fields are:&lt;br /&gt;
&lt;br /&gt;
 1. contig id&lt;br /&gt;
 2. contig status&lt;br /&gt;
 3. read id&lt;br /&gt;
 4. reverse complement flag (0/1)&lt;br /&gt;
 5. read offset (0-based gapped offset)&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/File_conversion_utilities</id>
		<title>File conversion utilities</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/File_conversion_utilities"/>
				<updated>2009-09-23T20:10:30Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
The ASM File converters are a collection of utilities for converting sequence and assembly data between the most widely used data formats as well as to and from the AMOS message format. Examples of the data handled by these utilities are: Trace Archive data and ancillary information, .ACE assembly format, TIGR Assembler input and output formats, Celera Assembler message format, and Arachne input and output formats.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== To AMOS formats ==&lt;br /&gt;
&lt;br /&gt;
=== Reads, Libraries, etc. ===&lt;br /&gt;
==== From Trace Archive ====&lt;br /&gt;
&lt;br /&gt;
* [[tarchive2amos]] - from NCBI Trace Archive and/or Assembly archive to AMOS. Also simple .seq/.qual to amos converter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== From sequence/quality files ====&lt;br /&gt;
&lt;br /&gt;
* [[tarchive2amos]] - from NCBI Trace Archive and/or Assembly archive to AMOS. Also simple .seq/.qual to amos converter&lt;br /&gt;
* [[toAmos]] - universal converter from many sequence/assembly formats to AMOS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== From Celera Assembler ====&lt;br /&gt;
&lt;br /&gt;
* [[toAmos]] - universal converter from many sequence/assembly formats to AMOS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== From .phd files ====&lt;br /&gt;
&lt;br /&gt;
* [[phd2afg]] - from .PHD files to AMOS message file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Contigs, Scaffolds, etc. ===&lt;br /&gt;
==== From Assembly Archive ====&lt;br /&gt;
&lt;br /&gt;
* [[tarchive2amos]] - from NCBI Trace Archive and/or Assembly archive to AMOS. Also simple .seq/.qual to amos converter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== From .ACE files (phrap, arachne) ====&lt;br /&gt;
&lt;br /&gt;
* [[toAmos]] - universal converter from many sequence/assembly formats to AMOS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== From Celera Assembler ====&lt;br /&gt;
&lt;br /&gt;
* [[toAmos]] - universal converter from many sequence/assembly formats to AMOS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== From TIGR assembler ====&lt;br /&gt;
&lt;br /&gt;
* [[toAmos]] - universal converter from many sequence/assembly formats to AMOS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== From AMOS formats ==&lt;br /&gt;
=== Reads, Libraries, etc. ===&lt;br /&gt;
==== To Celera Assembler ====&lt;br /&gt;
&lt;br /&gt;
* [[amos2frg]] - from AMOS message file to Celera Assembler message file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== To sequence/quality files, etc. ====&lt;br /&gt;
&lt;br /&gt;
* [[amos2sq]] - from AMOS message file to .seq/.qual files&lt;br /&gt;
* [[amos2mates]] - from AMOS message file to Bambus .mates file&lt;br /&gt;
* [[select-reads]] - utility to select reads by iid/eid from a bank. Allows both inclusive and exclusive queries.&lt;br /&gt;
&lt;br /&gt;
=== Contigs, Scaffolds, etc. ===&lt;br /&gt;
==== To Assembly Archive ====&lt;br /&gt;
&lt;br /&gt;
====To .ACE files====&lt;br /&gt;
&lt;br /&gt;
* [[amos2ace]] - the name says it all - from AMOS to .ACE format&lt;br /&gt;
&lt;br /&gt;
==== To TIGR Assembler ====&lt;br /&gt;
&lt;br /&gt;
* [[bank2contig]] - from AMOS bank to TIGR Assembler .contig files (similar to GDE .align files).&lt;br /&gt;
&lt;br /&gt;
==== To FASTA ====&lt;br /&gt;
&lt;br /&gt;
* [[bank2fasta]] - from contigs stored in a bank to multi-fasta file of their consensus.&lt;br /&gt;
* [[bank2scaff]] - from scaffolds stored in a bank to a variety of formats, including multi-fasta file&lt;br /&gt;
&lt;br /&gt;
==== To SAM ====&lt;br /&gt;
&lt;br /&gt;
* [[bank2contig]] - from contigs stored in a bank to the [http://samtools.sf.net SAM] format&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Celera Assembler Converters ==&lt;br /&gt;
=== To Celera Assembler ===&lt;br /&gt;
&lt;br /&gt;
* [[tarchive2ca]] - from NCBI Trace Archive to Celera Assembler input&lt;br /&gt;
&lt;br /&gt;
=== From Celera Assembler ===&lt;br /&gt;
&lt;br /&gt;
* [[toAmos]] - universal converter from many sequence/assembly formats to AMOS&lt;br /&gt;
* [[ca2ace]] - from the output of Celera Assembler to .ACE files&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Wiki_guide</id>
		<title>Wiki guide</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Wiki_guide"/>
				<updated>2009-09-15T15:45:51Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This website uses [http://mediawiki.org MediaWiki] to organize and present the content, the same software used to run the [http://www.wikipedia.org WikiPedia]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Editing a page ==&lt;br /&gt;
&lt;br /&gt;
Once you are logged in, you can edit any page by clicking on the edit tab on the top of each page. You can then add content by typing in the text box, and format it by adding special tags around your text. For example, putting a word in double brackets [[ ]], creates a link to that page in the wiki. Click on the edit tab of any page to see how it is formatted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Add New Page ==&lt;br /&gt;
The easiest way to add a new page is to first edit an existing page to include a link with double brackets to the page you want to add. Save the page, and then click on the link- you&amp;#039;ll be sent to a new empty page to edit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special pages ==&lt;br /&gt;
* [[Special:SpecialPages]] - A whole collection of special pages&lt;br /&gt;
* [[Special:WantedPages]] - links to pages that don&amp;#039;t exist&lt;br /&gt;
* [[Special:LonelyPages]] - pages with no in-bound links&lt;br /&gt;
* [[MediaWiki:Sidebar]] - edit the sidebar, see [http://www.mediawiki.org/wiki/Manual:Interface/Sidebar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See these pages for details on adding pages and formating your content.&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents User&amp;#039;s Guide] for information on using the wiki software.&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Project Logo ==&lt;br /&gt;
Click on the following image to upload a new version of the PNG logo image for your project:&lt;br /&gt;
&lt;br /&gt;
[[Image:MediaWikiSidebarLogo.png]]&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Minimus</id>
		<title>Minimus</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Minimus"/>
				<updated>2009-07-13T00:43:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
minimus is an assembly pipeline designed specifically for small data-sets, such as the set of reads covering a specific gene. Note that the code will work for larger assemblies (we have used it to assemble bacterial genomes), however, due to its stringency, the resulting assembly will be highly fragmented. For large and/or complex assemblies the execution of Minimus should be followed by additional processing steps, such as scaffolding.&lt;br /&gt;
&lt;br /&gt;
minimus follows the Overlap-Layout-Consensus paradigm and consists of three main modules:&lt;br /&gt;
&lt;br /&gt;
* [[hash-overlap]] - computes the overlaps between the reads using a modified version of the Smith-Waterman local alignment algorithm&lt;br /&gt;
* [[tigger]] - uses the read overlaps to generate the layouts of reads representing individual contigs&lt;br /&gt;
* [[make-consensus]] - refines the layouts produced by the tigger to generate accurate multiple alignments within the reads&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
minimus uses as AMOS messages as both the inputs and the outputs. Please see the [[File conversion utilities]] documentation for more information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[minimus2]] is a modified version of the minimus pipeline designed for merging two sequence sets. Instead of hash-overlap it uses a nucmer based overlap detector which is much faster.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
Documentation on running minimus is included with the distribution in the /docs subdirectory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of a flu assembly and a Zebrafish gene can be found in the test/minimus directory created when the AMOS distribution is untarred. Documentation on the examples is included with the distribution in /docs/minimus.README.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Publication ==&lt;br /&gt;
&lt;br /&gt;
[http://www.biomedcentral.com/1471-2105/8/64 Minimus: a fast, lightweight genome assembler]&lt;br /&gt;
&lt;br /&gt;
Sommer, DD, Delcher, AL, Salzberg, SL, and Pop, M. (2007) BMC Bioinformatics, 8:64doi:10.1186/1471-2105-8-64.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
The development of minimus was supported by the National Institutes of Health under grants R01-LM06845 and R01-LM007938 to SLS and by Department of Homeland Security cooperative agreement W81XWH-05-2-0051.&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/ABBA</id>
		<title>ABBA</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/ABBA"/>
				<updated>2009-07-13T00:33:17Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ABBA: Assembly Boosted By Amino acid sequences&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Assembly Boosted By Amino acid sequence is a comparative gene assembler, which uses amino acid sequences from predicted proteins to help build a better assembly. See the journal paper.&lt;br /&gt;
&lt;br /&gt;
For additional information on short read assembly check the following University of Maryland CBCB web sites:&lt;br /&gt;
&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/SR-assembly.shtml Genome Assembly with Short Reads]&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/SR-assembly-tutorial.shtml Genome Assembly with Short Reads Tutorial]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
Documentation on running ABBA is included with the distribution in the /docs subdirectory of AMOS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
[http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1000186 Gene-Boosted Assembly of a Novel Bacterial Genome from Very Short Reads].&lt;br /&gt;
&lt;br /&gt;
Salzberg SL, Sommer DD, Puiu D, Lee VT 2008 PLoS Computational Biology 4(9): e1000186 doi:10.1371/journal.pcbi.1000186&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
The development of ABBA was supported by the National Institutes of Health under grants R01-LM06845 and R01-LM007938 to SLS.&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/AMOS</id>
		<title>AMOS</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/AMOS"/>
				<updated>2009-07-13T00:28:21Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
 | __TOC__&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium is committed to the development of open-source whole genome assembly software. The project acronym (AMOS) represents our primary goal -- to produce A Modular, Open-Source whole genome assembler. Open-source so that everyone is welcome to contribute and help build outstanding assembly tools, and modular in nature so that new contributions can be easily inserted into an existing assembly pipeline. This modular design will foster the development of new assembly algorithms and allow the AMOS project to continually grow and improve in hopes of eventually becoming a widely accepted and deployed assembly infrastructure. In this sense, AMOS is both a design philosophy and a software system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quick links:&lt;br /&gt;
* [[AMOS Getting Started]]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=134326 Download]&lt;br /&gt;
* [http://sourceforge.net/projects/amos SourceForge project page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Announcements ==&lt;br /&gt;
&lt;br /&gt;
* July 12, 2009 - AMOS website moved to MediaWiki&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Additional documentation in development through the [[AMOS Documentation Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assemblers ===&lt;br /&gt;
* [[ABBA]] - Assembly Boosted By Amino Acid Sequences&lt;br /&gt;
* [[minimus]] - basic genome assembler for small datasets&lt;br /&gt;
* [[minimus2]] - basic genome assembler for two datasets; can also be used as an assembly merge pipeline&lt;br /&gt;
* [[AMOScmp]] - comparative assembler&lt;br /&gt;
* [[AMOScmp-shortReads]] - comparative assembler for short reads (Solexa,454)&lt;br /&gt;
* [[AMOScmp-shortReads-alignmentTrimmed]] - comparative assembler for short reads that uses alignment based trimming&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Validation and Visualization ===&lt;br /&gt;
* [[Hawkeye]] - assembly viewer&lt;br /&gt;
* [[amosvalidate]] - assembly forensics&lt;br /&gt;
* [[Benchmark]] - assembly benchmark data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scaffolding ===&lt;br /&gt;
* [[Bambus]] - Open source standalone hierarchical scaffolding&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Trimming, Overlapping, &amp;amp; Error Correction ===&lt;br /&gt;
* [[Figaro]] - statistical vector trimmer&lt;br /&gt;
* [[UMD Overlapper]] - High quality overlap computations&lt;br /&gt;
* [[KI Overlapper]] - Repeat aware overlapper&lt;br /&gt;
* [[AutoEditor]] - Automatic correction of genome sequencing errors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Utilities ===&lt;br /&gt;
* [[File conversion utilities]] - converting data to and from AMOS&lt;br /&gt;
* [[AMOS Utilities | AMOS Utilities]] - general utilities&lt;br /&gt;
* [[runAmos]] - Pipeline executor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AMOS Development ===&lt;br /&gt;
* [[Programmer&amp;#039;s guide]] - Getting started with the Source code&lt;br /&gt;
* [[Infrastructure]] - Developer level details&lt;br /&gt;
* [[Wiki guide]] - Guide for editing the wiki&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assembly Tutorials ===&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/assembly_primer.shtml Assembly primer] - overview of genome assembly.&lt;br /&gt;
* [http://www.cbcb.umd.edu/research/contig_representation.shtml Representing assemblies (not just in AMOS)]&lt;br /&gt;
* [http://wgs-assembler.sourceforge.net Running Celera Assembler]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download == &lt;br /&gt;
The AMOS source if freely available for download from the File Release Section of our SourceForge project page. Please refer to the COPYING license included in the package for a description of the Artistic License, the same OSI certified open source license used by Perl and countless other packages. Not all of the above packages are included with the standard AMOS distribution, please see the homepage for the software you wish to download to verify that it is included with the AMOS source distribution.&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/project/showfiles.php?group_id=134326 Download from SourceForge]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Consortium members ==&lt;br /&gt;
&lt;br /&gt;
There have been numerous positive responses regarding the AMOS initiative, and we expect the list of involved organizations to grow significantly as the project matures. Please contact us if you want to join. The groups currently involved with the development of AMOS are listed below, along with their responsibilities and areas of expertise.&lt;br /&gt;
&lt;br /&gt;
* University of Maryland, Center for Bioinformatics and Computational Biology&lt;br /&gt;
** project organization and direction&lt;br /&gt;
** infrastructure&lt;br /&gt;
** consensus&lt;br /&gt;
** automated sequence editing&lt;br /&gt;
** scaffolding&lt;br /&gt;
** overlap detection&lt;br /&gt;
** contig construction&lt;br /&gt;
&lt;br /&gt;
* The Institute for Genomic Research&lt;br /&gt;
** production pipelines&lt;br /&gt;
** automated finishing tools&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Karolinska Institutet&lt;br /&gt;
** overlap detection&lt;br /&gt;
** error correction&lt;br /&gt;
&lt;br /&gt;
* Marine Biological Laboratory - Woods Hole&lt;br /&gt;
** graphical interface&lt;br /&gt;
** integration of assembly data with analysis (gene, polymorphism, etc.) information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Join the consortium ==&lt;br /&gt;
&lt;br /&gt;
All interested parties are welcome to join or aid the AMOS consortium. Please address all correspondence via Email to:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
To receive information regarding new releases and developments, please subscribe to our moderated, low-traffic users&amp;#039; mailing list:&lt;br /&gt;
&lt;br /&gt;
 amos-users (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bug reports and support ==&lt;br /&gt;
&lt;br /&gt;
For AMOS bug reports or support requests, please browse our SourceForge project page or Email us at:&lt;br /&gt;
&lt;br /&gt;
 amos-help (at) lists (dot) sourceforge (dot) net&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements ==&lt;br /&gt;
&lt;br /&gt;
The AMOS consortium would like to thank the following organizations for their funding and/or support:&lt;br /&gt;
* The National Institutes of Health - grants R01-LM06845, N01-AI-15447&lt;br /&gt;
* The National Science Foundation - grants IIS-9902923, IIS-9820497&lt;br /&gt;
* Department of Homeland Security - cooperative agreement W81XWH-05-2-0051&lt;br /&gt;
* SourceForge.net&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/Hawkeye_Contig_View</id>
		<title>Hawkeye Contig View</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/Hawkeye_Contig_View"/>
				<updated>2009-07-13T00:08:33Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The contig window of the viewer displays the mulitple alignment of reads within contigs, and lets one view the bases of the reads and the consensus sequence. The chromatogram signal, and quality values of the reads can optionally be displayed, as can the trimmed unassembled portion of the read. One can quickly and easily navigate to any position in any contig, or scan contigs for regions of disagreement between the reads. Alternatively, the consensus sequence of a contig can be searched by regular expression.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:HawkeyeContigView.jpg]]&lt;br /&gt;
&lt;br /&gt;
The Contig View using the SNP coloring features&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Immediately below the toolbars is the consensus of the contig. A solid circle above the consensus flags the position as having a discrepancy in the tiling. Clicking in the consensus will color and sort the reads based on the base at that position. In the screenshot above, I clicked on the C at position 11386. The first 2 reads (GDEI048TF and GDEIN20TF) are colored green because they have an A at that position, whereas the other reads have a C and are therefore colored blue. This allows one to easily see that the reads disagree with the other reads in a consensistent way. Single-clicking on a read displays the chromatogram signal for the read. The chromatogram displayed in the main window will be stretched so that the peak occurs aligned with the base calls. Double-clicking on a read will open a new window with the raw chromatogram (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below the tiling is some summary information, including the filename of the bank, how many contigs are contained in the bank, the current contig id, the length of the consensus of the current contig and the number of reads in the current contig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SNP Barcode ==&lt;br /&gt;
&lt;br /&gt;
Hawkeye can only display at most 50 basepairs from a single read at a given time and still be legible. Therefore, the font adjustment utilizes semantic zooming. After switching to below a threshold instead of the bases displayed as letters, they are displayed as abstract colored rectangles matching the chromatogram colors. In addition, instead of displaying every base in every read, it only displays those positions that disagree with the consensus. This creates a barcode like display for reads where their patterns of SNPs can be examined. This reduces the information load of viewing the multiple alignment and focuses the attention on the most interesting postions, those that disagree. Furthermore, very large regions of upto 1000bp can be inspected at once. The SNP sorting still works in the Barcode display, so clicking in the consensus will resort and repartition the reads based on that position.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[Image:HawkeyeBases.png|thumb]]&lt;br /&gt;
| [[Image:HawkeyeBarcodeSmall.png|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Switching from bases to SNP Barcode views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:HawkeyeBarcode.png]]&lt;br /&gt;
&lt;br /&gt;
Using the SNP barcode to inspect a very large region&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Raw Chromatograms ==&lt;br /&gt;
&lt;br /&gt;
Double clicking on a read in the tiling displays the read in a separate chromatogram window. This requires that the chromotogram is available and the chromatogram positions have been loaded into the bank, or the positions are encoded in the trace file. Below we see the chromatogram display for read DMGLJ45TR. Unlike in the tiling window, the chromatogram displayed has not been stretched, instead the base calls are spaced to align with the peaks. The top number is the consensus position. The next line is the consensus and the current read&amp;#039;s base calls are beneath. A solid circle above the consensus flags there is a discrepancy in the tiling at that position (as at position 776/802). Below the read&amp;#039;s base calls are the quality values of the base calls. Below the quality values is the current sequence position (1-based gapped). Below this the chromatogram signal is displayed, and the chromatogram position is displayed at the bottom. The window is tinted so that trimmed bases appear with a dark background- the C at 785/811 is the last base in the clear range of this read.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:HawkeyeRawChromo.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Options ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== File Menu ===&lt;br /&gt;
&lt;br /&gt;
The File menu has options for opening a bank, setting chromatogram paths, and displaying summary windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Options Menu ===&lt;br /&gt;
&lt;br /&gt;
* Color Bases - Toggle if the bases should be colored red, blue, yellow and green or just black and white&lt;br /&gt;
* SNP Coloring - Toggles if clicking in the consensus should color the reads based on the base at that position&lt;br /&gt;
* Show Full Range - Toggles if the trimmed bases should be displayed or not. They are displayed with a red tint.&lt;br /&gt;
* Show Positions - Toggles if the consensus position should be written at each position or just at every 10 bp.&lt;br /&gt;
* Show Indicator - Toggles if the carret indicator should be displayed above the consensus position&lt;br /&gt;
* Show Quality Values - Toggles if the base quality values should be displayed in the tiling&lt;br /&gt;
* Low Case Low QV - Toggle if bases with low quality (&amp;lt; 30) should be displayed in lower case letters&lt;br /&gt;
* Highlight Discrepancies - Toggles if bases which disagree with the consensus should be highlighted in purple&lt;br /&gt;
* Prefetch Chromatograms - Toggles if chromatograms should be displayed without clicking in the tiling.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolbars ===&lt;br /&gt;
&lt;br /&gt;
The position box displays the current position (the leftmost displayed consensus position), and also accepts input for jumping to arbitrary positions. The up and down arrows next to the spin box step the view window in 1 base increments. The left and right arrows next to the position spin box jump to the previous and next position with a discrepancy in the reads relative to the current position indicated by the caret above the consensus position line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The A+ and A- increases and decreases the font size, and activates the semantic zooming into the SNP Barcode. The Find box allows for Qt regular expressions to be input, and the left and right arrows will search the consensus sequence for that regular expression, and highlight it in the consensus.&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	<entry>
		<id>http://amos.sourceforge.net/wiki/index.php/File:HawkeyeRawChromo.png</id>
		<title>File:HawkeyeRawChromo.png</title>
		<link rel="alternate" type="text/html" href="http://amos.sourceforge.net/wiki/index.php/File:HawkeyeRawChromo.png"/>
				<updated>2009-07-13T00:07:50Z</updated>
		
		<summary type="html">&lt;p&gt;Mcschatz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mcschatz</name></author>	</entry>

	</feed>