def test_reads(self): start = 120000 stop = 121000 x = pileup.Reads(json="{}", build='hg19', contig='chr17', start=start, stop=stop) assert (x.start == start) assert (x.stop == stop)
def test_minimal_reads_html(self): w = pileup.Reads(json="{}", build='hg19', contig='chr1', start=1, stop=20) output = StringIO() state = dependency_state(w, drop_defaults=True) embed_minimal_html(output, views=w, drop_defaults=True, state=state) content = output.getvalue() assert content.splitlines()[0] == '<!DOCTYPE html>'
def test_embed_alignments(self): w = pileup.Reads(json="{}", build='hg19', contig='chr1', start=1, stop=20) state = dependency_state(w, drop_defaults=True) data = embed_data(views=w, drop_defaults=True, state=state) state = data['manager_state']['state'] views = data['view_specs'] assert len(views) == 1 model_names = [s['model_name'] for s in state.values()] assert 'ReadsModel' in model_names
def test_snippet(self): class Parser(HTMLParser): state = 'initial' states = [] def handle_starttag(self, tag, attrs): attrs = dict(attrs) if tag == 'script' and attrs.get( 'type', '') == "application/vnd.jupyter.widget-state+json": self.state = 'widget-state' self.states.append(self.state) elif tag == 'script' and attrs.get( 'type', '') == "application/vnd.jupyter.widget-view+json": self.state = 'widget-view' self.states.append(self.state) def handle_endtag(self, tag): self.state = 'initial' def handle_data(self, data): if self.state == 'widget-state': manager_state = json.loads(data)['state'] assert len(manager_state) == 2 self.states.append('check-widget-state') elif self.state == 'widget-view': view = json.loads(data) assert isinstance(view, dict) self.states.append('check-widget-view') w = pileup.Reads(json="{}", build='hg19', contig='chr1', start=1, stop=20) state = dependency_state(w, drop_defaults=True) snippet = embed_snippet(views=w, drop_defaults=True, state=state) parser = Parser() parser.feed(snippet) assert parser.states == [ 'widget-state', 'check-widget-state', 'widget-view', 'check-widget-view' ]
def ViewAlignments(self, alignmentRecordRDD, contig, start, end, showPlot=True): contig_trimmed = contig.lstrip(self.chrPrefix) # Filter RDD filtered = alignmentRecordRDD.transform(lambda r: r.filter( ((r.contigName == contig) | (r.contigName == contig_trimmed)) & (r.start < end) & (r.end > start) & (r.readMapped))) # convert to GA4GH JSON to be consumed by mango-viz module json = self.ac._jvm.org.bdgenomics.mango.converters.GA4GHutil.alignmentRecordRDDtoJSON( filtered._jvmRdd) # visualize if (showPlot): return pileup.Reads(json=json, build=self.build, contig=contig, start=start, stop=end)