def get_encoded_repertoire(self, repertoire, params: EncoderParams): params.model = vars(self) return CacheHandler.memo_by_params((("encoding_model", params.model), ("type", "kmer_encoding"), ("labels", params.label_config.get_labels_by_name()), ("repertoire_id", repertoire.identifier)), lambda: self.encode_repertoire(repertoire, params), CacheObjectType.ENCODING_STEP)
def _get_encoded_repertoire(self, repertoire, params: EncoderParams): params.model = vars(self) return CacheHandler.memo_by_params((("encoding_model", params.model), ("labels", params.label_config.get_labels_by_name()), ("repertoire_id", repertoire.identifier), ("repertoire_data", hashlib.sha256(np.ascontiguousarray(repertoire.get_attribute(self.sequence_type.value))).hexdigest())), lambda: self._encode_repertoire(repertoire, params), CacheObjectType.ENCODING)
def _encode_sequence(self, sequence: ReceptorSequence, params: EncoderParams, sequence_encoder, counts): params.model = vars(self) features = sequence_encoder.encode_sequence(sequence, params) if features is not None: for i in features: if self.reads == ReadsType.UNIQUE: counts[i] += 1 elif self.reads == ReadsType.ALL: counts[i] += sequence.metadata.count return counts