更新 .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:
@@ -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."
|
||||
@@ -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"
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user