ICM Manual v.3.9
by Ruben Abagyan,Eugene Raush and Max Totrov
Copyright © 2020, Molsoft LLC
Feb 15 2024

Contents
 
Introduction
Reference Guide
 ICM options
 Editing
 Graph.Controls
 Alignment Editor
 Constants
 Subsets
 Molecules
 Selections
 Fingerprints
 Regexp
 Cgi programming with icm
 Xml drugbank example
 Tree cluster
 Arithmetics
 Flow control
 MolObjects
 Energy Terms
 Integers
 Reals
 Logicals
 Strings
 Preferences
 Tables
 Other
 Chemical
 Smiles
 Chemical Functions
 MolLogP
 MolLogS
 MolSynth
 Soap
 Gui programming
 Commands
 Functions
 Icm shell functions
 Macros
 Files
Command Line User's Guide
References
Glossary
 
Index
PrevICM Language Reference
CGI programming using ICM scripting language
Next

Introduction

Common Gateway Interface (CGI) is a standard method used to generate dynamic content on web pages and web applications. CGI, when implemented on a web server, provides an interface between the web server and programs that generate the web content. These programs are known as CGI scripts or simply CGIs; they are usually written in a scripting language, but can be written in any programming language including ICM.

An ICM CGI script consists of the following important elements:

  • first line must define the path to the ICM binary followed by -w option with path to ICMHOME

    Example:

    
    #!/usr/prog/icm/icm64 -w/usr/prog/icm
    
  • The first output line of any CGI program must define the content type. Most common type is: text/html. Make sure that nothing is printed before that line Example:
    
    printf "Content-type: text/html;\n\n"
    
  • Then, usually goes CGI parameter processing. ICM provides a function which return both GET or POST argument as a collection. Example:
    
    params = Collection(web)
    if (Exist(c,"paramName")) show c["paramName"]
    
  • Depending on the input parameters the main part of CGI script generates output HTML which will be displayed in the web browser. For large multi line pieces of HTML code you can use triple quote strings. Example:
    
    """
    <head>
      <title>Molsoft Chemical Search Demo</title>
      <link rel="stylesheet" type="text/css" href="chemsearch.css">
    
      <script src="http://www.molsoft.com/web/moledit.js" type="text/javascript"></script>
    </head>
    """
    
  • The last line of any CGI script must be quit command.

Simple Example

The simplest 'Hello World' ICM CGI script may look like this:


#!/usr/prog/icm/icm64 -w/usr/prog/icm

printf "Content-type: text/html;\n\n"

print "Hello from ICM SGI script"

quit

Tables in HTML output

ICM provides a command show html to generate a nicely formatted HTML code for shell tables. The command generates fully self-contained HTML code with head and body tags. If you CGI script produces a single HTML table you can use this command as is.

Example:


#!/usr/prog/icm/icm64 -w/usr/prog/icm

printf "Content-type: text/html;\n\n"

params = Collection(web)
if (Exist(param["filename"])) then
 # reads sn SDF file on the server
 read table mol param["filename"] name="t"   
 show html t
endif

quit

In more complex cases when table is just a part of bigger HTML code you need to extract body part and, optionally, javascript part which renders chemical structures. It can be done using regular expression and Match function

Example:


 # store the result HTML in s_html string variable
 show html t output = "s_html"   
 # extract table 
 s_table = Match(s_html,"<body.*?>(?n)(.*)</body>", 1 )  
 # for chemical tables you might want to extract JavaScript code
 # It defines a function with name: onLoad_<tableName> 
 # which will draw chemicals when you call it.
 s_js    = Match(s_html,"<script.?>(?n)(.*)</script>", 1 ); 
 # add s_table and s_js into appropriate parts of your result HTML
 s_head += s_js
 s_body += s_table
 # show the result html
 show "<head>" + s_head + <"/head">
 show '<body onload="onLoad_t();">' + s_body + "</body>"

Integration with Molsoft HTML5 Molecule Editor

Please click here to learn how to embed molecule editor into your html code.

Chemical Search Script Demo

The example which demonstrates the functionality above: Chemical Search Demo

It provides basic chemical search functionality using find molcart command and chemical database file The source code if the script is here


Prev
Greedy matching
Home
Up
Next
Xml drugbank example

Copyright© 1989-2024, Molsoft,LLC - All Rights Reserved. Copyright© 1989-2024, Molsoft,LLC - All Rights Reserved. This document contains proprietary and confidential information of Molsoft, LLC. The content of this document may not be disclosed to third parties, copied or duplicated in any form, in whole or in part, without the prior written permission from Molsoft, LLC.