fn() integrateAlignIntegrates an alignment into another by copying the gaps.
Integrates an alignment into another by copying the gaps.
Defined in | <seqan/align.h> |
---|---|
Signature |
void integrateAlign(align1, align2[, positions]);
|
Parameters
align1
|
Target Alignment object into which align2 is to be integrated. |
---|---|
align2
|
Alignment object that is to be integrated into align1. |
positions
|
The integration positions in align1 for all rows (view positions), String of positions. |
Detailed Description
Examples
#include <iostream>
#include <seqan/align.h>
#include <seqan/sequence.h>
using namespace seqan;
int main()
{
// We will create the following alignment between the subject and the
// query (with clipping in subject).
//
// 1 1 2 2
// 0 5 0 5 0 5
// : . : . : .
// subject CPISRTW-SIFRCWALLKAMEAALL
// |||| | |||||
// query SRTWAS-FRCWA
//
// | clipping |
// '----------'
Peptide subject = "CPISRTWSIFRCWALLKAMEAALL";
Peptide query = "SRTWASFRCWA";
std::cout << "subject: " << subject << "\n"
<< "query: " << query << "\n\n";
// Build initial alignment. Note that the resulting alignment does not
// make sense yet since the row size is different.
Align<Peptide> align;
resize(rows(align), 2);
setSource(row(align, 0), subject);
setSource(row(align, 1), query);
// Build the alignment that is to be integrated into align.
Infix<Peptide>::Type subjectInfix = infix(subject, 3, 9);
Infix<Peptide>::Type queryInfix = infix(query, 0, 6);
std::cout << "subject infix: " << subjectInfix << "\n"
<< "query infix: " << queryInfix << "\n\n";
Align<Infix<Peptide>::Type> infixAlign;
resize(rows(infixAlign), 2);
setSource(row(infixAlign, 0), subjectInfix);
setSource(row(infixAlign, 1), queryInfix);
globalAlignment(infixAlign, Blosum62());
std::cout << "infix alignment\n"
<< infixAlign;
// Now integrate infixAlign into align. Note that the alignment itself
// does not make sense yet either: the whole query is aligned to a part of
// the subject and we have to limit/clip the subject row of align.
integrateAlign(align, infixAlign);
// For the clipping, we have to transform the alignment begin position in
// sequence space of subject into the view space of row(align, 0) since
// there are (and generally can be) gaps in row(align, 0);
int beginSourcePos = 3;
int endSourcePos = 14;
int beginViewPos = toViewPosition(row(align, 0), beginSourcePos);
int endViewPos = toViewPosition(row(align, 0), endSourcePos);
std::cout << "clipping row(align, 0) to source range (" << beginSourcePos
<< ", " << endSourcePos << "). This is the view range ("
<< beginViewPos << ", " << endViewPos << ")\n";
setClippedBeginPosition(row(align, 0), beginViewPos);
setClippedEndPosition(row(align, 0), endViewPos);
std::cout << "align with clipping\n"
<< align;
return 0;
}
The output is as follows:
subject: CPISRTWSIFRCWALLKAMEAALL query: SRTWASFRCWA subject infix: SRTWSI query infix: SRTWAS infix alignment 0 . SRTW-SI |||| | SRTWAS- clipping row(align, 0) to source range (3, 14). This is the view range (3, 15) align with clipping 0 . : SRTW-SIFRCWA |||| | ||||| SRTWAS-FRCWA
Data Races
Thread safety unknown!