diff options
Diffstat (limited to 'Code')
-rw-r--r-- | Code/merge_edges.py | 46 | ||||
-rwxr-xr-x | Code/update_network.py | 2 | ||||
-rw-r--r-- | Code/update_network_by_force.py | 2 |
3 files changed, 40 insertions, 10 deletions
diff --git a/Code/merge_edges.py b/Code/merge_edges.py index a8bd3b9..5ea1485 100644 --- a/Code/merge_edges.py +++ b/Code/merge_edges.py @@ -22,6 +22,7 @@ import os, operator, sys, math, datetime, glob from configure import EDGE_POOL_DIR, MERGED_EDGE_FILE +import sqlite3 def get_number_of_RNAseq_ids(s): if s == '.': @@ -61,14 +62,14 @@ def make_html_page(lst, fname): head += '<link href="./c3.min.css" rel="stylesheet" />\n<script src="./d3.min.js"></script>\n<script src="./c3.min.js"></script>\n<script src="./scatterplot.js"></script>' s = '<html>' s += '<head>%s</head>\n' % (head) - body = '<p>TF is %s. </p>\n' % (split_id_and_name(lst[1])) - body += '<p>Target is %s. </p>\n' % (split_id_and_name(lst[0])) - body += '<p>Association strength: %s.</p>\n' % (lst[8]) + body = '<p>TF: %s</p>\n' % (split_id_and_name(lst[1])) + body += '<p>Target: %s</p>\n' % (split_id_and_name(lst[0])) + body += '<p>Association strength: %s</p>\n' % (lst[8]) body += '<p>Edge made on %s. </p>\n' % (add_dashes_to_date(lst[7])) body += '<p>Methods: %s</p>\n' % (make_html_list(lst[9])) body += '<p>Evidence of binding: %s.</p>\n' % (lst[5] if lst[5] != '.' else 'TBA') - body += '<a id="myLink" href="javascript:void(0);" onclick="drawScatterPlot(\'json/%s.json\', \'json/%s.json\', \'rnaseq_info_database.json\', [\'.\']);">Click for gene expression scatter plot</a>\n' % (tf, target) - body += '<p>For more detailed analysis, <a href="gene-expression-level-scatterplot-by-XuMengqi.zip">download</a> our gene expression scatter plotting tool. No installation is required. Input data: <a href="json/%s.json">TF gene expression</a> <a href="json/%s.json">Target gene expression</a> <a href="rnaseq_info_database.json">RNA-seq annotation</a></p>\n' % (tf, target) + body += '<a id="myLink" href="javascript:void(0);" onclick="drawScatterPlot(\'json/%s.json\', \'json/%s.json\', \'rnaseq_info_database.json\', [\'.\']);">Gene expression scatter plot</a>\n' % (tf, target) + body += '<p>For more detailed analysis, <a href="gene-expression-level-scatterplot-by-XuMengqi.zip">download</a> our gene expression scatter plotting tool. No installation is required. Input: <a href="json/%s.json">TF gene expression</a> <a href="json/%s.json">Target gene expression</a> <a href="rnaseq_info_database.json">RNA-seq annotation</a></p>\n' % (tf, target) body += '<p id="chart"></p>\n' s += '<body>%s</body>\n' % (body) s += '</html>' @@ -77,6 +78,21 @@ def make_html_page(lst, fname): f.close() +def fill_database(lst, conn): + ''' Store all edge information in a SQLite database, which can be retrieved in the Webapp.''' + tf = lst[1].split()[0] # ID only, no name + tf_name = split_id_and_name(lst[1]) + target = lst[0].split()[0] + target_name = split_id_and_name(lst[0]) + strength = lst[8] + edge_date = add_dashes_to_date(lst[7]) + method = make_html_list(lst[9]) + evidence = lst[5] if lst[5] != '.' else 'TBA' + conn.execute('CREATE TABLE IF NOT EXISTS edge (target_id text, target_name text, tf_id text, tf_name text, strength text, date text, method text, evidence text)') + conn.execute('INSERT INTO edge (target_id, target_name, tf_id, tf_name, strength, date, method, evidence) VALUES (?,?,?,?,?,?,?,?)', (target, target_name, tf, tf_name, strength, edge_date, method, evidence)) + conn.commit() + + def compute_time_difference_in_days(t1, t2): ''' t1 and t2 has this format: yyyymmdd. ''' if not t1.isnumeric() and length(t1) != 8: @@ -170,8 +186,22 @@ for k in d: fout.close() -print('[merge_edges.py]: Make html edge files. May take a while...') +print('[merge_edges.py]: Make html edge files. May take a while ...') + +db_fname = folder_path + '/' + 'edges.sqlite' +if os.path.exists(db_fname): + os.remove(db_fname) + +conn = sqlite3.connect(db_fname) for k in d: lst = make_new_edge(d[k]) - pagename = lst[1].split()[0] + '_' + lst[0].split()[0] + '_0.html' # TF_Target.html - make_html_page(lst, folder_path + '/' + pagename) + # Make an html page for each edge (taking Big disk space). This will take about 5GB disk space + # for 1.3 million edges, not very disk space friendly. So I use a database-driven dynamic method + # to save space. + # pagename = lst[1].split()[0] + '_' + lst[0].split()[0] + '_0.html' # TF_Target.html + # make_html_page(lst, folder_path + '/' + pagename) + # Write to a SQLite database file called edges.sqlite, which will be used for the Webapp. + # edges.sqlite will be put under static/edges/ for querying. + fill_database(lst, conn) + +conn.close() diff --git a/Code/update_network.py b/Code/update_network.py index f65b3ba..672dc1e 100755 --- a/Code/update_network.py +++ b/Code/update_network.py @@ -865,7 +865,7 @@ if os.path.getmtime(MERGED_EDGE_FILE) < os.path.getmtime(EDGE_POOL_DIR): # edge cmd = 'python3 merge_edges.py' os.system(cmd) write_log_file('[update_network.py] Number of lines in the new edges.txt: %d.' % (num_line(MERGED_EDGE_FILE)), UPDATE_NETWORK_LOG_FILE) - manual_copy_commands = 'Please copy files to the web application: sudo cp /home/lanhui/brain/Data/temp/edges.txt /var/www/brain/brain/static/edges/edges.txt sudo find /home/lanhui/brain/Data/temp/html_edges -name "*.html" -exec mv -t /var/www/brain/brain/static/edges {} +' + manual_copy_commands = 'Please copy files to the web application: sudo cp /home/lanhui/brain/Data/temp/edges.txt /var/www/brain/brain/static/edges/edges.txt sudo cp /home/lanhui/brain/Data/temp/html_edges/edges.sqlite /var/www/brain/brain/static/edges' write_log_file('[update_network.py] %s' % (manual_copy_commands), UPDATE_NETWORK_LOG_FILE) diff --git a/Code/update_network_by_force.py b/Code/update_network_by_force.py index 0e56d95..eb33b82 100644 --- a/Code/update_network_by_force.py +++ b/Code/update_network_by_force.py @@ -135,7 +135,7 @@ if os.path.getmtime(MERGED_EDGE_FILE) < os.path.getmtime(EDGE_POOL_DIR): # edge os.system(cmd) write_log_file('[update_network_by_force.py] Number of lines in the new edges.txt: %d.' % (num_line(MERGED_EDGE_FILE)), UPDATE_NETWORK_LOG_FILE) write_log_file('[update_network_by_force.py] %s' % (summarize_edge_file(MERGED_EDGE_FILE)), UPDATE_NETWORK_LOG_FILE) - manual_copy_commands = 'Please copy files to the web application: sudo cp /home/lanhui/brain/Data/temp/edges.txt /var/www/brain/brain/static/edges/edges.txt sudo find /home/lanhui/brain/Data/temp/html_edges -name "*.html" -exec mv -t /var/www/brain/brain/static/edges {} +' + manual_copy_commands = 'Please copy files to the web application: sudo cp /home/lanhui/brain/Data/temp/edges.txt /var/www/brain/brain/static/edges/edges.txt sudo cp /home/lanhui/brain/Data/temp/html_edges/edges.sqlite /var/www/brain/brain/static/edges' write_log_file('[update_network_by_force.py] %s' % (manual_copy_commands), UPDATE_NETWORK_LOG_FILE) copy_and_backup_file(MERGED_EDGE_FILE, '../Analysis') # the backup file will be used for further analysis |