DEMO: DLPFC

In the DLPFC dataset, we demonstrate the automatically generated landmarks by ARIEL under varying landmark quantities and their corresponding alignment results. Additionally, we apply spatial transformations such as rotation and mirroring to the slices to showcase the stability of the ARIEL.

%load_ext autoreload
%autoreload 2

import numpy as np
import math
import torch
import matplotlib.pyplot as plt
import scanpy as sc
import squidpy as sq
import anndata as ad
import pandas as pd
import anndata
from ariel_srt.Landmark import normalization_spatial, Rasterization, alternative_landmark, screen_landmark
from ariel_srt.Alignment import rigid_alignment
from ariel_srt.Transfer import Appro_GP
path = './data/DLPFC'

Spatial alignment result under different landmark number

data_151673=sc.read_h5ad(f'{path}/data_151673.h5ad')
embedding = pd.read_csv(f'{path}/embedding_151673.csv')
data_151673.obsm['embedding']=np.array(embedding.T)

data_151674=sc.read_h5ad(f'{path}/data_151674.h5ad')
embedding = pd.read_csv(f'{path}/embedding_151674.csv')
data_151674.obsm['embedding']=np.array(embedding.T)
spatial1 = normalization_spatial(data_151673.obsm['spatial'])
data_151673.obsm['spatial'] = spatial1

spatial_new1, embedding_new1=Rasterization(data_151673.obsm['spatial'],data_151673.obsm['embedding'],nx=40,ny=40)
spatial_new2, embedding_new2=Rasterization(data_151674.obsm['spatial'],data_151674.obsm['embedding'],nx=40,ny=40)

ARIEL with 5 landmarks

