From rex@apl.washington.edu Fri Dec 3 01:20:26 1999 From: rex@apl.washington.edu (Rex Andrew) Date: Thu, 2 Dec 1999 17:20:26 -0800 (PST) Subject: [Matrix-SIG] Q: scientific netcdf crashes python on import? Message-ID: Hi folks. I've spent about 8 hours on this one, so maybe I could use some help. I'm trying to install the netCDF module from ScientificPython on a RH 6.0 linux box. The error is: Fatal python error: can't initialize module Scientific_netcdf The crash obviously occurs in NetCDF.py on the line >>>from Scientific_netcdf import * OK, not being a guru, I tried (1) loading all the python RPMs and the new ScientificPython RPM, and/or (2) building both (and including NumPy source to do so) from source. Several times, in case I wasn't cleaning up after myself. To no avail. I tried launching python in gdb, but I'm pretty inept here. I got python to crash with this error message: gdb: program received signal SIGABRT Aborted 0x40066111 in __kill() from /lib/libc.so.6 Advice? -rex "lost in linux land" ------------------------- Rex K. Andrew randrew@apl.washington.edu Applied Physics Laboratory 206.543.1250 University of Washington 206.543.6785 (FAX) Seattle, Washington, USA http://staff.washington.edu/rxandrew From hinsen@cnrs-orleans.fr Fri Dec 3 15:59:05 1999 From: hinsen@cnrs-orleans.fr (Konrad Hinsen) Date: Fri, 3 Dec 1999 16:59:05 +0100 Subject: [Matrix-SIG] Q: scientific netcdf crashes python on import? In-Reply-To: (message from Rex Andrew on Thu, 2 Dec 1999 17:20:26 -0800 (PST)) References: Message-ID: <199912031559.QAA12085@chinon.cnrs-orleans.fr> > Hi folks. I've spent about 8 hours on this one, so maybe I could > use some help. I'm trying to install the netCDF module from > ScientificPython on a RH 6.0 linux box. The error is: > Fatal python error: can't initialize module Scientific_netcdf > The crash obviously occurs in NetCDF.py on the line > >>>from Scientific_netcdf import * Can you import Numerical Python correctly? Just start Python and type "import Numeric". If that doesn't work, importing netCDF won't work either, because it does the equivalent of "import Numeric" internally. That (i.e. a missing or faulty NumPy installation) is the most frequent cause for this error message in my experience. Also check if your netCDF library is working (e.g. by running the ncdump utility). > OK, not being a guru, I tried (1) loading all the python RPMs and the > new ScientificPython RPM, and/or (2) building both (and including > NumPy source to do so) from source. Several times, in case I wasn't > cleaning up after myself. To no avail. Which RPMs are you using? My laptop is a RedHat 6.0 system as well, and it runs everything fine, using the RedHat Python RPMs, the NumPy RPMs from Oliver Andrich's collection, and the ScientificPython RPMs from my Web site. Konrad. -- ------------------------------------------------------------------------------- Konrad Hinsen | E-Mail: hinsen@cnrs-orleans.fr Centre de Biophysique Moleculaire (CNRS) | Tel.: +33-2.38.25.55.69 Rue Charles Sadron | Fax: +33-2.38.63.15.17 45071 Orleans Cedex 2 | Deutsch/Esperanto/English/ France | Nederlands/Francais ------------------------------------------------------------------------------- From Robert.Harrison@pnl.gov Thu Dec 9 22:14:54 1999 From: Robert.Harrison@pnl.gov (Harrison, Robert J) Date: Thu, 09 Dec 1999 14:14:54 -0800 Subject: [Matrix-SIG] Version 1.0 of Python Interface to Global Arrrays Message-ID: The link at the bottom is to an initial Python wrapper around the Global Arrays library. This is a numerically-oriented, portable, parallel programming environment including distributed, shared, multi-dimension arrays with both one-sided and collective operations, message passing, and interfaces to parallel BLAS and linear algebra packages. The Numeric extension is used to handle local data. For sometime we've been using Python embedded into our massively parallel computational chemistry code in order to provide the end-user with the ability to control fairly high-level capabilities. However, we've become so enamored with Python that we're considering exposing a lot more of our C and Fortran APIs. Most of these APIs are specific to our application (molecular and solid state electronic structure and molecular dynamics), but the parallel programming tools may be of wider interest, hence this post. The GA library (C and Fortran interfaces, and the Python interface) is freely distributed in the public domain, and, since many projects rely upon it, it is well supported. It runs on every parallel computing platform to which we have access including both massively parallel super-computers and clusters of SMP workstations. GA inter-operates with any of the MPI, TCGMSG or PVM message passing libraries (the Python interface has only been tested with MPI and TCGMSG). There are many things still to do, including understanding how to use the multiarray object to provide slicing, but the current version is sufficiently complete and robust to be useful. http://www.emsl.pnl.gov:2080/proj/tms/hpcc_actinides/pyGA/ Robert Harrison (robert.harrison@pnl.gov) From johann@physics.berkeley.edu Mon Dec 13 19:55:54 1999 From: johann@physics.berkeley.edu (Johann Hibschman) Date: 13 Dec 1999 11:55:54 -0800 Subject: [Matrix-SIG] SWIG with recent NumPy Message-ID: Hello, I'm trying to use SWIG to automatically wrap some C routines and return the results as NumPy arrays (converting from my own pet vector structure.) I have typemaps that worked with old versions of NumPy, but now I have had to insert a call to "import_array()" by hand in the SWIG-generated C module in the module initialization section. This means (AFAIK) that I have to hand-patch the C every time I run SWIG. That's bad. Is there any way to get SWIG to insert the needed "import_array()" call automatically? Also, are there standard NumPy SWIG typemaps? Lots of questions, as ususal. ;-) --Johann -- Johann Hibschman johann@physics.berkeley.edu From managan@llnl.gov Mon Dec 13 20:11:31 1999 From: managan@llnl.gov (Rob Managan) Date: Mon, 13 Dec 1999 12:11:31 -0800 Subject: [Matrix-SIG] SWIG with recent NumPy In-Reply-To: References: Message-ID: >Hello, > >I'm trying to use SWIG to automatically wrap some C routines and >return the results as NumPy arrays (converting from my own pet vector >structure.) I have typemaps that worked with old versions of NumPy, >but now I have had to insert a call to "import_array()" by hand in the >SWIG-generated C module in the module initialization section. > >This means (AFAIK) that I have to hand-patch the C every time I run >SWIG. That's bad. Is there any way to get SWIG to insert the needed >"import_array()" call automatically? Also, are there standard NumPy >SWIG typemaps? > >Lots of questions, as ususal. ;-) > I was about to start looking into this myself. Could you send me a copy of the typemaps so I can see if I can use them? I will be getting to this after the holidays. I think that what you want for the "import _array()" is the %init %{ ... %} option in SWIG. It claims that code you insert in this block will be added to the initialization routine. *-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*- Rob Managan LLNL ph: 925-423-0903 P.O. Box 808, L-095 FAX: 925-422-3389 Livermore, CA 94551-0808 From pavlos@gaaros.msrc.sunysb.edu Mon Dec 13 20:38:49 1999 From: pavlos@gaaros.msrc.sunysb.edu (Pavlos Christoforou) Date: Mon, 13 Dec 1999 15:38:49 -0500 (EST) Subject: [Matrix-SIG] SWIG with recent NumPy In-Reply-To: Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --830597660-686800328-945117529=:32332 Content-Type: TEXT/PLAIN; charset=US-ASCII Rob - I have these, originally from Michael Bell and Michael Cherkassoff with some modifications to make them work with Numerical recipes. But as Johann mentioned, you will need to add the import_array() manually. Pavlos On Mon, 13 Dec 1999, Rob Managan wrote: > >Hello, > > > >I'm trying to use SWIG to automatically wrap some C routines and > >return the results as NumPy arrays (converting from my own pet vector > >structure.) I have typemaps that worked with old versions of NumPy, > >but now I have had to insert a call to "import_array()" by hand in the > >SWIG-generated C module in the module initialization section. > > > >This means (AFAIK) that I have to hand-patch the C every time I run > >SWIG. That's bad. Is there any way to get SWIG to insert the needed > >"import_array()" call automatically? Also, are there standard NumPy > >SWIG typemaps? > > > >Lots of questions, as ususal. ;-) > > > > I was about to start looking into this myself. Could you send me a > copy of the typemaps so I can see if I can use them? I will be > getting to this after the holidays. > > I think that what you want for the "import _array()" is the %init %{ > ... %} option in SWIG. It claims that code you insert in this block > will be added to the initialization routine. > > *-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*- > Rob Managan > LLNL ph: 925-423-0903 > P.O. Box 808, L-095 FAX: 925-422-3389 > Livermore, CA 94551-0808 > > > _______________________________________________ > Matrix-SIG maillist - Matrix-SIG@python.org > http://www.python.org/mailman/listinfo/matrix-sig > --830597660-686800328-945117529=:32332 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="numrec.i" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="numrec.i" LyogT3JpZ2luYWwgZHVlIHRvIE1pY2hhZWwgQmVsbCA8bWljaGFlbGJAZ29s ZC5uZXQuYXU+DQogICBSZXZpc2VkIGJ5IE1pY2hhZWwgQ2hlcmthc3NvZmYg PG1jaGVya0BnZW9nLnViYy5jYT4NCiAgICRSZXZpc2lvbjogMS4zICQgDQog ICBSZXZpc2VkIGZvciB1c2Ugd2l0aCBOdW1SZWMuDQoqLw0KDQolbW9kdWxl IG51bXJlYw0KJXsNCiNpbmNsdWRlICJhcnJheW9iamVjdC5oIg0KJX0NCg0K JWluY2x1ZGUgdHlwZW1hcHMuaQ0KDQoldHlwZW1hcChweXRob24sIGluKSBk b3VibGUqIERCXzJEIHsNCg0KICBQeUFycmF5T2JqZWN0ICphcnI7DQoNCiAg LyogQ2hlY2sgdGhhdCBvYmogaXMgcmVhbGx5IGFuIDJEIGFycmF5IG9mIGJ5 dGVzICovDQogIGlmICghUHlBcnJheV9DaGVjaygkc291cmNlKSkgew0KICAg IFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIkZpcnN0IGFyZ3Vt ZW50IGlzIG5vdCBhbiBhcnJheSIpOw0KICAgIHJldHVybiBOVUxMOw0KICB9 DQogIC8qIGNoZWNrIHR5cGUgKGNvdWxkIGFsc28gdXNlIGFyci0+ZGVzY3It PnR5cGVfbnVtKSAqLw0KICBpZiAoUHlBcnJheV9PYmplY3RUeXBlKCRzb3Vy Y2UsMCkgIT0gUHlBcnJheV9ET1VCTEUpIHsNCiAgICBQeUVycl9TZXRTdHJp bmcoUHlFeGNfVHlwZUVycm9yLCJJbmNvcnJlY3QgYXJyYXkgdHlwZTogd2Ug bmVlZCBhbiBhcnJheSBvZiBGTE9BVDMyIik7DQogICAgcmV0dXJuIE5VTEw7 DQogIH0NCiBhcnI9KFB5QXJyYXlPYmplY3QgKilQeUFycmF5X0NvbnRpZ3Vv dXNGcm9tT2JqZWN0KCRzb3VyY2UsUHlBcnJheV9ET1VCTEUsMCwwKTsNCi8q ICBhcnIgPSAoUHlBcnJheU9iamVjdCAqKSRzb3VyY2U7ICovDQppZiAoIWFy cikgew0KICAgIHJldHVybiBOVUxMOw0KICB9ICANCg0KICBpZiAoYXJyLT5u ZCAhPSAyKSB7IC8qIHdlIGFyZSByZWFsbHkgc3RyaWN0ICEgKi8NCiAgICBQ eUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCJJbmNvcnJlY3QgbnVt YmVyIG9mIGRpbXM6IHdlIHdhbnQgYSAyZCBhcnJheSIpOw0KICAgIHJldHVy biBOVUxMOw0KICB9DQoNCiAgJHRhcmdldCA9IChkb3VibGUgKilhcnItPmRh dGE7IC8qIHBvaW50ZXIgb24gZmlyc3QgZWxlbSAqLw0KDQogICBQeV9ERUNS RUYoYXJyKTsNCn0NCg0KDQoldHlwZW1hcChweXRob24sIGluKSBkb3VibGUq IERCXzFEIHsNCg0KICBQeUFycmF5T2JqZWN0ICphcnI7DQoNCiAgLyogQ2hl Y2sgdGhhdCBvYmogaXMgcmVhbGx5IGFuIDFEIGFycmF5IG9mIGJ5dGVzICov DQogIGlmICghUHlBcnJheV9DaGVjaygkc291cmNlKSkgew0KICAgIFB5RXJy X1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIkZpcnN0IGFyZ3VtZW50IGlz IG5vdCBhbiBhcnJheSIpOw0KICAgIHJldHVybiBOVUxMOw0KICB9DQogYXJy PShQeUFycmF5T2JqZWN0ICopUHlBcnJheV9Db250aWd1b3VzRnJvbU9iamVj dCgkc291cmNlLFB5QXJyYXlfRE9VQkxFLDAsMCk7DQovKiAgYXJyID0gKFB5 QXJyYXlPYmplY3QgKikkc291cmNlOyAqLw0KaWYgKCFhcnIpIHsNCiAgICBy ZXR1cm4gTlVMTDsNCiAgfSAgDQoNCiAgaWYgKGFyci0+bmQgIT0gMSkgeyAv KiB3ZSBhcmUgcmVhbGx5IHN0cmljdCAhICovDQogICAgUHlFcnJfU2V0U3Ry aW5nKFB5RXhjX1R5cGVFcnJvciwiSW5jb3JyZWN0IG51bWJlciBvZiBkaW1z OiB3ZSB3YW50IGEgMmQgYXJyYXkiKTsNCiAgICByZXR1cm4gTlVMTDsNCiAg fQ0KDQogICR0YXJnZXQgPSAoZG91YmxlICopYXJyLT5kYXRhOyAvKiBwb2lu dGVyIG9uIGZpcnN0IGVsZW0gKi8NCiAgLS0kdGFyZ2V0Ow0KICAgUHlfREVD UkVGKGFycik7DQp9DQoNCiV0eXBlbWFwKHB5dGhvbiwgaW4pIGRvdWJsZSog RkJfMUQgew0KDQogIFB5QXJyYXlPYmplY3QgKmFycjsNCg0KICAvKiBDaGVj ayB0aGF0IG9iaiBpcyByZWFsbHkgYW4gMUQgYXJyYXkgb2YgYnl0ZXMgKi8N CiAgaWYgKCFQeUFycmF5X0NoZWNrKCRzb3VyY2UpKSB7DQogICAgUHlFcnJf U2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwiRmlyc3QgYXJndW1lbnQgaXMg bm90IGFuIGFycmF5Iik7DQogICAgcmV0dXJuIE5VTEw7DQogIH0NCiBhcnI9 KFB5QXJyYXlPYmplY3QgKilQeUFycmF5X0NvbnRpZ3VvdXNGcm9tT2JqZWN0 KCRzb3VyY2UsUHlBcnJheV9ET1VCTEUsMCwwKTsNCi8qICBhcnIgPSAoUHlB cnJheU9iamVjdCAqKSRzb3VyY2U7ICovDQppZiAoIWFycikgew0KICAgIHJl dHVybiBOVUxMOw0KICB9ICANCg0KICBpZiAoYXJyLT5uZCAhPSAxKSB7IC8q IHdlIGFyZSByZWFsbHkgc3RyaWN0ICEgKi8NCiAgICBQeUVycl9TZXRTdHJp bmcoUHlFeGNfVHlwZUVycm9yLCJJbmNvcnJlY3QgbnVtYmVyIG9mIGRpbXM6 IHdlIHdhbnQgYSAyZCBhcnJheSIpOw0KICAgIHJldHVybiBOVUxMOw0KICB9 DQoNCiAgJHRhcmdldCA9IChkb3VibGUgKilhcnItPmRhdGE7IC8qIHBvaW50 ZXIgb24gZmlyc3QgZWxlbSAqLw0KICAtLSR0YXJnZXQ7DQogICBQeV9ERUNS RUYoYXJyKTsNCn0NCg0KI2V4dGVybiBkb3VibGUgdGVzdChkb3VibGUgKkRC XzFELGRvdWJsZSAqREJfMUQsaW50IG4saW50IG0sZG91YmxlICpPVVRQVVQp Ow0KZXh0ZXJuIHZvaWQgcGVyaW9kKGRvdWJsZSAqREJfMUQsIGRvdWJsZSAq REJfMUQsIGludCBuLCBkb3VibGUgb2ZhYywgZG91YmxlIGhpZmFjLCBkb3Vi bGUgKkRCXzFELGRvdWJsZSAqREJfMUQsIGludCBucCwgaW50ICpPVVRQVVQs IGludCAqT1VUUFVULCBkb3VibGUgKk9VVFBVVCk7DQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K --830597660-686800328-945117529=:32332-- From ransom@cfa.harvard.edu Mon Dec 13 20:41:36 1999 From: ransom@cfa.harvard.edu (Scott M. Ransom) Date: Mon, 13 Dec 1999 20:41:36 +0000 Subject: [Matrix-SIG] SWIG with recent NumPy References: Message-ID: <38555A00.18F47189@cfa.harvard.edu> Rob Managan wrote: > I have a working set of typemaps for various array types (more can be added easily) at teh following location: ftp://cfa-ftp.harvard.edu/pub/ransom/numpy.i Good luck, Scott -- Scott M. Ransom Address: Harvard-Smithsonian CfA Phone: (617) 495-4142 60 Garden St. MS 10 email: ransom@cfa.harvard.edu Cambridge, MA 02138 PGP Fingerprint: D2 0E D0 10 CD 95 06 DA EF 78 FE 2B CB 3A D3 53 From johann@physics.berkeley.edu Mon Dec 13 20:46:38 1999 From: johann@physics.berkeley.edu (Johann Hibschman) Date: 13 Dec 1999 12:46:38 -0800 Subject: [Matrix-SIG] SWIG with recent NumPy In-Reply-To: Pavlos Christoforou's message of "Mon, 13 Dec 1999 15:38:49 -0500 (EST)" References: Message-ID: Pavlos Christoforou writes: > I have these, originally from Michael Bell and Michael Cherkassoff with > some modifications to make them work with Numerical recipes. But as Johann > mentioned, you will need to add the import_array() manually. I just tried it---Rob's suggestion of the %init directive works. Somehow I'd missed that in the SWIG docs. Just add the line: %init %{ import_array(); %} to the .i file. In case it's useful, I've placed my raw, ugly typemap code at: just in case anyone wants to take a look. -- Johann Hibschman johann@physics.berkeley.edu From pavlos@gaaros.msrc.sunysb.edu Mon Dec 13 20:57:26 1999 From: pavlos@gaaros.msrc.sunysb.edu (Pavlos Christoforou) Date: Mon, 13 Dec 1999 15:57:26 -0500 (EST) Subject: [Matrix-SIG] SWIG with recent NumPy In-Reply-To: Message-ID: On 13 Dec 1999, Johann Hibschman wrote: > %init %{ import_array(); %} Thanks a lot Johann. And my apologies for sending the attachment on the list. It was intented for Rob ... Pavlos From guido@CNRI.Reston.VA.US Tue Dec 14 23:26:34 1999 From: guido@CNRI.Reston.VA.US (Guido van Rossum) Date: Tue, 14 Dec 1999 18:26:34 -0500 Subject: [Matrix-SIG] Don't forget to register for the Python conference! Message-ID: <199912142326.SAA00634@eric.cnri.reston.va.us> We know that the Python conference isn't until the next millennium. You still have THREE WHOLE WEEKS to register and qualify for the early bird registration. However, at least one of those weeks you will have partying and family gatherings on your mind, and when that week's over, recovery from the partying and gathering will probably take priority over registering for the conference, and as a result you might be PAYING FULL PRICE! (The horror!) That is, if your payment isn't received by January 5, 2000. So, be smart and register *before* Christmas. That's still more than ten days -- plenty of time to make travel arrangements, register for the conference, and present your boss with the bill (in that order). Our motto, due to Bruce Eckel, is: "Life's better without braces." Some highlights from the conference program: - 8 tutorials on topics ranging from JPython to Fnorb; - a keynote by Open Source evangelist Eric Raymond; - another by Randy Pausch, father of the Alice Virtual Reality project; - a separate track for Zope developers and users; - live demonstrations of important Python applications; - refereed papers, and short talks on current topics; - a developers' day where the feature set of Python 2.0 is worked out. Come and join us at the Key Bridge Marriott in Rosslyn (across the bridge from Georgetown), January 24-27 in 2000. Make the Python conference the first conference you attend in the new millennium! The early bird registration deadline is January 5. More info: http://www.python.org/workshops/2000-01/ --Guido van Rossum (home page: http://www.python.org/~guido/) From cgw@fnal.gov Thu Dec 16 19:14:34 1999 From: cgw@fnal.gov (Charles G Waldman) Date: Thu, 16 Dec 1999 13:14:34 -0600 (CST) Subject: [Matrix-SIG] bug in array constructor for type 'O' Message-ID: <14425.14874.269412.634864@buffalo.fnal.gov> Just noticed this: >>> a=array(["foo","bar","baz"]) >>> a array([[f, o, o], [b, a, r], [b, a, z]],'c') This is slightly odd, but I can rationalize it, since each of the strings "looks like" an array of characters. But if I try to force the arraytype to "O" (Python Object) I get: >>> a=array(["foo","bar","baz"],'O') >>> a array([[foo , foo , foo ], [bar , bar , bar ], [baz , baz , baz ]],'O') This just looks like a bug. From pascucci@cs.utexas.edu Fri Dec 17 23:25:45 1999 From: pascucci@cs.utexas.edu (pascucci) Date: Fri, 17 Dec 1999 17:25:45 -0600 Subject: [Matrix-SIG] extending an array References: Message-ID: <385AC679.FF1AE134@cs.utexas.edu> This is a multi-part message in MIME format. --------------7F5B61EB2560496D656966A2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Is it possible to extend an array "in place"? Reshape does not do that but resize creates always a copy. Is there something that behaves like a C realloc? thanks Valerio --------------7F5B61EB2560496D656966A2 Content-Type: text/x-vcard; charset=us-ascii; name="pascucci.vcf" Content-Transfer-Encoding: 7bit Content-Description: Card for pascucci Content-Disposition: attachment; filename="pascucci.vcf" begin:vcard n:Pascucci;Valerio tel;fax:(419) 735-3586 tel;work:(512) 232-4331 x-mozilla-html:FALSE adr:;;;;;; version:2.1 email;internet:pascucci@acm.org fn:Valerio Pascucci end:vcard --------------7F5B61EB2560496D656966A2-- From lee_barford@yahoo.com Sat Dec 18 22:57:46 1999 From: lee_barford@yahoo.com (Lee Barford) Date: Sat, 18 Dec 1999 14:57:46 -0800 (PST) Subject: [Matrix-SIG] Additions to RandomArray Message-ID: <19991218225746.23808.qmail@web3104.mail.yahoo.com> The RandomArray module is an interface built on top of the well-known ranlib random number generation library. However, RandomArray doesn't bring out interfaces to most of the kinds of random numbers that ranlib can generate. I needed access to some of them. So I extended RandomArray to provide all of the random variables that ranlib generates. Attached are documentation files (in HTML and raw ASCII with identical contents) and patches to LLNL Distribution 11. I hope that these additions will be included in a future LLNL Distribution. --Lee Barford __________________________________________________ Do You Yahoo!? Thousands of Stores. Millions of Products. All in one place. Yahoo! Shopping: http://shopping.yahoo.com From tschinke@swissonline.ch Sun Dec 19 15:43:35 1999 From: tschinke@swissonline.ch (Vincenzo Tschinke) Date: Sun, 19 Dec 1999 16:43:35 +0100 Subject: [Matrix-SIG] Problem with arrays of arrays Message-ID: Hi! I am doing some basic molecular connectivity operation (graphs). Trying to convert a list of bonds (list of edges) into a connectivity table (for each vertex [atom], list of connected vertices), by filling an array of arrays, I got the right or wrong result depending on how I define the initial arrays. If I define an array of N emtpy arrays as array_of_empties = N * [[]] I get the *wrong* result. If I use the more exotic definition array_of_empties = map ( lambda x : [] , range( N )) I get the *right* result. Note that after being created, such two arrays compare as equal. Please see the listing below. Is there anything wrong with the first definition, or do we have a Python bug here? =========================================================================== Python 1.5.2b1 (#47, Jan 13 1999, 15:14:59) [CW PPC w/GUSI w/MSL] >>> ee=[[1,2],[1,3],[1,4]] # 3 edges : 3 vert. connected to centr. vertex >>> ee [[1, 2], [1, 3], [1, 4]] >>> aa=4*[[]] # array of four empty arrays >>> AA=map(lambda x : [], range(4)) # same as above >>> aa==AA # arrays are equal !!! 1 >>> for p in ee: # build table of connected verteces ... i=p[0] ... j=p[1] ... aa[i-1].append(j) ... aa[j-1].append(i) ... AA[i-1].append(j) ... AA[j-1].append(i) ... >>> aa # wrong result !!! [[2, 1, 3, 1, 4, 1], [2, 1, 3, 1, 4, 1], [2, 1, 3, 1, 4, 1], [2, 1, 3, 1, 4, 1]] >>> AA # correct result [[2, 3, 4], [1], [1], [1]] >>> aa==AA 0 >>> ======================= Vincenzo Tschinke Kernmattstr. 24 CH-4102 Binningen Switzerland +4161 422 1991 (T+F) tschinke@swissonline.ch ======================= From mkeller@cybercable.fr Sun Dec 19 22:35:37 1999 From: mkeller@cybercable.fr (Marc Keller) Date: Sun, 19 Dec 1999 23:35:37 +0100 Subject: [Matrix-SIG] Problem with arrays of arrays References: Message-ID: <385D5DB9.A648E54D@cybercable.fr> Vincenzo Tschinke wrote: > Hi! > > I am doing some basic molecular connectivity operation (graphs). Trying to > convert a list of bonds (list of edges) into a connectivity table (for each > vertex [atom], list of connected vertices), by filling an array of arrays, I > got the right or wrong result depending on how I define the initial arrays. > > If I define an array of N emtpy arrays as > > array_of_empties = N * [[]] > > I get the *wrong* result. If I use the more exotic definition > > array_of_empties = map ( lambda x : [] , range( N )) > > I get the *right* result. Note that after being created, such two arrays > compare as equal. > > Please see the listing below. > > Is there anything wrong with the first definition, or do we have a > Python bug here? > > =========================================================================== > > Python 1.5.2b1 (#47, Jan 13 1999, 15:14:59) [CW PPC w/GUSI w/MSL] > > >>> ee=[[1,2],[1,3],[1,4]] # 3 edges : 3 vert. connected to centr. vertex > >>> ee > [[1, 2], [1, 3], [1, 4]] > >>> aa=4*[[]] # array of four empty arrays > >>> AA=map(lambda x : [], range(4)) # same as above > >>> aa==AA # arrays are equal !!! > 1 > >>> for p in ee: # build table of connected verteces > ... i=p[0] > ... j=p[1] > ... aa[i-1].append(j) > ... aa[j-1].append(i) > ... AA[i-1].append(j) > ... AA[j-1].append(i) > ... > >>> aa # wrong result !!! > [[2, 1, 3, 1, 4, 1], [2, 1, 3, 1, 4, 1], [2, 1, 3, 1, 4, 1], [2, 1, 3, 1, 4, 1]] > >>> AA # correct result > [[2, 3, 4], [1], [1], [1]] > >>> aa==AA > 0 > >>> > > ======================= > Vincenzo Tschinke > Kernmattstr. 24 > CH-4102 Binningen > Switzerland > +4161 422 1991 (T+F) > tschinke@swissonline.ch > ======================= > > _______________________________________________ > Matrix-SIG maillist - Matrix-SIG@python.org > http://www.python.org/mailman/listinfo/matrix-sig Using N * [[]], you are building a list with 4 references to the same list. Using map ( lambda x : [] , range( N )), each call to lambda produces a new empty list. Your exemple in an other way: >>> aa=[[],[],[],[]] >>> for p in ee: # build table of connected verteces ... i=p[0] ... j=p[1] ... aa[i-1].append(j) ... aa[j-1].append(i) ... >>> aa [[2, 3, 4], [1], [1], [1]] >>> From mkeller@cybercable.fr Mon Dec 20 13:28:30 1999 From: mkeller@cybercable.fr (Marc Keller) Date: Mon, 20 Dec 1999 14:28:30 +0100 Subject: [Matrix-SIG] bug in array constructor for type 'O' References: <14425.14874.269412.634864@buffalo.fnal.gov> Message-ID: <385E2EFE.97882F75@cybercable.fr> Charles G Waldman wrote: > Just noticed this: > > >>> a=array(["foo","bar","baz"]) > >>> a > array([[f, o, o], > [b, a, r], > [b, a, z]],'c') > > This is slightly odd, but I can rationalize it, since each of the > strings "looks like" an array of characters. > > But if I try to force the arraytype to "O" (Python Object) > I get: > > >>> a=array(["foo","bar","baz"],'O') > >>> a > array([[foo , foo , foo ], > [bar , bar , bar ], > [baz , baz , baz ]],'O') > > This just looks like a bug. > > _______________________________________________ > Matrix-SIG maillist - Matrix-SIG@python.org > http://www.python.org/mailman/listinfo/matrix-sig Seems to be a bug... But there is some logic here: stop the level of structure analysis when type differ: For example if l= >>> l= 'floor', 'bar', 'ba' >>> b=array(l,'O') results in >>> b array([[floor , floor , floor , floor , floor ], [bar , bar , bar , bar , bar ], [ba , ba , ba , ba , ba ]],'O') with >>> b=array((None,)+l) we get >>> b array([None , floor , bar , ba ],'O') >>> From emmanuel.viennet@lipn.univ-paris13.fr Mon Dec 20 12:49:13 1999 From: emmanuel.viennet@lipn.univ-paris13.fr (Emmanuel Viennet) Date: Mon, 20 Dec 1999 13:49:13 +0100 Subject: [Matrix-SIG] bug in array constructor for type 'O' References: <14425.14874.269412.634864@buffalo.fnal.gov> <385E2EFE.97882F75@cybercable.fr> Message-ID: <385E25C9.981399D@lipn.univ-paris13.fr> The 'O' typecode is seldom used and obviously needs some debugging... While you're at it, the display (repr) code is also wrong: >>> b array([None , floor , bar , ba ],'O') is incorrect: we should get array([None , 'floor' , 'bar' , 'ba' ],'O') Emmanuel -- Emmanuel Viennet: http://www-lipn.univ-paris13.fr/~viennet/ Return-Path: Delivered-To: matrix-sig@dinsdale.python.org Received: from python.org (parrot.python.org [132.151.1.90]) by dinsdale.python.org (Postfix) with ESMTP id 350081CD16 for ; Sat, 18 Dec 1999 18:06:50 -0500 (EST) Received: from web3105.mail.yahoo.com (web3105.mail.yahoo.com [204.71.202.190]) by python.org (8.9.1a/8.9.1) with SMTP id SAA14480 for ; Sat, 18 Dec 1999 18:06:47 -0500 (EST) Message-ID: <19991218230702.25490.qmail@web3105.mail.yahoo.com> Received: from [15.255.176.47] by web3105.mail.yahoo.com; Sat, 18 Dec 1999 15:07:02 PST Date: Sat, 18 Dec 1999 15:07:02 -0800 (PST) From: Lee Barford To: Python Matrix Sig , LLNL Distribution Support MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-1804289383-945558422=:25420" Subject: [Matrix-SIG] Additions to RandomArray Sender: matrix-sig-admin@python.org Errors-To: matrix-sig-admin@python.org X-BeenThere: matrix-sig@python.org X-Mailman-Version: 1.2 (experimental) Precedence: bulk List-Id: SIG for Built-in Matrix Types in Python --0-1804289383-945558422=:25420 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline The attachments to my previous message didn't make it. Please forgive this second attempt. If this doesn't work, I'll look for some other way of submitting them. --Lee Barford __________________________________________________ Do You Yahoo!? Thousands of Stores. Millions of Products. All in one place. Yahoo! Shopping: http://shopping.yahoo.com --0-1804289383-945558422=:25420 Content-Type: text/html; name="RandomArray-additions.html" Content-Description: RandomArray-additions.html Content-Disposition: inline; filename="RandomArray-additions.html"

