2022-03-14 TCRdist
2022-03-15 本文已影响0人
千容安
转接过来的数据,要跑如下三条命令:

根据数据内容对路径进行修改:

两个P10_Healthy_TCR是后来产生的,原先没有。
学姐说先不跑bash了,还缺少文件。
在code路径下输入
ls /mnt/Ocean/Shared/tcrdist/tcrdist/data/health/*.txt|perl TCR.Select.pl > P10_Healthy_TCR.xls
与code并列的data底下是health和covid19文件夹,里面是txt文件。用相同方式生成“secl_TCR_cov.xls”和“secl_TCR_cov.csv”

第三条命令不改动:
cut -f 4 P10_Healthy_TCR.xls|grep -v "V_CDR3"|sort|uniq >P10_Healthy_TCR.csv

接下来就是配置tcrdist,GitHub网站:https://github.com/phbradley/tcr-dist
更新:不配置tcrdist了,老师说从学姐那边把可执行文件拷过来,通过编译便可以使用。学姐给我的文件已经编译好。
原命令:

chmod -R 777 ./bin/tcrdists
进行修改:
./bin/tcrdists -i code/secl_TCR_cov.csv -j code/P10_Healthy_TCR.csv -d ./db/ |sed "s/\ /\t/g"|cut -f 1- >CtoH_TCR.tcrdist.tab
报错:

我的版本只到3.4.21

问题处理
执行以下命令,查找编译gcc时生成的最新动态库:
find / -name "libstdc++.so*"
输出如下:

将上面的最新动态库最后一条内容复制到/usr/lib64目录下:
cp /home/wangnan/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so /usr/lib64
报错
'/usr/lib64': Permission denied
解决:
chmod -R 777 /usr/lib64


老师说这个是根目录。不解决这个问题了。把tcrdist的源代码拉下来,重新编译。这个工作学姐也没有接触过,让老师帮我完成了。
另外,tcrdist3也有了:
https://tcrdist3.readthedocs.io/en/latest/index.html
编译后,切换到cd /mnt/Ocean/Shared/tcrdist/pubtcrs
输入上面run TCRdist的命令

可执行文件在
/mnt/Ocean/Shared/tcrdist/pubtcrs/bin/
,工作路径不一定在这里,现在工作在pubtcrs
,文件在code
里,所以应该把-i
后面的路径补充完整。
因为文件可能太大,跑了很久都不动,学姐建议可以把文件切小一点,这样运行快。根据“head -1000 输入文件路径 > 输出文件路径”,代码如下:
head -1000 /mnt/Ocean/Shared/tcrdist/tcrdist/code/secl_TCR_cov.csv > /mnt/Ocean/Shared/tcrdist/tcrdist/code/secl_TCR_cov_0.csv
用新生成的文件很快就运行好了。
想移动文件到code文件夹:
mv CtoH_TCR.tcrdist.tab /mnt/Ocean/Shared/tcrdist/tcrdist/code
得到的文件是这样的:

输入文件是cdr3序列。得到的已经是距离了。
接下来开始分析。准备看懂学姐给的analysis文件。
先在linux下把距离进行奇数偶数的处理,code路径下。
cut -f 4- CtoH_TCR.tcrdist.tab > P_H_TCRs_dists.csv
sed '1~2!d' P_H_TCRs_dists.csv > P_H_TCRs_dists_matrix.csv #奇数
sed '1~2d' P_H_TCRs_dists.csv > P_H_TCRs_dists_info.csv #偶数
得到的奇数是距离矩阵部分,纯数字。偶数是其余信息部分。
先来看看P_H_TCRs_dists_info.csv用xls打开的样子:

把它读入jupyter,万恶之源就来了
pd.read_csv("P_H_TCRs_dists_info.csv",sep = '\s+',header = None)

出现了占位符“:\t”和在xls里没有的双引号,导致第四列数值后面带上了引号,不是数值型数据。
代码是学姐写的,她读入后的内容与我不同:

第一列和第二列以冒号分开,第三列和第五列是TCR的距离。
一种对第四列求和的办法,把第四列数值化。依次读取第四列里的每个数,然后把它转为浮点型。[:-1]是一直到倒数第一行
for i in range(len(df)):
df[4][i]=float(df[4][i][:-1])
print(sum(df[4])/df.shape[0])

第二种办法更好,可以一劳永逸。把列以引号和占位符分割,再重新赋值。
d1,d2=data[0].str.split(r'\t',1).str
d3,d4=data[4].str.split('"',1).str
# data.reset_index(drop=False, inplace=True)
data[4]=d3
data[0]=d1
data.insert(1,'1',d2)

选file_info第4列画直方图

file_info.shape[0]是info矩阵的行,就是第四列求和除以它的行数

loc[i,1]是取i+1行 第2列