def test_intersecting_genes(self): '''Test retrieving genes intersecting a base-pair position segment.''' # print repr(User.__table__) #@UndefinedVariable Session = sessionmaker(bind=self.engine) session = Session() # I believe all of the following are equivalent statements and all are prepared statements chrom = 1 (start, end) = (62151773, 62516683) expected = [('NM_032027', 'TM2D1'), ('NM_176877', 'INADL')] assert_equal([(gene.name, gene.name2) for gene in session.query(Gene). filter(and_(Gene.chrom == 'chr%s' % (chrom,), greatest(Gene.txStart, start) <= least(Gene.txEnd, end))). order_by(Gene.txStart)], expected) assert_equal([(gene.name, gene.name2) for gene in session.query(Gene). filter('chrom = :chrom and greatest(txStart, :start) <= least(txEnd, :end)'). params(chrom='chr%s' % (chrom,), start=start, end=end). order_by(Gene.txStart)], expected) assert_equal([(gene.name, gene.name2) for gene in self.dao.intersecting_genes(chrom, start, end)], expected) session.close()
def test_intersecting_genes(self): '''Test retrieving genes intersecting a base-pair position segment.''' # print repr(User.__table__) #@UndefinedVariable Session = sessionmaker(bind=self.engine) session = Session() # I believe all of the following are equivalent statements and all are prepared statements chrom = 1 (start, end) = (62151773, 62516683) expected = [('NM_032027', 'TM2D1'), ('NM_176877', 'INADL')] assert_equal( [(gene.name, gene.name2) for gene in session.query(Gene).filter( and_(Gene.chrom == 'chr%s' % (chrom, ), greatest(Gene.txStart, start) <= least(Gene.txEnd, end))). order_by(Gene.txStart)], expected) assert_equal([( gene.name, gene.name2 ) for gene in session.query(Gene).filter( 'chrom = :chrom and greatest(txStart, :start) <= least(txEnd, :end)' ).params(chrom='chr%s' % (chrom, ), start=start, end=end).order_by(Gene.txStart)], expected) assert_equal( [(gene.name, gene.name2) for gene in self.dao.intersecting_genes(chrom, start, end)], expected) session.close()
def intersecting_genes(self, chrom, start, end): '''Return a collection of Gene entities that overlap the base-pair [start,end] on chromosome chrom.''' # print 'intersecting_genes', chrom, start, end session = self.Session() result = list(session.query(Gene).filter(and_(Gene.chrom == 'chr%s' % (chrom,), greatest(Gene.txStart, start) <= least(Gene.txEnd, end))).\ order_by(Gene.txStart)) session.close() return result