ICM Web GB Work Status Report Apr 8 2015

Components

The web interface includes three panels, each with buttons to invoke interaction/computation:

  1. Panel 1: embeded BioDalliance genome browser, with an overlay of brush slider to pick a genome segment range, implemented with d3.js
  2. Panel 2: energy graph with nuc position widgets, pure javascript interaction at client side, also implemented with d3.js
  3. Panel 3: Jmol view: retrieve server side data (icm.occ.xyz) and visualize using Jmol script (nuc-cores.txt).

How to use

  1. Panel 1: move the yellow slider to pick genome range, use button “zoom in” and “zoom out” to zoom the view. After zoom in, click the “send sequence to ICM” button to send sequence in slider range to server (handled by server side submit.php). After sequence is received by server, shell script run-icm.tcsh and mkBigWigs.tcsh are called to create data. Data are then retrieved and show in Panel 1 (all icm tracks such as Tilt.bw), in Panel 2 ( icm.dat as energy chart, positions.dat as nucleosome widgets), and Panel 3 (icm.occ.xyz to show in jmol applet).
  2. Panel 2: icm.dat is retrieved to draw the energy chart, and positions.dat is retrieved to draw the nuc widgets. If user moved nuc widgets, the button “send nuc position to ICM” can be clicked to send new positions to server (handled by fold.php). After the positions is received by server, shell script run-fold.tcsh is called to re-fold the chromatin. A new icm.occ.xyz and icm.dat will be created.
  3. Panel 3: click the “re run” button to run the new chromatin folding computed and saved as icm.occ.xyz

Issues need review and/or fix

  1. Somehow the Jmol.js Tom originally used conflicts with the d3.js brush slider implementation, so a new JMol package (version 13.0.18, the Java version, not the later JS versions) is used instead. To run Java applet, it’s better to add the site “http://dna.engr.latech.edu/” to Java Security site list. See this webpage for instructions.
  2. Tom’s run-icm.tcsh is splited into two parts: run-icm and mkBigWig. The mkBigWig accepts genome sequence chr, start, end as arguements, and create bigwig files from data in icm.par. But still, these bigwig files are not shown. It’s clear that they are added as new tracks into dalliance browser, but somehow still behaves like the starting position is not set properly.
  3. After run-fold.tcsh, the neoclesomes are missing (click ‘rerun’ in panel 3 to see)
  4. Session: No session feature implemented, data are created into a ‘./tmpdata’ folder at server side
  5. nuc positions sent to server is a simple array of positions as integer number, but can be configured to send as more complex data, with specific Xnuc dat for each nuc.

Client-server communication: send sequences and run-icm

After button “send sequences to ICM” button is clicked in Panel 1, javascript sends sequence data to server, example data sent:

{chr: "chr22", start: 30014247, end: 30015736, seq: "AATGAGCAAGGTGCTGATGCAAGGAGATGGCAGATGCATTTTGAAAAAAA…CCCATGGGTTTTAAGTAGTGCCTATGGATGGCATGGGTGCCACTACTCA"}

Data will be handled by server side script submit.php. Example output:

posting to submit.php returns:
Array
(
[0] => start of run-icm.tcsh
[1] => 1489 147 19 166 6
[2] =>  109  269  587  786  1139  1311
[3] => end of run-icm.tcsh
)
tcsh mkBigWigs.tcsh chr22 30014247 30015736 2>&1
Array
(
[0] =>        Shear  Stretch  Stagger Buckle Prop-Tw Opening   Shift  Slide    Rise    Tilt    Roll   Twist
[1] => file name and fields  Shear.in 6
[2] => file name and fields  Stretch.in 6
[3] => file name and fields  Stagger.in 6
[4] => file name and fields  Buckle.in 6
[5] => file name and fields  Prop-Tw.in 6
[6] => file name and fields  Opening.in 6
[7] => file name and fields  Shift.in 6
[8] => file name and fields  Slide.in 6
[9] => file name and fields  Rise.in 6
[10] => file name and fields  Tilt.in 6
[11] => file name and fields  Roll.in 6
[12] => file name and fields  Twist.in 6
[13] => Buckle
[14] => Prop-Tw
[15] => Roll
[16] => Shift
[17] => Stagger
[18] => Tilt
[19] => Opening
[20] => Rise
[21] => Shear
[22] => Slide
[23] => Stretch
[24] => Twist
)

Client-server communication: send nuc positions and run-fold

After button “send nuc positions to ICM” is clicked in Panel 2, javascript sends nuc positions to server. Example data sent:

[109, 269, 587, 786, 1139, 1311]

Data will be handled by server side script fold.php. Example output:

posting to fold.php returns:
Array
(
[0] => 109
[1] => 269
[2] => 587
[3] => 786
[4] => 1139
[5] => 1311
)
tcsh run-fold.tcsh 109 269 587 786 1139 1311 2>&1
Array
(
[0] => start of run-fold.tcsh
[1] =>  equilibrium par filename:
[2] =>     read       16 equilib HPs from ../DAT/X0/MD-B.par
[3] =>  deformed par filename:
[4] =>     read deformed HPs:      147
[5] =>  sequence file name:
[6] =>    read       1489 values from seqin.txt
[7] =>  input the nucleosome start sites:
[8] =>    a negative value ends input
[9] =>  output file name:
[10] =>    writing to icm.par
[11] =>  equilibrium par filename:
[12] =>     read       16 equilib HPs from /home/www/htdocs/icm/prog//DAT/X0/MD-B.par
[13] =>  deformed par filename:
[14] =>     read deformed HPs:      147
[15] =>  force constants filename:
[16] =>    read Force Constant Parmameters:       16
[17] =>  sequence filename:
[18] =>    read  bases:     1489
[19] =>  Energy output file name:
[20] =>    will write to E.dat
[21] => end of run-fold.tcsh
)