Hi Tobias, thanks for the example, it is now working fine! But I still have a doubt, in your example's output you say that the first alignment consists of these two fragments: 0,5,ATGC,1,5,TTGC 0,1,TCG,1,2,TCG and the other alignment consist of two other fragments. So my question is, how can you tell that? The variable containing the fragment's info is matches, and its length is 4 in that case. Regards, Andres. > Hi Andres, > > So here is an example: > > #include <iostream> > #include <seqan/align.h> > #include <seqan/graph_align.h> > #include <seqan/graph_msa.h> > > using namespace seqan; > > int main() > { > typedef String<Dna> TSequence; > TSequence seq1 = "atcgaatgcgga"; > TSequence seq2 = "actcgttgca"; > Score<int> score(2, -1, -1, -2); > > typedef StringSet<TSequence, Dependent<> > TStringSet; > TStringSet string_set; > appendValue(string_set, seq1); > appendValue(string_set, seq2); > > typedef String<Fragment<> > TFragmentString; > TFragmentString matches; > typedef String<int> TScoreValues; > TScoreValues scores; > > multiLocalAlignment(string_set, matches, scores, score, 2, > SmithWatermanClump()); > _debugMatches(string_set, matches); > return 0; > } > > > It returns the two best local alignments as a string of fragments. The > fragments are the gapless > aligned segments of an alignment: > 0,5,ATGC,1,5,TTGC > 0,1,TCG,1,2,TCG > The first number is the sequence id, then comes the begin position. So the > alignment is: > TCGAAATGC > TCG--TTGC > > The second local alignment is: > 0,8,CG,1,3,CG > 0,4,AAT,1,0,ACT > > The score string has the same length as the string of segment matches. > Each fragment gets > the score of the local alignment it comes from. > > I am not sure if this was already working in the last release, so please > use the SVN. > http://trac.mi.fu-berlin.de/seqan/wiki/Development > > > Best regards, Tobias > > > >> -----Ursprüngliche Nachricht----- >> Von: seqan-dev-bounces@lists.fu-berlin.de >> [mailto:seqan-dev-bounces@lists.fu-berlin.de] Im Auftrag von >> andres.burgos@irisa.fr >> Gesendet: Sunday, August 23, 2009 7:55 PM >> An: Rausch, Tobias >> Cc: seqan-dev@lists.fu-berlin.de >> Betreff: Re: [Seqan-dev] multiLocalAlignment function >> >> >> Hi Tobias, thanks for your reply, I'll take a closer look at >> the code so maybe I'll figure it out, but the example will >> still be helpful. >> >> Danke schoen! >> Andres >> >> > Hello Andres, >> > >> > The multi-local alignment algorithm we have implemented is the one >> > from Waterman and Eggert. >> > It returns possibly overlapping local alignments, so it is not a >> > repeated match finder. >> > >> > It is implemented in >> > ./seqan/graph_align/graph_align_smith_waterman_clump.h and >> as you can >> > see at the bottom of the file it repeatedly calls the standard >> > smith-waterman alignment algorithm. Each found local >> alignment is then >> > forbidden in the next run. >> > >> > I send you an example on how to use it on Monday. >> > >> > Best regards, >> > Tobias >> > >> > >> > ________________________________________ >> > From: seqan-dev-bounces@lists.fu-berlin.de >> > [seqan-dev-bounces@lists.fu-berlin.de] On Behalf Of >> > andres.burgos@irisa.fr [andres.burgos@irisa.fr] >> > Sent: Friday, August 21, 2009 6:01 PM >> > To: seqan-dev@lists.fu-berlin.de >> > Subject: [Seqan-dev] multiLocalAlignment function >> > >> > Hi! >> > >> > I'm currently trying to make work the function >> > >> > multiLocalAlignment(graph, edgeMap, score, numAlign, tag) >> > >> > but I can't success, so I was hoping to get some help, >> since it's not >> > documented on the web site. I was also wondering weather >> this function >> > would return overlapping or non-overlapping alignments. >> > >> > Ok, so here is the code I'm working on: >> > >> > typedef seqan::String<seqan::AminoAcid> TString; >> > typedef seqan::StringSet<TString, seqan::Dependent<> > >> TStringSet; >> > typedef seqan::Graph<seqan::Alignment<TStringSet, >> > seqan::AminoAcid> > TGraph; >> > >> > TStringSet str; >> > TString s1 ("some string"); >> > TString s2 ("some other string"); >> > >> > seqan::appendValue(str, s1); >> > seqan::appendValue(str, s2); >> > >> > seqan::Score<int, seqan::Pam<> > pam (250, -1, 0); >> > TGraph g(str); >> > >> > >> seqan::String<seqan::IntervalTreeNode<seqan::IntervalAndCargo<int, >> > int> > > propMap; >> > seqan::resizeEdgeMap(g, propMap); >> > >> > seqan::multiLocalAlignment(g, propMap, pam, 10, >> > seqan::SmithWaterman()); >> > >> > This won't compile, throwing this error: >> > >> > ../seqan-1.1/seqan/graph_align/graph_align_interface.h: In function >> > 'void >> > seqan::multiLocalAlignment(seqan::Graph<seqan::Alignment<TStringSet, >> > TCargo, TSpec> >&, TPropertyMap&, const seqan::Score<TScoreValue, >> > TSpec2>&, TSize, TTag) [with TStringSet = >> > seqan::StringSet<seqan::String<seqan::SimpleType<unsigned char, >> > seqan::_AminoAcid>, seqan::Alloc<void> >, seqan::Dependent<const >> > seqan::Tag<seqan::TagGenerous_> > >, TCargo = >> > seqan::SimpleType<unsigned char, seqan::_AminoAcid>, TSpec = const >> > seqan::Tag<seqan::Default_>, TPropertyMap = >> > seqan::String<seqan::IntervalTreeNode<seqan::IntervalAndCargo<int, >> > char>, seqan::StorePointsOnly>, seqan::Alloc<void> >, TScoreValue = >> > int, TSpec2 = seqan::Pam<seqan::SimpleType<unsigned char, >> > seqan::_AminoAcid>, seqan::Pam_Data_Dayhoff_MDM78>, TSize = >> int, TTag >> > = >> > seqan::Tag<seqan::SmithWaterman_>]': >> > readers/SWReader.cc:26: instantiated from here >> > ../seqan-1.1/seqan/graph_align/graph_align_interface.h:234: >> error: no >> > matching function for call to >> > '_localAlignment(seqan::String<seqan::Fragment<unsigned int, >> > seqan::ExactFragment<const seqan::Tag<seqan::Default_> > >, >> > seqan::Alloc<void> >&, >> > seqan::StringSet<seqan::String<seqan::SimpleType<unsigned char, >> > seqan::_AminoAcid>, seqan::Alloc<void> >, seqan::Dependent<const >> > seqan::Tag<seqan::TagGenerous_> > >&, >> > seqan::String<seqan::IntervalTreeNode<seqan::IntervalAndCargo<int, >> > char>, seqan::StorePointsOnly>, seqan::Alloc<void> >&, const >> > seqan::Score<int, seqan::Pam<seqan::SimpleType<unsigned char, >> > seqan::_AminoAcid>, seqan::Pam_Data_Dayhoff_MDM78> >&, int&, >> > seqan::Tag<seqan::SmithWaterman_>)' >> > make: *** [readers/SWReader.o] Error 1 >> > >> > So, maybe an example would make things clearer... >> > >> > Thanks in advance, >> > Andres >> > >> > >> > _______________________________________________ >> > seqan-dev mailing list >> > seqan-dev@lists.fu-berlin.de >> > https://lists.fu-berlin.de/listinfo/seqan-dev >> > >> >> >> >> _______________________________________________ >> seqan-dev mailing list >> seqan-dev@lists.fu-berlin.de >> https://lists.fu-berlin.de/listinfo/seqan-dev >>