Ramanath Subramanyam

33 papers C 4Journal 17Unranked 12
YearRankTypeTitle / Venue / Authors
2025 J jnl
Electron. Commer. Res.
Rui Guo, Ali Tafti, Ramanath Subramanyam
2025 J jnl
Found. Trends Technol. Inf. Oper. Manag.
Mehmet Eren Ahsen, Ashish Khandelwal, Ramanath Subramanyam, Anton Ivanov, Dmitrii Sumkin, Ujjal Kumar Mukherjee, Sridhar Seshadri
2025 J jnl
Inf. Syst. Res.
Anqi Wu, Aravinda Garimella, Ramanath Subramanyam
2024 conf
HICSS
Eren Ahsen, Mehmet Ayvaci, Srinivasan Raghunathan, Ramanath Subramanyam
2022 conf
HICSS
Anqi Wu, Aravinda Garimella, Ramanath Subramanyam, Eren Ahsen
2022 J jnl
MIS Q.
Yi Yang, Ramanath Subramanyam
2021 J jnl
Inf. Manag.
Yu-Hsiang (John) Huang, Eric C. Larson, Michael J. Shaw, Ramanath Subramanyam
2021 conf
HICSS
Anqi Wu, Aravinda Garimella, Ramanath Subramanyam
2020 J jnl
Inf. Technol. Manag.
Yu-Ju Tu, Yu-Hsiang (John) Huang, Troy J. Strader, Ramanath Subramanyam, Michael J. Shaw
2019 J jnl
Inf. Resour. Manag. J.
Yu-Hsiang (John) Huang, Yu-Ju Tu, Troy J. Strader, Michael J. Shaw, Ramanath Subramanyam
2016 J jnl
Decis. Support Syst.
Se-Hak Chun, Wooje Cho, Ramanath Subramanyam
2015 conf
AMCIS
Yu-Hsiang (John) Huang, Michael J. Shaw, Ramanath Subramanyam, Tony Yu-Ju Tu
2015 conf
PACIS
Tony Yu-Ju Tu, Michael J. Shaw, Ramanath Subramanyam
2015 J jnl
MIS Q.
Prasanna P. Karhade, Michael J. Shaw, Ramanath Subramanyam
2015 conf
AMCIS
Sung Won Kim, Utku Pamuksuz, Ramanath Subramanyam
2015 conf
WEB
Utku Pamuksuz, Sung Won Kim, Ramanath Subramanyam
2014 C conf
ICIS
Abhijeet Ghoshal, Eric C. Larson, Ramanath Subramanyam, Michael J. Shaw
2013 conf
AMCIS
Yu-Ju Tu, Michael J. Shaw, Ramanath Subramanyam, Eric C. Larson
2013 J jnl
Decis. Support Syst.
Wooje Cho, Ramanath Subramanyam, Mu Xia
2012 J jnl
Manuf. Serv. Oper. Manag.
Ravi Subramanian, Ramanath Subramanyam
2012 J jnl
Manuf. Serv. Oper. Manag.
James R. Kroes, Ravi Subramanian, Ramanath Subramanyam
2010 J jnl
Inf. Syst. Res.
Anjana Susarla, Ramanath Subramanyam, Prasanna P. Karhade
2010 J jnl
Commun. ACM
Ramanath Subramanyam, Fei Lee Weisstein, Mayuram S. Krishnan
2009 conf
AMCIS
Prasanna P. Karhade, Michael J. Shaw, Ramanath Subramanyam
2009 conf
AMCIS/SIGeBIZ
Prasanna P. Karhade, Michael J. Shaw, Ramanath Subramanyam
2009 conf
AMCIS
Prasanna P. Karhade, Michael J. Shaw, Ramanath Subramanyam
2008 J jnl
Decis. Support Syst.
Ramanath Subramanyam, Mu Xia
2007 C conf
ICIS
Wooje Cho, Ramanath Subramanyam, Fei Lee, Mayuram S. Krishnan
2006 conf
AMCIS
Narayan Ramasubbu, Ramanath Subramanyam, Sunil Mithas, Mayuram S. Krishnan
2004 J jnl
J. Organ. Comput. Electron. Commer.
Mayuram S. Krishnan, Ramanath Subramanyam
2003 J jnl
IEEE Trans. Software Eng.
Ramanath Subramanyam, Mayuram S. Krishnan
2001 C conf
ICIS
Ramanath Subramanyam, Mayuram S. Krishnan
2001 C conf
ICIS
Sunil Mithas, Ramanath Subramanyam, Mayuram S. Krishnan
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.")