Additions to RandomArray module

Lee A. Barford   18 December 1999

The RandomArray.py module distributed with the LLNL Distribution 11 contains an interface to portions of the widely used and well tested random number generation package ranlib. Ranlib is capable of generating floating point random variables with a wide variety of probability density functions and some kinds of discrete random variables as well. Random variables with these nonuniform distributions have uses in diverse areas like Monte Carlo simulation and the testing of signal processing algorithms. However, RandomArray.py did not provide interfaces to those ranlib routines. This document describes functions that have been added to module RandomArray to allow access to all of the kinds of random variables provided by ranlib.

Floating point random arrays

standard_normal(shape=ReturnFloat)
The standard_normal() function returns an array of the specified shape that contains double precision floating point numbers normally (Gaussian) distributed with mean zero and variance and standard deviation one. If no shape is specified, a single number is returned.

normal(mean, variance, shape=ReturnFloat)
The normal() function returns an array of the specified shape that contains double precision floating point numbers normally distributed with the specified mean and variance. If no shape is specified, a single number is returned.

multivariate_normal(mean, covariance) or multivariate_normal(mean, covariance, leadingAxesShape)
The multivariate_normal() function takes a one dimensional array argument mean and a two dimensional array argument covariance. Suppose the shape of mean is (n,). Then the shape of covariance must be (n,n).   The multivariate_normal() function returns a double precision floating point array. The effect of the leadingAxesShape parameter is:

  • If no leadingAxesShape is specified, then an array with shape (n,) is returned containing a vector of numbers with a multivariate normal distribution with the specified mean and covariance.
  • If leadingAxesShape is specified, then an array of such vectors is returned. The shape of the output is leadingAxesShape.append((n,)). The leading indices into the output array select a multivariate normal from the array. The final index selects one number from within the multivariate normal.
