OVERVIEW of CisOrtho: The CisOrtho website runs on two machines, which I'll call WEB and BACKEND. WEB runs a perl-CGI script that accepts the user query and writes the input in a scan directory monitored by a crontab-driven shell script running on BACKEND, called 'launch.bash'. When launch.bash finds a file there, it calls cisortho through a perl wrapper called 'results'. Finally, cisortho runs and produces html results files to the directory out/, that the user can browse for a limited time. This process accumulates files in scan/ and out/ that are monitored by another crontab-driven shell script, 'cleanup.bash' that deletes them when they are more than a few weeks old. Soon, this crude file-based, crontab-dependent communication between two machines will be replaced by SOAP communication. Thus, the 'listening ears' will be a CGI server running on BACKEND rather than a crontab job. Also, there will be no need for temporary files that must be mounted on both machines. Instead, the user input data will be sent directly from WEB to BACKEND as a SOAP message. Please let me know if there is a better way to achieve this. The entire set of software consists of the following: in WEBROOT: index.html methods.html download.html per/ #directory of permanent cisortho input files per/CElegans #elegans non-exonic genomic sequences in RDB format per/CBriggsae #briggsae non-exonic genomic sequences in RDB format per/eb_geneinfo #contains gene name, chromosome, start, end, strand per/eb.null #HMMER 'null' stats file, containing nucleotide freq. in #elegans and briggsae genomes combined per/eb.pri #HMMER priors stats file per/options #file containing input options for the cisortho binary scan/ #directory that the CGI script '$CGIROOT/query' deposits user submitted #input data. This directory is scanned by a bash script called 'launch.bash' #that is controlled by 'cisortho.cron', a crontab job out/ #directory where cisortho writes output html search results files. download/ graphics/ #contain extra html files for the cisortho website log/ #log files for cisortho launch.bash #bash script, scans 'scan/' for the presence of new input files and if found, #calls '$CGIROOT/results', a perl script that launches cisortho cleanup.bash #scans 'scan/' and 'out/', deleting old files and directories periodically cisortho.cron #launches 'launch.bash', and 'cleanup.bash' cisortho #the actual c++ binary. in CGIROOT: CGIsubs.pm #perl module with helper CGI subroutines query #perl CGI script for accepting user input submission, writes the input to 'scan/' results #perl script for parsing the user input and calling cisortho Other notes: * launch.bash implements a primitive lock-file based mechanism for limiting to 2 concurrently running instances of CisOrtho. * launch.bash is run once per minute by cisortho.cron. During that minute, launch.bash itself checks the presence of new files once per second. This way, there is no delay for the user to see that the input is being processed. This is essentially a poor-man's implementation of SOAP or other message-based response system. * upon clicking 'submit', the input is evaluated by the query script, and there is no deposit to 'scan/' if the input contains errors.