来自Rich Apodaca的Blog,简单翻译了一下,注明来源后欢迎转载。
PubChem- 免费化学数据库的始祖。可以通过多种查询条件搜索超过八百万种化合物。虽然有部分PubChem记录通过MeSH链接到了原始文献中,但是大多数记录并没有链接到相应的原始文献。 不过PubChem的初衷并不是文献检索。PubChem很大程度上参与到了世界最大的在线分子数据表集合中,本列表种的其他数据库都将他们的条目交叉引用到了PubChem中。PubChem的整个数据库都可以通过FTP下载。PubChem是CAS Registry所碰到的真正对手。
ZINC- 一个免费的商业数据库,包括虚拟筛选可用的化合物。可以通过结构、IUPAC名称、InChl和一系列运算出的属性,检索超过460万种化合物。对于非商业用途,你可以下载全部或者部分ZINC数据库在本地使用。
eMolecules-Google分子数据。通过简单的接口和超快的搜索引擎,eMolecules 通过其他信息来源补充了PubChem的数据。尽管eMolecules的重点是可以通过商业手段获得的数据,但是只有部分分子可以指向到供应商的在线目录中。eMolecules种的大多数条目都是链接到PubChem中的,因此我觉得现在eMolecules 的用处并不是很大。如果你想起了一个叫做"Chmoogle"的东西,那其实就是eMolecules。(别把它和Google弄混了)。
CHEBI- 一个免费的小分子化合物在线词典。CHEBI的数据主要来自两个来源: Integrated Relational Enzyme Database of the EBIh'ythe Kyoto Encyclopedia of Genes and Genomes。 你可以找出分子在什么情况下和哪些蛋白质有关。该数据库同时也提供与CAS注册号、Beilstein注册号和Gmelin注册号的交叉链接。
NIST Chemistry WebBook- 提供大多数有机化合物的物理数据 (包括热化学、 热物理学和热力学信息) 。可以通过分子式、结构、CAS号和IUPAC名称搜索。
BioCyc- 搜集了包含酶基质、酶产品、酶抑制剂、酶激活剂在内的3500种化合物。在接受一个授权协议的情况下,整个数据库都可以按照Chemical Markup Language格式免费下载。
ChemExper- 查找你所需要的化学品的供应商。可以通过结构、名称、分子式和CAS号进行检索。找到化合物之后,你可以向一个或者多个供应商进行询价。我没有实际尝试过,不过听起来主义不错。
Compendium of Pesticide Common Names- 超过1100常用农药。化合物是需要通过浏览索引页面而不能通过搜索查找。 Each entry lists, among other pieces of information, a chemical structure and sub-classifications (repellents, antifeedants, synergists, etc.).
NMRShiftDB- 提供有机分子结构及其核磁共振( NMR )的化学位移。nmrshiftdb含有超过22000有机化合物的化学位移数据和19000个谱图。你可以通过结构、化学位移和核(nucleus?what?)检索记录。 NMRShiftDB完全开放,它可以通过编程方式访问,并且运行在线数据库的软件源代码也可以免费下载。 人用户可以提交自己的谱图或者位移数据,以供别人审阅或者列入数据库中。
Chemical Structure Lookup Service (CSLS)- 一个化学结构目录。如果你用过Metacrawler, 那么你应该了解SCLS的原理,即从多个免费化学数据库种查找数据。你可以通过IUPAC名称、InChI、结构、SMILES和一系列的分子特征查找超过两千七百万种化合物。你的搜索结构种会包括含有你所要搜索的分子的数据库的链接。用户界面不止是不好看的问题了,简直是太烂了。如果你不在意用户界面的话,CSLS可能是这个列表中最有用的服务之一。
DrugBank- Combines detailed drug data with comprehensive drug target information. Search over 4,300 drugs by trade name, SMILES, and InChI. Each record contains information on target of action, therapeutic indication, medications the drug is an ingredient of, and trade names. Searches can be limited to only approved drugs or experimental drugs. Both the concept and interface to this service are well thought-out. Note: this service was unavailable as of Jan 19, 2007
Wikipedia- Wikipedia? Yes, Wikipedia. Wikipedia offers several kinds of chemical information produced by a knowledgeable, all-volunteer army. Looking for information on organic compounds? Consider this datasheet on morphine as an example. For those interested in synthesis, Wikipedia is increasingly being used to collaboratively author short reviews on the topic. Search capabilities are currently limited to text and don't appear to work with IUPAC names or CAS numbers. Where this quintessential disruptive technology and its offspring end up taking chemical publishing is unclear, but the ride will be spectacular.
ChemDB- A chemical database is but one of the services offered by this site. Search over 4.1 million compounds by structure, or various calculated properties. ChemDB also offers a variety of free online cheminformatics tools such as Babel file format conversion, SMILES depict, and molecular property calculation. Read more about ChemDB in this Bioinformatics paper.
ChemBank- Structure search over 36,000 original biological assays of small molecules collected by Harvard's Institute of Chemistry and Cell Biology (ICCB). Many of the data contained in ChemBank have never been published, making this database particularly valuable.
National Institute of Allergy and Infectious Diseases Database- Structure search hundreds of thousands of screening datapoints collected by the NIAID in its HIV, Opportunistic Infection, and TB programs.
National Toxicology Program- Seach by name for compounds listed in the NTP database. Returns detailed internal reports and links to the primary literature.
NIST Chemical Kinetics Database- Search by reagent or product name or formula for gas phase rate constants collected from the primary literature.
Computational Chemstry Comparison and Benchmark Database- Search by formula for over 600 gas phase atom and molecule physical chemistry data obtained experimentally and by computation.
IUPAC-NIST Solubility Data Series- Search by name or CAS number through over 67,000 solubility measurements. Data were comprehensively compiled from over 1,800 references in primary literature.
SOLV-DB- Search over 200 common solvents by name, CAS number, or chemical formula physical. Available data include boiling point, water solubility, viscosity, octanol-water partition constant, flash point, and a variety of other properties.
NIMH Pyschoactive Drug Screening Program Ki Database- Search over 44,000 Ki determinations culled from the literature. Although this database appears to have no structure search capability, this is listed as a "Future Enhancement". This is a perfect example of a very useful service that could do with a major user interface redesign. There also appears to be another (defunct) service by the same name, but adifferent URL.
Kyoto Encyclopedia of Genes and Genomes (KEGG)- A Japanese counterpart to PubChem/PubMed. One of the most interesting services on this list, KEGG consists of four interconnected databases: KEGG Pathway; KEGG genes; KEGG Brite; and KEGG Ligand. KEGG Ligand contains over 14,000 compounds searchable by name, and crosslinked to over 45,000 biological pathways. The KEGG Ligand database can be searched by structure through KegDraw, a 2-D structure editor written in Java. With some minor configuration on my Linux system, I was able to perform some basic substructure searches using KegDraw. Your mileage may vary. A nice overview of KEGG is available in a recent article. The contents of KEGG can be downloaded by anonymous ftp for academic use.
BRENDA- Search over 40,000 structures as substrates, products, cofactors, or inhibitors for enzymes. Although my search was able to find compounds by substructure, I was not able to view any links to the results. Your mileage may vary.
Biochemical Pathways Database- Structure search over 1,100 small molecules as participants in biochemical pathways. A potentially useful service, but currently too slow to fully evaluate. A structure search for naphthalene hung for five minutes before I terminated it without success.
ChemMine- Search by structure for compounds collected from a variety of open databases. View assay results in annotated biological experiments. I find the layout and organization of this service annoyingly confusing, but the underlying information appears to be useful nevertheless. Behind the scenes, ChemMine uses two open source cheminformatics libraries: Open Babel and JOELib. For a more detailed view of ChemMine, see the recent article.
Organic Syntheses- Search by structure through the entire contents of synthetic organic chemistry's flagship resource. Substructure search requires Chime, so if you run Linux, or for some other reason can't install the plugin, you'll be out of luck.
WebReactions- Structure search organic reactions in four databases containing a total of over 391,000 reactions. Each reaction hit is linked to the primary literature through a bibliographical reference. Although the interface takes some getting used to, WebReactions may make a worthy companion to the traditional SciFinder search.
Spectral Database for Organic Compounds (SDBS)- Search by name, molecular formula, molecular weight range, or CAS number through over 14,000 full1H NMR spectra, 12,000 full 13C spectra, and 50,000 full FT-IR spectra collected from over 32,000 compounds.
BindingDB- Structure search over 24,000 Ki and IC50 measurements from over 10,000 molecules. Data is collected from, and cross-referenced to, the primary literature. I was unable to determine how to submit a substructure search through the Marvin applet on my Linux system (there is no "Search" button, for example). A text search for "naphthalene", for example, showed some impressive potential for this database. Anyone can currently contribute to BindingDB, one of the few databases on this list to have such a policy.
PDBBind- Browse over 2,700 complexes of small molecules ligands with proteins found in the Protein Databank. Structure searching requires a license. 3-D rendering comes courtesy of the ever-popular Jmol applet.
AffinDB- Search affinity data for complexes found in the Protein Databank. Affinity data are cross-linked to the primary literature through PubMed. Small molecule searching is limited to IUPAC names provided in a pull-down menu. By registering, users can upload affinity data themselves. AffinDB is just one example of what might be possible as chemistry databases begin to combine multiple sources of data into easy-to-use packages.
ChemRefer- It doesn't get any simpler. Type in your keywords and get links to the matching full-text PDFs from the primary literature. As mentioned before, the legality of some of ChemRefer's holdings, for example its articles from ACS journals, is not clear. But as more chemistry journals go Open Access, look to services like ChemRefer to play an increasing role in the way scientists navigate the primary literature.
对于大型分子数据库来说,结构搜索一直是个难题。动辄上千万条的分子数据,对检索速度的要求必然很高。这里我将结构搜索分成三种:第一种是结构精确匹配,第二种是子结构匹配,第三种是相似结构匹配。
对于精确匹配,没有任何难的地方,查找到完全一致的SMILES表示即可。难的地方就在子结构检索和相似结构检索上。十几年间的化学信息学系统一直在尝试解决这个问题,由此也提出了很多的方法,这些方法经过逐步的演化形成了现在的分子指纹算法。
分子指纹是对分子结构特征的一种非常抽象的表示,在我们开始讨论分子指纹之前,先从化学信息系统的远古时代开始,了解子结构检索和相似结构检索是如何进行的。
很多子结构检索算法都需要对大量的分子进行重复比对,一般来说,都是直接将分子结构以某种编码形式保存在数据库中,但是这样的效率是很低的,当数据库中的数据量逐渐增加时,这种方式会带来相当难解决的性能瓶颈。后来就有人提出,可否对数据库中的结构数据进行预处理,以提高搜索进行的速度。尽管预先处理也是需要消耗性能的,但是预先处理只需要进行一次,会给检索性能的提升带来巨大的回报。
举例来说,我们要检索所有包含乙苯
结构的分子,首先可以确定它的分子式C8H10,这样,类似C2H6的小分子就可以完全排除掉了,我们只需要检索比C8H10大的分子即可。由此可以看出一点,排除掉某种分子的成本确实要比确定某种分子是其子结构所要的成本低的多。也就是说,如果可以避免进行“正选”,而尽量多地运用“排除”手段,系统的检索效率则会高很多。除了分子式之外,相对分子质量、不饱和度也都可以用作判断依据。由此以来,搜索范围可以大大缩小。
但是,这还仅仅是缩小了搜索范围,并没有解决分子近似的算法问题。
为了解决这个问题,“结构密钥”(Structural key)的概念首先被提出了。结构密钥通常用二进制串表示,二进制串中的每一位只能是0或者1。如果某个位是1,就说明这个位所代表的结构特征存在,如果是0,就表示这个位所代表的结构特征不存在。这样,在比对两个分子结构时,只需要比对其结构密钥即可。不过,要确定一个结构密钥,首先就需要定义结构特征以及结构特征所对应的二进制位。一般来说,这种定义是可以任意进行的,定义的方式也有很多种。举例来说,是否有N原子、是否有环状结构、是否有羟基、是否有羰基这些都可以作为定义结构密钥的依据。确定了结构密钥的定义之后,就可以按照定义为数据库中的所有分子生成其结构密钥了。尽管为数据库中的所有分子生成结构密钥的过程可能很长,但是这样做的效果是很显著的。
在结构密钥之后,分子结构检索随着分子指纹的出现又发生了一次大的变革。分子指纹是比结构密钥更抽象的一个概念,上面我们所说的结构密钥缺少通用性。对于结构密钥的定义会很大程度上影响到检索速度。一个良好的定义可以显著提高搜索速度,反之低质量的定义会大大降低检索的命中率。结构密钥的定义也依赖于查询的用途,研究石化方向的专家所定义的特征可能对研究药物的专家毫无用处。
分子指纹不再使用预先定义的格式。分子指纹和结构密钥一样也是一个二进制串,但是二进制串的每一位都没有确定的含义。就好像你人的指纹一样,每个人的指纹都是不一样的,但是每一处指纹特征又都没有任何含义。
结构密钥的格式是预先定义的,而分子指纹是通过分子本身生成的。分子指纹到底是怎么生成的,且听下回分解。
(此文太监了,最近太忙,如果有人想接着看欢迎来信提醒我接着写下去)
世界上最难分辨的两幅画:经科学家的研究,%90以上人的智商都差不多,请大家单击下面的网站认真的看一分钟,看看有什么不同的地方,发现有两处不同的地方,那个人的智商比一般人的高%5点,最好的测试方法,大家不容错过.我认真看了两分钟,才看出一好处不相同的地方,郁闷啊!大家试试,超级精彩!!!
最近貌似有很多短信,号召大家不要去家乐福购物,通过抵制法货来抵制法国人欺负我国运动员的行径。我从来不抵制任何货物,包括日货,韩货,美货以及现在的法货。用过的相机都是日货,用的本子还有美货。法货貌似没用过,不过上周好像刚去了趟南方那边的家乐福。至于棒子货,基本没用过,中看不中用的玩意。
不知道以使用什么货来区分是否爱国,是否就是中国式的“普世价值”?
如果要抵制什么货的话,我只抵制蠢货。
今天试用了IntelliJ IDEA,远比想象中方便,强大。方便的快捷键,人性化的UI设计,颇有Mac OS的风范。同样让我喜欢的还有GRails,开发本来就应该如此容易,何必假装专业的纠缠于没完没了的Spring,Hibernate之中。最后,让Eclipse见鬼去吧, $99的IntelliJ IDEA,值!
尽管IntelliJ IDEA收费,但是仍然挡不住我从Eclipse转投IntelliJ的冲动。从Eclipse到IntelliJ的迁移过程总体来说easy的不得了,只要注意几个小地方,Eclipse项目在IntelliJ下一样可以工作的很好。
File-> New Project,选择Import project from external module.
选择Eclipse, Next, 在下面的对话框中,Select Eclipse projects direcotry选择Eclipse项目的目录,
下面的选项中,"Create module files in Eclipse directories"将会在Eclipse目录中创建IDEA的模块文件,选择"Keep project and module files in"可以将IDEA项目文件保存在单独的目录中以免污染Eclipse项目的文件结构。

