Hai Sun

41 papers A 2B 4C 2Misc 1Journal 22Unranked 10
YearRankTypeTitle / Venue / Authors
2026 J jnl
Comput. Appl. Math.
Hai Sun, Zhan-Ping Ma
2025 J jnl
Complex Intell. Syst.
Chaoyi Sun, Bo Zhang, Hai Sun, Rui Feng
2025 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Hai Sun, Yanan Chu, Bingchen Liang, Huiqian Wang, Chao Fan
2025 J jnl
Symmetry
Hai Sun, Zhanfang Zhao
2025 conf
PRCV (12)
Lulu Wang, Ruiji Xue, Ruoyu Zhang, Tongling Pan, Hai Sun, Yingna Li
2025 J jnl
J. Comput. Phys.
Jian Wang, Zongwen Hu, Xia Yan, Jun Yao, Hai Sun, Yongfei Yang, Lei Zhang, Junjie Zhong
2024 J jnl
Remote. Sens.
Hai Sun, Xiaowei Zhang, Xuejing Ruan, Hui Jiang, Wenchi Shou
2024 J jnl
Brain Informatics
Shihao Yang, Meng Jiao, Jing Xiang, Neel Fotedar, Hai Sun, Feng Liu
2024 J jnl
NeuroImage
Meng Jiao, Xiaochen Xian, Boyu Wang, Yu Zhang, Shihao Yang, Spencer C. Chen, Hai Sun, Feng Liu
2023 J jnl
Cogn. Comput.
Dingtian Yan, Jitao Huang, Hai Sun, Fuqiang Ding
2023 conf
BI
Shihao Yang, Meng Jiao, Jing Xiang, Daphne Kalkanis, Hai Sun, Feng Liu
2022 J jnl
Comput. Sci. Inf. Syst.
Peng Jiang, Kexin Yan, Haijian Chen, Hai Sun
2022 J jnl
Int. J. Emerg. Technol. Learn.
Hai Sun
2022 J jnl
Remote. Sens.
Hai Sun, Meixin Li, Hui Jiang, Xuejing Ruan, Wenchi Shou
2021 J jnl
Remote. Sens.
Hai Sun, Xiaoyi Dai, Wenchi Shou, Jun Wang, Xuejing Ruan
2021 J jnl
Sensors
Hai Sun, Lanling Hu, Wenchi Shou, Jun Wang
2020 J jnl
Symmetry
Ling Zhao, Hanhan Deng, Linyao Qiu, Sumin Li, Zhixiang Hou, Hai Sun, Yun Chen
2017 C conf
CIS
Hai Sun
2017 J jnl
Decis. Support Syst.
Zhaoran Xu, Youwei Wang, Yulin Fang, Bernard C. Y. Tan, Hai Sun
2015 Misc conf
ICNC
Hai Sun, Yan Sun, Victor C. Valgenti, Min Sik Kim
2015 J jnl
Comput. Intell. Neurosci.
Shuangping Gong, Yonghui Dai, Jun Ji, Jinzhao Wang, Hai Sun
2015 B conf
ICCCN
Hai Sun, Yan Sun, Victor C. Valgenti, Min Sik Kim
2014 B conf
GLOBECOM
Hai Sun, Yan Sun, Victor C. Valgenti, Min Sik Kim
2014 C conf
CIS
Hai Sun
2014 B conf
AINA
Victor C. Valgenti, Hai Sun, Min Sik Kim
2014 B conf
ICCCN
Hai Sun, Yan Sun, Victor C. Valgenti, Min Sik Kim
2014 conf
ISIE
Hai Sun, Min-Xiao Han, Chao Luo, Huang-Rong Xia
2012 J jnl
J. Softw.
Hongzhi Hu, Weihui Dai, Yonghui Dai, Hai Sun, Peiran Zhang, Xiaofei Liu
2012 J jnl
J. Comput.
Hai Sun, Hongzhi Hu, Weihui Dai, Huajuan Mao, Yan Zhang
2011 J jnl
J. Appl. Math.
Zhongping Wan, Jiawei Chen, Hai Sun, Liuyang Yuan
2011 J jnl
IEEE Trans. Medical Imaging
Hrebesh M. Subhash, Viviana Davila, Hai Sun, Anh T. Nguyen-Huynh, Xiaorui Shi, Alfred L. Nuttall, Ruikang K. Wang
2006 conf
Image-Guided Procedures
Fenghong Liu, Keith D. Paulsen, Karen E. Lunn, Hai Sun, Alexander Hartov, Ziji Wu, David W. Roberts
2005 J jnl
IEEE Trans. Medical Imaging
Hai Sun, Karen E. Lunn, Hany Farid, Ziji Wu, David W. Roberts, Alexander Hartov, Keith D. Paulsen
2004 conf
MICCAI (2)
Hai Sun, Francis E. Kennedy, Erik J. Carlson, Alex Hartov, David W. Roberts, Keith D. Paulsen
2003 conf
MICCAI (1)
Hai Sun, Hany Farid, Kyle Rick, Alex Hartov, David W. Roberts, Keith D. Paulsen
2003 conf
Image-Guided Procedures
Kyle R. Rick, Alex Hartov, David W. Roberts, Karen E. Lunn, Hai Sun, Keith D. Paulsen
2003 conf
Image-Guided Procedures
Hai Sun, David W. Roberts, Alex Hartov, Kyle R. Rick, Keith D. Paulsen
2002 conf
Image-Guided Procedures
Karen E. Lunn, Alex Hartov, David W. Roberts, Hai Sun, Keith D. Paulsen
2002 conf
Image-Guided Procedures
Hai Sun, Hany Farid, Alex Hartov, Karen E. Lunn, David W. Roberts, Keith D. Paulsen
2001 A conf
MICCAI
Karen E. Lunn, Alex Hartov, Eric W. Hansen, Hai Sun, David W. Roberts, Keith D. Paulsen
2001 A conf
MICCAI
Alex Hartov, Hai Sun, David W. Roberts, Keith D. Paulsen
redb/utils/wrapper_run_sort_files.py
← Index redb/utils/wrapper_run_sort_files.py python
import os
import subprocess
import multiprocessing
import logging
from concurrent.futures import ThreadPoolExecutor
import signal

