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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()