/usr/include/anfo/anfo_common.h is in libanfo0-dev 0.98-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | // Copyright 2009 Udo Stenzel
// This file is part of ANFO
//
// ANFO is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Anfo is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Anfo. If not, see <http://www.gnu.org/licenses/>.
#ifndef INCLUDED_ANFO_COMMON_H
#define INCLUDED_ANFO_COMMON_H
// Commonalities between different command line utilities, factored out.
#include "align.h"
#include "index.h"
#include "stream.h"
#include "config.pb.h"
#include "output.pb.h"
#include <map>
#include <string>
#include <fnmatch.h>
//! \brief Configures type of alignment to be done.
//! This is a hack and only intended as a stopgap.
// typedef flat_alignment alignment_type ;
// typedef simple_adna alignment_type ;
/*
struct reference_overlaps {
DnaP x, y ;
reference_overlaps( DnaP u, DnaP v ) : x(u), y(v) {}
bool operator()( const alignment_type& a ) {
return a.reference >= x && a.reference <= y ; }
} ;
*/
namespace streams {
//! \brief takes care of stuff needed before aligning
//! This is for "housekeeping" that needs to be done before indexing
//! and alignment, most notably adapter/artefact trimming.
class Housekeeper : public Stream
{
private:
const int minscore_ ;
vector< string > trim_left_ ;
vector< string > trim_right_ ;
public:
Housekeeper( const config::Config &config ) :
minscore_( config.min_trim_score() ),
trim_left_( config.trim_left().begin(), config.trim_left().end() ),
trim_right_( config.trim_right().begin(), config.trim_right().end() )
{}
Housekeeper( vector<string> left, vector<string> right, int minscore )
: minscore_( minscore ), trim_left_( left ), trim_right_( right ) {}
virtual void put_result( const Result& ) ;
} ;
//! \brief configured Indexer
//! Knows about one index, will look at each record, check the policy
//! and if appropriate, will do an index lookup. Constructed seeds are
//! stored and passed on. The policy is taken from a config file and
//! stored in the header.
class Indexer : public Stream
{
private:
config::Config conf_ ;
std::string index_name_ ;
const FixedIndex& index_ ;
public:
Indexer( const config::Config &config, const std::string& index_name ) ;
virtual ~Indexer() ;
virtual void put_header( const Header& ) ;
virtual void put_result( const Result& ) ;
} ;
//! \brief configured mapper
//! Knows about one genome and an aligner configuration. Looks at each
//! record, takes the seed collection for its genome and aligns. Seeds
//! are removed, the result is added and passed on.
class Mapper : public Stream
{
private:
config::Aligner conf_ ;
GenomeHolder genome_ ;
adna_parblock parblock_ ;
public:
Mapper( const config::Aligner &config, const std::string& genome_name ) ;
virtual void put_header( const Header& ) ;
virtual void put_result( const Result& ) ;
} ;
} ; // namespace streams
std::string expand( const std::string&, int ) ;
#endif
|