lm1_5, lm2_5 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_5, lm2_5 = screen_landmark(lm1_5, lm2_5,n=5)
lm2_5_tran, spatial2 = rigid_alignment(lm1_5, lm2_5, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 5))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_5[:,0],lm1_5[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_5[:,0],lm2_5[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/7406e16bf5f064241a3253b6642e76ffb18875c1587e8f1fbd9d2af1de5680d5.png

ARIEL with 10 landmarks

lm1_10, lm2_10 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_10, lm2_10 = screen_landmark(lm1_10, lm2_10,n=10)
lm2_10_tran, spatial2 = rigid_alignment(lm1_10, lm2_10, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 10))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_10[:,0],lm1_10[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_10[:,0],lm2_10[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/1236be89695dd967f760bfa650ca2bc3397f705377664d1fc69cea582058c222.png

ARIEL with 15 landmarks

lm1_15, lm2_15 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_15, lm2_15 = screen_landmark(lm1_15, lm2_15,n=15)
lm2_15_tran, spatial2 = rigid_alignment(lm1_15, lm2_15, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 15))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_15[:,0],lm1_15[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_15[:,0],lm2_15[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/d1916bfd737416b481599d8f2558fdc389edb4f13c5dd9667bd50ddfb701a35a.png

ARIEL with 20 landmarks

lm1_20, lm2_20 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_20, lm2_20 = screen_landmark(lm1_20, lm2_20,n=20)
lm2_20_tran, spatial2 = rigid_alignment(lm1_20, lm2_20, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 20))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_20[:,0],lm1_20[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_20[:,0],lm2_20[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/34a624564ed2b8c57ff87b90c022736a77adccc57e467841381455ff3e422f08.png

ARIEL with 25 landmarks

lm1_25, lm2_25 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_25, lm2_25 = screen_landmark(lm1_25, lm2_25,n=25)
lm2_25_tran, spatial2 = rigid_alignment(lm1_25, lm2_25, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 25))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_25[:,0],lm1_25[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_25[:,0],lm2_25[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/a54a657160487f810d06d8f310217e807954a2be9c3b3615ab7a7d78b0525b43.png

ARIEL with 30 landmarks

lm1_30, lm2_30 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_30, lm2_30 = screen_landmark(lm1_30, lm2_30,n=30)
lm2_30_tran, spatial2 = rigid_alignment(lm1_30, lm2_30, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 30))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_30[:,0],lm1_30[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_30[:,0],lm2_30[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/022dea8d733336273e979011f97bc9fb199610fb55de9468ef2a6f3b30b1f69c.png

ARIEL with 35 landmarks

lm1_35, lm2_35 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_35, lm2_35 = screen_landmark(lm1_35, lm2_35,n=35)
lm2_35_tran, spatial2 = rigid_alignment(lm1_35, lm2_35, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 35))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_35[:,0],lm1_35[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_35[:,0],lm2_35[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/a93c0004535a03de08ebf8518d70d4a8c8760e3e2becfd2b5d7ec5671411f924.png

ARIEL with 40 landmarks

lm1_40, lm2_40 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_40, lm2_40 = screen_landmark(lm1_40, lm2_40,n=40)
lm2_40_tran, spatial2 = rigid_alignment(lm1_40, lm2_40, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 40))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_40[:,0],lm1_40[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_40[:,0],lm2_40[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/59d30991fc1791752057c82dfe1ce9975e8b6b0d77dba8684ce2d1824b08c99d.png

ARIEL with 45 landmarks

lm1_45, lm2_45 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_45, lm2_45 = screen_landmark(lm1_45, lm2_45,n=45)
lm2_45_tran, spatial2 = rigid_alignment(lm1_45, lm2_45, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 45))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_45[:,0],lm1_45[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_45[:,0],lm2_45[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/658e943e1b5b9fcc323655af6f49b1357cad73dd210b01f08488b2f89b605099.png

ARIEL with 50 landmarks

lm1_50, lm2_50 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_50, lm2_50 = screen_landmark(lm1_50, lm2_50,n=50)
lm2_50_tran, spatial2 = rigid_alignment(lm1_50, lm2_50, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 50))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_50[:,0],lm1_50[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_50[:,0],lm2_50[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/81935ee48eb2735cacbf2dd5aad61c3fb2718ff7cf277a6a47621344b0e1bf5d.png

Change coordinate system and use ARIEL to align the samples

def flip(spatial,sigma):
    x = spatial[:,0]
    y = spatial[:,1]
    x1 = x*np.cos(sigma) + y*np.sin(sigma)
    y1 = -x*np.sin(sigma) + y*np.cos(sigma)
    spatial[:,0] = x1
    spatial[:,1] = y1
    return spatial

Alignmnet after rotating the query sample by 90 degrees

data_151674=sc.read_h5ad(f'{path}/data_151674.h5ad')
embedding = pd.read_csv(f'{path}/embedding_151674_7374.csv')
data_151674.obsm['embedding']=np.array(embedding.T)

data_151674.obsm['spatial'] = flip(data_151674.obsm['spatial'],math.pi/2)
spatial_new2, embedding_new2=Rasterization(data_151674.obsm['spatial'],data_151674.obsm['embedding'],nx=40,ny=40)
lm1_90, lm2_90 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_90, lm2_90 = screen_landmark(lm1_90, lm2_90)
lm2_90_tran, spatial2 = rigid_alignment(lm1_90, lm2_90, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 10))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_90[:,0],lm1_90[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_90[:,0],lm2_90[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/bc409eb003c81091244ee56f2c61c67c02a53018598990a685958da7ef32dc18.png

Alignmnet after rotating the query sample by 180 degrees

data_151674=sc.read_h5ad(f'{path}/data_151674.h5ad')
embedding = pd.read_csv(f'{path}/embedding_151674_7374.csv')
data_151674.obsm['embedding']=np.array(embedding.T)

data_151674.obsm['spatial'] = flip(data_151674.obsm['spatial'],math.pi)
spatial_new2, embedding_new2=Rasterization(data_151674.obsm['spatial'],data_151674.obsm['embedding'],nx=40,ny=40)
lm1_180, lm2_180 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_180, lm2_180 = screen_landmark(lm1_180, lm2_180)
lm2_180_tran, spatial2 = rigid_alignment(lm1_180, lm2_180, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 10))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_180[:,0],lm1_180[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_180[:,0],lm2_180[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/58ee51311e9bda2329a7b50162e2fd89ace9ccf11a5ce8d8ae967e37d61327cf.png

Alignmnet after rotating the query sample by 270 degrees

data_151674=sc.read_h5ad(f'{path}/data_151674.h5ad')
embedding = pd.read_csv(f'{path}/embedding_151674_7374.csv')
data_151674.obsm['embedding']=np.array(embedding.T)

data_151674.obsm['spatial'] = flip(data_151674.obsm['spatial'],math.pi*3/2)
spatial_new2, embedding_new2=Rasterization(data_151674.obsm['spatial'],data_151674.obsm['embedding'],nx=40,ny=40)
lm1_270, lm2_270 = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_270, lm2_270 = screen_landmark(lm1_270, lm2_270)
lm2_270_tran, spatial2 = rigid_alignment(lm1_270, lm2_270, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 10))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_270[:,0],lm1_270[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_270[:,0],lm2_270[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/3fa26984cb2ca065271583c3faf87c41e6777c49359a143886ab90ca94828673.png

Alignmnet after horizontally mirroring the query sample

data_151674=sc.read_h5ad(f'{path}/data_151674.h5ad')
embedding = pd.read_csv(f'{path}/embedding_151674_7374.csv')
data_151674.obsm['embedding']=np.array(embedding.T)

data_151674.obsm['spatial'][:,0] = -data_151674.obsm['spatial'][:,0]
spatial_new2, embedding_new2=Rasterization(data_151674.obsm['spatial'],data_151674.obsm['embedding'],nx=40,ny=40)
lm1_hor, lm2_hor = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_hor, lm2_hor = screen_landmark(lm1_hor, lm2_hor)
lm2_hor_tran, spatial2 = rigid_alignment(lm1_hor, lm2_hor, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 10))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_hor[:,0],lm1_hor[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_hor[:,0],lm2_hor[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/38c866be9cf94bf223be56752c5994545ed5b2a2a84a3242fb95156d1adb23e9.png

Alignmnet after vertically mirroring the query sample

data_151674=sc.read_h5ad(f'{path}/data_151674.h5ad')
embedding = pd.read_csv(f'{path}/embedding_151674_7374.csv')
data_151674.obsm['embedding']=np.array(embedding.T)

data_151674.obsm['spatial'][:,1] = -data_151674.obsm['spatial'][:,1]
spatial_new2, embedding_new2=Rasterization(data_151674.obsm['spatial'],data_151674.obsm['embedding'],nx=40,ny=40)
lm1_ver, lm2_ver = alternative_landmark(spatial_new1, spatial_new2, embedding_new1, embedding_new2)
lm1_ver, lm2_ver = screen_landmark(lm1_ver, lm2_ver)
lm2_ver_tran, spatial2 = rigid_alignment(lm1_ver, lm2_ver, data_151674.obsm['spatial'])
color = plt.cm.tab10(np.linspace(0, 1, 10))
plt.figure(dpi=150, figsize=(30,10))
plt.subplot(1, 3, 1)
plt.scatter(spatial1[:,0],spatial1[:,1],s=70)
plt.scatter(lm1_ver[:,0],lm1_ver[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 2)
plt.scatter(data_151674.obsm['spatial'][:,0],data_151674.obsm['spatial'][:,1],s=70)
plt.scatter(lm2_ver[:,0],lm2_ver[:,1],s=1300, color = color,edgecolor='black',linewidth=1)
plt.axis("off")

plt.subplot(1, 3, 3)
plt.scatter(spatial1[:,0],spatial1[:,1],c=data_151673.obsm['color'][:,0],alpha=0.5,s=70)
plt.scatter(spatial2[:,0],spatial2[:,1],c=data_151674.obsm['color'][:,0],alpha=0.5,s=70)
plt.axis("off")

plt.tight_layout()
_images/44b3751ee2689093d693bd4fb47f1488fa1c6a2571bff830c51390e5a8b552e1.png