Ejemplo n.º 1
0
    def get_hic_zscores(self, normalized=True, zscored=True):
        """
        Computes a normalization of Hi-C raw data. Result will be stored into
        the private Experiment._zscore list

        :param True normalized: whether to normalize the result using the
           weights (see :func:`normalize_hic`)
        :param True zscored: apply a z-score transform over the data.
        
        """
        values = []
        if normalized:
            for i in xrange(self.size):
                # zeros are rows or columns having a zero in the diagonal
                if i in self._zeros:
                    continue
                for j in xrange(self.size):
                    if j in self._zeros:
                        continue
                    try:
                        values.append(
                            self.hic_data[0][i * self.size + j] /\
                            self.wght[0][i * self.size + j])
                    except ZeroDivisionError:
                        values.append(0.0)
        else:
            for i in xrange(self.size):
                if i in self._zeros:
                    continue
                for j in xrange(self.size):
                    if j in self._zeros:
                        continue
                    values.append(self.hic_data[0][i * self.size + j])
        # compute Z-score
        if zscored:
            zscore(values, self.size)
        iterval = values.__iter__()
        for i in xrange(self.size):
            if i in self._zeros:
                continue
            for j in xrange(self.size):
                if j in self._zeros:
                    continue
                zsc = iterval.next()
                self._zscores.setdefault(i, {})
                self._zscores[i][j] = zsc
                self._zscores.setdefault(j, {})
                self._zscores[j][i] = zsc
Ejemplo n.º 2
0
def to_binary(exp, method='bin'):
    exp.normalize_hic(method='bytot')
    hic = exp.hic_data[0][:]
    nhic = [(float(hic[i]) / exp.wght[0][i]) if exp.wght[0][i] else 0.0 \
            for i in xrange(exp.size**2)]
    zscore(nhic, exp.size)
    if method == 'trin':
        return [1 if z.__str__() == 'nan' \
                else 0 if -1 < z < 1 else 1 if z > 0 else -1 for z in nhic]
    elif method == 'fivn':
        return [1 if z.__str__() == 'nan' \
                else 0 if z < -2 \
                else 1 if z < -1 \
                else 2 if z < 1 \
                else 3 if z < 2 \
                else 4 for z in nhic]
    return [0 if z < 0 else 1 for z in nhic]
Ejemplo n.º 3
0
def to_binary(exp, method='bin'):
    exp.normalize_hic(method='bytot')
    hic = exp.hic_data[0][:]
    nhic = [(float(hic[i]) / exp.wght[0][i]) if exp.wght[0][i] else 0.0 \
            for i in xrange(exp.size**2)]
    zscore(nhic, exp.size)
    if method == 'trin':
        return [1 if z.__str__() == 'nan' \
                else 0 if -1 < z < 1 else 1 if z > 0 else -1 for z in nhic]
    elif method == 'fivn':
        return [1 if z.__str__() == 'nan' \
                else 0 if z < -2 \
                else 1 if z < -1 \
                else 2 if z < 1 \
                else 3 if z < 2 \
                else 4 for z in nhic]
    return [0 if z < 0 else 1 for z in nhic]