In either case, the behavior of multivariate_normal() is undefined  if covariance is not symmetric and positive definite.

exponential(mean, shape=ReturnFloat)
The exponential() function returns an array of the specified shape that contains double precision floating point numbers exponentially distributed with the specified mean. If no shape is specified, a single number is returned.

beta(a, b, shape=ReturnFloat)
The beta() function returns an array of the specified shape that contains double precision floating point numbers beta distributed with alpha parameter a and beta parameter b. If no shape is specified, a single number is returned.

gamma(a, r, shape=ReturnFloat)
The gamma() function returns an array of the specified shape that contains double precision floating point numbers beta distributed with location parameter a and distribution shape parameter r. If no shape is specified, a single number is returned.

chi_square(df, shape=ReturnFloat)
The chi_square() function returns an array of the specified shape that contains double precision floating point numbers with the chi square distribution with df degrees of freedom. If no shape is specified, a single number is returned.

noncentral_chi_square(df, nonc, shape=ReturnFloat)
The noncentral_chi_square() function returns an array of the specified shape that contains double precision floating point numbers with the chi square distribution with df degrees of freedom and noncentrality parameter nconc. If no shape is specified, a single number is returned.

F(dfn, dfd, shape=ReturnFloat)
The F() function returns an array of the specified shape that contains double precision floating point numbers with the F distribution with dfn degrees of freedom in the numerator and dfd degrees of freedom in the denominator. If no shape is specified, a single number is returned.

noncentral_F(dfn, dfd, nconc, shape=ReturnFloat)
The noncentral_F() function returns an array of the specified shape that contains double precision floating point numbers with the F distribution with dfn degrees of freedom in the numerator, dfd degrees of freedom in the denominator, and noncentrality parameter nconc. If no shape is specified, a single number is returned.

Integer random arrays

binomial(trials, prob, shape=ReturnInt)
The binomial() function returns an array with the specified shape that contains integer numbers with the binomial distribution with trials trials and event probability prob. In other words, each value in the returned array is the number of times an event with probability prob occurred within trials repeated trials. If no shape is specified, a single number is returned.

negative_binomial(trials, prob, shape=ReturnInt)
The negative_binomial() function returns an array with the specified shape that contains integer numbers with the negative binomial distribution with trials trials and event probability prob. If no shape is specified, a single number is returned.

poisson(mean, shape=ReturnInt)
The poisson() function returns an array with the specified shape that contains integer numbers with the Poisson distribution with the specified mean. If no shape is specified, a single number is returned.

multinomial(trials, probs) or multinomial(trials, probs, leadingAxesShape)
The multinomial() function returns an array with that contains integer numbers with the multinomial distribution with trials trials and event probabilities given in probs. probs must be a one dimensional array. There are len(probs)+1 events. probs[i] is the probability of the i-th event for 0<=i<len(probs). The probability of event len(probs) is 1.-Numeric.sum(prob).

The first form returns an integer array of shape (len(probs)+1,) containing one multinomially distributed vector. The second form returns an array of shape (m, n, ..., len(probs)+1) where (m, n, ...) is leadingAxesShape. In this case, each output[i,j,...,:] is an integer array of shape (len(prob)+1,) containing one multinomially distributed vector..

Examples

