fasta文件每条序列按照序列长短命名并排序,支持自定义字符串rename_length.sh.V2

#!/bin/bash

# 输入文件名
input_file="$1"
# 输出文件名
output_file="$2"
# 前缀字符
prefix="$3"

# 初始化变量
seq_name=""
seq=""

# 创建一个临时文件保存序列信息
temp_seq_file=$(mktemp)

# 读取输入FASTA文件并提取序列信息
while read -r line; do
    # 判断是否是序列名称行
    if [[ $line == ">"* ]]; then
        # 如果之前有序列,保存其信息
        if [[ -n $seq_name ]]; then
            seq_length=${#seq}
            echo "$seq_name,$seq_length,$seq" >> "$temp_seq_file"
        fi
        # 重置变量
        seq_name=$line
        seq=""
    else
        # 累加序列内容
        seq+=$line
    fi
done < "$input_file"

# 处理最后一条序列
if [[ -n $seq_name ]]; then
    seq_length=${#seq}
    echo "$seq_name,$seq_length,$seq" >> "$temp_seq_file"
fi

# 创建一个临时文件保存排序后的FASTA内容
temp_sorted_file=$(mktemp)

# 按照序列长度排序并重新编号
sort -t ',' -k2,2nr "$temp_seq_file" | awk -F ',' -v prefix="$prefix" '{print ">" prefix NR "\n" $3}' > "$temp_sorted_file"

# 将临时文件重命名为输出文件
mv "$temp_sorted_file" "$output_file"

# 删除临时文件
rm "$temp_seq_file"

echo "FASTA文件处理完成,输出文件为: $output_file"

用法: ./rename_fasta_with_rank.sh input.fasta output.fasta PREFIX_

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用Python中的Biopython模块来对fasta文件进行读取和处理,并实现DNA序列字符串转换、互补链、反向链和反向互补链。 假设fasta文件名为example.fasta,其中包含一个DNA序列: ``` >sequence_1 ATCGATCGATCG ``` 1. 读取fasta文件 使用Biopython模块中的SeqIO模块读取fasta文件,并获取DNA序列字符串。 ```python from Bio import SeqIO # 读取fasta文件 for seq_record in SeqIO.parse("example.fasta", "fasta"): seq = str(seq_record.seq) print(seq) ``` 2. 互补链 使用Biopython模块中的reverse_complement函数获取DNA序列的互补链。 ```python from Bio.Seq import reverse_complement # 获取互补链 comp_seq = reverse_complement(seq) print(comp_seq) ``` 3. 反向链 使用字符串的切片操作[::-1]获取DNA序列的反向链。 ```python # 获取反向链 rev_seq = seq[::-1] print(rev_seq) ``` 4. 反向互补链 先获取互补链,再使用字符串的切片操作[::-1]获取DNA序列的反向互补链。 ```python # 获取反向互补链 rev_comp_seq = comp_seq[::-1] print(rev_comp_seq) ``` 完整代码如下: ```python from Bio import SeqIO from Bio.Seq import reverse_complement # 读取fasta文件 for seq_record in SeqIO.parse("example.fasta", "fasta"): seq = str(seq_record.seq) print(seq) # 获取互补链 comp_seq = reverse_complement(seq) print(comp_seq) # 获取反向链 rev_seq = seq[::-1] print(rev_seq) # 获取反向互补链 rev_comp_seq = comp_seq[::-1] print(rev_comp_seq) ``` 输出结果为: ``` ATCGATCGATCG CGATCGATCGAT GCTAGCTAGCTA TAGCTAGCTAGC ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

终是蝶衣梦晓楼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值