MIGAVis / utils /emblaze_utils.py
McHz1s's picture
Initial commit
d6ee7b8
import cv2
from emblaze import EmbeddingSet, Embedding, Field
import os
import numpy as np
def to_EmbeddingSet(embeddings, colors):
emb_set = EmbeddingSet([Embedding({Field.POSITION: embeddings, Field.COLOR: colors})])
return emb_set
def to_Embedding(embeddings, colors):
return Embedding({Field.POSITION: embeddings, Field.COLOR: colors})
def add_new_embedding(sample_idx_list, embedding_modality, trans, old_embeddings, color_array, old_img_list):
need = ['img', 'graph']
embedding_dir = '/rhome/lianyu.zhou/cache/cluster_test_set_gformer_l3_b256_atom60'
from emblaze import ImageThumbnails
from emblaze import EmbeddingSet, Embedding
from emblaze.utils import Field
new_img_list = []
for idx in sample_idx_list:
modal_imgs_dir = f'/rhome/lianyu.zhou/dataset/omics_{need[embedding_modality]}_vis'
read_path = os.path.join(modal_imgs_dir, f"{idx:05d}.png")
img = cv2.imread(read_path)[..., ::-1]
new_img_list.append(img)
embeddings = np.load(os.path.join(embedding_dir, f"{need[embedding_modality]}_embedding.npy"))
new_embeddings = embeddings[sample_idx_list]
transformed_embeddings = trans.transform(new_embeddings)
merge_old_embeddings = np.concatenate([old_embeddings, transformed_embeddings], axis=0)
new_color_array = np.concatenate([color_array, np.ones((len(sample_idx_list),))], axis=0)
new_reduced = EmbeddingSet([Embedding({Field.POSITION: merge_old_embeddings, Field.COLOR: new_color_array})])
new_reduced.compute_neighbors(metric='euclidean', n_neighbors=100)
new_img_list.extend(old_img_list)
thumbnails = ImageThumbnails(new_img_list)
return new_reduced, thumbnails