首页 >> 个人仿真建议 >>个人脚本 >>bash >> PDB文件Z方向平移
详细内容

PDB文件Z方向平移

#!/bin/bash


input_file="em1.pdb"

output_file="em1-1.pdb"

LENGTH=45

MAX=180

MIN=0


# 检查输入文件是否存在

if [ ! -f "$input_file" ]; then

    echo "错误:输入文件 $input_file 不存在" >&2

    exit 1

fi


# 计算文件总行数(处理最后一行无换行符的情况)

total_lines=$(wc -l < "$input_file")


awk -v total="$total_lines" -v LENGTH="$LENGTH" -v MAX="$MAX" -v MIN="$MIN" '

BEGIN {

    FIELDWIDTHS = "46 8 1000"  # 前46位 + 8位Z坐标 + 剩余内容

}

{

    if (NR >= 5 && NR <= total - 3) {

        # 提取47-54位(Z坐标)

        z_str = $2

        gsub(/ /, "", z_str)  # 移除所有空格

        

        # 验证是否为数字

        if (z_str ~ /^-?[0-9]+(\.[0-9]*)?$/) {

            z = z_str + 0

            new_z = z + LENGTH

            

            # 应用边界条件

            while (new_z > MAX) {

                new_z -= MAX

            }

            while (new_z < MIN) {

                new_z += MAX  # 应用周期性边界条件

            }

            

            # 格式化为标准的8.3f格式

            formatted_z = sprintf("%8.3f", new_z)

            $2 = formatted_z

        }

    }

    print $1 $2 $3

}' "$input_file" > "$output_file"


echo "处理完成!结果已保存至 $output_file"


技术支持: CLOUD | 管理登录
seo seo