anndata复制问题

感觉这个问题就很复杂哈,摸不清什么规律,只能判断前后的维度变化了

example 1

import scanpy as sc 

adata1 = sc.read('/Users/yxkang/Desktop/dataset/HER2/H5AD_file/ad_H1.h5ad')
print(adata1)

adata2 = sc.read('/Users/yxkang/Desktop/dataset/HER2/H5AD_file/ad_G2.h5ad')
print(adata2)

adata = sc.AnnData.concatenate(*[adata1,adata2])
print(adata)

adata_list =[adata1,adata2]
print("before ....")
print(adata_list[0])
print(adata_list[1])
print(adata1)
print(adata2)

for ad in adata_list:
    print(ad)
    ad = ad[:,adata.var_names[0:100]]
    print(ad)
print("After...")
print(adata_list[0])
print(adata_list[1])
print(adata1)
print(adata2)

在这里插入图片描述

example2

import scanpy as sc 

adata1 = sc.read('/Users/yxkang/Desktop/dataset/HER2/H5AD_file/ad_H1.h5ad')
print(adata1)

adata2 = sc.read('/Users/yxkang/Desktop/dataset/HER2/H5AD_file/ad_G2.h5ad')
print(adata2)

adata = sc.AnnData.concatenate(*[adata1,adata2])
print(adata)

adata_list =[adata1,adata2]
print("before ....")
print(adata_list[0])
print(adata_list[1])
print(adata1)
print(adata2)

for idx in range(len(adata_list)):
    print(adata_list[idx])
    adata_list[idx] = adata_list[idx][:,adata.var_names[0:100]]
    print(adata_list[idx])
print("After...")
print(adata_list[0])
print(adata_list[1])
print(adata1)
print(adata2)

在这里插入图片描述

example3

import scanpy as sc 

adata1 = sc.read('/Users/yxkang/Desktop/dataset/HER2/H5AD_file/ad_H1.h5ad')
print(adata1)

adata2 = sc.read('/Users/yxkang/Desktop/dataset/HER2/H5AD_file/ad_G2.h5ad')
print(adata2)

adata = sc.AnnData.concatenate(*[adata1,adata2])
print(adata)

adata_list =[adata1,adata2]
print("before ....")
print(adata_list[0])
print(adata_list[1])
print(adata1)
print(adata2)

for idx in range(len(adata_list)):
    ad = adata_list[idx]
    print(ad)
    ad = ad[:,adata.var_names[0:100]]
    print(ad)
print("After...")
print(adata_list[0])
print(adata_list[1])
print(adata1)
print(adata2)

在这里插入图片描述

可以看到,直接访问列表元素和中间过渡使用暂时变量,结果是有区别的,
而且为了彻底改变adata的值,不要view, 应该使用copy()

如下面

for idx  in range(len(adata_list)):
    print(adata_list[idx])
    adata_list[idx] = adata_list[idx][:,adata_joint.var_names].copy()
    print(adata_list[idx])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值