#!/bin/bash # ============================================================================= # BOMLIP-CSP: Conformer Search & Crystal Structure Generation Pipeline # ============================================================================= # Usage: ./search_gen_proc.sh [config_file] # config_file Path to the parameter configuration file (default: generation_config.sh) # ============================================================================= # --- Determine config file path (default: generation_config.sh in the same directory) --- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" CONFIG_FILE="${1:-${SCRIPT_DIR}/generation_config.sh}" if [ ! -f "${CONFIG_FILE}" ]; then echo "Error: Configuration file not found: ${CONFIG_FILE}" echo "Usage: $0 [config_file]" exit 1 fi echo "Loading configuration from: ${CONFIG_FILE}" # --- Source the configuration file --- source "${CONFIG_FILE}" # --- Validate required parameters --- if [ -z "${SMILES}" ]; then echo "Error: SMILES is not set in the configuration file." exit 1 fi # --- Set up directory --- TAR_DIR="${PROJECT_DIR}/${OUTPUT_DIR}" mkdir -p "${TAR_DIR}" cd "${TAR_DIR}" || { echo "Error: Cannot access directory ${TAR_DIR}"; exit 1; } echo "==========================================" echo " BOMLIP-CSP Pipeline" echo "==========================================" echo " SMILES: ${SMILES}" echo " Output directory: ${TAR_DIR}" echo " Mode: ${MODE}" echo " Generate conformers: ${GENERATE_CONFORMERS}" echo " Use conformers: ${USE_CONFORMERS}" echo " Molecule num in cell: ${MOLECULE_NUM_IN_CELL}" echo " Space group list: ${SPACE_GROUP_LIST}" echo " Add name: ${ADD_NAME}" echo " Num generation: ${NUM_GENERATION}" echo " Max workers: ${MAX_WORKERS}" echo "==========================================" # --- Run the pipeline --- python "${SCRIPT_DIR}/generation.py" \ --path "${TAR_DIR}" \ --smiles "${SMILES}" \ --molecule_num_in_cell ${MOLECULE_NUM_IN_CELL} \ --space_group_list "${SPACE_GROUP_LIST}" \ --add_name "${ADD_NAME}" \ --max_workers "${MAX_WORKERS}" \ --num_generation ${NUM_GENERATION} \ --generate_conformers "${GENERATE_CONFORMERS}" \ --use_conformers "${USE_CONFORMERS}" \ --mode "${MODE}" \ > generate.log 2>&1 echo "Pipeline finished. Log saved to ${TAR_DIR}/generate.log"