代码保存位置: /mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/script/
1.sample_info.sh
#!bin/bash
#指定list代表的文件
list=/mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/script/Symblel2Ensembl.txt
#逐行遍历list文件列表
while read line
do
arr=($line) #将该行赋值给arr
panel=${arr[0]} #该行第一列赋值给panel
id=${arr[1]} #该行第二列赋值给id
#grep从输入文件中遍历逐行提取包含字符Ensembl_ID和$id的行,并导出到输出文件中
grep -E "Ensembl_ID|$id" "/mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/TCGA-KIRP/TCGA-KIRP.htseq_fpkm4.tsv" > "/mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/TCGA-KIRP/sample_gene/sample_info2.$panel.$id"
done<$list
#逐行遍历list文件列表
while read line
do
arr=($line) #将该行赋值给arr
panel=${arr[0]} #该行第一列赋值给panel
id=${arr[1]} #该行第二列赋值给id
#grep从输入文件中遍历逐行提取包含字符Ensembl_ID和$id的行,并导出到输出文件中
grep -E "Ensembl_ID|$id" "/mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/TCGA-KIRC/TCGA-KIRC.htseq_fpkm4.tsv" > "/mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/TCGA-KIRC/sample_gene/sample_info2.$panel.$id"
done<$list
#逐行遍历list文件列表
while read line
do
arr=($line) #将该行赋值给arr
panel=${arr[0]} #该行第一列赋值给panel
id=${arr[1]} #该行第二列赋值给id
#grep从输入文件中遍历逐行提取包含字符Ensembl_ID和$id的行,并导出到输出文件中
grep -E "Ensembl_ID|$id" "/mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/TCGA-KICH/TCGA-KICH.htseq_fpkm4.tsv" > "/mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/TCGA-KICH/sample_gene/sample_info2.$panel.$id"
done<$list
cat /mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/script/Symblel2Ensembl.txt #查看list文件内容
cat /mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/TCGA-KICH/TCGA-KICH.htseq_fpkm4.tsv #查看TCGA-KICH.htseq_fpkm4.tsv文件内容
2.sample_info2Tosample_info.txt.sh
#!bin/bash
#首先设置for循环,$i遍历RP,RC,CH三个字符
for i in RP RC CH
do
#指定list1代表的文件
list1=/mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/script/Symblel2Ensembl.txt
#逐行遍历list1文件列表
while read line
do
Suffix=($line) #将该行赋值给Suffix
Suffix1=${Suffix[0]} #该行第一列赋值给Suffix1
Suffix2=${Suffix[1]} #该行第二列赋值给Suffix2
#awk将输入文件进行转置,并导出为输出文件
awk '{for(i=1;i<=NF;i++)a[NR,i]=$i}END{for(j=1;j<=NF;j++)for(k=1;k<=NR;k++)printf k==NR?a[k,j] RS:a[k,j] FS}' /mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/TCGA-KI$i/sample_gene/sample_info2.${Suffix1}.${Suffix2} > /mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/TCGA-KI$i/sample_gene/sample_info2.${Suffix1}.${Suffix2}.Trans
#指定lis2t代表的文件
list2=/mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/TCGA-KI$i/sample_gene/sample_info2.${Suffix1}.${Suffix2}.Trans
#计算list2文件中第二列,即基因表达量的平均值,并赋值给aver.
aver=`cat $list2 |awk 'NR>1 {sum += $2; } END {sum; print sum/(NR-1)}'`
#判断$list2.group文件是否存在,若不存在则显示文件不存在,若存在则删除原文件
if [ ! -f "$list2.group" ];then
echo "文件不存在"
else
rm -f $list2.group
fi
#逐行遍历list2文件列表
while read line
do
arr=($line) #将该行赋值给arr
sample=${arr[0]} #该行第一列赋值给sample
exp=${arr[1]} #该行第二列赋值给exp
B="ENSG" #将字符ENSG赋值给B
if [[ $exp == $B* ]] #判定$exp是否包含ENSG这一字符
then
line=`echo $sample $exp "label"` #将$sample $exp label赋值给line
elif [ `expr $exp \> $aver` -eq 1 ] #判断该样本基因表达值与平均值的大小
then
line=`echo $sample $exp "high"` #若该样本基因表达值高于平均值将,则将$sample $exp high赋值给line
else
line=`echo $sample $exp "low"` #若该样本基因表达值高于平均值将,则将$sample $exp low赋值给line
fi
echo "$line" >> "$list2.group" #将line所包含的内容追加写入到$list2.group文件中
done<$list2
done<$list1
done
cat /mnt/vol2_ws/test/projects/xcy/data/2021-8-12-liang/data/11/tcga/TCGA-KIRP/sample_gene/sample_info2.ATM.ENSG00000149311.Trans #查看list2文件内容