fastStructure
Nesta seção:
Descrição
De acordo com a página do fastStructure, fastStructure é um algoritmo para inferir estrutura populacional a partir de dados de genótipo SNP em larga escala. É baseado em uma estrutura Bayesiana variacional para inferência posterior e é escrito em Python.
Versões Disponíveis
fastStructure/1.0 (default)
Carregando o Módulo
# Carregar fastStructure
module load fastStructure/1.0
# Verificar instalação
python structure.py -h
Submissão de Jobs Seriais
submit_faststructure.sh
#!/bin/bash
#SBATCH -J faststructure
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 24:00:00
#SBATCH --mem=8G
export INPUT="testdata"
export OUTPUT="testoutput_simple"
module load fastStructure/1.0
job-nanny python structure.py -K 3 --input=testdata \
--output=testoutput_simple --full --seed=100
Análise para Múltiplos K
submit_faststructure_multi_k.sh
#!/bin/bash
#SBATCH -J faststructure_k
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 48:00:00
#SBATCH --mem=16G
export INPUT="genotypes results/"
export OUTPUT="results/"
module load fastStructure/1.0
mkdir -p results
# Executar para K de 1 a 10
for K in {1..10}; do
job-nanny python structure.py -K $K --input=genotypes \
--output=results/output_K${K} --full --seed=100
done
Job Array para Diferentes Valores de K
submit_faststructure_array.sh
#!/bin/bash
#SBATCH -J faststructure_array
#SBATCH --array=1-10
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 12:00:00
#SBATCH --mem=8G
export INPUT="genotypes"
export OUTPUT="results_K${SLURM_ARRAY_TASK_ID}/"
module load fastStructure/1.0
K=$SLURM_ARRAY_TASK_ID
mkdir -p results_K${K}
job-nanny python structure.py -K $K --input=genotypes \
--output=results_K${K}/output --full --seed=100
Escolhendo o Melhor K
Após executar para vários K, use a ferramenta chooseK.py para selecionar o melhor:
submit_choosek.sh
#!/bin/bash
#SBATCH -J choosek
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 01:00:00
#SBATCH --mem=2G
export INPUT="results_*"
export OUTPUT="k_selection.txt"
module load fastStructure/1.0
job-nanny python chooseK.py --input=results_K* > k_selection.txt
Formato dos Dados de Entrada
O fastStructure espera arquivos no formato PLINK:
genotypes.bed
genotypes.bim
genotypes.fam
Ou pode usar o formato de exemplo fornecido.
Visualização dos Resultados
submit_plot.sh
#!/bin/bash
#SBATCH -J plot
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 01:00:00
#SBATCH --mem=2G
export INPUT="results_K* output_simple_meanQ plot.py"
export OUTPUT="plots/"
module load fastStructure/1.0
module load anaconda3
source activate plotting_env # Ambiente com matplotlib
# Script Python para plotar
cat > plot.py << 'EOF'
import numpy as np
import matplotlib.pyplot as plt
import sys
import glob
import os
# Criar diretório para plots
os.makedirs('plots', exist_ok=True)
# Para cada valor de K
for k in range(1, 11):
# Procurar arquivo de resultados
pattern = f'results_K{k}/output.{k}.meanQ'
files = glob.glob(pattern)
if files:
Q = np.loadtxt(files[0])
# Criar figura
plt.figure(figsize=(10, 4))
plt.imshow(Q, aspect='auto', cmap='viridis', interpolation='nearest')
plt.colorbar()
plt.title(f'Estrutura populacional - K={k}')
plt.xlabel('População')
plt.ylabel('Indivíduo')
plt.tight_layout()
# Salvar
output_file = f'plots/K{k}_structure.png'
plt.savefig(output_file, dpi=150)
plt.close()
print(f"Plot salvo: {output_file}")
else:
print(f"Arquivo não encontrado para K={k}")
EOF
job-nanny python plot.py
Referências
Documentação: https://rajanil.github.io/fastStructure/
Tutorial: https://rajanil.github.io/fastStructure/tutorial.html
Ver também
Structure - Programa original Structure
ADMIXTURE - Alternativa para estrutura populacional
Processando Simulações - Como submeter jobs