# Variables (replace these with actual values)
src_root_folder_path = "/mnt/samples/consilience/malware/vx-bazaar-expanded/"
dst_root_folder_path = "/mnt/samples/consilience/malware/_sorted_samples/vx-bazaar/"
log_folder_path = "/mnt/samples/consilience/malware/ops-logs/"
folder_names = ["Bazaar.2022.01", "Bazaar.2022.02", "Bazaar.2022.03", "Bazaar.2022.04"]  # List of folder names
script_name = "sort_files_by_type.py"
dry_run = True  # Set to True for testing without execution


# Ensure the log folder exists
os.makedirs(log_folder_path, exist_ok=True)

# Configure logging
main_log_name = "20241229-main_script.log"
main_log_file = os.path.join(log_folder_path, main_log_name)
if not os.path.exists(main_log_file):
    open(main_log_file, 'a').close()  # Create the log file if it doesn't exist
# main_log_file = os.path.join(log_folder_path, main_log_name)
# try:
#     with open(main_log_file, 'a') as f:
#         print(f"Successfully created/opened log file at: {main_log_file}")
#     # Verify the file exists
#     if os.path.exists(main_log_file):
#         print(f"Confirmed log file exists at: {main_log_file}")
#         print(f"File size: {os.path.getsize(main_log_file)} bytes")
# except Exception as e:
#     print(f"Error with log file: {e}")

# Configure logging
logging.basicConfig(
    filename=main_log_file,
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s",
    force=True,
    filemode='a'
)

logging.info("Logging initialization test message")

# Add logging handler to flush immediately
class FlushableFileHandler(logging.FileHandler):
    def emit(self, record):
        super().emit(record)
        self.flush()

for handler in logging.getLogger().handlers:
    if isinstance(handler, logging.FileHandler):
        handler.flush()

# Global flag for graceful termination
terminate_flag = False

def signal_handler(signum, frame):
    global terminate_flag
    terminate_flag = True
    logging.warning("Termination signal received. Attempting to shut down gracefully.")

# Register signal handler
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)

# Define the worker function
def process_folder(folder):
    global terminate_flag
    if terminate_flag:
        logging.warning(f"Skipping folder {folder} due to termination signal.")
        return

    try:
        # Extract the word and date fields from the folder name
        word, year, month = folder.split('.')

        # Construct source, destination, and log paths
        src_folder = os.path.join(src_root_folder_path, folder)
        dst_folder = os.path.join(dst_root_folder_path, folder)
        log_file = os.path.join(
            log_folder_path, f"20241229-SORT_FILES-bazaar_{year}.{month}.output.log"
        )

        if not os.path.exists(log_file):
            open(log_file, 'a').close()  # Create the log file if it doesn't exist

        # Build the command
        command = ["python3", script_name, src_folder, dst_folder]

        if dry_run:
            logging.info(f"Dry run: Would execute: {command}, log: {log_file}")
            print(f"Dry run: Would execute: {command}, log: {log_file}")
        else:
            logging.info(f"Starting task for folder: {folder}")
            with open(log_file, "w") as log:
                subprocess.run(command, stdout=log, stderr=subprocess.STDOUT, check=True)
            logging.info(f"Task completed for folder: {folder}")

    except subprocess.CalledProcessError as e:
        logging.error(f"Subprocess failed for folder {folder} with return code {e.returncode}: {e}")
        print(f"Subprocess failed for folder {folder}: {e}")
    except Exception as e:
        logging.error(f"Error while processing folder {folder}: {e}")
        print(f"Error while processing folder {folder}: {e}")

# Determine the number of processors
num_processors = multiprocessing.cpu_count()

try:
    # Process folders using ThreadPoolExecutor
    with ThreadPoolExecutor(max_workers=num_processors-1) as executor:
        executor.map(process_folder, folder_names)

except Exception as e:
    logging.critical(f"Critical error in the main execution: {e}")
    print(f"Critical error: {e}")

logging.info("All tasks completed.")
print("All tasks completed.")