def test_exporter_pipeline():
    # set up
    chanjo_db = Store(':memory:')
    chanjo_db.set_up()
    chanjo_db.add(
        chanjo_db.create('interval',
                         interval_id='intervalY',
                         contig='Y',
                         start=123,
                         end=501,
                         strand='-'))
    chanjo_db.save()

    bed_lines = list(export_intervals(chanjo_db))

    assert bed_lines[0] == '#chrom\tchromStart\tchromEnd\tname\tscore\tstrand'
    assert bed_lines[1:] == ['Y\t122\t501\tintervalY\t0\t-']
def test_fetch_records():
    # set up
    chanjo_db = Store(':memory:')
    chanjo_db.set_up()
    chanjo_db.add(
        chanjo_db.create('interval',
                         interval_id='interval1',
                         contig='chr1',
                         start=10,
                         end=100,
                         strand='+'))
    chanjo_db.save()

    columns = (Interval.contig, Interval.start, Interval.end)
    intervals = list(fetch_records(chanjo_db, columns))
    assert len(intervals) == 1
    assert intervals[0] == ('chr1', 10, 100)
Beispiel #3
0
def test_exporter_pipeline():
  # set up
  chanjo_db = Store(':memory:')
  chanjo_db.set_up()
  chanjo_db.add(chanjo_db.create(
    'interval',
    interval_id='intervalY',
    contig='Y',
    start=123,
    end=501,
    strand='-'
  ))
  chanjo_db.save()

  bed_lines = list(export_intervals(chanjo_db))

  assert bed_lines[0] == '#chrom\tchromStart\tchromEnd\tname\tscore\tstrand'
  assert bed_lines[1:] == ['Y\t122\t501\tintervalY\t0\t-']
Beispiel #4
0
def test_fetch_records():
  # set up
  chanjo_db = Store(':memory:')
  chanjo_db.set_up()
  chanjo_db.add(chanjo_db.create(
    'interval',
    interval_id='interval1',
    contig='chr1',
    start=10,
    end=100,
    strand='+'
  ))
  chanjo_db.save()

  columns = (Interval.contig, Interval.start, Interval.end)
  intervals = list(fetch_records(chanjo_db, columns))
  assert len(intervals) == 1
  assert intervals[0] == ('chr1', 10, 100)
def link(context, transcripts, bed_stream):
    """Link related genomic elements."""
    only_tx = transcripts or context.obj.get('transcripts') or False
    base = TXBASE if only_tx else BASE
    chanjo_db = Store(uri=context.obj['database'], base=base)
    try:
        if only_tx:
            result = load.link_transcripts(bed_stream)
            with click.progressbar(result.models,
                                   length=result.count,
                                   label='adding transcripts') as bar:
                for tx_model in bar:
                    chanjo_db.session.add(tx_model)
            chanjo_db.save()
        else:
            link_elements(chanjo_db, bed_stream)
    except IntegrityError:
        click.echo("elements already linked, use 'chanjo db setup --reset' "
                   "to re-build")
Beispiel #6
0
class TestBuildElement(object):
    def setup(self):
        self.store = Store(':memory:')
        self.store.set_up()

        self.interval = BaseInterval('1',
                                     10,
                                     100,
                                     name='int1',
                                     block_ids=['block1', 'block2'],
                                     superblock_ids=['sblock1', 'sblock1'])

        self.db_interval = StoreInterval(interval_id=self.interval.name,
                                         contig=self.interval.contig,
                                         start=self.interval.start,
                                         end=self.interval.end,
                                         strand=self.interval.strand)
        self.interval_group = [('block2', self.db_interval, 'sblock1')]

    def test_build_interval(self):
        intervals = list(build_interval(self.store, self.interval))
        self.store.save()
        new_interval = self.store.get('interval', self.interval.name)

        assert new_interval.id == self.interval.name
        assert new_interval.start == self.interval.start

        assert len(intervals) == 2

    def test_build_block(self):
        superblock_id, new_block = build_block(self.store, self.interval_group)
        self.store.save()
        db_block = self.store.get('block', self.interval_group[0][0])

        assert superblock_id == 'sblock1'
        assert new_block.id == db_block.id == self.interval_group[0][0]
        assert new_block.start == db_block.start == self.interval_group[0][
            1].start
Beispiel #7
0
class TestBuildElement(object):
    def setup(self):
        self.store = Store(":memory:")
        self.store.set_up()

        self.interval = BaseInterval(
            "1", 10, 100, name="int1", block_ids=["block1", "block2"], superblock_ids=["sblock1", "sblock1"]
        )

        self.db_interval = StoreInterval(
            interval_id=self.interval.name,
            contig=self.interval.contig,
            start=self.interval.start,
            end=self.interval.end,
            strand=self.interval.strand,
        )
        self.interval_group = [("block2", self.db_interval, "sblock1")]

    def test_build_interval(self):
        intervals = list(build_interval(self.store, self.interval))
        self.store.save()
        new_interval = self.store.get("interval", self.interval.name)

        assert new_interval.id == self.interval.name
        assert new_interval.start == self.interval.start

        assert len(intervals) == 2

    def test_build_block(self):
        superblock_id, new_block = build_block(self.store, self.interval_group)
        self.store.save()
        db_block = self.store.get("block", self.interval_group[0][0])

        assert superblock_id == "sblock1"
        assert new_block.id == db_block.id == self.interval_group[0][0]
        assert new_block.start == db_block.start == self.interval_group[0][1].start