美文网首页
2022-03-14 TCRdist

2022-03-14 TCRdist

作者: 千容安 | 来源:发表于2022-03-15 22:18 被阅读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”
1647337239(1).png
第三条命令不改动:
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列

相关文章

网友评论

      本文标题:2022-03-14 TCRdist

      本文链接:https://www.haomeiwen.com/subject/hjuydrtx.html