Mostof the functions in this package take zero or more distribution specific parameters plus an optional shape parameter. The shape parameter gives the shape of the output array:
Python 1.5.1 (#1, Mar 21 1999, 22:49:36) [GCC egcs-2.91.66 19990314/Li on linux-i386
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> from RandomArray import *
>>> print standard_normal()
-0.435568600893
>>> print standard_normal(5)
[-1.36134553 0.78617644 -0.45038718 0.18508556 0.05941355]
>>> print standard_normal((5,2))
[[ 1.33448863 -0.10125473]
 [ 0.66838062 0.24691346]
 [-0.95092064 0.94168913]
 [-0.23919107 1.89288616]
 [ 0.87651485 0.96400219]]
>>> print normal(7., 4., (5,2)) % mean=7, std. dev.=4
[[ 2.66997623 11.65832615]
 [ 6.73916003 6.58162862]
 [ 8.47180378 4.30354905]
 [ 1.35531998 -2.80886841]
 [ 7.07408469 11.39024973]]
>>> print exponential(10., 5) % mean=10
[ 18.03347754 7.11702306 9.8587961 32.49231603 28.55408891]
>>> print beta(3.1, 9.1, 5) % alpha=3.1, beta=9.1
[ 0.1175056 0.17504358 0.3517828 0.06965593 0.43898219]
>>> print chi_square(7, 5) % 7 degrees of freedom (dfs)
[ 11.99046516 3.00741053 4.72235727 6.17056274 8.50756836]
>>> print noncentral_chi_square(7, 3, 5) % 7 dfs, noncentrality 3
[ 18.28332138 4.07550335 16.0425396 9.51192093 9.80156231]
>>> F(5, 7, 5) % 5 and 7 dfs
array([ 0.24693671, 3.76726145, 0.66883826, 0.59169068, 1.90763224])
>>> noncentral_F(5, 7, 3., 5) % 5 and 7 dfs, noncentrality 3
array([ 1.17992553, 0.7500126 , 0.77389943, 9.26798989, 1.35719634])
>>> binomial(32, .5, 5) % 32 trials, prob of an event = .5
array([12, 20, 21, 19, 17])
>>> negative_binomial(32, .5, 5) % 32 trials: prob of an event = .5
array([21, 38, 29, 32, 36])
Two functions that return generate multivariate random numbers (that is, random vectors with some known relationship between the elements of each vector, defined by the distribution).  They are multivariate_normal() and multinomial(). For these two functions, the lengths of the leading axes of the output may be specified. The length of the last axis is determined by the length of some other parameter.
>>> from Numeric import *
>>> multivariate_normal([1,2], [[1,2],[2,1]], [2,3])
array([[[ 0.14157988, 1.46232224],
        [-1.11820295, -0.82796288],
        [ 1.35251635, -0.2575901 ]],
       [[-0.61142141, 1.0230465 ],
        [-1.08280948, -0.55567217],
        [ 2.49873002, 3.28136372]]])
>>> x = multivariate_normal([10,100], [[1,2],[2,1]], 10000)
>>> x_mean = sum(x)/10000
>>> print x_mean
[ 9.98599893 100.00032416]
>>> x_minus_mean = x - x_mean
>>> cov = matrixmultiply(transpose(x_minus_mean), x_minus_mean) / 9999.
>>> cov
array([[ 2.01737122, 1.00474408],
[ 1.00474408, 2.0009806 ]])
The a priori probabilities for a multinomial distribution must sum to one. The prior probability argument to multinomial() doesn't give the prior probability of the last event: it is computed to be one minus the sum of the others.
>>> multinomial(16, [.1, .4, .2]) % prior probabilities [.1, .4, .2, .3]
array([2, 7, 1, 6])
>>> multinomial(16, [.1, .4, .2], [2,3]) % output shape [2,3,4]
array([[[ 1, 9, 1, 5],
        [ 0, 10, 3, 3],
        [ 4, 9, 3, 0]],
       [[ 1, 6, 1, 8],
        [ 3, 4, 5, 4],
        [ 1, 5, 2, 8]]])
--0-1804289383-945558422=:25420 Content-Type: text/plain; name="RandomArray-additions.txt" Content-Description: RandomArray-additions.txt Content-Disposition: inline; filename="RandomArray-additions.txt" Additions to RandomArray module Lee A. Barford 18 December 1999 The RandomArray.py module distributed with the LLNL Distribution 11 contains an interface to portions of the widely used and well tested random number generation package ranlib. Ranlib is capable of generating floating point random variables with a wide variety of probability density functions and some kinds of discrete random variables as well. Random variables with these nonuniform distributions have uses in diverse areas like Monte Carlo simulation and the testing of signal processing algorithms. However, RandomArray.py did not provide interfaces to those ranlib routines. This document describes functions that have been added to module RandomArray to allow access to all of the kinds of random variables provided by ranlib. Floating point random arrays standard_normal(shape=ReturnFloat) The standard_normal() function returns an array of the specified shape that contains double precision floating point numbers normally (Gaussian) distributed with mean zero and variance and standard deviation one. If no shape is specified, a single number is returned. normal(mean, variance, shape=ReturnFloat) The normal() function returns an array of the specified shape that contains double precision floating point numbers normally distributed with the specified mean and variance. If no shape is specified, a single number is returned. multivariate_normal(mean, covariance) or multivariate_normal(mean, covariance, leadingAxesShape) The multivariate_normal() function takes a one dimensional array argument mean and a two dimensional array argument covariance. Suppose the shape of mean is (n,). Then the shape of covariance must be (n,n). The multivariate_normal() function returns a double precision floating point array. The effect of the leadingAxesShape parameter is: If no leadingAxesShape is specified, then an array with shape (n,) is returned containing a vector of numbers with a multivariate normal distribution with the specified mean and covariance. If leadingAxesShape is specified, then an array of such vectors is returned. The shape of the output is leadingAxesShape.append((n,)). The leading indices into the output array select a multivariate normal from the array. The final index selects one number from within the multivariate normal. In either case, the behavior of multivariate_normal() is undefined if covariance is not symmetric and positive definite. exponential(mean, shape=ReturnFloat) The exponential() function returns an array of the specified shape that contains double precision floating point numbers exponentially distributed with the specified mean. If no shape is specified, a single number is returned. beta(a, b, shape=ReturnFloat) The beta() function returns an array of the specified shape that contains double precision floating point numbers beta distributed with alpha parameter a and beta parameter b. If no shape is specified, a single number is returned. gamma(a, r, shape=ReturnFloat) The gamma() function returns an array of the specified shape that contains double precision floating point numbers beta distributed with location parameter a and distribution shape parameter r. If no shape is specified, a single number is returned. chi_square(df, shape=ReturnFloat) The chi_square() function returns an array of the specified shape that contains double precision floating point numbers with the chi square distribution with df degrees of freedom. If no shape is specified, a single number is returned. noncentral_chi_square(df, nonc, shape=ReturnFloat) The noncentral_chi_square() function returns an array of the specified shape that contains double precision floating point numbers with the chi square distribution with df degrees of freedom and noncentrality parameter nconc. If no shape is specified, a single number is returned. F(dfn, dfd, shape=ReturnFloat) The F() function returns an array of the specified shape that contains double precision floating point numbers with the F distribution with dfn degrees of freedom in the numerator and dfd degrees of freedom in the denominator. If no shape is specified, a single number is returned. noncentral_F(dfn, dfd, nconc, shape=ReturnFloat) The noncentral_F() function returns an array of the specified shape that contains double precision floating point numbers with the F distribution with dfn degrees of freedom in the numerator, dfd degrees of freedom in the denominator, and noncentrality parameter nconc. If no shape is specified, a single number is returned. Integer random arrays binomial(trials, prob, shape=ReturnInt) The binomial() function returns an array with the specified shape that contains integer numbers with the binomial distribution with trials trials and event probability prob. In other words, each value in the returned array is the number of times an event with probability prob occurred within trials repeated trials. If no shape is specified, a single number is returned. negative_binomial(trials, prob, shape=ReturnInt) The negative_binomial() function returns an array with the specified shape that contains integer numbers with the negative binomial distribution with trials trials and event probability prob. If no shape is specified, a single number is returned. poisson(mean, shape=ReturnInt) The poisson() function returns an array with the specified shape that contains integer numbers with the Poisson distribution with the specified mean. If no shape is specified, a single number is returned. multinomial(trials, probs) or multinomial(trials, probs, leadingAxesShape) The multinomial() function returns an array with that contains integer numbers with the multinomial distribution with trials trials and event probabilities given in probs. probs must be a one dimensional array. There are len(probs)+1 events. probs[i] is the probability of the i-th event for 0<=i>> from RandomArray import * >>> print standard_normal() -0.435568600893 >>> print standard_normal(5) [-1.36134553 0.78617644 -0.45038718 0.18508556 0.05941355] >>> print standard_normal((5,2)) [[ 1.33448863 -0.10125473] [ 0.66838062 0.24691346] [-0.95092064 0.94168913] [-0.23919107 1.89288616] [ 0.87651485 0.96400219]] >>> print normal(7., 4., (5,2)) % mean=7, std. dev.=4 [[ 2.66997623 11.65832615] [ 6.73916003 6.58162862] [ 8.47180378 4.30354905] [ 1.35531998 -2.80886841] [ 7.07408469 11.39024973]] >>> print exponential(10., 5) % mean=10 [ 18.03347754 7.11702306 9.8587961 32.49231603 28.55408891] >>> print beta(3.1, 9.1, 5) % alpha=3.1, beta=9.1 [ 0.1175056 0.17504358 0.3517828 0.06965593 0.43898219] >>> print chi_square(7, 5) % 7 degrees of freedom (dfs) [ 11.99046516 3.00741053 4.72235727 6.17056274 8.50756836] >>> print noncentral_chi_square(7, 3, 5) % 7 dfs, noncentrality 3 [ 18.28332138 4.07550335 16.0425396 9.51192093 9.80156231] >>> F(5, 7, 5) % 5 and 7 dfs array([ 0.24693671, 3.76726145, 0.66883826, 0.59169068, 1.90763224]) >>> noncentral_F(5, 7, 3., 5) % 5 and 7 dfs, noncentrality 3 array([ 1.17992553, 0.7500126 , 0.77389943, 9.26798989, 1.35719634]) >>> binomial(32, .5, 5) % 32 trials, prob of an event = .5 array([12, 20, 21, 19, 17]) >>> negative_binomial(32, .5, 5) % 32 trials: prob of an event = .5 array([21, 38, 29, 32, 36]) Two functions that return generate multivariate random numbers (that is, random vectors with some known relationship between the elements of each vector, defined by the distribution). They are multivariate_normal() and multinomial(). For these two functions, the lengths of the leading axes of the output may be specified. The length of the last axis is determined by the length of some other parameter. >>> from Numeric import * >>> multivariate_normal([1,2], [[1,2],[2,1]], [2,3]) array([[[ 0.14157988, 1.46232224], [-1.11820295, -0.82796288], [ 1.35251635, -0.2575901 ]], [[-0.61142141, 1.0230465 ], [-1.08280948, -0.55567217], [ 2.49873002, 3.28136372]]]) >>> x = multivariate_normal([10,100], [[1,2],[2,1]], 10000) >>> x_mean = sum(x)/10000 >>> print x_mean [ 9.98599893 100.00032416] >>> x_minus_mean = x - x_mean >>> cov = matrixmultiply(transpose(x_minus_mean), x_minus_mean) / 9999. >>> cov array([[ 2.01737122, 1.00474408], [ 1.00474408, 2.0009806 ]]) The a priori probabilities for a multinomial distribution must sum to one. The prior probability argument to multinomial() doesn't give the prior probability of the last event: it is computed to be one minus the sum of the others. >>> multinomial(16, [.1, .4, .2]) % prior probabilities [.1, .4, .2, .3] array([2, 7, 1, 6]) >>> multinomial(16, [.1, .4, .2], [2,3]) % output shape [2,3,4] array([[[ 1, 9, 1, 5], [ 0, 10, 3, 3], [ 4, 9, 3, 0]], [[ 1, 6, 1, 8], [ 3, 4, 5, 4], [ 1, 5, 2, 8]]]) --0-1804289383-945558422=:25420 Content-Type: application/x-unknown; name="RandomArray.patch" Content-Transfer-Encoding: base64 Content-Description: RandomArray.patch Content-Disposition: attachment; filename="RandomArray.patch" ZGlmZiAtLWNvbnRleHQgLS1yZWN1cnNpdmUgTnVtZXJpY2FsLW9yaWcvTGli L1JhbmRvbUFycmF5LnB5IE51bWVyaWNhbC9MaWIvUmFuZG9tQXJyYXkucHkK KioqIE51bWVyaWNhbC1vcmlnL0xpYi9SYW5kb21BcnJheS5weQlTYXQgRGVj IDE4IDE0OjE1OjEwIDE5OTkKLS0tIE51bWVyaWNhbC9MaWIvUmFuZG9tQXJy YXkucHkJU2F0IERlYyAxOCAxMDo1NzoyOSAxOTk5CioqKioqKioqKioqKioq KgoqKiogMSw5ICoqKioKLS0tIDEsMTUgLS0tLQogIGltcG9ydCByYW5saWIK ICBpbXBvcnQgTnVtZXJpYworIGltcG9ydCBMaW5lYXJBbGdlYnJhCiAgaW1w b3J0IHN5cwogIGltcG9ydCBtYXRoCiAgZnJvbSB0eXBlcyBpbXBvcnQgKgog IAorICMgRXh0ZW5kZWQgUmFuZG9tQXJyYXkgdG8gcHJvdmlkZSBtb3JlIGRp c3RyaWJ1dGlvbnM6CisgIyBub3JtYWwsIGJldGEsIGNoaSBzcXVhcmUsIEYs IG11bHRpdmFyaWF0ZSBub3JtYWwsCisgIyBleHBvbmVudGlhbCwgYmlub21p YWwsIG11bHRpbm9taWFsCisgIyBMZWUgQmFyZm9yZCwgRGVjLiAxOTk5Lgor IAogIEFyZ3VtZW50RXJyb3IgPSAiQXJndW1lbnRFcnJvciIKICAKICBkZWYg c2VlZCh4PTAseT0wKToKKioqKioqKioqKioqKioqCioqKiAyNyw0MiAqKioq CiAgCSJSZXR1cm4gdGhlIGN1cnJlbnQgc2VlZCBwYWlyIgogIAlyZXR1cm4g cmFubGliLmdldF9zZWVkcygpCiAgCiEgZGVmIHJhbmRvbShzaGFwZT1bXSk6 CiEgCSJyYW5kb20obikgb3IgcmFuZG9tKFtuLCBtLCAuLi5dKSByZXR1cm5z IGFycmF5IG9mIHJhbmRvbSBudW1iZXJzIgogIAlpZiB0eXBlKHNoYXBlKSA9 PSB0eXBlKDApOiBzaGFwZSA9IFtzaGFwZV0KICAJbiA9IE51bWVyaWMubXVs dGlwbHkucmVkdWNlKHNoYXBlKQohIAlzID0gcmFubGliLnNhbXBsZShuKQog IAlpZiBsZW4oc2hhcGUpICE9IDA6CiAgCQlyZXR1cm4gTnVtZXJpYy5yZXNo YXBlKHMsIHNoYXBlKQogIAllbHNlOgogIAkJcmV0dXJuIHNbMF0KICAKICBk ZWYgdW5pZm9ybShtaW5pbXVtLCBtYXhpbXVtLCBzaGFwZT1bXSk6CiAgCSIi InVuaWZvcm0obWluaW11bSwgbWF4aW11bSwgc2hhcGU9W10pIHJldHVybnMg YXJyYXkgb2YgZ2l2ZW4gc2hhcGUgb2YgcmFuZG9tIHJlYWxzIAogIAlpbiBn aXZlbiByYW5nZSIiIgotLS0gMzMsNTQgLS0tLQogIAkiUmV0dXJuIHRoZSBj dXJyZW50IHNlZWQgcGFpciIKICAJcmV0dXJuIHJhbmxpYi5nZXRfc2VlZHMo KQogIAohIGRlZiBfYnVpbGRfcmFuZG9tX2FycmF5KGZ1biwgYXJncywgc2hh cGU9W10pOgohICMgQnVpbGQgYW4gYXJyYXkgYnkgYXBwbHlpbmcgZnVuY3Rp b24gZnVuIHRvCiEgIyB0aGUgYXJndW1lbnRzIGluIGFyZ3MsIGNyZWF0aW5n IGFuIGFycmF5IHdpdGgKISAjIHRoZSBzcGVjaWZpZWQgc2hhcGUuCiAgCWlm IHR5cGUoc2hhcGUpID09IHR5cGUoMCk6IHNoYXBlID0gW3NoYXBlXQogIAlu ID0gTnVtZXJpYy5tdWx0aXBseS5yZWR1Y2Uoc2hhcGUpCiEgCXMgPSBhcHBs eShmdW4sIGFyZ3MgKyAobiwpKQogIAlpZiBsZW4oc2hhcGUpICE9IDA6CiAg CQlyZXR1cm4gTnVtZXJpYy5yZXNoYXBlKHMsIHNoYXBlKQogIAllbHNlOgog IAkJcmV0dXJuIHNbMF0KICAKKyBkZWYgcmFuZG9tKHNoYXBlPVtdKToKKyAJ InJhbmRvbShuKSBvciByYW5kb20oW24sIG0sIC4uLl0pIHJldHVybnMgYXJy YXkgb2YgcmFuZG9tIG51bWJlcnMiCisgCXJldHVybiBfYnVpbGRfcmFuZG9t X2FycmF5KHJhbmxpYi5zYW1wbGUsICgpLCBzaGFwZSkKKyAKICBkZWYgdW5p Zm9ybShtaW5pbXVtLCBtYXhpbXVtLCBzaGFwZT1bXSk6CiAgCSIiInVuaWZv cm0obWluaW11bSwgbWF4aW11bSwgc2hhcGU9W10pIHJldHVybnMgYXJyYXkg b2YgZ2l2ZW4gc2hhcGUgb2YgcmFuZG9tIHJlYWxzIAogIAlpbiBnaXZlbiBy YW5nZSIiIgoqKioqKioqKioqKioqKioKKioqIDY0LDY5ICoqKioKLS0tIDc2 LDIzOSAtLS0tCiAgCSJwZXJtdXRhdGlvbihuKSA9IGEgcGVybXV0YXRpb24g b2YgaW5kaWNlcyByYW5nZShuKSIKICAJcmV0dXJuIE51bWVyaWMuYXJnc29y dChyYW5kb20obikpCiAgCisgZGVmIHN0YW5kYXJkX25vcm1hbChzaGFwZT1b XSk6CisgCSIiInN0YW5kYXJkX25vcm1hbChuKSBvciBzdGFuZGFyZF9ub3Jt YWwoW24sIG0sIC4uLl0pIHJldHVybnMgYXJyYXkgb2YKKyAgICAgICAgICAg IHJhbmRvbSBudW1iZXJzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIHdpdGggbWVh biAwIGFuZCBzdGFuZGFyZAorICAgICAgICAgICAgZGV2aWF0aW9uIDEiIiIK KyAJcmV0dXJuIF9idWlsZF9yYW5kb21fYXJyYXkocmFubGliLnN0YW5kYXJk X25vcm1hbCwgKCksIHNoYXBlKQorIAorIGRlZiBub3JtYWwobWVhbiwgdmFy aWFuY2UsIHNoYXBlPVtdKToKKyAgICAgICAgICIiIm5vcm1hbChtZWFuLCB2 YXJpYW5jZSwgbikgb3Igbm9ybWFsKG1lYW4sIHZhcmlhbmNlLCBbbiwgbSwg Li4uXSkgcmV0dXJucworICAgICAgICAgICAgYXJyYXkgb2YgcmFuZG9tIG51 bWJlcnMgcmFuZG9tbHkgZGlzdHJpYnV0ZWQgd2l0aCBzcGVjaWZpZWQgbWVh biBhbmQKKyAgICAgICAgICAgIHN0YW5kYXJkIGRldmlhdGlvbiIiIgorICAg ICAgICAgcyA9IHN0YW5kYXJkX25vcm1hbChzaGFwZSkKKyAgICAgICAgIE51 bWVyaWMubXVsdGlwbHkocywgdmFyaWFuY2UsIHMpCisgICAgICAgICBOdW1l cmljLmFkZChzLCBtZWFuLCBzKQorICAgICAgICAgcmV0dXJuIHMKKyAKKyBk ZWYgbXVsdGl2YXJpYXRlX25vcm1hbChtZWFuLCBjb3YsIHNoYXBlPVtdKToK KyAgICAgICAgIiIibXVsdGl2YXJpYXRlX25vcm1hbChtZWFuLCBjb3YpIG9y IG11bHRpdmFyaWF0ZV9ub3JtYWwobWVhbiwgY292LCBbbSwgbiwgLi4uXSkK KyAgICAgICAgICAgcmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIG11bHRp dmFyaWF0ZSBub3JtYWxseSBkaXN0cmlidXRlZCByYW5kb20gbnVtYmVycwor ICAgICAgICAgICB3aXRoIHNwZWNpZmllZCBtZWFuIGFuZCBjb3ZhcmlhbmNl LgorIAorICAgICAgICAgICBtZWFuIG11c3QgYmUgYSAxIGRpbWVuc2lvbmFs IGFycmF5LiBjb3YgbXVzdCBiZSBhIHNxdWFyZSB0d28gZGltZW5zaW9uYWwK KyAgICAgICAgICAgYXJyYXkgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2Ygcm93 cyBhbmQgY29sdW1ucyBhcyBtZWFuIGhhcyBlbGVtZW50cy4KKyAKKyAgICAg ICAgICAgVGhlIGZpcnN0IGZvcm0gcmV0dXJucyBhIHNpbmdsZSAxLUQgYXJy YXkgY29udGFpbmluZyBhIG11bHRpdmFyaWF0ZQorICAgICAgICAgICBub3Jt YWwuCisgCisgICAgICAgICAgIFRoZSBzZWNvbmQgZm9ybSByZXR1cm5zIGFu IGFycmF5IG9mIHNoYXBlIChtLCBuLCAuLi4sIGNvdi5zaGFwZVswXSkuCisg ICAgICAgICAgIEluIHRoaXMgY2FzZSwgb3V0cHV0W2ksaiwuLi4sOl0gaXMg YSAxLUQgYXJyYXkgY29udGFpbmluZyBhIG11bHRpdmFyaWF0ZQorICAgICAg ICAgICBub3JtYWwuIiIiCisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9u cyBvbiBhcmd1bWVudHMKKyAgICAgICAgbWVhbiA9IE51bWVyaWMuYXJyYXko bWVhbikKKyAgICAgICAgY292ID0gTnVtZXJpYy5hcnJheShjb3YpCisgICAg ICAgIGlmIGxlbihtZWFuLnNoYXBlKSAhPSAxOgorICAgICAgICAgICAgICAg cmFpc2UgQXJndW1lbnRFcnJvciwgIm1lYW4gbXVzdCBiZSAxIGRpbWVuc2lv bmFsLiIKKyAgICAgICAgaWYgKGxlbihjb3Yuc2hhcGUpICE9IDIpIG9yIChj b3Yuc2hhcGVbMF0gIT0gY292LnNoYXBlWzFdKToKKyAgICAgICAgICAgICAg IHJhaXNlIEFyZ3VtZW50RXJyb3IsICJjb3YgbXVzdCBiZSAyIGRpbWVuc2lv bmFsIGFuZCBzcXVhcmUuIgorICAgICAgICBpZiBtZWFuLnNoYXBlWzBdICE9 IGNvdi5zaGFwZVswXToKKyAgICAgICAgICAgICAgIHJhaXNlIEFyZ3VtZW50 RXJyb3IsICJtZWFuIGFuZCBjb3YgbXVzdCBoYXZlIHNhbWUgbGVuZ3RoLiIK KyAgICAgICAgIyBDb21wdXRlIHNoYXBlIG9mIG91dHB1dAorICAgICAgICBp ZiB0eXBlKHNoYXBlKSA9PSB0eXBlKDApOiBzaGFwZSA9IFtzaGFwZV0KKyAg ICAgICAgZmluYWxfc2hhcGUgPSBzaGFwZVs6XQorICAgICAgICBmaW5hbF9z aGFwZS5hcHBlbmQobWVhbi5zaGFwZVswXSkKKyAgICAgICAgIyBDcmVhdGUg YSBtYXRyaXggb2YgaW5kZXBlbmRlbnQgc3RhbmRhcmQgbm9ybWFsbHkgZGlz dHJpYnV0ZWQgcmFuZG9tCisgICAgICAgICMgbnVtYmVycy4gVGhlIG1hdHJp eCBoYXMgcm93cyB3aXRoIHRoZSBzYW1lIGxlbmd0aCBhcyBtZWFuIGFuZCBh cworICAgICAgICAjIG1hbnkgcm93cyBhcmUgbmVjZXNzYXJ5IHRvIGZvcm0g YSBtYXRyaXggb2Ygc2hhcGUgZmluYWxfc2hhcGUuCisgICAgICAgIHggPSBy YW5saWIuc3RhbmRhcmRfbm9ybWFsKE51bWVyaWMubXVsdGlwbHkucmVkdWNl KGZpbmFsX3NoYXBlKSkKKyAgICAgICAgeC5zaGFwZSA9IChOdW1lcmljLm11 bHRpcGx5LnJlZHVjZShmaW5hbF9zaGFwZVswOmxlbihmaW5hbF9zaGFwZSkt MV0pLAorICAgICAgICAgICAgICAgICAgIG1lYW4uc2hhcGVbMF0pCisgICAg ICAgICMgVHJhbnNmb3JtIG1hdHJpeCBvZiBzdGFuZGFyZCBub3JtYWxzIGlu dG8gbWF0cml4IHdoZXJlIGVhY2ggcm93CisgICAgICAgICMgY29udGFpbnMg bXVsdGl2YXJpYXRlIG5vcm1hbHMgd2l0aCB0aGUgZGVzaXJlZCBjb3Zhcmlh bmNlLgorICAgICAgICAjIENvbXB1dGUgQSBzdWNoIHRoYXQgbWF0cml4bXVs dGlwbHkodHJhbnNwb3NlKEEpLEEpID09IGNvdi4KKyAgICAgICAgIyBUaGVu IHRoZSBtYXRyaXggcHJvZHVjdHMgb2YgdGhlIHJvd3Mgb2YgeCBhbmQgQSBo YXMgdGhlIGRlc2lyZWQKKyAgICAgICAgIyBjb3ZhcmlhbmNlLiBOb3RlIHRo YXQgc3FydChzKSp2IHdoZXJlICh1LHMsdikgaXMgdGhlIHNpbmd1bGFyIHZh bHVlCisgICAgICAgICMgZGVjb21wb3NpdGlvbiBvZiBjb3YgaXMgc3VjaCBh biBBLgorICAgICAgICAodSxzLHYpID0gTGluZWFyQWxnZWJyYS5zaW5ndWxh cl92YWx1ZV9kZWNvbXBvc2l0aW9uKGNvdikKKyAgICAgICAgeCA9IE51bWVy aWMubWF0cml4bXVsdGlwbHkoeCpOdW1lcmljLnNxcnQocyksdikKKyAgICAg ICAgIyBUaGUgcm93cyBvZiB4IG5vdyBoYXZlIHRoZSBjb3JyZWN0IGNvdmFy aWFuY2UgYnV0IG1lYW4gMC4gQWRkCisgICAgICAgICMgbWVhbiB0byBlYWNo IHJvdy4gVGhlbiBlYWNoIHJvdyB3aWxsIGhhdmUgbWVhbiBtZWFuLgorICAg ICAgICBOdW1lcmljLmFkZChtZWFuLHgseCkKKyAgICAgICAgeC5zaGFwZSA9 IGZpbmFsX3NoYXBlCisgICAgICAgIHJldHVybiB4CisgCisgZGVmIGV4cG9u ZW50aWFsKG1lYW4sIHNoYXBlPVtdKToKKyAgICAgICAgIiIiZXhwb25lbnRp YWwobWVhbiwgbikgb3IgZXhwb25lbnRpYWwobWVhbiwgW24sIG0sIC4uLl0p IHJldHVybnMgYXJyYXkKKyAgICAgICAgICAgb2YgcmFuZG9tIG51bWJlcnMg ZXhwb25lbnRpYWxseSBkaXN0cmlidXRlZCB3aXRoIHNwZWNpZmllZCBtZWFu IiIiCisgICAgICAgICMgSWYgVSBpcyBhIHJhbmRvbSBudW1iZXIgdW5pZm9y bWx5IGRpc3RyaWJ1dGVkIG9uIFswLDFdLCB0aGVuCisgICAgICAgICMgICAg ICAtbG4oVSkgaXMgZXhwb25lbnRpYWxseSBkaXN0cmlidXRlZCB3aXRoIG1l YW4gMSwgYW5kIHNvCisgICAgICAgICMgICAgICAtbG4oVSkqTSBpcyBleHBv bmVudGlhbGx5IGRpc3RyaWJ1dGVkIHdpdGggbWVhbiBNLgorICAgICAgICB4 ID0gcmFuZG9tKHNoYXBlKQorICAgICAgICBOdW1lcmljLmxvZyh4LCB4KQor ICAgICAgICBOdW1lcmljLnN1YnRyYWN0KDAuMCwgeCwgeCkKKyAgICAgICAg TnVtZXJpYy5tdWx0aXBseShtZWFuLCB4LCB4KQorICAgICAgICByZXR1cm4g eAorIAorIGRlZiBiZXRhKGEsIGIsIHNoYXBlPVtdKToKKyAJIiIiYmV0YShh LCBiKSBvciBiZXRhKGEsIGIsIFtuLCBtLCAuLi5dKSByZXR1cm5zIGFycmF5 IG9mIGJldGEgZGlzdHJpYnV0ZWQgcmFuZG9tIG51bWJlcnMuIiIiCisgCXJl dHVybiBfYnVpbGRfcmFuZG9tX2FycmF5KHJhbmxpYi5iZXRhLCAoYSwgYiks IHNoYXBlKQorIAorIGRlZiBnYW1tYShhLCByLCBzaGFwZT1bXSk6CisgCSIi ImdhbW1hKGEsIHIpIG9yIGdhbW1hKGEsIHIsIFtuLCBtLCAuLi5dKSByZXR1 cm5zIGFycmF5IG9mIGdhbW1hIGRpc3RyaWJ1dGVkIHJhbmRvbSBudW1iZXJz LiIiIgorIAlyZXR1cm4gX2J1aWxkX3JhbmRvbV9hcnJheShyYW5saWIuZ2Ft bWEsIChhLCByKSwgc2hhcGUpCisgCisgZGVmIEYoZGZuLCBkZmQsIHNoYXBl PVtdKToKKyAJIiIiRihkZm4sIGRmZCkgb3IgRihkZm4sIGRmZCwgW24sIG0s IC4uLl0pIHJldHVybnMgYXJyYXkgb2YgRiBkaXN0cmlidXRlZCByYW5kb20g bnVtYmVycyB3aXRoIGRmbiBkZWdyZWVzIG9mIGZyZWVkb20gaW4gdGhlIG51 bWVyYXRvciBhbmQgZGZkIGRlZ3JlZXMgb2YgZnJlZWRvbSBpbiB0aGUgZGVu b21pbmF0b3IuIiIiCisgICAgICAgICByZXR1cm4gKCBjaGlfc3F1YXJlKGRm biwgc2hhcGUpIC8gZGZuKSAvICggY2hpX3NxdWFyZShkZmQsIHNoYXBlKSAv IGRmZCkKKyAKKyBkZWYgbm9uY2VudHJhbF9GKGRmbiwgZGZkLCBuY29uYywg c2hhcGU9W10pOgorIAkiIiJub25jZW50cmFsX0YoZGZuLCBkZmQsIG5vbmMp IG9yIG5vbmNlbnRyYWxfRihkZm4sIGRmZCwgbm9uYywgW24sIG0sIC4uLl0p IHJldHVybnMgYXJyYXkgb2Ygbm9uY2VudHJhbCBGIGRpc3RyaWJ1dGVkIHJh bmRvbSBudW1iZXJzIHdpdGggZGZuIGRlZ3JlZXMgb2YgZnJlZWRvbSBpbiB0 aGUgbnVtZXJhdG9yIGFuZCBkZmQgZGVncmVlcyBvZiBmcmVlZG9tIGluIHRo ZSBkZW5vbWluYXRvciwgYW5kIG5vbmNlbnRyYWxpdHkgcGFyYW1ldGVyIG5j b25jLiIiIgorIAlyZXR1cm4gKCBub25jZW50cmFsX2NoaV9zcXVhcmUoZGZu LCBuY29uYywgc2hhcGUpIC8gZGZuICkgLyAoIGNoaV9zcXVhcmUoZGZkLCBz aGFwZSkgLyBkZmQgKQorIAorIGRlZiBjaGlfc3F1YXJlKGRmLCBzaGFwZT1b XSk6CisgCSIiImNoaV9zcXVhcmUoZGYpIG9yIGNoaV9zcXVhcmUoZGYsIFtu LCBtLCAuLi5dKSByZXR1cm5zIGFycmF5IG9mIGNoaSBzcXVhcmVkIGRpc3Ry aWJ1dGVkIHJhbmRvbSBudW1iZXJzIHdpdGggZGYgZGVncmVlcyBvZiBmcmVl ZG9tLiIiIgorIAlyZXR1cm4gX2J1aWxkX3JhbmRvbV9hcnJheShyYW5saWIu Y2hpc3F1YXJlLCAoZGYsKSwgc2hhcGUpCisgCisgZGVmIG5vbmNlbnRyYWxf Y2hpX3NxdWFyZShkZiwgbmNvbmMsIHNoYXBlPVtdKToKKyAJIiIibm9uY2Vu dHJhbF9jaGlfc3F1YXJlKGRmLCBuY29uYykgb3IgY2hpX3NxdWFyZShkZiwg bmNvbmMsIFtuLCBtLCAuLi5dKSByZXR1cm5zIGFycmF5IG9mIG5vbmNlbnRy YWwgY2hpIHNxdWFyZWQgZGlzdHJpYnV0ZWQgcmFuZG9tIG51bWJlcnMgd2l0 aCBkZiBkZWdyZWVzIG9mIGZyZWVkb20gYW5kIG5vbmNlbnRyYWxpdHkgcGFy YW1ldGVyLiIiIgorIAlyZXR1cm4gX2J1aWxkX3JhbmRvbV9hcnJheShyYW5s aWIubm9uY2VudHJhbF9jaGlzcXVhcmUsIChkZiwgbmNvbmMpLCBzaGFwZSkK KyAKKyBkZWYgYmlub21pYWwodHJpYWxzLCBwLCBzaGFwZT1bXSk6CisgCSIi ImJpbm9taWFsKHRyaWFscywgcCkgb3IgYmlub21pYWwodHJpYWxzLCBwLCBb biwgbSwgLi4uXSkgcmV0dXJucyBhcnJheSBvZiBiaW5vbWlhbGx5IGRpc3Ry aWJ1dGVkIHJhbmRvbSBpbnRlZ2Vycy4KKyAKKyAgICAgICAgICAgIHRyaWFs cyBpcyB0aGUgbnVtYmVyIG9mIHRyaWFscyBpbiB0aGUgYmlub21pYWwgZGlz dHJpYnV0aW9uLgorICAgICAgICAgICAgcCBpcyB0aGUgcHJvYmFiaWxpdHkg b2YgYW4gZXZlbnQgaW4gZWFjaCB0cmlhbCBvZiB0aGUgYmlub21pYWwgZGlz dHJpYnV0aW9uLiIiIgorIAlyZXR1cm4gX2J1aWxkX3JhbmRvbV9hcnJheShy YW5saWIuYmlub21pYWwsICh0cmlhbHMsIHApLCBzaGFwZSkKKyAKKyBkZWYg bmVnYXRpdmVfYmlub21pYWwodHJpYWxzLCBwLCBzaGFwZT1bXSk6CisgCSIi Im5lZ2F0aXZlX2Jpbm9taWFsKHRyaWFscywgcCkgb3IgbmVnYXRpdmVfYmlu b21pYWwodHJpYWxzLCBwLCBbbiwgbSwgLi4uXSkgcmV0dXJucworICAgICAg ICAgICAgYXJyYXkgb2YgbmVnYXRpdmUgYmlub21pYWxseSBkaXN0cmlidXRl ZCByYW5kb20gaW50ZWdlcnMuCisgCisgICAgICAgICAgICB0cmlhbHMgaXMg dGhlIG51bWJlciBvZiB0cmlhbHMgaW4gdGhlIG5lZ2F0aXZlIGJpbm9taWFs IGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgIHAgaXMgdGhlIHByb2JhYmls aXR5IG9mIGFuIGV2ZW50IGluIGVhY2ggdHJpYWwgb2YgdGhlIG5lZ2F0aXZl IGJpbm9taWFsIGRpc3RyaWJ1dGlvbi4iIiIKKyAJcmV0dXJuIF9idWlsZF9y YW5kb21fYXJyYXkocmFubGliLm5lZ2F0aXZlX2Jpbm9taWFsLCAodHJpYWxz LCBwKSwgc2hhcGUpCisgCisgZGVmIG11bHRpbm9taWFsKHRyaWFscywgcHJv YnMsIHNoYXBlPVtdKToKKyAJIiIibXVsdGlub21pYWwodHJpYWxzLCBwcm9i cykgb3IgbXVsdGlub21pYWwodHJpYWxzLCBwcm9icywgW24sIG0sIC4uLl0p IHJldHVybnMKKyAgICAgICAgICAgIGFycmF5IG9mIG11bHRpbm9taWFsIGRp c3RyaWJ1dGVkIGludGVnZXIgdmVjdG9ycy4KKyAKKyAgICAgICAgICAgIHRy aWFscyBpcyB0aGUgbnVtYmVyIG9mIHRyaWFscyBpbiBlYWNoIG11bHRpbm9t aWFsIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgIHByb2JzIGlzIGEgb25l IGRpbWVuc2lvbmFsIGFycmF5LiBUaGVyZSBhcmUgbGVuKHByb2IpKzEgZXZl bnRzLiAKKyAgICAgICAgICAgIHByb2JbaV0gaXMgdGhlIHByb2JhYmlsaXR5 IG9mIHRoZSBpLXRoIGV2ZW50LCAwPD1pPGxlbihwcm9iKS4KKyAgICAgICAg ICAgIFRoZSBwcm9iYWJpbGl0eSBvZiBldmVudCBsZW4ocHJvYikgaXMgMS4t TnVtZXJpYy5zdW0ocHJvYikuCisgCisgCSAgIFRoZSBmaXJzdCBmb3JtIHJl dHVybnMgYSBzaW5nbGUgMS1EIGFycmF5IGNvbnRhaW5pbmcgb25lIG11bHRp bm9taWFsbHkKKyAgICAgICAgICAgIGRpc3RyaWJ1dGVkIHZlY3Rvci4KKyAK KyAgICAgICAgICAgIFRoZSBzZWNvbmQgZm9ybSByZXR1cm5zIGFuIGFycmF5 IG9mIHNoYXBlIChtLCBuLCAuLi4sIGxlbihwcm9icykpLgorICAgICAgICAg ICAgSW4gdGhpcyBjYXNlLCBvdXRwdXRbaSxqLC4uLiw6XSBpcyBhIDEtRCBh cnJheSBjb250YWluaW5nIGEgbXVsdGlub21pYWxseQorICAgICAgICAgICAg ZGlzdHJpYnV0ZWQgaW50ZWdlciAxLUQgYXJyYXkuIiIiCisgICAgICAgICAj IENoZWNrIHByZWNvbmRpdGlvbnMgb24gYXJndW1lbnRzCisgICAgICAgICBw cm9icyA9IE51bWVyaWMuYXJyYXkocHJvYnMpCisgCWlmIGxlbihwcm9icy5z aGFwZSkgIT0gMToKKyAJCXJhaXNlIEFyZ3VtZW50RXJyb3IsICJwcm9icyBt dXN0IGJlIDEgZGltZW5zaW9uYWwuIgorICAgICAgICAgIyBDb21wdXRlIHNo YXBlIG9mIG91dHB1dAorIAlpZiB0eXBlKHNoYXBlKSA9PSB0eXBlKDApOiBz aGFwZSA9IFtzaGFwZV0KKyAgICAgICAgIGZpbmFsX3NoYXBlID0gc2hhcGVb Ol0KKyAgICAgICAgIGZpbmFsX3NoYXBlLmFwcGVuZChwcm9icy5zaGFwZVsw XSsxKQorIAl4ID0gcmFubGliLm11bHRpbm9taWFsKHRyaWFscywgcHJvYnMu YXN0eXBlKE51bWVyaWMuRmxvYXQzMiksIE51bWVyaWMubXVsdGlwbHkucmVk dWNlKHNoYXBlKSkKKyAgICAgICAgICMgQ2hhbmdlIGl0cyBzaGFwZSB0byB0 aGUgZGVzaXJlIG9uZQorICAgICAgICAgeC5zaGFwZSA9IGZpbmFsX3NoYXBl CisgICAgICAgICByZXR1cm4geAorIAorIGRlZiBwb2lzc29uKG1lYW4sIHNo YXBlPVtdKToKKyAJIiIicG9pc3NvbihtZWFuKSBvciBwb2lzc29uKG1lYW4s IFtuLCBtLCAuLi5dKSByZXR1cm5zIGFycmF5IG9mIHBvaXNzb24KKyAgICAg ICAgICAgIGRpc3RyaWJ1dGVkIHJhbmRvbSBpbnRlZ2VycyB3aXRoIHNwZWNp ZmVkIG1lYW4uIiIiCisgCXJldHVybiBfYnVpbGRfcmFuZG9tX2FycmF5KHJh bmxpYi5wb2lzc29uLCAobWVhbiwpLCBzaGFwZSkKKyAKKyAKKyBkZWYgbWVh bl92YXJfdGVzdCh4LCB0eXBlLCBtZWFuLCB2YXIsIHNrZXc9W10pOgorICAg ICAgICAgeF9tZWFuID0gTnVtZXJpYy5zdW0oeCkvMTAwMDAuCisgICAgICAg ICB4X21pbnVzX21lYW4gPSB4IC0geF9tZWFuCisgICAgICAgICB4X3ZhciA9 IE51bWVyaWMuc3VtKHhfbWludXNfbWVhbip4X21pbnVzX21lYW4pLzk5OTku CisgICAgICAgICBwcmludCAiXG5BdmVyYWdlIG9mIDEwMDAwIiwgdHlwZQor ICAgICAgICAgcHJpbnQgIihzaG91bGQgYmUgYWJvdXQgIiwgbWVhbiwgIik6 IiwgeF9tZWFuCisgICAgICAgICBwcmludCAiVmFyaWFuY2Ugb2YgdGhvc2Ug cmFuZG9tIG51bWJlcnMgKHNob3VsZCBiZSBhYm91dCAiLCB2YXIsICIpOiIs IHhfdmFyCisgCWlmIHNrZXcgIT0gW106CisgICAgICAgICAgICB4X3NrZXcg PSAoTnVtZXJpYy5zdW0oeF9taW51c19tZWFuKnhfbWludXNfbWVhbip4X21p bnVzX21lYW4pLzk5OTguKS94X3ZhcioqKDMuLzIuKQorICAgICAgICAgICAg cHJpbnQgIlNrZXduZXNzIG9mIHRob3NlIHJhbmRvbSBudW1iZXJzIChzaG91 bGQgYmUgYWJvdXQgIiwgc2tldywgIik6IiwgeF9za2V3CisgCiAgZGVmIHRl c3QoKToKICAJeCwgeSA9IGdldF9zZWVkKCkKICAJcHJpbnQgIkluaXRpYWwg c2VlZCIsIHgsIHkKKioqKioqKioqKioqKioqCioqKiA5MCw5NSAqKioqCi0t LSAyNjAsMzA0IC0tLS0KICAJcHJpbnQgInJhbmRpbnQoMyw5KSIsIHJhbmRp bnQoMyw5KQogIAlwcmludCAicmFuZG9tX2ludGVnZXJzKDEwLCBzaGFwZT1b MjBdKSIKICAJcHJpbnQgcmFuZG9tX2ludGVnZXJzKDEwLCBzaGFwZT1bMjBd KQorICAgICAgICAgeCA9IG5vcm1hbCgyLjAsIDMuMCwgWzEwLCAxMDAwXSkK KyAJaWYgbGVuKHguc2hhcGUpICE9IDIgb3IgeC5zaGFwZVswXSAhPSAxMCBv ciB4LnNoYXBlWzFdICE9IDEwMDA6CisgCQlyYWlzZSBTeXN0ZW1FeGl0LCAi c3RhbmRhcmRfbm9ybWFsIHJldHVybmVkIHdyb25nIHNoYXBlIgorIAl4LnNo YXBlID0gKDEwMDAwLCkKKyAJbWVhbl92YXJfdGVzdCh4LCAibm9ybWFsbHkg ZGlzdHJpYnV0ZWQgbnVtYmVycyB3aXRoIG1lYW4gMiBhbmQgdmFyaWFuY2Ug MyIsIDIsIDMsIDApCisgICAgICAgICB4ID0gZXhwb25lbnRpYWwoMywgMTAw MDApCisgCW1lYW5fdmFyX3Rlc3QoeCwgInJhbmRvbSBudW1iZXJzIGV4cG9u ZW50aWFsbHkgZGlzdHJpYnV0ZWQgd2l0aCBtZWFuIDMiLCAzLCA5LCAyKQor IAl4ID0gbXVsdGl2YXJpYXRlX25vcm1hbChOdW1lcmljLmFycmF5KFsxMCwy MF0pLCBOdW1lcmljLmFycmF5KChbMSwyXSxbMiw0XSkpKQorICAgICAgICAg cHJpbnQgIlxuQSBtdWx0aXZhcmlhdGUgbm9ybWFsIiwgeAorICAgICAgICAg aWYgeC5zaGFwZSAhPSAoMiwpOiByYWlzZSBTeXN0ZW1FeGl0LCAibXVsdGl2 YXJpYXRlX25vcm1hbCByZXR1cm5lZCB3cm9uZyBzaGFwZSIKKyAgICAgICAg IHggPSBtdWx0aXZhcmlhdGVfbm9ybWFsKE51bWVyaWMuYXJyYXkoWzEwLDIw XSksIE51bWVyaWMuYXJyYXkoW1sxLDJdLFsyLDRdXSksIFs0LDNdKQorIAlw cmludCAiQSA0eDN4MiBhcnJheSBjb250YWluaW5nIG11bHRpdmFyaWF0ZSBu b3JtYWxzIgorICAgICAgICAgcHJpbnQgeAorICAgICAgICAgaWYgeC5zaGFw ZSAhPSAoNCwzLDIpOiByYWlzZSBTeXN0ZW1FeGl0LCAibXVsdGl2YXJpYXRl X25vcm1hbCByZXR1cm5lZCB3cm9uZyBzaGFwZSIKKyAgICAgICAgIHggPSBt dWx0aXZhcmlhdGVfbm9ybWFsKE51bWVyaWMuYXJyYXkoWy0xMDAsMCwxMDBd KSwgTnVtZXJpYy5hcnJheShbWzMsMiwxXSxbMiwyLDFdLFsxLDEsMV1dKSwg MTAwMDApCisgICAgICAgICB4X21lYW4gPSBOdW1lcmljLnN1bSh4KS8xMDAw MC4KKyAgICAgICAgIHByaW50ICJBdmVyYWdlIG9mIDEwMDAwIG11bHRpdmFy aWF0ZSBub3JtYWxzIHdpdGggbWVhbiBbLTEwMCwwLDEwMF0iCisgICAgICAg ICBwcmludCB4X21lYW4KKyAgICAgICAgIHhfbWludXNfbWVhbiA9IHggLSB4 X21lYW4KKyAgICAgICAgIHByaW50ICJFc3RpbWF0ZWQgY292YXJpYW5jZSBv ZiAxMDAwMCBtdWx0aXZhcmlhdGUgbm9ybWFscyB3aXRoIGNvdmFyaWFuY2Ug W1szLDIsMV0sWzIsMiwxXSxbMSwxLDFdXSIKKyAgICAgICAgIHByaW50IE51 bWVyaWMubWF0cml4bXVsdGlwbHkoTnVtZXJpYy50cmFuc3Bvc2UoeF9taW51 c19tZWFuKSx4X21pbnVzX21lYW4pLzk5OTkuCisgICAgICAgICB4ID0gYmV0 YSg1LjAsIDEwLjAsIDEwMDAwKQorICAgICAgICAgbWVhbl92YXJfdGVzdCh4 LCAiYmV0YSg1LiwxMC4pIHJhbmRvbSBudW1iZXJzIiwgMC4zMzMsIDAuMDE0 KQorICAgICAgICAgeCA9IGdhbW1hKC4wMSwgMi4sIDEwMDAwKQorICAgICAg ICAgbWVhbl92YXJfdGVzdCh4LCAiZ2FtbWEoLjAxLDIuKSByYW5kb20gbnVt YmVycyIsIDIqMTAwLCAyKjEwMCoxMDApCisgICAgICAgICB4ID0gY2hpX3Nx dWFyZSgxMS4sIDEwMDAwKQorICAgICAgICAgbWVhbl92YXJfdGVzdCh4LCAi Y2hpIHNxdWFyZWQgcmFuZG9tIG51bWJlcnMgd2l0aCAxMSBkZWdyZWVzIG9m IGZyZWVkb20iLCAxMSwgMjIsIDIqTnVtZXJpYy5zcXJ0KDIuLzExLikpCisg ICAgICAgICB4ID0gRig1LiwgMTAuLCAxMDAwMCkKKyAgICAgICAgIG1lYW5f dmFyX3Rlc3QoeCwgIkYgcmFuZG9tIG51bWJlcnMgd2l0aCA1IGFuZCAxMCBk ZWdyZWVzIG9mIGZyZWVkb20iLCAxLjI1LCAxLjM1KQorICAgICAgICAgeCA9 IHBvaXNzb24oNTAuLCAxMDAwMCkKKyAgICAgICAgIG1lYW5fdmFyX3Rlc3Qo eCwgInBvaXNzb24gcmFuZG9tIG51bWJlcnMgd2l0aCBtZWFuIDUwIiwgNTAs IDUwLCAwLjE0KQorIAlwcmludCAiXG5FYWNoIGVsZW1lbnQgaXMgdGhlIHJl c3VsdCBvZiAxNiBiaW5vbWlhbCB0cmlhbHMgd2l0aCBwcm9iYWJpbGl0eSAw LjU6IgorICAgICAgICAgcHJpbnQgYmlub21pYWwoMTYsIDAuNSwgMTYpCisg CXByaW50ICJcbkVhY2ggZWxlbWVudCBpcyB0aGUgcmVzdWx0IG9mIDE2IG5l Z2F0aXZlIGJpbm9taWFsIHRyaWFscyB3aXRoIHByb2JhYmlsaXR5IDAuNToi CisgICAgICAgICBwcmludCBuZWdhdGl2ZV9iaW5vbWlhbCgxNiwgMC41LCBb MTYsXSkKKyAJcHJpbnQgIlxuRWFjaCByb3cgaXMgdGhlIHJlc3VsdCBvZiAx NiBtdWx0aW5vbWlhbCB0cmlhbHMgd2l0aCBwcm9iYWJpbGl0aWVzIFswLjEs IDAuNSwgMC4xIDAuM106IgorIAl4ID0gbXVsdGlub21pYWwoMTYsIFswLjEs IDAuNSwgMC4xXSwgOCkKKyAgICAgICAgIHByaW50IHgKKyAgICAgICAgIHBy aW50ICJNZWFuID0gIiwgTnVtZXJpYy5zdW0oeCkvOC4KICAKICBpZiBfX25h bWVfXyA9PSAnX19tYWluX18nOiAKICAJdGVzdCgpCmRpZmYgLS1jb250ZXh0 IC0tcmVjdXJzaXZlIE51bWVyaWNhbC1vcmlnL1NyYy9yYW5saWJtb2R1bGUu YyBOdW1lcmljYWwvU3JjL3JhbmxpYm1vZHVsZS5jCioqKiBOdW1lcmljYWwt b3JpZy9TcmMvcmFubGlibW9kdWxlLmMJU2F0IERlYyAxOCAxNDoxNToxMiAx OTk5Ci0tLSBOdW1lcmljYWwvU3JjL3JhbmxpYm1vZHVsZS5jCVNhdCBEZWMg MTggMTA6Mjg6MDEgMTk5OQoqKioqKioqKioqKioqKioKKioqIDEsMzcgKioq KgogICNpbmNsdWRlICJQeXRob24uaCIKICAjaW5jbHVkZSAiYXJyYXlvYmpl Y3QuaCIKICAjaW5jbHVkZSAicmFubGliLmgiCiAgCiAgc3RhdGljIFB5T2Jq ZWN0ICpFcnJvck9iamVjdDsKICAKICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogIAogIHN0 YXRpYyBjaGFyIHJhbmRvbV9zYW1wbGVfX2RvY19fW10gPSIiOwogIAogIHN0 YXRpYyBQeU9iamVjdCAqCiEgcmFuZG9tX3NhbXBsZShQeU9iamVjdCAqc2Vs ZiwgUHlPYmplY3QgKmFyZ3MpCiEgewohICAgUHlBcnJheU9iamVjdCAqb3A7 CiEgICBkb3VibGUgKmRwdHI7CiEgICBpbnQgaSwgbj0tMSwgbmQ7CiAgCiEg ICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpIiwgJm4pKSByZXR1 cm4gTlVMTDsKICAKLSAgIC8qQ3JlYXRlIGEgMSBkaW1lbnNpb25hbCBhcnJh eSBvZiBkaW1lbnNpb25zIG9mIHR5cGUgZG91YmxlKi8KLSAgIG5kID0gbiA9 PSAtMSA/IDA6MTsKLSAgIG9wID0gKFB5QXJyYXlPYmplY3QgKilQeUFycmF5 X0Zyb21EaW1zKDEsICZuLCBQeUFycmF5X0RPVUJMRSk7Ci0gICBpZiAob3Ag PT0gTlVMTCkgcmV0dXJuIE5VTEw7CiAgCiEgICBpZiAobiA9PSAtMSkgbiA9 IDE7CiEgICBkcHRyID0gKGRvdWJsZSAqKW9wLT5kYXRhOwogICAgZm9yKGk9 MDsgaTxuOyBpKyspIHsKISAgICAgKmRwdHIgPSByYW5mKCk7CiEgICAgIGRw dHIrKzsKICAgIH0KICAKICAgIHJldHVybiBQeUFycmF5X1JldHVybihvcCk7 CiAgfQogIAogIHN0YXRpYyBQeU9iamVjdCAqCiAgcmFuZG9tX3NldF9zZWVk cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiAgewotLS0gMSwy NDQgLS0tLQogICNpbmNsdWRlICJQeXRob24uaCIKICAjaW5jbHVkZSAiYXJy YXlvYmplY3QuaCIKICAjaW5jbHVkZSAicmFubGliLmgiCisgI2luY2x1ZGUg InN0ZGlvLmgiCiAgCiAgc3RhdGljIFB5T2JqZWN0ICpFcnJvck9iamVjdDsK ICAKICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSAqLwogIAorIHN0YXRpYyBQeU9iamVjdCoKKyBn ZXRfY29udGludW91c19yYW5kb20oaW50IG51bV9kaXN0X3BhcmFtcywgUHlP YmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCB2b2lkKiBmdW4pIHsKKyAg IFB5QXJyYXlPYmplY3QgKm9wOworICAgZG91YmxlICpvdXRfcHRyOworICAg aW50IGksIG49LTEsIG5kOworICAgZmxvYXQgYSwgYiwgYzsKKyAKKyAgIHN3 aXRjaChudW1fZGlzdF9wYXJhbXMpIHsKKyAgIGNhc2UgMDoKKyAgICAgaWYo ICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aSIsICZuKSApCisgICAgICAg cmV0dXJuIE5VTEw7CisgICAgIGJyZWFrOworICAgY2FzZSAxOgorICAgICBp ZiggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImZ8aSIsICZhLCAmbikgKQor ICAgICAgIHJldHVybiBOVUxMOworICAgICBicmVhazsKKyAgIGNhc2UgMjoK KyAgICAgaWYoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJmZnxpIiwgJmEs ICZiLCAmbikgKQorICAgICAgIHJldHVybiBOVUxMOworICAgICBicmVhazsK KyAgIGNhc2UgMzoKKyAgICAgaWYoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3Ms ICJmZmZ8aSIsICZhLCAmYiwgJmMsICZuKSApCisgICAgICAgcmV0dXJuIE5V TEw7CisgICAgIGJyZWFrOworICAgfQorICAgaWYoIG4gPT0gLTEgKQorICAg ICBuID0gMTsKKyAKKyAgIC8qIENyZWF0ZSBhIDEgZGltZW5zaW9uYWwgYXJy YXkgb2YgbGVuZ3RoIG4gb2YgdHlwZSBkb3VibGUgKi8KKyAgIG9wID0gKFB5 QXJyYXlPYmplY3QqKSBQeUFycmF5X0Zyb21EaW1zKDEsICZuLCBQeUFycmF5 X0RPVUJMRSk7CisgICBpZiggb3AgPT0gTlVMTCApCisgICAgIHJldHVybiBO VUxMOworIAorICAgb3V0X3B0ciA9IChkb3VibGUgKikgb3AtPmRhdGE7Cisg ICBmb3IoaT0wOyBpPG47IGkrKykgeworICAgICBzd2l0Y2gobnVtX2Rpc3Rf cGFyYW1zKSB7CisgICAgIGNhc2UgMDoKKyAgICAgICAqb3V0X3B0ciA9IChk b3VibGUpICgoZmxvYXQgKCopKCkpIGZ1bikoKTsKKyAgICAgICBicmVhazsK KyAgICAgY2FzZSAxOgorICAgICAgICpvdXRfcHRyID0gKGRvdWJsZSkgKChm bG9hdCAoKikoZmxvYXQpKSBmdW4pKGEpOworICAgICAgIGJyZWFrOworICAg ICBjYXNlIDI6CisgICAgICAgKm91dF9wdHIgPSAoZG91YmxlKSAoKGZsb2F0 ICgqKShmbG9hdCwgZmxvYXQpKSBmdW4pKGEsYik7CisgICAgICAgYnJlYWs7 CisgICAgIGNhc2UgMzoKKyAgICAgICAqb3V0X3B0ciA9IChkb3VibGUpICgo ZmxvYXQgKCopKGZsb2F0LCBmbG9hdCwgZmxvYXQpKSBmdW4pKGEsYixjKTsK KyAgICAgICBicmVhazsKKyAgICAgfQorICAgICBvdXRfcHRyKys7CisgICB9 CisgCisgICByZXR1cm4gUHlBcnJheV9SZXR1cm4ob3ApOworIH0KKyAKKyAK KyBzdGF0aWMgUHlPYmplY3QqCisgZ2V0X2Rpc2NyZXRlX3NjYWxhcl9yYW5k b20oaW50IG51bV9pbnRlZ2VyX2FyZ3MsIFB5T2JqZWN0KiBzZWxmLCBQeU9i amVjdCogYXJncywgdm9pZCogZnVuKSB7CisgICBsb25nIGludF9hcmc7Cisg ICBpbnQgbj0tMSwgaTsKKyAgIGxvbmcqIG91dF9wdHI7CisgICBQeUFycmF5 T2JqZWN0KiBvcDsKKyAgIGZsb2F0IGZsb2F0X2FyZzsKKyAKKyAgIHN3aXRj aCggbnVtX2ludGVnZXJfYXJncyApIHsKKyAgIGNhc2UgMDoKKyAgICAgaWYo ICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJmfGkiLCAmZmxvYXRfYXJnLCAm bikgKSB7CisgICAgICAgcmV0dXJuIE5VTEw7CisgICAgIH0KKyAgICAgYnJl YWs7CisgICBjYXNlIDE6CisgICAgIGlmKCAhUHlBcmdfUGFyc2VUdXBsZShh cmdzLCAiaWZ8aSIsICZpbnRfYXJnLCAmZmxvYXRfYXJnLCAmbikgKSB7Cisg ICAgICAgcmV0dXJuIE5VTEw7CisgICAgIH0KKyAgICAgYnJlYWs7CisgICB9 CisgICBpZiggbj09LTEgKSB7CisgICAgIG4gPSAxOworICAgfQorICAgCisg ICAvKiBDcmVhdGUgYSAxIGRpbWVuc2lvbmFsIGFycmF5IG9mIGxlbmd0aCBu IG9mIHR5cGUgbG9uZyAqLworICAgb3AgPSAoUHlBcnJheU9iamVjdCopIFB5 QXJyYXlfRnJvbURpbXMoMSwgJm4sIFB5QXJyYXlfTE9ORyk7CisgICBpZigg b3AgPT0gTlVMTCApIHsKKyAgICAgcmV0dXJuIE5VTEw7CisgICB9CisgICAK KyAgIG91dF9wdHIgPSAobG9uZyopIG9wLT5kYXRhOworICAgZm9yKGk9MDsg aTxuOyBpKyspIHsKKyAgICAgc3dpdGNoKCBudW1faW50ZWdlcl9hcmdzICkg eworICAgICBjYXNlIDA6CisgICAgICAgKm91dF9wdHIgPSAoKGxvbmcgKCop KGZsb2F0KSkgZnVuKShmbG9hdF9hcmcpOworICAgICAgIGJyZWFrOworICAg ICBjYXNlIDE6CisgICAgICAgKm91dF9wdHIgPSAoKGxvbmcgKCopKGxvbmcs IGZsb2F0KSkgZnVuKShpbnRfYXJnLCBmbG9hdF9hcmcpOworICAgICAgIGJy ZWFrOworICAgICB9CisgICAgIG91dF9wdHIrKzsKKyAgIH0KKyAKKyAgIHJl dHVybiBQeUFycmF5X1JldHVybihvcCk7CisgfQorIAorIAogIHN0YXRpYyBj aGFyIHJhbmRvbV9zYW1wbGVfX2RvY19fW10gPSIiOwogIAogIHN0YXRpYyBQ eU9iamVjdCAqCiEgcmFuZG9tX3NhbXBsZShQeU9iamVjdCAqc2VsZiwgUHlP YmplY3QgKmFyZ3MpIHsKISAgIHJldHVybiBnZXRfY29udGludW91c19yYW5k b20oMCwgc2VsZiwgYXJncywgcmFuZik7CiEgfQohIAohIAohIHN0YXRpYyBj aGFyIHN0YW5kYXJkX25vcm1hbF9fZG9jX19bXSA9IiI7CiEgCiEgc3RhdGlj IFB5T2JqZWN0ICoKISBzdGFuZGFyZF9ub3JtYWwoUHlPYmplY3QgKnNlbGYs IFB5T2JqZWN0ICphcmdzKSB7CiEgICByZXR1cm4gZ2V0X2NvbnRpbnVvdXNf cmFuZG9tKDAsIHNlbGYsIGFyZ3MsIHNub3JtKTsKISB9CiEgCiEgCiEgc3Rh dGljIGNoYXIgYmV0YV9fZG9jX19bXSA9IiI7CiEgCiEgc3RhdGljIFB5T2Jq ZWN0ICoKISBiZXRhKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykg ewohICAgcmV0dXJuIGdldF9jb250aW51b3VzX3JhbmRvbSgyLCBzZWxmLCBh cmdzLCBnZW5iZXQpOwohIH0KISAKISAKISBzdGF0aWMgY2hhciBnYW1tYV9f ZG9jX19bXSA9IiI7CiEgCiEgc3RhdGljIFB5T2JqZWN0ICoKISBnYW1tYShQ eU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpIHsKISAgIHJldHVybiBn ZXRfY29udGludW91c19yYW5kb20oMiwgc2VsZiwgYXJncywgZ2VuZ2FtKTsK ISB9CiEgCiEgCiEgc3RhdGljIGNoYXIgZl9fZG9jX19bXSA9IiI7CiAgCiEg c3RhdGljIFB5T2JqZWN0ICoKISBmKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqYXJncykgewohICAgcmV0dXJuIGdldF9jb250aW51b3VzX3JhbmRvbSgy LCBzZWxmLCBhcmdzLCBnZW5mKTsKISB9CiEgCiEgCiEgc3RhdGljIGNoYXIg bm9uY2VudHJhbF9mX19kb2NfX1tdID0iIjsKISAKISBzdGF0aWMgUHlPYmpl Y3QgKgohIG5vbmNlbnRyYWxfZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3Qg KmFyZ3MpIHsKISAgIHJldHVybiBnZXRfY29udGludW91c19yYW5kb20oMywg c2VsZiwgYXJncywgZ2VubmYpOwohIH0KISAKISAKISBzdGF0aWMgY2hhciBu b25jZW50cmFsX2NoaXNxdWFyZV9fZG9jX19bXSA9IiI7CiEgCiEgc3RhdGlj IFB5T2JqZWN0ICoKISBub25jZW50cmFsX2NoaXNxdWFyZShQeU9iamVjdCAq c2VsZiwgUHlPYmplY3QgKmFyZ3MpIHsKISAgIHJldHVybiBnZXRfY29udGlu dW91c19yYW5kb20oMiwgc2VsZiwgYXJncywgZ2VubmNoKTsKISB9CiEgCiEg CiEgc3RhdGljIGNoYXIgY2hpc3F1YXJlX19kb2NfX1tdID0iIjsKISAKISBz dGF0aWMgUHlPYmplY3QgKgohIGNoaXNxdWFyZShQeU9iamVjdCAqc2VsZiwg UHlPYmplY3QgKmFyZ3MpIHsKISAgIHJldHVybiBnZXRfY29udGludW91c19y YW5kb20oMSwgc2VsZiwgYXJncywgZ2VuY2hpKTsKISB9CiEgCiEgCiEgc3Rh dGljIGNoYXIgYmlub21pYWxfX2RvY19fW10gPSIiOwohIAohIHN0YXRpYyBQ eU9iamVjdCAqCiEgYmlub21pYWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0 ICphcmdzKSB7CiEgICByZXR1cm4gZ2V0X2Rpc2NyZXRlX3NjYWxhcl9yYW5k b20oMSwgc2VsZiwgYXJncywgaWduYmluKTsKISB9CiAgCiAgCiEgc3RhdGlj IGNoYXIgbmVnYXRpdmVfYmlub21pYWxfX2RvY19fW10gPSIiOwohIAohIHN0 YXRpYyBQeU9iamVjdCAqCiEgbmVnYXRpdmVfYmlub21pYWwoUHlPYmplY3Qg KnNlbGYsIFB5T2JqZWN0ICphcmdzKSB7CiEgICByZXR1cm4gZ2V0X2Rpc2Ny ZXRlX3NjYWxhcl9yYW5kb20oMSwgc2VsZiwgYXJncywgaWdubmJuKTsKISB9 CiEgCiEgc3RhdGljIGNoYXIgcG9pc3Nvbl9fZG9jX19bXSA9IiI7CiEgCiEg c3RhdGljIFB5T2JqZWN0ICoKISBwb2lzc29uKFB5T2JqZWN0ICpzZWxmLCBQ eU9iamVjdCAqYXJncykgewohICAgcmV0dXJuIGdldF9kaXNjcmV0ZV9zY2Fs YXJfcmFuZG9tKDAsIHNlbGYsIGFyZ3MsIGlnbnBvaSk7CiEgfQohIAohIAoh IHN0YXRpYyBjaGFyIG11bHRpbm9taWFsX19kb2NfX1tdID0iIjsKISAKISBz dGF0aWMgUHlPYmplY3QqCiEgbXVsdGlub21pYWwoUHlPYmplY3QqIHNlbGYs IFB5T2JqZWN0KiBhcmdzKSB7CiEgICBpbnQgbj0tMSwgaTsKISAgIGxvbmcg bnVtX3RyaWFscywgbnVtX2NhdGVnb3JpZXM7CiEgICBjaGFyKiBvdXRfcHRy OwohICAgUHlBcnJheU9iamVjdCogcHJpb3JzX2FycmF5OwohICAgUHlPYmpl Y3QqIHByaW9yc19vYmplY3Q7CiEgICBQeUFycmF5T2JqZWN0KiBvcDsKISAg IGludCBvdXRfZGltZW5zaW9uc1syXTsKISAKISAgIGlmKCAhUHlBcmdfUGFy c2VUdXBsZShhcmdzLCAiaU98aSIsICZudW1fdHJpYWxzLCAmcHJpb3JzX29i amVjdCwgJm4pICkgewohICAgICByZXR1cm4gTlVMTDsKISAgIH0KISAgIHBy aW9yc19hcnJheSA9IChQeUFycmF5T2JqZWN0KikgUHlBcnJheV9Db250aWd1 b3VzRnJvbU9iamVjdChwcmlvcnNfb2JqZWN0LCBQeUFycmF5X0ZMT0FULCAx LCAxKTsKISAgIGlmKCBwcmlvcnNfYXJyYXkgPT0gTlVMTCApIHsKISAgICAg cmV0dXJuIE5VTEw7CiEgICB9CiEgICBudW1fY2F0ZWdvcmllcyA9IHByaW9y c19hcnJheS0+ZGltZW5zaW9uc1swXSsxOwohICAgaWYoIG49PS0xICkgewoh ICAgICBuID0gMTsKISAgIH0KISAgIAohICAgLyogQ3JlYXRlIGFuIG4gYnkg bnVtX2NhdGVnb3JpZXMgYXJyYXkgb2YgbG9uZyAqLwohICAgb3V0X2RpbWVu c2lvbnNbMF0gPSBuOwohICAgb3V0X2RpbWVuc2lvbnNbMV0gPSBudW1fY2F0 ZWdvcmllczsKISAgIG9wID0gKFB5QXJyYXlPYmplY3QqKSBQeUFycmF5X0Zy b21EaW1zKDIsIG91dF9kaW1lbnNpb25zLCBQeUFycmF5X0xPTkcpOwohICAg aWYoIG9wID09IE5VTEwgKSB7CiEgICAgIHJldHVybiBOVUxMOwohICAgfQoh ICAgCiEgICBvdXRfcHRyID0gb3AtPmRhdGE7CiAgICBmb3IoaT0wOyBpPG47 IGkrKykgewohICAgICBnZW5tdWwobnVtX3RyaWFscywgKGZsb2F0KikocHJp b3JzX2FycmF5LT5kYXRhKSwgbnVtX2NhdGVnb3JpZXMsIChsb25nKikgb3V0 X3B0cik7CiEgICAgIG91dF9wdHIgKz0gb3AtPnN0cmlkZXNbMF07CiAgICB9 CiAgCiAgICByZXR1cm4gUHlBcnJheV9SZXR1cm4ob3ApOwogIH0KICAKKyAK ICBzdGF0aWMgUHlPYmplY3QgKgogIHJhbmRvbV9zZXRfc2VlZHMoUHlPYmpl Y3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogIHsKKioqKioqKioqKioqKioq CioqKiA0Niw1MSAqKioqCi0tLSAyNTMsMjU5IC0tLS0KICAgIHJldHVybiAo UHlPYmplY3QgKilQeV9Ob25lOwogIH0KICAKKyAKICBzdGF0aWMgUHlPYmpl Y3QgKgogIHJhbmRvbV9nZXRfc2VlZHMoUHlPYmplY3QgKnNlbGYsIFB5T2Jq ZWN0ICphcmdzKQogIHsKKioqKioqKioqKioqKioqCioqKiA1OCw3NCAqKioq CiAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgibGwiLCBzZWVkMSwgc2VlZDIp OwogIH0KICAKICAvKiBMaXN0IG9mIG1ldGhvZHMgZGVmaW5lZCBpbiB0aGUg bW9kdWxlICovCiAgCiAgc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiByYW5k b21fbWV0aG9kc1tdID0gewohICB7InNhbXBsZSIsCXJhbmRvbV9zYW1wbGUs CTEsCXJhbmRvbV9zYW1wbGVfX2RvY19ffSwKISAgeyJzZXRfc2VlZHMiLAly YW5kb21fc2V0X3NlZWRzLAkxLCB9LAohICB7ImdldF9zZWVkcyIsCXJhbmRv bV9nZXRfc2VlZHMsCTEsIH0sCiAgIHtOVUxMLAkJTlVMTH0JCS8qIHNlbnRp bmVsICovCiAgfTsKICAKICAKISAvKiBJbml0aWFsaXphdGlvbiBmdW5jdGlv biBmb3IgdGhlIG1vZHVsZSAoKm11c3QqIGJlIGNhbGxlZCBpbml0ZmZ0cGFj aykgKi8KICAKICBzdGF0aWMgY2hhciByYW5kb21fbW9kdWxlX2RvY3VtZW50 YXRpb25bXSA9IAogICIiCi0tLSAyNjYsMjk2IC0tLS0KICAgIHJldHVybiBQ eV9CdWlsZFZhbHVlKCJsbCIsIHNlZWQxLCBzZWVkMik7CiAgfQogIAorIAog IC8qIExpc3Qgb2YgbWV0aG9kcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgKi8K ICAKICBzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIHJhbmRvbV9tZXRob2Rz W10gPSB7CiEgIHsic2FtcGxlIiwgICAgIHJhbmRvbV9zYW1wbGUsICAgICAg ICAgIDEsICAgICAgcmFuZG9tX3NhbXBsZV9fZG9jX199LAohICB7InN0YW5k YXJkX25vcm1hbCIsIHN0YW5kYXJkX25vcm1hbCwgICAxLCAgICAgIHN0YW5k YXJkX25vcm1hbF9fZG9jX199LAohICB7ImJldGEiLAliZXRhLCAgICAgICAg ICAgICAgICAgICAxLCAgICAgIGJldGFfX2RvY19ffSwKISAgeyJnYW1tYSIs CWdhbW1hLCAgICAgICAgICAgICAgICAgIDEsICAgICAgZ2FtbWFfX2RvY19f fSwKISAgeyJmIiwJICAgICAgICBmLCAgICAgICAgICAgICAgICAgICAgICAx LCAgICAgIGZfX2RvY19ffSwKISAgeyJub25jZW50cmFsX2YiLCBub25jZW50 cmFsX2YsICAgICAgICAgMSwgICAgICBub25jZW50cmFsX2ZfX2RvY19ffSwK ISAgeyJjaGlzcXVhcmUiLAljaGlzcXVhcmUsICAgICAgICAgICAgICAxLCAg ICAgIGNoaXNxdWFyZV9fZG9jX199LAohICB7Im5vbmNlbnRyYWxfY2hpc3F1 YXJlIiwgbm9uY2VudHJhbF9jaGlzcXVhcmUsCiEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgbm9uY2VudHJhbF9j aGlzcXVhcmVfX2RvY19ffSwKISAgeyJiaW5vbWlhbCIsCWJpbm9taWFsLCAg ICAgICAgICAgICAgIDEsICAgICAgYmlub21pYWxfX2RvY19ffSwKISAgeyJu ZWdhdGl2ZV9iaW5vbWlhbCIsIG5lZ2F0aXZlX2Jpbm9taWFsLAohICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAgICAgIG5l Z2F0aXZlX2Jpbm9taWFsX19kb2NfX30sCiEgIHsibXVsdGlub21pYWwiLCBt dWx0aW5vbWlhbCwgICAgICAgICAgIDEsICAgICAgbXVsdGlub21pYWxfX2Rv Y19ffSwKISAgeyJwb2lzc29uIiwgICAgcG9pc3NvbiwgICAgICAgICAgICAg ICAgMSwgICAgICBwb2lzc29uX19kb2NfX30sCiEgIHsic2V0X3NlZWRzIiwg IHJhbmRvbV9zZXRfc2VlZHMsICAgICAgIDEsIH0sCiEgIHsiZ2V0X3NlZWRz IiwgIHJhbmRvbV9nZXRfc2VlZHMsICAgICAgIDEsIH0sCiAgIHtOVUxMLAkJ TlVMTH0JCS8qIHNlbnRpbmVsICovCiAgfTsKICAKICAKISAvKiBJbml0aWFs aXphdGlvbiBmdW5jdGlvbiBmb3IgdGhlIG1vZHVsZSAoKm11c3QqIGJlIGNh bGxlZCBpbml0cmFubGliKSAqLwogIAogIHN0YXRpYyBjaGFyIHJhbmRvbV9t b2R1bGVfZG9jdW1lbnRhdGlvbltdID0gCiAgIiIKKioqKioqKioqKioqKioq CioqKiA5OCwxMDQgKioqKgogIAlpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAJ CVB5X0ZhdGFsRXJyb3IoImNhbid0IGluaXRpYWxpemUgbW9kdWxlIHJhbmxp YiIpOwogIH0KLSAKLSAKLSAKLSAKLS0tIDMyMCwzMjIgLS0tLQo= --0-1804289383-945558422=:25420-- From heather@v1.wustl.edu Tue Dec 21 20:15:53 1999 From: heather@v1.wustl.edu (Heather Drury) Date: Tue, 21 Dec 1999 14:15:53 -0600 (CST) Subject: [Matrix-SIG] ValueError: object too deep for desired array (??) Message-ID: <199912212015.OAA01848@v1.wustl.edu> Hi, I'm getting the following error on trying to do an array copy: File "volume.py", line 50, in __init__ self.VoxData3D [:, :, :] = data.astype ('b') ValueError: Object too deep for desired array The relevant code is shown below ("data" is the input array", which in this case is 256x256x256): self.xdim = data.shape [2] self.ydim = data.shape [1] self.zdim = data.shape [0] self.VoxData3D = zeros ((self.zdim, self.ydim, self.xdim), 'b') self.VoxData3D [:, :, :] = data.astype ('b') self.VoxData = ravel (self.VoxData3D) I can't seem to find anything in the doc about this...and since I'm allocating the space with the "zeros" command, I don't understand why the object is "too deep". Any ideas? Heather -- Heather Drury heather@v1.wustl.edu Washington University School of Medicine http://v1.wustl.edu Department of Anatomy & Neurobiology Phone: 314-362-4325 660 S. Euclid, MS 8108 FAX: 314-747-4370 St. Louis, MO 63110-1093 From guido@CNRI.Reston.VA.US Wed Dec 22 20:00:19 1999 From: guido@CNRI.Reston.VA.US (Guido van Rossum) Date: Wed, 22 Dec 1999 15:00:19 -0500 Subject: [Matrix-SIG] Two weeks Till Python Conference Early Bird Registration Deadline! Message-ID: <199912222000.PAA17264@eric.cnri.reston.va.us> We know that the Python conference isn't until the next millennium. You have exactly two weeks left to register and qualify for the early bird registration. Since most of that time most people are taking off for the holidays, it's really NOW OR NEVER! If you haven't registered and paid by January 5, you will paying full price... So, be smart and register NOW. Also don't forget to book your hotel room by January 3. Some highlights from the conference program: - 8 tutorials on topics ranging from JPython to Fnorb; - a keynote by Open Source evangelist Eric Raymond; - another by Randy Pausch, father of the Alice Virtual Reality project; - a separate track for Zope developers and users; - live demonstrations of important Python applications; - refereed papers, and short talks on current topics; - a developers' day where the feature set of Python 2.0 is worked out. Our motto, due to Bruce Eckel, is: "Life's better without braces." Come and join us at the Key Bridge Marriott in Rosslyn (across the bridge from Georgetown), January 24-27 in 2000. Make the Python conference the first conference you attend in the new millennium! The early bird registration deadline is January 5. More info: http://www.python.org/workshops/2000-01/ The program is now complete with the titles of all presentations. There is still space in the demo session and in the short talks session. --Guido van Rossum (home page: http://www.python.org/~guido/) From crabb2@llnl.gov Thu Dec 23 00:28:54 1999 From: crabb2@llnl.gov (Charlie Crabb) Date: Wed, 22 Dec 1999 16:28:54 -0800 Subject: [Matrix-SIG] Turning off the traceback on a raise Message-ID: <38616CC6.2581E05C@glacier.llnl.gov> Is it possible to turn off the stack trace in python after raising an exception? e.g disable output from the first two lines: Traceback (innermost last): File "", line 4, in ? KeyError: nada -- Charlie Crabb Computer Scientist, LCPD/A/X Divisions Lawrence Livermore National Laboratory, L-38 crabb2@llnl.gov 925-424-3265 From Oliphant.Travis@mayo.edu Tue Dec 28 22:49:25 1999 From: Oliphant.Travis@mayo.edu (Travis Oliphant) Date: Tue, 28 Dec 1999 16:49:25 -0600 (CST) Subject: [Matrix-SIG] New Cephes module with arraymap method Message-ID: I'm announcing the availability of Version 1.2 of the Cephes module at http://oliphant.netpedia.net Cephes module provides many special functions of physics to the Numerical Python user as ufuncs which are generalized functions that automatically map over array arguments and follow useful broadcasting rules. I would like to see more special functions added to the library even if they are written in Python. Towards that end, version 1.2 contains a new python wrapper module called SpecialFuncs.py that can include Python-only special functions. In addition, I have added a method to cephesmodule called arraymap that acts like the map function but performs the broadcasting rules of ufuncs and returns Numerical Python arrays as output. I have also included a class that allows wrapping a Python function that takes scalar inputs and returns scalar outputs and returns a ufunc-like function which automatically maps over array input arguments following the ufunc broadcasting rules to return appropriately-sized outputs. So, if you can't figure out how to "vectorize" your function. You can wrap it in this class and get mapping behavior automatically. The looping is all written in C and so is reasonably fast. Comments and contributions are welcome. Travis Oliphant Oliphant.Travis@altavista.net

SpecialFuncs 1.2 - an extension module also known as cephes which provides many special functions of physics to the Numerical Python user. (29-Dec-99) From avoinov@exelixis.com Wed Dec 29 22:16:36 1999 From: avoinov@exelixis.com (Alexander V. Voinov) Date: Wed, 29 Dec 1999 14:16:36 -0800 Subject: [Matrix-SIG] import Numeric: add.reduce not found Message-ID: <386A8844.4F3D46BA@exelixis.com> Hi All I tried to use Python-1.5.2 with LLNLNumeric11 on Solaris .2.5.1, and it says: Python 1.5.2 (#7, Dec 29 1999, 13:03:01) [GCC 2.95 19990728 (release)] on sunos5 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>> import Numeric Traceback (innermost last): File "", line 1, in ? File "/tools/Python-1.5.2/lib/python1.5/site-packages/numeric/Numeric.py", line 319, in ? sum = add.reduce NameError: add Thank you in advance Alexander From avoinov@exelixis.com Wed Dec 29 23:39:31 1999 From: avoinov@exelixis.com (Alexander V. Voinov) Date: Wed, 29 Dec 1999 15:39:31 -0800 Subject: [Matrix-SIG] Re: [Fwd: import Numeric: add.reduce not found] References: <386A9008.8D070112@exelixis.com> Message-ID: <386A9BB3.B78E56ED@exelixis.com> "Alexander V. Voinov" wrote: > I tried to use Python-1.5.2 with LLNLNumeric11 on Solaris .2.5.1, and it > says: > > Python 1.5.2 (#7, Dec 29 1999, 13:03:01) [GCC 2.95 19990728 (release)] > on sunos5 > Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam > >>> import Numeric > Traceback (innermost last): > File "", line 1, in ? > File > "/tools/Python-1.5.2/lib/python1.5/site-packages/numeric/Numeric.py", > line 319, in ? > sum = add.reduce > NameError: add The same with LL*10. Alexander From avoinov@exelixis.com Thu Dec 30 00:08:14 1999 From: avoinov@exelixis.com (Alexander V. Voinov) Date: Wed, 29 Dec 1999 16:08:14 -0800 Subject: [Matrix-SIG] Re: [Fwd: import Numeric: add.reduce not found] References: <386A9008.8D070112@exelixis.com> <386A9BB3.B78E56ED@exelixis.com> Message-ID: <386AA26E.F4ED73D2@exelixis.com> "Alexander V. Voinov" wrote: > "Alexander V. Voinov" wrote: > > > I tried to use Python-1.5.2 with LLNLNumeric11 on Solaris .2.5.1, and it > > says: > > > > Python 1.5.2 (#7, Dec 29 1999, 13:03:01) [GCC 2.95 19990728 (release)] > > on sunos5 > > Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam > > >>> import Numeric > > Traceback (innermost last): > > File "", line 1, in ? > > File > > "/tools/Python-1.5.2/lib/python1.5/site-packages/numeric/Numeric.py", > > line 319, in ? > > sum = add.reduce > > NameError: add I had to compile everything form Numeric/Setup statically into the 'python' binary to make it work. It's ok for a short while, but I'd be very grateful if somebody pointed me to the source of the problem. Alexander From jcollins@shell.pacificnet.net Thu Dec 30 17:47:51 1999 From: jcollins@shell.pacificnet.net (Jeff Collins) Date: Thu, 30 Dec 1999 09:47:51 -0800 (PST) Subject: [Matrix-SIG] Re: [Fwd: import Numeric: add.reduce not found] In-Reply-To: <386A9BB3.B78E56ED@exelixis.com> Message-ID: Just out of curiosity - do you have an old umathmodule.so (or old version of NumPy) lying around in your path? If so, removing it could solve your problem. Jeff On Wed, 29 Dec 1999, Alexander V. Voinov wrote: > "Alexander V. Voinov" wrote: > > > I tried to use Python-1.5.2 with LLNLNumeric11 on Solaris .2.5.1, and it > > says: > > > > Python 1.5.2 (#7, Dec 29 1999, 13:03:01) [GCC 2.95 19990728 (release)] > > on sunos5 > > Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam > > >>> import Numeric > > Traceback (innermost last): > > File "", line 1, in ? > > File > > "/tools/Python-1.5.2/lib/python1.5/site-packages/numeric/Numeric.py", > > line 319, in ? > > sum = add.reduce > > NameError: add > > The same with LL*10. > > Alexander > > > > _______________________________________________ > Matrix-SIG maillist - Matrix-SIG@python.org > http://www.python.org/mailman/listinfo/matrix-sig > From Oliphant.Travis@mayo.edu Thu Dec 30 18:32:53 1999 From: Oliphant.Travis@mayo.edu (Travis Oliphant) Date: Thu, 30 Dec 1999 12:32:53 -0600 (CST) Subject: [Matrix-SIG] Problems with Numeric In-Reply-To: <19991230170019.3ABAE1CD7A@dinsdale.python.org> Message-ID: > I had to compile everything form Numeric/Setup statically into the 'python' > binary to make it work. It's ok for a short while, but I'd be very grateful > if somebody pointed me to the source of the problem. I'm not sure what is wrong here, but add is a method of the ufunc module, so it sounds like that is where the problem is. The Numeric module imports all of the methods of the ufunc module and so a NameError in this circumstance seems to imply that the ufunc module is not completely functional. Try importing ufunc alone and looking at it's methods: >>> import ufunc >>> dir(ufunc) You should see add there somewhere. If it is not there then it is probably a shared library problem. Perhaps someone with more experience on Solaris may have some insights. Good luck, Travis