FirstGlance in Jmol的技术信息 (FGiJ)
这份文件是提供给安装FGiJ到现有的网站中或增加其功能的软件开发者们,也提供给那些在设计对开发FGiJ过程中做出许多设计决定的理由感兴趣的人。
应用程序大小
Jmol applet程序的大小主要在于像素。 使用一定比例的窗口用于程序方面在一些常见的浏览器是不工作的。程式尺寸( jmolWidth , jmolHeight )是在get_applet_dimensions ( ) (感谢蒂姆德里斯科尔提供的这些代码)中通过窗口方面来计算的。 如果窗口在进行FGiJ后调整而显示的,手动加载/刷新程序将相应调整。 以上步骤的自动化的方法可能被潜在的恼人或疑难问题所拒绝。 (我从来没有能够让onResize ( )运作良好。尤其是,我试图利用它反而造成了Safari无限循环的加载。 )为了进一步了解applet大小的控制,FGiJ被嵌入在下面的一个表中。
三个版本
已经提供了FGiJ的三个版本。 所有这三个版本共享共同的.js文件和一些.htm文件。
- fg.htm :无框架。这是默认版本。
- fgf.htm :使用框架。 (终止版本0.98 。 )经常使用fs_left.htm , controls.htm , moldoc.htm ,还有blank.htm (作为临时占位符) 。
- fge.htm :嵌入在一个表中。这表明FGiJ怎样能够被其他内容所包围。
上述版本哪个被采用可通过主网页中高级选项链接,或超连接所控制。
主网页, index.htm ,通过附加查询参数来控制哪个版本的FGiJ被使用。当它下载了gallery.htm时,“” (对于无框来说) , “f”(对于有框来说) ,或“e” (对于嵌入到表中来说)。 查询参数是用来在gallery.htm中建立链接来援引FGiJ ,所以他们需要适当的文件fg.htm , fgf.htm ,或fge.htm 。
JavaScript
- colors.js :颜色的设定。
- config.js :特别用于认证服务器的变量。
- contact.js :联系FirstGlance开发团队的地址。
- controls.js :建立链接和按钮控制到左上方的浏览器窗口的分子视角。
- enterurl.js :提交PDB编码URL,或上载的PDB文件.d的代码。
- gallery.js :支持gallery.htm (显示具体内置的pdb文件)
- help.js :所有帮助文本显示在helpDiv (左下面板) 。
- jcontrol.js :分子视角控制的主要的变量和函数(在框架版中通过control.htm拥有) 。
- moldoc.js :在所有FGiJ版本中生成程序。 还包括jmolPickCallback ( ),用于确定点击原子,或在联系人..中选择目标,或在隐藏中隐藏clicked moieties。
- options.js :高级选项代码。
- scripts.js :所有Jmol命令的脚本(用于分子视角控制) 。
top.js :顶层变量和函数(即使是在框架版) 。
实现窗口分领域
FGiJ包括三个矩形分领域在浏览器窗口中:
- Jmol applet显示分子(右)
- 控制这种变化的分子认视角(左上角)
- 帮助(左下)
在使用框架的版本中 ( fgf.htm不支持0.97 以后的版本) ,每个分区是一个框架。 框架似乎在所有流行的浏览器都能工作。 鼠标滚轮滚动中的文字帮助框架在IE与Gecko引擎的浏览器中。 一个缺点是,浏览器的后退按钮推翻了会议历史(增强在FGiJ控制中的密切联系) 。 另一个不利因素是,通过框架开发和维护非常复杂。
相比之下,在无框版本(这是默认情况下, fg.htm ) ,鼠标轮滚动并没有卷插帮助文本到Gecko浏览器中。然而,当一个新的窗口打开一个FGiJ会议,浏览器的后退按钮仍然呈现灰色,避免了在框架的版本中由于按钮的原因而导致的混乱。 另一个尚未解决的问题是,在新的文字显示在帮助区,滚动位置的仍然是以前的文字,所以在没有滚动备份下,您不能看到顶部的新的帮助。 [ 看来 , 这两个问题在使用滚动IFRAME中可能得到解决 , 而不是滚动司。 这仍然是实施和测试。 ]
在不使用框架版本中( fg.htm ) :
- Jmol嵌入的标记包括排列= 'right'
- 控件的滚动司
- 帮助是在滚动司命名helpDiv
在第一个应用试用中,滚动帮助司被指定为百分比值。 当第一次加载FGiJ,“忍耐”帮助很短,并且帮助司是正确的高度。经过较长的帮助文本装在Gecko的浏览器,帮助司将扩大到两倍以上的窗口(虽然仍与垂直滚动条) ,同时较低的边缘控制司太低。 类似的问题是在IE中发现略有不同的编码FGiJ 。 这个问题已经解决了设置滚动帮助司像素的高度。 这一高度根据浏览器窗口的大小计算的(就是Jmol applet的大小,见上文) 。
当无框版本FGiJ是嵌入在部分浏览器窗口时,其职权范围内可以控制的范围内单元格的表,如在fge.htm 。 .
在执行( fge.htm )中,FGiJ被嵌入在一个网页与周边“外”的内容,三个表的单元格被使用。 两个表单元格用于外部内容,第三个包含FGiJ 。 FGiJ配置为在此表第三单元格本身包含三个单元格。 这就比较容易移植FGiJ作为一个独立包含的代码块内载于本表。
- 控件内表的左上角单元格,并在一个滚动的单元格分裂。
- 该Jmol applet程序都有自己的单元格(右侧,并横跨两行) 。 这制约了以下内容的程序,以符合上述的程序。 嵌入标记不使用排列= 'right' ,因为这造成了applet在外部部分显示,并在表格单元格以上(在Firefox中) ! 该Applet不能在分区中(在表格单元格) ,因为这造成了各种问题,如程序显示该表上面的和部分在IE窗外。
- 帮助是在一个表格单元格内,并在一个滚动的单元格分裂。
有可能是控制司和帮助司可以共享一个单一的左侧表格单元格。 目前尚不清楚这是否会浪费少一点空间。
有一些变量(见fge.htm上方的例子 )有可能控制部分的窗口适合于FGiJ 。 基于RCSB网站,假设有人认为FGiJ将在窗口的右下角。 空间不能适合于FGiJ左侧的窗口,而是保留成widthDecrement ,同样的,对于顶端,则保留成 heightDecrement 。这些都是用来控制程序大小get_applet_dimensions ( ) 。 这些和其他有关的变量在fge.htm的上方可以看到。
所有版本使用一个小表在控制区组合成按钮,这个表中包含司(有时使用<br>标签诱导而避免不必要的空白行) 。
检视连杆机构
点击一个链接系列(二级结构,卡通,N->C Rainbow,Composition等) ,改变了分子的视角。 该机制如下。
链接是书面的函数调用,例如,
writeViewLink("cartoonSpt", "Cartoon", "cartoonHelp");
这些要求是在controls.js中 。 writeViewLink ( )储存脚本和帮助变量名称于数组viewLinkSptName [ ] , linkHelp [ ]中 ,使用一个检索每次通话递增。
一旦链接被点击,这个功能为:
i是指进入阵列的脚本和帮助名的索引。 doViewLink ()
- 设置一些视角特异性变量。
- 传递帮助名称到showHelp2 ( helpname )。
- 根据新的观点设计配体+和水切换按钮向上或向下。
- 在currentView Records the new view name in currentView .记录新的视图名称。
- 发送命令脚本到Jmol,从而产生新的看视角。
切换按钮机理
在控制面板(左上角)包含几个切换按钮(配体+ ,水,板坯,背景,旋转) 。机制如下。
writeToggleButton(ligandSpt, ligandOffSpt, "Ligands+", "down", "makeLigandsHelp()");
这些要求是在controls.js中 。 writeToggleButton ( )储存参数在数组toggleUpSpt [ ] , toggleDownSpt [ ] , toggleHelp [ ]中,使用索引每次通话递增。它还填充区域阵列toggleIsDown [ ] ,和变量ligandsIndex , waterIndex等。
当一个按钮被按下,这个功能为:
i是该指数进入阵列。 doToggleButton()
- 如果按钮向下,传递帮助名称到showHelp2 ( helpname ) 。 (如果该按钮向上,没有显示帮助。 )
- 切换按钮改变镜像,以反映其状态
- 在boolean toggleIsDown [ ]中记录了新的状态。
- 发送命令脚本到Jmol,产生新的视角。
复选框脚本及脚本处理机制
命令脚本发送到Jmol与scriptToJmol (脚本) 。 然而,通常一些前处理是必要的。 例如,如果一些基被隐藏,正脚本makeHideSpt ( )需要添加任何脚本致使分子。 此外,某些状态变量可能需要改变。 例如,组分视角无条件地抑制water和Lingands+按钮。
脚本前处理是由doToggleButton ( )和doViewLink ( )提出的。 其它脚本可分为那些改变的分子视角,和那些没有改变的。 后者的例子是脚本通过变焦按钮或复选框发送来显示轴,晶胞,或boundbox 。
那些改变分子视角的脚本被送往doMolviewSpt ( )进行前处理,而那些没有的被直接发送到scriptToJmol ( )。
help显示机理
帮助面板的内容是随着呼吁通过的帮助名称改变的,例如
此函数成为showHelp2 ( ) (这是当帧都在使用,在帮助帧中定义的) 。 showHelp2 ( )执行以下操作:
- 如果helpname是空白的,则不执行。
- 依据帮助名获得帮助HTML文本。
- 在适当的时候,在底部增加一个链接,返回到介绍性的帮助,( top.helpFooter ) 。
- 根据它是否是一个框架或一个部门写入帮助。
“ligands+ ” , “非标准残留” :定义
在FirstGlance中使用的原子设置在notes.htm,中定义了 ,其中包括联系到更多具体的相关文件。
通过点击的匿名链的选择机制
在大多数PDB档案中,链提供单特征名。 但是,有些文件只有单链,并在这些情况下,单链并不总是被命名的。 例如:
- 1PGB: 匿名蛋白单链+水。
- 1EMB: 匿名蛋白单链+水和临床研究机构cromophore 。
- 143D: 不具名的DNA单链,没有别的。
- 1D16: 不具名的DNA单链+水。
FirstGlance可以通过点击一下它而选择一个有名链。这个”选择-按-点击”机制使用zai 两个接口:在接触..中选择一个目标,还有在隐藏..界面中。该pickCallback机制是用来报告Jmol到javascript原子点击的身份(见代码moldoc.js ) 。 选择对话有圆形按钮以区分是否为一个链,残余或集团,或一个原子将选定在每次点击。当链被指明,并且该报告包含了链的名称,这一机制按照意图工作。
然而,上述机制在链没有名称时失败。 In that case, the pickCallback report includes the residue name and number, but lacks any chain information.在这种情况下, pickCallback报告包括残基的姓名和号码,但没有任何链信息。 因此,当链用于指定选择,并且点击原子没有链信息,残基的名字将被审查。 如果残基是20个标准氨基酸之一,或5个标准核苷酸之一,所有的蛋白质或核酸分别被选中,假设这是一个单链的PDB文件,当一个非标准残基在匿名链中被点击,这一机制将仍然失败。
此外,至少有一个的PDB文件,既是一个有名的蛋白链,也是一个无名的蛋白链( 4CPA ) 。在这种情况下, FirstGlance的代码将不支持通过点击选择匿名链。
如果链中已指明选择,被点击的残基缺乏链的名称,并且不是一个标准的氨基酸或核苷酸,这时,FirstGlance提醒用户改变的单选按钮来指定残留/群体的选择。 这一通知每次会议只印发一次。
“选择-到-点击” 的机制进一步限制中被描述在
反馈到