用于化学信息处理的压缩程序和解压缩程序库smiles strings

smilez的Python项目详细描述


smilez-smiles字符串的压缩
==



smilez主页:https://bitbucket.org/dalke/smilez

smilez是一个简单的smiles字符串压缩库。它紧密地基于短字符串的smaz压缩库,
可从https://github.com/antrez/smaz获得。

smilez不是一个通用的压缩算法。它可以压缩
smiles字符串约50-60%,包括许多长度只有几个字节的
smiles字符串。在最好的情况下,它可以压缩到75%,
,但是如果给它非smiles数据,结果可能会大50%。


pubchem和
chembl数据的真实性。压缩性能将取决于微笑字符串与训练集的匹配程度。一般来说,它最好是用
"正常"的微笑,而不常用的特征,如反应图
和同位素。




1 cccc
7 4 f/c=c/f
6 8[NH4+]
9 4 cCCCCCCC1O
26 13 CN1CNC2C1Cc(=O)N(C(=O)N2Cc)c
28 10 CN1Cc=NC2=C1C(=O)N(C(=O)N2Cc)C
42 17 CCCCCCCCCCCC2NC([NH]C2C1)S(=O)N(C(=O)N2Cc)C
42 17 17 CCCCCCCCCCCCCCCC2NC([NH]C2C1)S(=O)C(C)C(C)C(C)C)C(C)C(C)C)C(C 1][CH2:3][C:4](C)[CH2:3]
60 30摄氏度[n+]1(c2cc(cc1c3c2o3)o c(=o)c(c4=cc=cs4)(c5=cc=cs5)o)c.[br-]




chembl example
====br/>

我有一个从chembl 16导出的smiles数据集,其中有1292344条记录。

未压缩:66896248字节
压缩:25455759字节

=>;小60%

压缩字符串大约需要2.6秒,解压缩字符串需要1.4秒。

结果占用了61406214个字节,仅比原来的小8%
。(这就是为什么不在小字符串上使用zlib。)





压缩后的微笑比原来的微笑小58%(1.21 MB到
0.51 MB)。


=


int smilez_compress(const char*in,int inlen,char*out,int outlen,
int dictionary)

nlen'并将
压缩数据放入最大长度'outlen'字节的'out'中。如果
输出缓冲区太短,无法容纳整个压缩字符串,则返回
outlen+1。否则,将返回压缩字符串的长度
(小于或等于outlen)。

"dictionary"选项指定编码字典。如果
smilez_byte_dictionary(=0),则压缩字符串可以使用
bytes 0-255。如果smilez_whitespace_dictionary(=1),则压缩的
字符串将不使用字节"\n"、"\r"、"\t"或"。这允许您使用smilez字符串作为tab或空格分隔的文件中的字段,或在sd标记中使用smilez字符串,只需很小的代价。

解码器自动处理两个
字典。如果解码器值超出范围,则smilez_compress返回0。




int smaz_decompress(char*in,int inlen,char*out,int outlen);


如果输出缓冲区太短,无法容纳整个解压缩字符串,则返回outlen+1。否则返回
压缩字符串的长度(小于或等于outlen)。此函数不会自动将nul项放在o的末尾如果原始压缩字符串没有包含nulterm,则返回字符串。




在第1版上,定义smilez字节字典0
rsion值也可以通过函数调用获得:

int smilez_get_compression_version(void);



==


使用"python setup.py install"来构建和安装python模块
"smilez"。

模块基于smilez_get_version()和
smilez_get_compression_version():导入smilez

>;>;导入smilez
>;>;smilez。压缩版本
1

e两个字典:

>;>;smilez.byte_dictionary
0
>;>;smilez.whitespace_dictionary
1

>;>>smilez.decompress('i\xda\xc9\xb9')
'c1ccccccc1o'

>和使用空白字典压缩的示例:

>;>smilez.compress("p",smilez.whitespace\u字典)
'\xfep'
>;>smilez.compress("p")
'

com命令行程序
运行"make"将生成三个演示或测试程序:

smilezip
——


将smiles文件转换为smilez文件。


smiles文件每行包含一个记录。每行包含空格
或制表符分隔的字段,其中微笑是第一个字段。压缩第一个字段后,smilez
文件的格式相同。

%./smilezip nci_09425001_09450000.smi>;nci.smiz
%ls-l nci_09425001_09450000.smi nci.smiz
-rw-r--r--1 dalke staff 143390 2008年6月8日nci_09425001_09450000.smi
-rw-r--r--1 dalkE员工724140 7月2日02:52 NCI.SMIZ

注意!没有真正的理由拥有smilez文件。同一文件的gzip版本只有187483字节,几乎是smilez文件大小的1/4。这是如何使用空白字典的演示。




----


>将smilez文件转换为smiles文件:

%./smilezcat nci.smiz>;nci.smi
%cmp nci_.smi nci.smi



--——

这在C API上运行一组自测试。







credits
==


许可下发布。查看复制文件以获取更多信息。

许可下发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用jaxrpc的Java eclipse WebService客户端   java编程方式在对象上写入名称   java Spring批处理:重试后跳过   java Android错误:错误:任务执行失败:应用程序:transformClassesWithDexForDebug'   带有清单文件nullPointerException的java Android元数据   spring Java Quartz调度作业停止运行   JavaMockito:如何在不调用实际方法的情况下,模拟带有参数和无效返回类型的静态方法?   java Tomcat连接池问题无法在关闭的连接上调用方法   java如何交换列表中的项目?   java如何停止线程并通过Toast在线程中正确显示文本?   java为什么连续写入OutputStream时偏移量0不会导致重复字节?   java我无法生成头文件   不兼容的返回类型错误java   修改值后键值对的java Jolt转换规范   java有自动更新Javadoc的工具吗?   java线程如何在ints自身实例类中共享变量   java继承一个非gwt模块   java Hibernate xml配置   使用netty4异步调用的java链接HTTP请求响应