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