按顺序命名想按照顺序把文件重新命名成新文件名
需要准备2个文件,可以通过ls 重定向 获得
#!/bin/bash
# 读取两个文件的行数以确保它们相等
lines1=$(wc -l < all_1)
lines2=$(wc -l < all_2)
if [ "$lines1" -ne "$lines2" ]; then
echo "Error: The number of lines in all_1 and all_2 must be equal."
exit 1
fi
# 读取 all_2 文件的所有行到数组中
mapfile -t new_names < all_2
# 逐行读取文件并复制/重命名
i=0
while IFS= read -r old_name; do
new_name=${new_names[$i]}
# 复制文件并重命名
cp "$old_name" "$new_name"
((i++))
done < all_1
echo "All files copied and renamed successfully."
重命名后,注意看文件大小
也可以把两个文件放一个文件,再重命名
###按文件大小排序
ls -S *.bin >all_1
paste all_1 all_2 > merged_files.txt
cat merged_files.txt |while read id1 id2
do
cp $id1 $id2
done
合并所有tsv数据:
import sys
def read_gene_list(filename):
"""从文件中读取基因列表"""
with open(filename, 'r') as file:
genes = set(line.strip() for line in file)
return genes
def process_sv_file(genes, sv_filename, output_filename):
"""处理 SV 文件并筛选出基因列表中的基因及其对应的 SV 类型"""
with open(sv_filename, 'r') as sv_file, open(output_filename, 'w') as output_file:
for line in sv_file:
parts = line.strip().split('\t')
if len(parts) >= 11: # 确保至少有11列
gene_part = parts[6]
for gene in genes:
if gene in gene_part: # 检查第七列是否包含基因列表中的基因
sv_type = parts[10]
output_file.write(f"{gene}\t{sv_type}\n")
break
if __name__ == "__main__":
if len(sys.argv) != 4:
print("Usage: python script.py <gene_list_file> <sv_data_file> <output_file>")
sys.exit(1)
gene_list_filename = sys.argv[1]
sv_data_filename = sys.argv[2]
output_filename = sys.argv[3]
# 读取基因列表
genes = read_gene_list(gene_list_filename)
# 处理 SV 数据文件
process_sv_file(genes, sv_data_filename, output_filename)
print("处理完成!")
长数据转宽数据:
library(tidyverse)
data <- read_tsv("merged_with_csj.tsv")
print(data)
# 使用 pivot_wider() 将数据从长格式转换为宽格式
wide_data <- data %>%
pivot_wider(names_from = sample, values_from = num, values_fill = 0)
print(wide_data)
write_csv(wide_data, "merged_with_csj_wide.csv")
保存表格
网友评论