update_sequences_motifs();
}
-
// Helper functor to append created motifs to our Mussa analysis
struct push_back_motif {
std::set<Sequence>& motif_set;
float& red;
float& green;
float& blue;
+ float& alpha;
push_back_motif(std::set<Sequence>& motif_set_,
boost::shared_ptr<AnnotationColors> color_mapper_,
std::string& seq_,
std::string& name_,
- float red_, float green_, float blue_)
+ float &red_, float &green_, float &blue_, float &alpha_)
: motif_set(motif_set_),
color_mapper(color_mapper_),
seq_string(seq_),
name(name_),
red(red_),
green(green_),
- blue(blue_)
+ blue(blue_),
+ alpha(alpha_)
{
}
void operator()(std::string::const_iterator,
std::string::const_iterator) const
{
- //std::cout << "motif: " << seq_string << "/" << name << endl;
-
Sequence seq(seq_string);
// shouldn't we have a better field than "fasta header" and speices?
seq.set_fasta_header(name);
const char *alphabet = Sequence::nucleic_iupac_alphabet.c_str();
string seq;
string name;
- float red;
- float green;
- float blue;
+ float red = 1.0;
+ float green = 0.0;
+ float blue = 0.0;
+ float alpha = 1.0;
// slurp our data into a string
std::streamsize bytes_read = 1;
data.append(buf, buf+bytes_read);
}
// parse our string
- bool status = spirit::parse(data.begin(), data.end(),
+ bool ok = spirit::parse(data.begin(), data.end(),
*(
(
(
+spirit::space_p
) >>
!(
- (spirit::alpha_p >> *spirit::alnum_p)[spirit::assign_a(name)]
+ (spirit::alpha_p >> *spirit::graph_p)[spirit::assign_a(name)]
>> +spirit::space_p
) >>
spirit::real_p[spirit::assign_a(red)] >> +spirit::space_p >>
spirit::real_p[spirit::assign_a(green)] >> +spirit::space_p >>
spirit::real_p[spirit::assign_a(blue)] >> +spirit::space_p
- )[push_back_motif(motif_sequences, color_mapper, seq, name, red, green, blue)]
+ )[push_back_motif(motif_sequences, color_mapper, seq, name, red, green, blue, alpha)]
)).full;
+ if (not ok) {
+ std::clog << "Error parsing motif stream " << std::endl;
+ }
update_sequences_motifs();
}
BOOST_AUTO_TEST_CASE( glsequence_color )
{
boost::shared_ptr<AnnotationColors> cm(new AnnotationColors);
- Color black(0.0, 0.0, 0.0, 0.0);
+ Color black(0.0, 0.0, 0.0, 1.0);
Color c(0.1, 0.2, 0.3, 0.4);
boost::shared_ptr<Sequence> seq(new Sequence("AAGGCCTT"));
GlSequence s(seq, cm);
BOOST_CHECK_EQUAL(motifs.begin()->get_name(), "cat");
}
+BOOST_AUTO_TEST_CASE( mussa_weirdly_spaced_named_motif )
+{
+ string data = "CCAATT cat_meow123 0.1 0.2 0.3\n";
+ istringstream test_istream(data);
+
+ Mussa m1;
+ m1.append_sequence("AAAAGGGGTTTT");
+ m1.append_sequence("GGGCCCCTTCCAATT");
+ m1.load_motifs(test_istream);
+
+ std::set<Sequence> motifs = m1.motifs();
+ BOOST_REQUIRE_EQUAL(motifs.size(), 1);
+ BOOST_CHECK_EQUAL(motifs.begin()->get_name(), "cat_meow123");
+}
BOOST_AUTO_TEST_CASE( mussa_add_motif )
{
vector<Sequence> motifs;