Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!rt.uk.eu.org!newsfeed.xs4all.nl!newsfeed1a.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-announce-list@python.org Delivered-To: python-announce-list@mail.python.org X-Spam-Status: OK 0.002 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'licenses': 0.04; 'output': 0.05; 'binary': 0.07; 'cache': 0.07; 'intel': 0.07; 'pypi': 0.07; 'see:': 0.07; 'subject:ANN': 0.07; 'subject:released': 0.07; '===========': 0.09; 'arrays': 0.09; 'linear': 0.09; 'omit': 0.09; 'parameter': 0.09; 'prefix': 0.09; 'read-only': 0.09; 'url:github': 0.09; 'wrapper': 0.09; 'python': 0.11; 'random': 0.14; '==========': 0.16; 'alted': 0.16; 'behave': 0.16; 'compression': 0.16; 'datasets.': 0.16; 'fetch': 0.16; 'francesc': 0.16; 'from:name:francesc alted': 0.16; 'license.': 0.16; 'memcpy': 0.16; 'numpy': 0.16; 'operation.': 0.16; 'specifying': 0.16; 'to:addr:python-announce-list': 0.16; 'url:licenses': 0.16; 'url:py': 0.16; 'subject:python': 0.16; 'skip:= 10': 0.16; 'url:org)': 0.16; 'url:)': 0.16; 'bit': 0.19; '(but': 0.19; 'numerical': 0.19; 'examples': 0.20; 'command': 0.22; 'memory': 0.22; 'install': 0.23; 'creating': 0.23; 'header:User-Agent:1': 0.23; 'adds': 0.24; 'processor': 0.24; '----': 0.29; 'url:code': 0.29; 'included': 0.31; 'url:wiki': 0.31; '1.3': 0.31; 'skip:= 20': 0.31; 'allows': 0.31; 'probably': 0.32; 'linux': 0.33; 'are:': 0.33; 'call.': 0.33; 'sources': 0.33; 'candidate': 0.34; 'at:': 0.34; 'core': 0.34; 'received:74.125.82': 0.34; 'could': 0.34; 'but': 0.35; 'received:google.com': 0.35; 'there': 0.35; 'combination': 0.36; 'data,': 0.36; 'functions.': 0.36; 'in:': 0.36; 'installing': 0.36; 'library.': 0.36; 'url:org': 0.36; 'should': 0.36; 'list': 0.37; 'performance': 0.37; 'being': 0.38; 'sometimes': 0.38; 'system,': 0.38; 'depends': 0.38; 'received:74.125': 0.39; 'to:addr:python.org': 0.39; 'mailing': 0.39; 'called': 0.40; 'release': 0.40; 'new': 0.61; 'details.': 0.61; 'matter': 0.61; 'high': 0.63; 'url:group': 0.63; 'skip:n 10': 0.64; 'url:p': 0.64; 'more': 0.64; 'different': 0.65; 'relatively': 0.65; 'effectively': 0.66; 'series': 0.66; 'services': 0.66; 'here': 0.66; 'direct': 0.67; 'between': 0.67; '****': 0.68; 'optimized': 0.68; 'site:': 0.83; 'low': 0.83; '============': 0.84; 'continuum': 0.84; 'python-': 0.84; 'received:74.125.82.41': 0.84; 'url:master': 0.84; 'url:trac': 0.84; 'announcing': 0.91; 'conducted': 0.91; 'good,': 0.91; 'info,': 0.91; 'ratio': 0.91; 'received:31': 0.91; 'differences': 0.93; '***': 0.95; 'email addr:googlegroups.com': 0.95 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to :subject:content-type:content-transfer-encoding; bh=iFxXiqoSbrTTsZ4Un/O88ajNxD1EKI+gRuLLoM0c/WY=; b=CJP0GQar78IJtg9IolBOMBD4QAnkZW5b88hsZiSxZOKqkFh+L0J/KsWzla7Nfv5en/ TqGTbGJk0f2Hoh5mniuafq/PM0ywkXGEV61uOvtx4+fU7d563RQql/aTjZR6NKZCk/84 F+lX6WKku5H3xxitHDEn3srajHVcXfUXDBDyy3Qam9M++DoFIitZJINdUa8MizxpxRBZ 7l2flBHaamsR6/2M2IJSk7NB+Chnt94Q5Blgvlkr0tZeiY5WU42WllnAtYgJXhRddAJz f7q8ZMYaSxL8ItxtlUTIEDYEf+rEuDDF/ZtvNE0oBzlmBm662es+x4M2KuXqUXYIYue/ ln7w== X-Gm-Message-State: ALoCoQlNCJNeBhnhDHWbpAJRXx2xV4SzsQ/mdEitfrAMar0ybZvq1QFutDOg8V1bOT9U1C4wigTM X-Received: by 10.194.185.113 with SMTP id fb17mr815448wjc.29.1390722860608; Sat, 25 Jan 2014 23:54:20 -0800 (PST) Date: Sun, 26 Jan 2014 08:54:22 +0100 From: Francesc Alted User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Python Announcements Subject: ANN: python-blosc 1.2.0 released Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Mailman-Approved-At: Tue, 28 Jan 2014 11:32:37 +0100 X-BeenThere: python-announce-list@python.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: python-list@python.org List-Id: Announcement-only list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Approved: python-announce-list@python.org Newsgroups: comp.lang.python.announce Message-ID: Lines: 175 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1390905159 news.xs4all.nl 2839 [2001:888:2000:d::a6]:43618 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python.announce:1191 ============================= Announcing python-blosc 1.2.0 ============================= What is new? ============ This release adds support for the multiple compressors added in Blosc 1.3 series. The new compressors are: * lz4 (http://code.google.com/p/lz4/): A very fast compressor/decompressor. Could be thought as a replacement of the original BloscLZ, but it can behave better is some scenarios. * lz4hc (http://code.google.com/p/lz4/): This is a variation of LZ4 that achieves much better compression ratio at the cost of being much slower for compressing. Decompression speed is unaffected (and sometimes better than when using LZ4 itself!), so this is very good for read-only datasets. * snappy (http://code.google.com/p/snappy/): A very fast compressor/decompressor. Could be thought as a replacement of the original BloscLZ, but it can behave better is some scenarios. * zlib (http://www.zlib.net/): This is a classic. It achieves very good compression ratios, at the cost of speed. However, decompression speed is still pretty good, so it is a good candidate for read-only datasets. Selecting the compressor is just a matter of specifying the new `cname` parameter in compression functions. For example:: in = numpy.arange(N, dtype=numpy.int64) out = blosc.pack_array(in, cname="lz4") Just to have an overview of the differences between the different compressors in new Blosc, here it is the output of the included compress_ptr.py benchmark: https://github.com/ContinuumIO/python-blosc/blob/master/bench/compress_ptr.py that compresses/decompresses NumPy arrays with different data distributions:: Creating different NumPy arrays with 10**7 int64/float64 elements: *** np.copy() **** Time for memcpy(): 0.030 s *** the arange linear distribution *** *** blosclz *** Time for comp/decomp: 0.013/0.022 s. Compr ratio: 136.83 *** lz4 *** Time for comp/decomp: 0.009/0.031 s. Compr ratio: 137.19 *** lz4hc *** Time for comp/decomp: 0.103/0.021 s. Compr ratio: 165.12 *** snappy *** Time for comp/decomp: 0.012/0.045 s. Compr ratio: 20.38 *** zlib *** Time for comp/decomp: 0.243/0.056 s. Compr ratio: 407.60 *** the linspace linear distribution *** *** blosclz *** Time for comp/decomp: 0.031/0.036 s. Compr ratio: 14.27 *** lz4 *** Time for comp/decomp: 0.016/0.033 s. Compr ratio: 19.68 *** lz4hc *** Time for comp/decomp: 0.188/0.020 s. Compr ratio: 78.21 *** snappy *** Time for comp/decomp: 0.020/0.032 s. Compr ratio: 11.72 *** zlib *** Time for comp/decomp: 0.290/0.048 s. Compr ratio: 90.90 *** the random distribution *** *** blosclz *** Time for comp/decomp: 0.083/0.025 s. Compr ratio: 4.35 *** lz4 *** Time for comp/decomp: 0.022/0.034 s. Compr ratio: 4.65 *** lz4hc *** Time for comp/decomp: 1.803/0.039 s. Compr ratio: 5.61 *** snappy *** Time for comp/decomp: 0.028/0.023 s. Compr ratio: 4.48 *** zlib *** Time for comp/decomp: 3.146/0.073 s. Compr ratio: 6.17 That means that Blosc in combination with LZ4 can compress at speeds that can be up to 3x faster than a pure memcpy operation. Decompression is a bit slower (but still in the same order than memcpy()) probably because writing to memory is slower than reading. This was using an Intel Core i5-3380M CPU @ 2.90GHz, runnng Python 3.3 and Linux 3.7.10, but YMMV (and will vary!). For more info, you can have a look at the release notes in: https://github.com/ContinuumIO/python-blosc/wiki/Release-notes More docs and examples are available in the documentation site: http://blosc.pydata.org What is it? =========== python-blosc (http://blosc.pydata.org/) is a Python wrapper for the Blosc compression library. Blosc (http://blosc.org) is a high performance compressor optimized for binary data. It has been designed to transmit data to the processor cache faster than the traditional, non-compressed, direct memory fetch approach via a memcpy() OS call. Whether this is achieved or not depends of the data compressibility, the number of cores in the system, and other factors. See a series of benchmarks conducted for many different systems: http://blosc.org/trac/wiki/SyntheticBenchmarks. Blosc works well for compressing numerical arrays that contains data with relatively low entropy, like sparse data, time series, grids with regular-spaced values, etc. There is also a handy command line for Blosc called Bloscpack (https://github.com/esc/bloscpack) that allows you to compress large binary datafiles on-disk. Although the format for Bloscpack has not stabilized yet, it allows you to effectively use Blosc from your favorite shell. Installing ========== python-blosc is in PyPI repository, so installing it is easy: $ pip install -U blosc # yes, you should omit the python- prefix Download sources ================ The sources are managed through github services at: http://github.com/ContinuumIO/python-blosc Documentation ============= There is Sphinx-based documentation site at: http://blosc.pydata.org/ Mailing list ============ There is an official mailing list for Blosc at: blosc@googlegroups.com http://groups.google.es/group/blosc Licenses ======== Both Blosc and its Python wrapper are distributed using the MIT license. See: https://github.com/ContinuumIO/python-blosc/blob/master/LICENSES for more details. ---- **Enjoy data!** -- Francesc Alted Continuum Analytics, Inc.