def _compute(self):
        tv1 = self._children[0].getResult()
        allSortedCodedEvents = self._children[1].getResult()

        allEventCodes = (allSortedCodedEvents % 4) - 2

        allSortedDecodedEvents = allSortedCodedEvents / 4

        from numpy.ma import add
        cumulativeCoverStatus = add.accumulate(allEventCodes)
        assert len(cumulativeCoverStatus) == len(allSortedDecodedEvents), str(
            len(allSortedDecodedEvents))

        unionStartList = []
        unionEndList = []

        startedFlag = False
        for i, cumVal in enumerate(cumulativeCoverStatus):
            if cumVal == 1 and not startedFlag:
                startPos = allSortedDecodedEvents[i]
                startedFlag = True
            elif cumVal == 0:
                if startPos:
                    unionStartList.append(startPos)
                    unionEndList.append(allSortedDecodedEvents[i])
                    startPos = None
                    startedFlag = False

        return [
            GenomeElement(start=x, end=y)
            for x, y in zip(unionStartList, unionEndList)
        ]
Esempio n. 2
0
def randomSelect(item_list):
    '''
    随机选择带权重的list中的某个item,并返回其下标(item_list权重和可以不为1)
    :param item_list:
    :return:
    '''
    accu_item_list = add.accumulate(item_list)
    # print(type(accu_item_list))
    random_select = random.random() * accu_item_list[-1]
    for accu_item_id, accu_item in enumerate(accu_item_list):
        if accu_item > random_select:
            return accu_item_id
Esempio n. 3
0
 def test_testAddSumProd(self):
     # Test add, sum, product.
     (x, y, a10, m1, m2, xm, ym, z, zm, xf, s) = self.d
     assert_(eq(np.add.reduce(x), add.reduce(x)))
     assert_(eq(np.add.accumulate(x), add.accumulate(x)))
     assert_(eq(4, sum(array(4), axis=0)))
     assert_(eq(4, sum(array(4), axis=0)))
     assert_(eq(np.sum(x, axis=0), sum(x, axis=0)))
     assert_(eq(np.sum(filled(xm, 0), axis=0), sum(xm, axis=0)))
     assert_(eq(np.sum(x, 0), sum(x, 0)))
     assert_(eq(np.product(x, axis=0), product(x, axis=0)))
     assert_(eq(np.product(x, 0), product(x, 0)))
     assert_(eq(np.product(filled(xm, 1), axis=0), product(xm, axis=0)))
     if len(s) > 1:
         assert_(eq(np.concatenate((x, y), 1), concatenate((xm, ym), 1)))
         assert_(eq(np.add.reduce(x, 1), add.reduce(x, 1)))
         assert_(eq(np.sum(x, 1), sum(x, 1)))
         assert_(eq(np.product(x, 1), product(x, 1)))
Esempio n. 4
0
 def test_testAddSumProd(self):
     # Test add, sum, product.
     (x, y, a10, m1, m2, xm, ym, z, zm, xf, s) = self.d
     self.assertTrue(eq(np.add.reduce(x), add.reduce(x)))
     self.assertTrue(eq(np.add.accumulate(x), add.accumulate(x)))
     self.assertTrue(eq(4, sum(array(4), axis=0)))
     self.assertTrue(eq(4, sum(array(4), axis=0)))
     self.assertTrue(eq(np.sum(x, axis=0), sum(x, axis=0)))
     self.assertTrue(eq(np.sum(filled(xm, 0), axis=0), sum(xm, axis=0)))
     self.assertTrue(eq(np.sum(x, 0), sum(x, 0)))
     self.assertTrue(eq(np.product(x, axis=0), product(x, axis=0)))
     self.assertTrue(eq(np.product(x, 0), product(x, 0)))
     self.assertTrue(eq(np.product(filled(xm, 1), axis=0), product(xm, axis=0)))
     if len(s) > 1:
         self.assertTrue(eq(np.concatenate((x, y), 1), concatenate((xm, ym), 1)))
         self.assertTrue(eq(np.add.reduce(x, 1), add.reduce(x, 1)))
         self.assertTrue(eq(np.sum(x, 1), sum(x, 1)))
         self.assertTrue(eq(np.product(x, 1), product(x, 1)))