然后一路Next即可。
接着你就应该能看到项目文件结构了。

但是WEB-INF种的classes和lib目录并没有添加到buildpath中,我们需要进行进一步操作。在Module Setting中增加Module Library
.png)
在弹出的对话框中点选Attach Jar Directory将lib和classes目录添加进去即可。
英文原文来自Grails官方网站,本人原创翻译,转载请注明来自xia3hua4
GWT插件
Google Web Toolkit(GWT)是一个可以用Java语言开发富用户界面的高级AJAX框架,也就是说你可以充分利用Java的类型检查和代码重用特性。GWT会编译你的Java代码以生成执行迅速且跨平台的Javascript代码,你可以将其用于任意的Web页面。
本插件既简化了GWT和GSP页面协作的过程,又简化了服务器端RPC请求的处理。如果你以前没有用过GWT,请阅读GWT官方网站的文档来了解如何使用GWT。
要求:Grails 0.5.6以上版本
Mac OS X 10.5(leopard)用户请使用下列GWT版本。
http://google-web-toolkit.googlecode.com/files/gwt-leopard-1.4.61.tar.gz
开始使用GWT的时候,第一件事情就是创建一个模块。模块将一系列客户端代码封装为一个单元。
创建一个模块
grails create-gwt-module <module>
上述命令会在项目的src/java目录下生成一个模块文件以及一个对应的客户端类文件。如果模块的名称中有包(package),那么文件会在相应的目录路径中创建。例如:
grails create-gwt-module org.example.MyApp
上述命令会创建文件:
创建了一个模块之后,你需要创建一个HTML页面来放置该模块所定义的UI元素。运行下述Grails命令即可:
grails create-gwt-page <page> <module>
第一个参数指定了要创建的页面,第二个参数指定了页面中所要放置的GWT模块。页面需要使用文件的相对路径指定,路径的结尾可以是"html"或者"gsp”或者其他。如果路径由目录名称和GSP文件名组成,则会被当作控制器的视图。如果不是则当作普通的web页面。
// 下述命令会创建视图文件: grails-app/views/main/index.gsp grails create-gwt-page main/index.gsp org.example.MyApp
// 下述命令会创建文件: web-app/dir/main.html grails create-gwt-page dir/main.html MyModule
// 下述命令会创建文件: web-app/index.gsp grails create-gwt-page index.gsp org.example.AnotherModule
如果使用第一个方法并且指定的控制器不存在的话,grails脚本会提示是否自动创建。
GWT中有个叫做宿主模式的东西,使得你可以在一个特殊的浏览器中测试、调试你的web界面。本插件中同样提供了此项功能。只需运行下述命令即可:
grails run-gwt-client
上述命令会启动宿主模式浏览器并将其指向你正在运行的web应用程序。(你可以在一个命令行窗口中运行)grails run-app并在另一个命令行窗口中运行上述命令。如果你的web应用程序不是在本机运行的,或者不是在默认端口运行的,你可以向脚本传递参数来将宿主模式浏览器指向其他的URL。
// 运行在8080端口上的非本机主机
grails run-gwt-client myServer
// 本机非默认端口。 grails run-gwt-client 9090
// 两种情况同时存在 grails run-gwt-client myServer:9090服务器端RPC
几乎所有的实用GWT应用程序都需要在某些地方用到RPC支持。GWT通常需要为你定义的每个服务接口编写一个servlet,不过本插件简化了这个过程,使得你可以使用普通的Grails服务实现RPC的服务器端。通过添加expose属性,任何服务都可以为GWT进行配置,这和使用Remoting等插件是差不多的。
class MyService {
static expose = [ 'gwt:example.client' ]
List listUsers() {
…
}
…
}
GWT expose 属性的格式是很简单的:gwt:<package> ,相关RPC会创建在<package> 所指定的java包中。这通常和某个模块的入口点包相同。
你现在需要运行应用程序(grails run-app)以便生成需要的RPC接口。该插件同样也会在你修改服务时更改接口文件,只要你不自己修改这些接口。如果你修改了这些接口,本插件就不会同步接口和Grails服务。虽然这样你会失去自动同步的便利,但是使得你可以完全控制接口定义。
注意 如果你修改了任意一个接口文件,本插件会停止同步所有的接口文件。这样是为了确保你进行的修改可以得到保留,比如添加'@gwt.typeArgs'这样的javadoc注解。
在从客户端GWT代码中访问服务是,可以使用下述示例中的URL:
MyServiceAsync myService = (MyServiceAsync) GWT.create(MyService.class);
ServiceDefTarget endpoint = (ServiceDefTarget) myService;
// 注意RPC服务所在的URL String moduleRelativeURL = GWT.getModuleBaseURL() + "rpc";
endpoint.setServiceEntryPoint(moduleRelativeURL);
// 调用服务种的方法 List users = myService.listUsers()
…集合和映射类型
GWT既支持list、set这样的集合,也支持映射作为方法的参数和返回值。不过,GWT并不支持使用泛型指定集合或者映射中包含的数据类型,用户必须想RPC接口定义中加入自定义的javadoc注解'@gwt.typeArgs'。如果你使用1.5或者以上版本的JVM的话,本插件可以稍稍简化此项过程,自动添加CollectionTypeArg 和 MapTypeArg。这既可以用来指定参数类型也可以指定返回值类型,如下所示:
class MyService {
static expose = [ 'gwt:example.client' ]
// The return list contains objects of type java.lang.String. @CollectionTypeArg(String)
List listUsers() {
…
}
// 'arg' 参数是一个映射,其中的键是java.lang.Integers类型, // 值是java.lang.Strings类型。 void processMap(@MapTypeArg(key=Integer, value=String) Map arg) {
…
}
…
}
注意 在编写本文档时,注解还不支持方法签名。希望在Grails 1.0发布时此问题能被解决。
本插件会在你第一次进行普通Grails编译动作时自动编译GWT模块,比如在运行grails compile 或者 grails run-app时。如果模块已经被编译过,在开发模式下不会被再次编译。如果你使用GWT宿主模式来测试应用程序的话这样很好,不过如果你使用标准浏览器来测试,你做的修改并不会反映出来。所以,如果你想要使用普通浏览器测试开发种的最新修改时,你可以使用下述命令手动编译GWT模块:
grails compile-gwt-modules创建一个WAR
这里很简单,运行下述Grails命令即可:
grails war
本插件会确保在文件打包之前已经编译了GWT模块。完成了之后,你可以将你的web应用程序像通常一样部署到任意的servlet容器中。
忍不住Grails的诱惑,决定将整个Spring+Hibernate项目迁移到Grails上。由于项目中原来使用了GWT作为后台控制面板,势必要对Grails和GWT进行整合,以便GWT的RPC服务端能够调用Grails中的功能。由于原有的Grails GWT插件已经比较好用,将GWT整合到GWT中并没有费多少功夫,按照官方文档操作即可。不过遇到了几个虚拟机内存的问题,用Groovy来写RPC服务端的感觉还是蛮好的,但是很快随着代码的移植就发现了问题,Grails中的Service并没有像Controller那样提供了对Session的支持。开源项目嘛,那就自己动手,丰衣足食。
整个Grails是基于Spring的,Service也会被按照规约被定义为Bean,因此我们可以把Session对象注入到Service中。下面是一个Service(没代码加亮插件,凑合着看):
忍受30K的速度把war传了上来,发布在了chemsoso.com,先放给google去抓页面吧,就是这样。。。。