更新 .gitignore,添加 06.gene_trees 目录;重构 macse.sh 脚本,移除 fs_lr 参数;删除多个不再使用的脚本;添加 check_frameshift.py 和 get_og_seqs.py 脚本以处理阅读框移位和提取单拷贝OG序列;更新 pixi.toml 和 pixi.lock 文件以添加 paml 依赖。

This commit is contained in:
2025-12-20 01:57:25 +08:00
parent e8ba2ed962
commit dba4833905
15 changed files with 433 additions and 117 deletions
@@ -1,51 +0,0 @@
#! /bin/bash
set -e
if [ "$#" -ne 4 ]; then
echo "Usage: $0 <ogs_dir> <outdir> <proteome> <threads>"
echo "search homologous sequences in <proteome> using HMMs built from orthogroup alignments"
exit 1
fi
ogs_dir=$(readlink -f "$1")
outdir=$2
proteome=$(readlink -f "$3")
threads=$4
mkdir -p "$outdir"
cd "$outdir" || exit 1
echo "Working directory: $(pwd)"
echo "Using OGS directory: $ogs_dir"
echo "Using $threads threads"
echo ""
echo "Starting orthogroup sequence alignment..."
mkdir -p msa
echo -n >mafft.cmds
for i in "$ogs_dir"/*.fa; do
j=$(basename "$i")
echo "linsi --quiet $i > msa/$j" >>mafft.cmds
done
xargs -t -P "$threads" -I cmd -a mafft.cmds bash -c "cmd"
echo "Orthogroup sequence alignment completed."
echo ""
echo "Starting HMM building from alignments..."
mkdir -p hmms
echo -n >hmmbuild.cmds
for i in msa/*.fa; do
j=$(basename "$i")
echo "hmmbuild -o hmms/${j}.hmmbuild.out --amino hmms/${j}.hmm $i" >>hmmbuild.cmds
done
xargs -t -P "$threads" -I cmd -a hmmbuild.cmds bash -c "cmd"
echo "HMM building completed."
echo ""
echo "Starting HMM search against other proteome..."
mkdir -p search
echo -n >hmmsearch.cmds
for i in hmms/*.hmm; do
j=$(basename "$i")
echo "hmmsearch --tblout search/${j}search.tblout $i $proteome > search/${j}search.rawout" >>hmmsearch.cmds
done
xargs -t -P "$threads" -I cmd -a hmmsearch.cmds bash -c "cmd"
echo "HMM search completed."
echo ""
echo "All steps completed successfully."
+24
View File
@@ -0,0 +1,24 @@
#! /bin/bash
set -e
THREADS=${THREADS:-12}
EXT=${EXT:-"fa"}
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <ogs_dir> <out_dir>"
echo "Perform MACSE alignment for each orthologous group"
exit 1
fi
ogs_dir=$(readlink -f "$1")
out_dir=$2
mkdir -p "$out_dir"
echo "Starting MACSE alignment of orthologous groups..."
echo -n >macse.cmds
for og_fasta in "$ogs_dir"/*."$EXT"; do
og_name=$(basename "$og_fasta" ."$EXT")
out_stem="$out_dir/$og_name"
echo "macse -prog alignSequences -seq $og_fasta -out_AA ${out_stem}.pal -out_NT ${out_stem}.nal > ${out_stem}.log 2>&1" >>macse.cmds
done
xargs -t -P "$THREADS" -I cmd -a macse.cmds bash -c "cmd" &&
echo "MACSE alignment completed."
@@ -1,34 +0,0 @@
#! /bin/bash
set -e
SCRIPTS=${SCRIPTS:-"$PROJECTHOME/99.scripts"}
THREADS=${THREADS:-12}
if [ "$#" -ne 5 ]; then
echo "Usage: $0 <ogs_dir> <hmmsearch_result_dir> <all_cds.fa> <output_dir> <homolog_stem>"
echo "Integrate hmmsearch results to new orthologous groups directory and perform MACSE alignment"
exit 1
fi
ogs_dir=$(readlink -f "$1")
search_dir=$(readlink -f "$2")
all_cds=$(readlink -f "$3")
out_dir=$4
stem=$5
echo "Integrating hmmsearch results to new orthologous groups directory..."
python3 "$SCRIPTS"/miscs/hmmsearch_result_to_new_ogs_dir.py \
-d "$ogs_dir" \
-t "$search_dir" \
-f "$all_cds" \
-o "$out_dir" \
-s "$stem"
echo "Integration completed."
echo "Starting MACSE alignment of orthologous groups..."
echo -n >macse.cmds
for og_dir in "$out_dir"/ogs/*; do
j=$(basename "$og_dir")
echo "cd $og_dir && bash $SCRIPTS/miscs/macse.sh ${j}_${stem}.fa ${j}.fa $j" >>macse.cmds
done
xargs -t -P "$THREADS" -I cmd -a macse.cmds bash -c "cmd"
echo "MACSE alignment completed."
@@ -0,0 +1,20 @@
#! /bin/bash
set -e
THREADS=${THREADS:-12}
if [ "$#" -ne 3 ]; then
echo "Usage: $0 <nal_dir> <out_dir> <ext>"
echo "Trim MACSE nucleotide alignments using trimal"
exit 1
fi
nal_dir=$(readlink -f "$1")
out_dir=$(readlink -f "$2")
ext=$3
mkdir -p "$out_dir"
echo -n >trimal.cmds
for i in "$nal_dir"/*."$ext"; do
j=$(basename "$i" ."$ext")
echo "trimal -in $i -out $out_dir/${j}.trimed.fa -automated1 -resoverlap 0.5 -seqoverlap 50" >>trimal.cmds
done
xargs -t -P "$THREADS" -I cmd -a trimal.cmds bash -c "cmd"
+26
View File
@@ -0,0 +1,26 @@
#! /bin/bash
set -e
THREADS=${THREADS:-12}
if [ "$#" -ne 3 ]; then
echo "Usage: $0 <aln_dir> <out_dir> <ext>"
echo "Build FastTree phylogenetic trees and perform TreeShrink on trimmed MACSE nucleotide alignments"
exit 1
fi
aln_dir=$(readlink -f "$1")
out_dir=$(readlink -f "$2")
ext=$3
# fasttree
mkdir -p "$out_dir"
echo -n >fasttree.cmds
for i in "$aln_dir"/*."$ext"; do
j=$(basename "$i" ."$ext")
mkdir -p "$out_dir"/"${j}"
cp -s "$i" "$out_dir"/"${j}"/input.fasta
echo "FastTree -nt -gtr -quiet $out_dir/${j}/input.fasta > $out_dir/${j}/input.tree" >>fasttree.cmds
done
xargs -t -P "$THREADS" -I cmd -a fasttree.cmds bash -c "cmd"
# treeshrink
run_treeshrink.py -f -i "$out_dir"/ -t input.tree -a input.fasta >treeshrink.log
@@ -1,8 +0,0 @@
#! /usr/bin/env bash
mkdir -p trimed_nal
echo -n > trimal.cmds
for i in cds_aln/*.nal ;do
j=$(basename "$i")
echo "trimal -in $i -out trimed_nal/${j/.nal/.trimed.fa} -automated1 -resoverlap 0.5 -seqoverlap 50" >> trimal.cmds
done
xargs -t -P 4 -I cmd -a trimal.cmds bash -c "cmd"
@@ -1,8 +0,0 @@
#! /usr/bin/env bash
mkdir -p fasttree
echo -n > fasttree.cmds
for i in trimed_nal/*.trimed.fa ;do
j=$(basename "$i")
echo "FastTree -nt -gtr -quiet $i > fasttree/${j/.trimed.fa/.tree}" >> fasttree.cmds
done
xargs -t -P 8 -I cmd -a fasttree.cmds bash -c "cmd"
@@ -1,11 +0,0 @@
#! /usr/bin/env bash
mkdir -p treeshrink
for i in trimed_nal/*.trimed.fa; do
j=$(basename "$i")
mkdir -p treeshrink/"${j/.trimed.fa/}"
cd treeshrink/"${j/.trimed.fa/}" || exit 1
ln -s ../../fasttree/"${j/.trimed.fa/.tree}" input.tree
ln -s ../../"$i" input.fasta
cd ../../
done
run_treeshrink.py -i treeshrink/ -t input.tree -a input.fasta > treeshrink.log