def _build_code(self, last_layer):
        with tf.name_scope('Code'):
            with tf.name_scope('mean'):
                mean_weights = util.get_weights_he((self.encoder_layers_size[-2],
                    self.encoder_layers_size[-1]))
                mean_biases = util.get_bias(self.encoder_layers_size[-1])

                tf.summary.histogram('Code_mean_weights_summary', mean_weights)
                tf.summary.histogram('Code_mean_biases_summary', mean_biases)

                self.code_mean = tf.nn.bias_add(tf.matmul(last_layer, mean_weights), mean_biases,
                    name='layer')

            with tf.name_scope('stddev'):
                stddev_weights = util.get_weights_he((self.encoder_layers_size[-2],
                    self.encoder_layers_size[-1]))
                stddev_biases = util.get_bias(self.encoder_layers_size[-1])

                tf.summary.histogram('Code_stddev_weights_summary', stddev_weights)
                tf.summary.histogram('Code_stddev_biases_summary', stddev_biases)

                self.code_log_sigma_sq = tf.nn.bias_add(tf.matmul(last_layer, stddev_weights),
                    stddev_biases, name='layer')

            epsilon = tf.random_normal([self.batch_size[0], self.encoder_layers_size[-1]])
            self.code = tf.add(self.code_mean,
                tf.multiply(tf.sqrt(tf.exp(self.code_log_sigma_sq)), epsilon), name='layer')
    def _build_code(self):
        self._flatten()
        fan_in = self.current_layer.get_shape().as_list()[1]
        with tf.name_scope('Code'):
            with tf.name_scope('mean'):
                mean_weights = util.get_weights_he(
                    (fan_in, self.code_dimension))
                mean_biases = util.get_bias(self.code_dimension)

                self.code_mean = tf.nn.bias_add(tf.matmul(
                    self.current_layer, mean_weights),
                                                mean_biases,
                                                name='layer')

            with tf.name_scope('stddev'):
                stddev_weights = util.get_weights_he(
                    (fan_in, self.code_dimension))
                stddev_biases = util.get_bias(self.code_dimension)

                self.code_log_sigma_sq = tf.nn.bias_add(tf.matmul(
                    self.current_layer, stddev_weights),
                                                        stddev_biases,
                                                        name='layer')

            epsilon = tf.random_normal(
                [self.batch_size[0], self.code_dimension])
            self.code = tf.add(self.code_mean,
                               tf.multiply(
                                   tf.sqrt(tf.exp(self.code_log_sigma_sq)),
                                   epsilon),
                               name='layer')

        self.current_layer = self.code
        self.code_built = True
        self.decoder_layers_counter = 1
Beispiel #3
0
    def from_seqrecord(cls, sr, featuretype='CDS', name=None):

        if not name:
            name = sr.name

        CDS = [f for f in sr.features if f.type == featuretype]

        _data = pd.DataFrame(np.zeros((len(CDS), 64), dtype=int), 
                             columns = util.list_codons())

        _second_order = pd.DataFrame(np.zeros((64,64), dtype=int),
                                     index = util.list_codons(),
                                     columns = util.list_codons())

        _scores = pd.DataFrame(np.zeros((len(CDS), 2)), 
                               columns = ['first', 'second',])

        _seqs = [util._extract(sr, cds) for cds in CDS]
        for i,seq in enumerate(_seqs):
            _data.loc[i,:] = util.get_bias(seq)
            util.add_second_order(_second_order, seq)

        #calculate scores
        _nd = util.normalise(_data.sum(0))
        _nso= util.so_normalise(_second_order)
        for i,seq in enumerate(_seqs):
            _scores.at[i,'first'] = util.score(_nd, seq)
            _scores.at[i,'second'] = util.so_score(_nso, seq)

        return cls(name, _data, _second_order, _scores, _nd, _nso)
Beispiel #4
0
    def add_sequence(self, label, seq):
        if isinstance(seq, basestring):
            bias = util.get_bias(seq)
        else:
            bias = util.get_bias(str(seq.seq))
            original = self._data.loc[112]

        #make sure the ordering is the same as the original
        bias = bias.reindex(self._data.columns)

        #normalise
        bias = self._normalise(bias)

        #get score
        self._scores.loc[label] = np.dot(self._pca.components_, bias)

        #set label
        self._labels[label] = [
            label,
        ]
    def _build_output(self, last_layer):
        with tf.name_scope('Output'):
            W = util.get_weights_xavier((self.decoder_layers_size[-2],
                self.decoder_layers_size[-1]))
            b = util.get_bias(self.decoder_layers_size[-1])

            tf.summary.histogram('Output_weights_summary', W)
            tf.summary.histogram('Output_biases_summary', b)

            self.logits = tf.nn.bias_add(tf.matmul(last_layer, W), b, name='logits')
            self.output_layer = tf.sigmoid(self.logits, name='layer')
    def _build_network(self):
        """Create the classifier network."""
        self.input_layer = tf.placeholder(tf.float32,
                                          [None, self.input_dimension])
        weights = util.get_weights_xavier(
            (self.input_dimension, self.possible_classes_count))

        if self._add_bias:
            bias = util.get_bias(self.possible_classes_count)
            self.prediction_logits = tf.nn.bias_add(
                tf.matmul(self.input_layer, weights), bias)
        else:
            self.prediction_logits = tf.matmul(self.input_layer, weights)
 def _build_output(self, filter_shape):
     stride = self.image_dimension // self.current_layer.get_shape(
     ).as_list()[1]
     with tf.name_scope('Output'):
         W = util.get_weights_xavier(filter_shape)
         b = util.get_bias(filter_shape[2])
         final_layer = tf.nn.bias_add(tf.nn.conv2d_transpose(
             self.current_layer, W, [
                 self.batch_size[0], self.image_dimension,
                 self.image_dimension, 1
             ], [1, stride, stride, 1], 'SAME'),
                                      b,
                                      name='logits')
         self.logits = tf.reshape(
             final_layer, [self.batch_size[0], self.image_dimension**2])
         self.output_layer = tf.sigmoid(self.logits, name='layer')
     del self.current_layer