Arthor Documentation for Future Developer: Difference between revisions

From DISI
Jump to navigation Jump to search
mNo edit summary
(80 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Written by Jennifer Young on December 16, 2019. Last edited January 7, 2020
== Introduction ==
[https://www.nextmovesoftware.com/downloads/arthor/documentation/Arthor.pdf Here is the link to Arthor's manual]
* Username: ucsf@nextmovesoftware.com
* Password: <Ask jjiteam@googlegroups.com>


==Install and Set Up on TomCat==
Arthor configurations and the frontend files are consolidated in '''/nfs/soft2/arthor_configs/'''.
Arthor currently runs on n-1-136, which runs CentOS Linux release 7.7.1908 (Core).  You can check the version of CentOS with the following command
    cat /etc/centos-release


Check your current version of Java with the following command:
'''/nfs/soft2/arthor_configs/start_arthor_script.sh''' can start/restart Arthor instances on respective machines.
    java -version


On n-1-136 we are running openjdk version "1.8.0_222", OpenJDK Runtime Environment (build 1.8.0_222-b10), and OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
Launch the script to see the options available.
If Java is not installed, install it using yum


I followed this link to install TomCat on CentOS 7 https://linuxize.com/post/how-to-install-tomcat-9-on-centos-7/
== How To Download Arthor ==
# Ssh to nfs-soft2 and become root. Prepare directory
#: <source> mkdir /export/soft2/arthor_configs/arthor-<version> && cd /export/soft2/arthor_configs/arthor-<version> </source>
# [https://www.nextmovesoftware.com/downloads/arthor/ Download Software with this link]
#* Username: ucsf@nextmovesoftware.com
#* Password: <Ask jjiteam@googlegroups.com>
# Go to releases. Look for ''' smallworld-java-<version>.tar.gz ''' and copy the link address.
# Download using wget
#: <source> wget --user ucsf@nextmovesoftware.com --password <Ask jjiteam@googlegroups.com> <link address> </source>
# Decompress the file
#* <source> tar -xvf <file_name> </source>


==Open port for Arthor==
== How To Launch Arthor For The First Time ==
In order for Arthor to be usable in the browser, the port you wish to run it on must be opened.
=== Prepare Files and Directories ===
https://www.thegeekdiary.com/how-to-open-a-ports-in-centos-rhel-7/
# Ssh to nfs-exc and become root
# Open a port in the firewall
#: <source>firewall-cmd --permanent --add-port=<port_number>/tcp
firewall-cmd --reload
</source>
# Go to Arthor Config directory
#: <source>cd /export/soft2/arthor_configs/arthor-<latest_version></source>
# Create an Arthor config file
#: <source>vim <name_of_file>.cfg</source>
#* Add these lines in the file. Check the manual for more options.
#: <source>
DataDir=/local2/public_arthor
MaxConcurrentSearches=6
MaxThreadsPerSearch=8
AutomaticIndex=false
AsyncHitCountMax=20000
Depiction=./depict/bot/svg?w=%w&h=%h&svgunits=px&smi=%s&zoom=0.8&sma=%m&smalim=1
Resolver=https://sw.docking.org/util/smi2mol?smi=%s
</source>
=== Start Arthor Instance ===
# Now ssh into a machine you wish to run an Arthor instance on and become root
# Change your shell to bash if you havn't already
#: <source>bash</source>
# Create a screen
#: <source>screen -S <screen_name></source>
# Prepare Arthor Config Path
#: <source>export ARTHOR_CONFIG="/nfs/soft2/arthor_configs/arthor-<version>/<name_of_config_file>.cfg"</source>
# Launch java
#: <source>java -jar /nfs/soft2/arthor_configs/arthor-<version>/arthor-<version>-centos7/java/arthor.jar --httpPort=<port_number></source>


===Step 1: Check Port Status===
=== Configuration Details ===
Check that the port is not open and that Apache is not showing that port.
    netstat -na | grep <port number you are checking>


    lsof -i -P |grep http
*'''DataDir''': This is the directory where the Arthor data files live.  Location where the index files will be created and loaded from.


===Step 2: Check Port Status in IP Tables===
*'''MaxConcurrentSearches''': Controls the maximum number of searches that can be run concurrently by setting the database pool size. When switching between a large number of databases it can be useful to have a larger pool size, the only trade off is keeping file pointers open.
    iptables-save | grep <port number you are checking>


I skipped Step 3 from the guide, because there was a lot of information in the /etc/services file and I didn't want to edit it and break something.
*'''MaxThreadsPerSearch''': The number of threads to use for both ATDB and ATFP searches


===Step 4: Open Firewall Ports===
*Set '''AutomaticIndex''' to false if you don't want new smiles files added to the data directory to be indexed automatically
I did not include the zone=public section because the stand-alone servers are usually used for private instances of Arthor and SmallWorld.
Run as root.
    firewall-cmd --add-port=<port number you are adding>/tcp --permanent


You need to reload the firewall after a change is made.
*'''AsyncHitCountMax''': The upper-bound for the number of hits to retrieve in background searches.
    firewall-cmd --reload


==How to run standalone Arthor instance==
*'''Resolver''': Using Smallworld API, allows input box to take in a SMILE format and automatically draw on the board.


===Step 1: Use or start a bash shell===
'''Check Arthor manual for more configuration options'''
You can check your default shell using
    echo $SHELL


If your default shell is csh, use
== How to Build Arthor Databases==
    bash
We can build Arthor Databases anywhere. Consolidate smiles into one directory so you can index them all one by one.
to start a new bash shell in the current terminal window. Note that echo $SHELL will show you your default shell regardless of the current shell.


===Step 2: Set your environment variables===
Just use the script located at '''/nfs/home/jjg/scripts/arthor_index_script.sh''' at the directory where you c
    export ARTHOR_DIR=/opt/nextmove/arthor/arthor-3.0-rt-beta-linux
    export PATH=$ARTHOR_DIR/bin/:$PATH


Make sure the ARTHOR_DIR variable is set to the directory for the latest version of Arthor or whichever version you would like to test.
Here is the content of the script:
The PATH environment variable is needed if you wish to use the Arthor tools from the command line
<source>
#!/bin/bash


===Step 3: Run the arthor-server.jar===
version="3.4.2"
    java -jar /opt/nextmove/arthor/arthor-3.0-rt-beta-linux/java/arthor-server.jar --httpPort <your httpPort>


==Setting environment variables for TomCat Server==
export ARTHOR_DIR=/nfs/soft2/arthor_configs/arthor-$version/arthor-$version-centos7/
Set the environment variables in the setenv.sh file.  Note: Be sure to edit the file in the directory corresponding to the latest version of TomCat.  As of December 2019, we are running 9.0.27 on n-1-136.
export PATH=$ARTHOR_DIR/bin/:$PATH


  vim  /opt/tomcat/apache-tomcat-9.0.27/bin/setenv.sh
target="*.smi"


Add the line below to the setenv.sh file above, or substitute the path to wherever you currently store the arthor.cfg file
for j in $target
  export ARTHOR_CONFIG=/usr/local/tomcat/arthor.cfg
do
        echo 'smi2atdb -j 4 -p '$j' '${j}'.atdb'
        smi2atdb -j 4 -p $j ${j}.atdb
        echo 'atdb2fp -j 4 '$j'.atdb'
atdb2fp -j 4 ${j}.atdb
done
</source>


Here is an example of the arthor.cfg file:
=== Command Details ===
  # Arthor generated config file
'''smi2atdb''' creates the atdb files needed for Substructure searching.
  BINDIR=/opt/nextmove/arthor/arthor-2.1.2-centos7/bin
*'''-j''' is the amount of threads to use to index the smiles file
  DATADIR=/usr/local/tomcat/arthor_data
*'''-p''' stores the position of the original file
  STAGEDIR=/usr/local/arthor_data/stage
'''atdb2fp''' makes substructure searching faster
  NTHREADS=64 .
  NODEAFFINITY=true
  SearchAsYouDraw=true
  AutomaticIndex=true
  DEPICTION=./depict/bot/svg?w=%w&h=%h&svgunits=px&smi=%s&zoom=0.8&sma=%m&smalim=1
  RESOLVER=


'''Important parts of the arthor.cfg file'''
==Setting up Round Table==
"Round Table allows you to serve and split chemical searches across multiple host machines.  The implementation provides a lightweight proxy that forwards requests to other Arthor host servers that do the actual search.  Communication is done using the existing Web APIs.
===Setting up Host Server===
# Ssh to nfs-soft2 and become root
# Open a port in the firewall
#: <source>firewall-cmd --permanent --add-port=<port_number>/tcp
firewall-cmd --reload
</source>
# Go to Arthor Config Directory
#: <source>cd /export/soft2/arthor_configs/arthor-<version></source>
# Create Round Table Head configuration file. Here is an example:
# <source>
[RoundTable]
RemoteClient=http://10.20.0.41:8008
RemoteClient=http://10.20.5.19:8008
Resolver=https://sw.docking.org/util/smi2mol?smi=%s
</source>
# Now ssh into a machine you wish to run the round table head on and become root
# Change your shell to bash if you havn't already
#: <source>bash</source>
# Create a screen
#: <source>screen -S <screen_name></source>
# Prepare Arthor Config Path
#: <source>export ARTHOR_CONFIG="/nfs/soft2/arthor_configs/arthor-<version>/<round_table_head>.cfg"</source>
# Launch java
#: <source>java -jar /nfs/soft2/arthor_configs/arthor-<version>/arthor-<version>-centos7/java/arthor.jar --httpPort=<port_number></source>
 
== Active Arthor Instances ==
===Public Arthor===
{| class="wikitable"
|-
! CentOS 7 Machine
! Port
! Round Table Data Directory
|-
| samekh
| 10.20.0.41:8000
| /local2/public_arthor/
|-
| nun
| 10.20.0.40:8000
| /local2/public_arthor/
|-
|}
 
===Arthor Round Table Head===
{| class="wikitable"
|-
! CentOS 7 Machine
! Port
! Round Table Data Directory
|-
| samekh
| 10.20.0.41:8080
| /local2/arthor_database/
|-
| nun
| 10.20.0.40:8080
| /local2/arthor_database/
|-
|}
 
===Arthor Round Table Nodes===
{| class="wikitable"
|-
! CentOS 7 Machine
! Port
! Round Table Data Directory
|-
| samekh
| 10.20.0.41:8008
| /local2/arthor_database/
|-
| nun
| 10.20.0.40:8008
| /local2/arthor_database/
|-
| nfs-exd
| 10.20.1.113:8008
| /export/exd/arthor_database/
|-
| nfs-exh
| 10.20.5.19:8008
| /export/exh/arthor_database/
|-
|}


'''BINDIR''' is the location of the Arthor command line binaries. These are used to generate the Arthor index files and to perform searches directly on n-1-136.  An example of this would be using atdbgrep for substructure search.  
== Customizing Arthor Frontend to our needs ==
The frontend Arthor code is located at '''/nfs/exc/arthor_configs/*''' and the '''*''' is based on current running version.
=== Add Arthor Download Options ===
==== For Arthor 3.4: ====
1. vim .extract/webapps/ROOT/WEB-INF/static/index.html


'''DATADIR''' This is the directory where the Arthor data files live.  Location where the index files will be created and loaded from.
2. search: '''arthor_tsv_link'''


'''STAGEDIR''' Location where the index files will be built before being moved into the DATADIR.
3. in the div with the class=”dropdown-content”, add these link options and change the number accordingly:


'''NTHREADS''' The number of threads to use for both ATDB and ATFP searches
              <a id="arthor_tsv_link" href="#"> TSV-500</a>
              <a id="arthor_tsv_link_5000" href="#"> TSV-5,000</a>
              <a id="arthor_tsv_link_50000" href="#"> TSV-50,000</a>
              <a id="arthor_tsv_link_100000" href="#"> TSV-100,000</a>
              <a id="arthor_tsv_link_max" href="#"> TSV-max</a>
              <a id="arthor_csv_link" href="#"> CSV-500</a>
              <a id="arthor_csv_link_5000" href="#"> CSV-5,000</a>
              <a id="arthor_csv_link_50000" href="#"> CSV-50,000</a>
              <a id="arthor_csv_link_100000" href="#"> CSV-100,000</a>
              <a id="arthor_csv_link_max" href="#"> CSV-max</a>
              <a id="arthor_sdf_link" href="#"> SDF-500</a>
              <a id="arthor_sdf_link_5000" href="#"> SDF-5,000</a>
              <a id="arthor_sdf_link_50000" href="#"> SDF-50,000</a>
              <a id="arthor_sdf_link_100000" href="#"> SDF-100,000</a>
              <a id="arthor_sdf_link_max" href="#"> SDF-max</a>


Set '''AutomaticIndex''' to false if you don't want new smiles files added to the data directory to be indexed automatically
4. then vim .extract/webapps/ROOT/WEB-INF/static/js/index.js


==Setting up Round Table==
5. search: '''function $(t){'''
Note this requires Arthor version 3 or later. This section in progress
 
6. in the function $(t), add these lines:
 
if(document.getElementById("arthor_tsv_link")) {
        var e=i.a.param({query:s.b.query,type:s.b.type,draw:0,start:0,length:t,flags:s.b.flags}),n=s.b.url+"/dt/"+E(s.b.table)+"/search";i()("#arthor_sdf_link").attr("href",n+".sdf?"+e),i() ("#arthor_tsv_link").attr("href",n+".tsv?"+e),i()("#arthor_csv_link").attr("href",n+".csv?"+e)
}
if (document.getElementById("arthor_tsv_link_5000")) {
        var e=i.a.param({query:s.b.query,type:s.b.type,draw:0,start:0,length:5000,flags:s.b.flags}),n=s.b.url+"/dt/"+E(s.b.table)+"/search";i()("#arthor_sdf_link_5000").attr("href",n+".sdf?"+e),i()("#arthor_tsv_link_5000").attr("href",n+".tsv?"+e),i()("#arthor_csv_link_5000").attr("href",n+".csv?"+e)
}
if (document.getElementById("arthor_tsv_link_50000")) {
        var e=i.a.param({query:s.b.query,type:s.b.type,draw:0,start:0,length:50000,flags:s.b.flags}),n=s.b.url+"/dt/"+E(s.b.table)+"/search";i()("#arthor_sdf_link_50000").attr("href",n+".sdf?"+e),i()("#arthor_tsv_link_50000").attr("href",n+".tsv?"+e),i()("#arthor_csv_link_50000").attr("href",n+".csv?"+e)
}
if (document.getElementById("arthor_tsv_link_100000")) {
        var e=i.a.param({query:s.b.query,type:s.b.type,draw:0,start:0,length:100000,flags:s.b.flags}),n=s.b.url+"/dt/"+E(s.b.table)+"/search";i()("#arthor_sdf_link_100000").attr("href",n+".sdf?"+e),i()("#arthor_tsv_link_100000").attr("href",n+".tsv?"+e),i()("#arthor_csv_link_100000").attr("href",n+".csv?"+e)
}
if (document.getElementById("arthor_tsv_link_max")) {
        var e=i.a.param({query:s.b.query,type:s.b.type,draw:0,start:0,length:1000000000,flags:s.b.flags}),n=s.b.url+"/dt/"+E(s.b.table)+"/search";i()("#arthor_sdf_link_max").attr("href",n+".sdf?"+e),i()("#arthor_tsv_link_max").attr("href",n+".tsv?"+e),i()("#arthor_csv_link_max").attr("href",n+".csv?"+e)
}
 
=== Take out Similarity Button ===
vim .extract/webapps/ROOT/WEB-INF/static/index.html
search: '''Similarity'''
Comment out this line '''< li value="Similarity" onclick="setSearchType(this)" class="first"> Similarity </li >''' //added spaces at the beginning and end so prevent wiki from converting it
Then add "first" in Substructure's class
=== Hyperlink to zinc20 ===
vim .extract/webapps/ROOT/WEB-INF/static/js/index.js
search: '''table_name'''
*find this line "< b>" + d + "< /b>"
*replace with '''"< b><a target='_blank' href='https://zinc20.docking.org/substances/"+d+"'>" + d + "</a></b >"''' //added spaces at the beginning and end so prevent wiki from converting it
 
=== Make Input Box Work ===
At the end of the Arthor config file add this:
    Resolver=https://sw.docking.org/util/smi2mol?smi=%s
To copy smiles in the input box:
    vim .extract/webapps/ROOT/WEB-INF/static/js/index.js
    search this: “var e=t.src.smiles()”
    add this after the semi-colon
        document.getElementById("ar_text_input").value = e;
 
=== Add Ask Questions ===
# Go to frontend directory
#: <source>vim /export/soft2/arthor_configs/arthor-3.4.2/.extract/webapps/ROOT/WEB-INF/static/index.html</source>
# Search opt-box-border
# Create another div in the compass of two big divs
# Add this
#: <source>
<div class="opt-box-border">
        <label>Ask Questions</label>
        Email us: jjiteam@googlegroups.com
</div>
</source>
 
== Restarting Arthor Instance(s) Instructions ==
# Ssh to machine with respective Arthor instance and become root
# execute '''run_arthors_on_reboot.sh''' to show restart all instances on the machine
#: <source>
bash /root/run_arthors_on_reboot.sh
</source>
# execute '''start_arthor_script.sh''' to restart specific Arthor instance. It will show you options to choose from.
#: <source>
bash /nfs/soft2/arthor_configs/start_arthor_script.sh
</source>

Revision as of 01:07, 29 January 2022

Introduction

Here is the link to Arthor's manual

  • Username: ucsf@nextmovesoftware.com
  • Password: <Ask jjiteam@googlegroups.com>

Arthor configurations and the frontend files are consolidated in /nfs/soft2/arthor_configs/.

/nfs/soft2/arthor_configs/start_arthor_script.sh can start/restart Arthor instances on respective machines.

Launch the script to see the options available.

How To Download Arthor

  1. Ssh to nfs-soft2 and become root. Prepare directory
     mkdir /export/soft2/arthor_configs/arthor-<version> && cd /export/soft2/arthor_configs/arthor-<version>
  2. Download Software with this link
    • Username: ucsf@nextmovesoftware.com
    • Password: <Ask jjiteam@googlegroups.com>
  3. Go to releases. Look for smallworld-java-<version>.tar.gz and copy the link address.
  4. Download using wget
     wget --user ucsf@nextmovesoftware.com --password <Ask jjiteam@googlegroups.com> <link address>
  5. Decompress the file
    •  tar -xvf <file_name>

How To Launch Arthor For The First Time

Prepare Files and Directories

  1. Ssh to nfs-exc and become root
  2. Open a port in the firewall
    firewall-cmd --permanent --add-port=<port_number>/tcp 
    firewall-cmd --reload
  3. Go to Arthor Config directory
    cd /export/soft2/arthor_configs/arthor-<latest_version>
  4. Create an Arthor config file
    vim <name_of_file>.cfg
    • Add these lines in the file. Check the manual for more options.
    DataDir=/local2/public_arthor
    MaxConcurrentSearches=6
    MaxThreadsPerSearch=8
    AutomaticIndex=false
    AsyncHitCountMax=20000
    Depiction=./depict/bot/svg?w=%w&h=%h&svgunits=px&smi=%s&zoom=0.8&sma=%m&smalim=1
    Resolver=https://sw.docking.org/util/smi2mol?smi=%s

Start Arthor Instance

  1. Now ssh into a machine you wish to run an Arthor instance on and become root
  2. Change your shell to bash if you havn't already
    bash
  3. Create a screen
    screen -S <screen_name>
  4. Prepare Arthor Config Path
    export ARTHOR_CONFIG="/nfs/soft2/arthor_configs/arthor-<version>/<name_of_config_file>.cfg"
  5. Launch java
    java -jar /nfs/soft2/arthor_configs/arthor-<version>/arthor-<version>-centos7/java/arthor.jar --httpPort=<port_number>

Configuration Details

  • DataDir: This is the directory where the Arthor data files live. Location where the index files will be created and loaded from.
  • MaxConcurrentSearches: Controls the maximum number of searches that can be run concurrently by setting the database pool size. When switching between a large number of databases it can be useful to have a larger pool size, the only trade off is keeping file pointers open.
  • MaxThreadsPerSearch: The number of threads to use for both ATDB and ATFP searches
  • Set AutomaticIndex to false if you don't want new smiles files added to the data directory to be indexed automatically
  • AsyncHitCountMax: The upper-bound for the number of hits to retrieve in background searches.
  • Resolver: Using Smallworld API, allows input box to take in a SMILE format and automatically draw on the board.

Check Arthor manual for more configuration options

How to Build Arthor Databases

We can build Arthor Databases anywhere. Consolidate smiles into one directory so you can index them all one by one.

Just use the script located at /nfs/home/jjg/scripts/arthor_index_script.sh at the directory where you c

Here is the content of the script:

#!/bin/bash

version="3.4.2"

export ARTHOR_DIR=/nfs/soft2/arthor_configs/arthor-$version/arthor-$version-centos7/
export PATH=$ARTHOR_DIR/bin/:$PATH

target="*.smi"

for j in $target
do
        echo 'smi2atdb -j 4 -p '$j' '${j}'.atdb'
        smi2atdb -j 4 -p $j ${j}.atdb
        echo 'atdb2fp -j 4 '$j'.atdb'
	atdb2fp -j 4 ${j}.atdb
done

Command Details

smi2atdb creates the atdb files needed for Substructure searching.

  • -j is the amount of threads to use to index the smiles file
  • -p stores the position of the original file

atdb2fp makes substructure searching faster

Setting up Round Table

"Round Table allows you to serve and split chemical searches across multiple host machines. The implementation provides a lightweight proxy that forwards requests to other Arthor host servers that do the actual search. Communication is done using the existing Web APIs.

Setting up Host Server

  1. Ssh to nfs-soft2 and become root
  2. Open a port in the firewall
    firewall-cmd --permanent --add-port=<port_number>/tcp 
    firewall-cmd --reload
  3. Go to Arthor Config Directory
    cd /export/soft2/arthor_configs/arthor-<version>
  4. Create Round Table Head configuration file. Here is an example:
  5. [RoundTable]
    RemoteClient=http://10.20.0.41:8008
    RemoteClient=http://10.20.5.19:8008
    Resolver=https://sw.docking.org/util/smi2mol?smi=%s
  6. Now ssh into a machine you wish to run the round table head on and become root
  7. Change your shell to bash if you havn't already
    bash
  8. Create a screen
    screen -S <screen_name>
  9. Prepare Arthor Config Path
    export ARTHOR_CONFIG="/nfs/soft2/arthor_configs/arthor-<version>/<round_table_head>.cfg"
  10. Launch java
    java -jar /nfs/soft2/arthor_configs/arthor-<version>/arthor-<version>-centos7/java/arthor.jar --httpPort=<port_number>

Active Arthor Instances

Public Arthor

CentOS 7 Machine Port Round Table Data Directory
samekh 10.20.0.41:8000 /local2/public_arthor/
nun 10.20.0.40:8000 /local2/public_arthor/

Arthor Round Table Head

CentOS 7 Machine Port Round Table Data Directory
samekh 10.20.0.41:8080 /local2/arthor_database/
nun 10.20.0.40:8080 /local2/arthor_database/

Arthor Round Table Nodes

CentOS 7 Machine Port Round Table Data Directory
samekh 10.20.0.41:8008 /local2/arthor_database/
nun 10.20.0.40:8008 /local2/arthor_database/
nfs-exd 10.20.1.113:8008 /export/exd/arthor_database/
nfs-exh 10.20.5.19:8008 /export/exh/arthor_database/

Customizing Arthor Frontend to our needs

The frontend Arthor code is located at /nfs/exc/arthor_configs/* and the * is based on current running version.

Add Arthor Download Options

For Arthor 3.4:

1. vim .extract/webapps/ROOT/WEB-INF/static/index.html

2. search: arthor_tsv_link

3. in the div with the class=”dropdown-content”, add these link options and change the number accordingly:

              <a id="arthor_tsv_link" href="#"> TSV-500</a>
              <a id="arthor_tsv_link_5000" href="#"> TSV-5,000</a>
              <a id="arthor_tsv_link_50000" href="#"> TSV-50,000</a>
              <a id="arthor_tsv_link_100000" href="#"> TSV-100,000</a>
              <a id="arthor_tsv_link_max" href="#"> TSV-max</a>
              <a id="arthor_csv_link" href="#"> CSV-500</a>
              <a id="arthor_csv_link_5000" href="#"> CSV-5,000</a>
              <a id="arthor_csv_link_50000" href="#"> CSV-50,000</a>
              <a id="arthor_csv_link_100000" href="#"> CSV-100,000</a>
              <a id="arthor_csv_link_max" href="#"> CSV-max</a>
              <a id="arthor_sdf_link" href="#"> SDF-500</a>
              <a id="arthor_sdf_link_5000" href="#"> SDF-5,000</a>
              <a id="arthor_sdf_link_50000" href="#"> SDF-50,000</a>
              <a id="arthor_sdf_link_100000" href="#"> SDF-100,000</a>
              <a id="arthor_sdf_link_max" href="#"> SDF-max</a>

4. then vim .extract/webapps/ROOT/WEB-INF/static/js/index.js

5. search: function $(t){

6. in the function $(t), add these lines:

if(document.getElementById("arthor_tsv_link")) {
       var e=i.a.param({query:s.b.query,type:s.b.type,draw:0,start:0,length:t,flags:s.b.flags}),n=s.b.url+"/dt/"+E(s.b.table)+"/search";i()("#arthor_sdf_link").attr("href",n+".sdf?"+e),i() ("#arthor_tsv_link").attr("href",n+".tsv?"+e),i()("#arthor_csv_link").attr("href",n+".csv?"+e)
}
if (document.getElementById("arthor_tsv_link_5000")) {
       var e=i.a.param({query:s.b.query,type:s.b.type,draw:0,start:0,length:5000,flags:s.b.flags}),n=s.b.url+"/dt/"+E(s.b.table)+"/search";i()("#arthor_sdf_link_5000").attr("href",n+".sdf?"+e),i()("#arthor_tsv_link_5000").attr("href",n+".tsv?"+e),i()("#arthor_csv_link_5000").attr("href",n+".csv?"+e)
}
if (document.getElementById("arthor_tsv_link_50000")) {
       var e=i.a.param({query:s.b.query,type:s.b.type,draw:0,start:0,length:50000,flags:s.b.flags}),n=s.b.url+"/dt/"+E(s.b.table)+"/search";i()("#arthor_sdf_link_50000").attr("href",n+".sdf?"+e),i()("#arthor_tsv_link_50000").attr("href",n+".tsv?"+e),i()("#arthor_csv_link_50000").attr("href",n+".csv?"+e)
}
if (document.getElementById("arthor_tsv_link_100000")) {
       var e=i.a.param({query:s.b.query,type:s.b.type,draw:0,start:0,length:100000,flags:s.b.flags}),n=s.b.url+"/dt/"+E(s.b.table)+"/search";i()("#arthor_sdf_link_100000").attr("href",n+".sdf?"+e),i()("#arthor_tsv_link_100000").attr("href",n+".tsv?"+e),i()("#arthor_csv_link_100000").attr("href",n+".csv?"+e)
}
if (document.getElementById("arthor_tsv_link_max")) {
       var e=i.a.param({query:s.b.query,type:s.b.type,draw:0,start:0,length:1000000000,flags:s.b.flags}),n=s.b.url+"/dt/"+E(s.b.table)+"/search";i()("#arthor_sdf_link_max").attr("href",n+".sdf?"+e),i()("#arthor_tsv_link_max").attr("href",n+".tsv?"+e),i()("#arthor_csv_link_max").attr("href",n+".csv?"+e)
}

Take out Similarity Button

vim .extract/webapps/ROOT/WEB-INF/static/index.html
search: Similarity

Comment out this line < li value="Similarity" onclick="setSearchType(this)" class="first"> Similarity //added spaces at the beginning and end so prevent wiki from converting it Then add "first" in Substructure's class

Hyperlink to zinc20

vim .extract/webapps/ROOT/WEB-INF/static/js/index.js
search: table_name
*find this line "< b>" + d + "< /b>"
*replace with "< b><a target='_blank' href='https://zinc20.docking.org/substances/"+d+"'>" + d + "</a>" //added spaces at the beginning and end so prevent wiki from converting it

Make Input Box Work

At the end of the Arthor config file add this:
   Resolver=https://sw.docking.org/util/smi2mol?smi=%s
To copy smiles in the input box:
   vim .extract/webapps/ROOT/WEB-INF/static/js/index.js
   search this: “var e=t.src.smiles()”
   add this after the semi-colon
       document.getElementById("ar_text_input").value = e;

Add Ask Questions

  1. Go to frontend directory
    vim /export/soft2/arthor_configs/arthor-3.4.2/.extract/webapps/ROOT/WEB-INF/static/index.html
  2. Search opt-box-border
  3. Create another div in the compass of two big divs
  4. Add this
    <div class="opt-box-border">
            <label>Ask Questions</label>
            Email us: jjiteam@googlegroups.com
    </div>

Restarting Arthor Instance(s) Instructions

  1. Ssh to machine with respective Arthor instance and become root
  2. execute run_arthors_on_reboot.sh to show restart all instances on the machine
    bash /root/run_arthors_on_reboot.sh
  3. execute start_arthor_script.sh to restart specific Arthor instance. It will show you options to choose from.
    bash /nfs/soft2/arthor_configs/start_arthor_script.sh