[SciPy-user] Re: io.loadmat

Nils Wagner nwagner at mecha.uni-stuttgart.de
Wed Oct 15 04:46:28 EDT 2003


Andrew Straw schrieb:
> 
> John Hunter wrote:
> >>>>>>"Nils" == Nils Wagner <wagner.nils at vdi.de> writes:
> >
> >
> >     Nils> Thank you for your note. However, I am not the right person
> >     Nils> for doing that. It would be great if someone else can do
> >     Nils> that.  Thanks in advance.
> >
> >
> > Have you seen matfile?  It will load matlab version 5 into Numeric
> > arrays
> >
> > See
> > http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&safe=off&threadm=m3g09ck23n.fsf%40nmw-office.ion.le.ac.uk&rnum=2&prev=/groups%3Fnum%3D20%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26safe%3Doff%26q%3Dmatfile%2Bpython%26sa%3DN%26tab%3Dwg
> >
> > and the src at ftp://ion.le.ac.uk/matfile/matfile.tar.gz
> 
> Cool!  I hadn't seen that before, and it seems to work on the simple
> test case I tried.  I made a setup script rather than fiddling with the
> Makefile.  This seems like a useful enough utility that it should get
> wider exposure.  Too bad it can't be incorporated into scipy as is (GPL
> vs. BSD license issues...).
> 
> #!/usr/bin/env python
> """Setup script for matfile
> """
> 
> from distutils.core import setup, Extension
> import distutils.sysconfig
> import os
> 
> numpy_inc_dir = os.path.join(distutils.sysconfig.get_python_inc(),'Numeric')
> matfile_dir = 'matfile' # off current directory
> 
> matfile_srcs = ['mat_open.c', 'mat_read_array.c', 'mat_copy_data.c',
>          'mat_free_array.c', 'mat_read_array4.c', 'mat_write_array4.c',
>          'mat_read_array5.c', 'mat_subarray5.c', 'mat_utils5.c']
> matfile_srcs = [ os.path.join(matfile_dir,src) for src in matfile_srcs ]
> 
> setup(name="matfile",
>        description = "MATLAB .mat file reader for Python",
>        author = "Nigel Wade",
>        author_email = "nmw at ion.le.ac.uk",
>        license = "GNU GPL",
>        ext_modules = [Extension(name='matfile',
>                                 sources=['matfilemodule.c']+matfile_srcs,
>                                 include_dirs=[matfile_dir,
>                                               numpy_inc_dir])])
> 
I have modified the Makefiles for SuSE8.2 (see the attachment). Finally,
I was able to build the module.
How about the location of the modules ? Shall I copy this stuff to
/usr/local/lib/python2.1/site-packages/matfile ?
How do I use the module in scipy ?
Sorry, I am a newbie to these things.

In 

~/mysoftware/matfile

I have

-rw-r--r--    1 wagner   users        1358 2003-10-15 10:20 Makefile
-rw-r--r--    1 wagner   users        1358 2003-10-15 10:18 Makefile.ori
lrwxrwxrwx    1 wagner   users          15 2003-10-15 10:34
libmatfile.so -> libmatfile.so.0
-rwxr-xr-x    1 wagner   users       87247 2003-10-15 10:34
libmatfile.so.0
drwxr-xr-x    2 wagner   users         806 2003-10-15 10:34 matfile
-rw-r--r--    1 wagner   users       16376 2001-09-24 17:34
matfilemodule.c
-rw-r--r--    1 wagner   users        8692 2003-10-15 10:34
matfilemodule.o
lrwxrwxrwx    1 wagner   users          18 2003-10-15 10:34
matfilemodule.so -> matfilemodule.so.0
-rwxr-xr-x    1 wagner   users     1620346 2003-10-15 10:34
matfilemodule.so.0

Any suggestion ?

Nils

>   ------------------------------------------------------------------------
>    Part 1.1.2Type: application/pgp-signature
> 
>    Part 1.2    Type: Plain Text (text/plain)
>            Encoding: 7bit
-------------- next part --------------
TOP=.

PYTHON_INCLUDE = /usr/local/include/python2.1
PYTHON_LIBDIR = /usr/local/lib/python2.1/config
PYTHON_LIBS =  -lpython2.1 -ldb -lutil -lpthread -lnsl -ldl -lm

VERSION=0
SHARED_DSO=-shared
DSO_NAME=-Wl,-h,$(@F)
DSO_SYMBOLIC=
LINK_TYPE=dynamic

SRCS = matfilemodule.c

OBJS = $(SRCS:%.c=%.o)


CFLAGS += -I$(PYTHON_INCLUDE) -I$(PYTHON_INCLUDE)/Numeric -Imatfile
LIBS += -L$(PYTHON_LIBDIR) $(PYTHON_LIBS) -L. -lmatfile


LIBNAME=matfilemodule
DIR = .
LIB = $(DIR)/$(LIBNAME)
LIB.so = $(LIB).so

lib$(LIBNAME) : matfile $(LINK_TYPE) 
dynamic :  $(LIB.so)

matfile : FORCE
	(cd matfile; $(MAKE))

$(LIB.so) : $(LIB.so).$(VERSION)
	@(if [ -h $@ -o -f $@ ]; then /bin/rm $@; fi; \
	  if [ -f $? ]; then ln -s $(?F) $@; fi; \
	  exit 0)

$(LIB.so).$(VERSION) : $(OBJS)
	$(LINK.c) $(SHARED_DSO) $(DSO_SYMBOLIC) $(DSO_NAME) -o $@ $(OBJS) $(LIBS)


depend : FORCE
	@sed -n -e '/^# DO NOT DELETE THIS LINE -- make depend depends on it./q;p' Makefile > Makefile.new
	@echo "# DO NOT DELETE THIS LINE -- make depend depends on it." >> Makefile.new
	@$(COMPILE.c) $(DEPEND) $(OPTIONS) $(INCLUDE_FLAGS) $(SRCS) >> Makefile.new
	@cp Makefile Makefile.bak 
	@cp Makefile.new Makefile

clean : FORCE
	/bin/rm -f $(OBJS)

veryclean veryveryclean: clean
	/bin/rm -f $(LIB.so) $(LIB.so).$(VERSION) $(LIB.a)

FORCE:


# DO NOT DELETE THIS LINE -- make depend depends on it.
-------------- next part --------------
TOP=..

VERSION=0
SHARED_DSO=-shared
DSO_NAME=-Wl,-h,$(@F)
DSO_SYMBOLIC=
LINK_TYPE=dynamic
MAKEDEPEND=makedepend  -- $(CFLAGS) -- $(INCLUDE_FLAGS) $(OPTIONS)


LIBNAME=matfile
DIR = ..
LIB = $(DIR)/lib$(LIBNAME)
LIB.so = $(LIB).so
LIB.a = $(LIB).a

SRCS = mat_open.c mat_read_array.c mat_copy_data.c mat_free_array.c \
	mat_read_array4.c mat_write_array4.c \
	mat_read_array5.c mat_subarray5.c mat_utils5.c 

OBJS = $(SRCS:%.c=%.o)

lib$(LIBNAME) : $(LINK_TYPE)
dynamic : $(LIB.so)
static : $(LIB.a)


$(LIB.a) : $(LIB.a)($(OBJS))

$(LIB.so) : $(LIB.so).$(VERSION)
	@(if [ -h $@ -o -f $@ ]; then /bin/rm $@; fi; \
	  if [ -f $? ]; then ln -s $(?F) $@; fi; \
	  exit 0)

$(LIB.so).$(VERSION) : $(OBJS)
	$(LINK.c) $(SHARED_DSO) $(DSO_SYMBOLIC) $(DSO_NAME) -o $@ $(OBJS) $(RUNPATH)

$(LIB.a)(%.o) : %.o
	ar -rs $@ $<
	@$(RANLIB) $@

%.o : %.c
	$(COMPILE.c) $<

install : install_$(LINK_TYPE)

install_static : FORCE
	@$cp $(LIB.a) $(LIBDIR)

install_dynamic : FORCE
	@cp $(LIB.so).$(VERSION) $(LIBDIR)
	@(cd $(LIBDIR); \
		if [ -h lib$(LIBNAME).so -o -f lib$(LIBNAME).so ]; then /bin/rm lib$(LIBNAME).so; fi; \
		if [ -f lib$(LIBNAME).so.$(VERSION) ]; then ln -s lib$(LIBNAME).so.$(VERSION) lib$(LIBNAME).so; fi)

depend : FORCE
	$(MAKEDEPEND) $(SRCS)

clean : FORCE
	/bin/rm -f $(OBJS)

veryclean veryveryclean: clean
	/bin/rm -f $(LIB.so) $(LIB.so).$(VERSION) $(LIB.a)

FORCE:


# DO NOT DELETE THIS LINE -- make depend depends on it.

mat_open.o: /usr/include/stdlib.h /usr/include/features.h
mat_open.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
#mat_open.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
mat_open.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stddef.h
mat_open.o: /usr/include/sys/types.h /usr/include/bits/types.h
mat_open.o: /usr/include/time.h /usr/include/endian.h
mat_open.o: /usr/include/bits/endian.h /usr/include/sys/select.h
mat_open.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
mat_open.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
mat_open.o: /usr/include/stdio.h
#mat_open.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
mat_open.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stdarg.h
mat_open.o: /usr/include/libio.h /usr/include/_G_config.h
mat_open.o: /usr/include/bits/stdio_lim.h /usr/include/limits.h
mat_open.o: /usr/include/bits/posix1_lim.h /usr/include/bits/local_lim.h
mat_open.o: /usr/include/linux/limits.h /usr/include/bits/posix2_lim.h
mat_open.o: /usr/include/ctype.h matfile.h
mat_read_array.o: /usr/include/stdlib.h /usr/include/features.h
mat_read_array.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
#mat_read_array.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
mat_read_array.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stddef.h
mat_read_array.o: /usr/include/sys/types.h /usr/include/bits/types.h
mat_read_array.o: /usr/include/time.h /usr/include/endian.h
mat_read_array.o: /usr/include/bits/endian.h /usr/include/sys/select.h
mat_read_array.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
mat_read_array.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
mat_read_array.o: /usr/include/stdio.h
#mat_read_array.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
mat_read_array.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stdarg.h
mat_read_array.o: /usr/include/libio.h /usr/include/_G_config.h
mat_read_array.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h
mat_read_array.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h
mat_read_array.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h
mat_read_array.o: /usr/include/bits/posix2_lim.h matfile.h
mat_copy_data.o: /usr/include/stdlib.h /usr/include/features.h
mat_copy_data.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
#mat_copy_data.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
mat_copy_data.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stddef.h
mat_copy_data.o: /usr/include/sys/types.h /usr/include/bits/types.h
mat_copy_data.o: /usr/include/time.h /usr/include/endian.h
mat_copy_data.o: /usr/include/bits/endian.h /usr/include/sys/select.h
mat_copy_data.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
mat_copy_data.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h matfile.h
mat_copy_data.o: /usr/include/stdio.h
#mat_copy_data.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
mat_copy_data.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stdarg.h
mat_copy_data.o: /usr/include/libio.h /usr/include/_G_config.h
mat_copy_data.o: /usr/include/bits/stdio_lim.h
mat_free_array.o: matfile.h /usr/include/stdio.h /usr/include/features.h
mat_free_array.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
#mat_free_array.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
mat_free_array.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stddef.h
#mat_free_array.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
mat_free_array.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stdarg.h
mat_free_array.o: /usr/include/bits/types.h /usr/include/libio.h
mat_free_array.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
mat_read_array4.o: /usr/include/stdlib.h /usr/include/features.h
mat_read_array4.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
#mat_read_array4.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
mat_read_array4.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stddef.h
mat_read_array4.o: /usr/include/sys/types.h /usr/include/bits/types.h
mat_read_array4.o: /usr/include/time.h /usr/include/endian.h
mat_read_array4.o: /usr/include/bits/endian.h /usr/include/sys/select.h
mat_read_array4.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
mat_read_array4.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
mat_read_array4.o: /usr/include/stdio.h
#mat_read_array4.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
mat_read_array4.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stdarg.h
mat_read_array4.o: /usr/include/libio.h /usr/include/_G_config.h
mat_read_array4.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h
mat_read_array4.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h
mat_read_array4.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h
mat_read_array4.o: /usr/include/bits/posix2_lim.h matfile.h
mat_write_array4.o: /usr/include/stdio.h /usr/include/features.h
mat_write_array4.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
#mat_write_array4.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
mat_write_array4.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stddef.h
#mat_write_array4.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
mat_write_array4.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stdarg.h
mat_write_array4.o: /usr/include/bits/types.h /usr/include/libio.h
mat_write_array4.o: /usr/include/_G_config.h /usr/include/bits/stdio_lim.h
mat_write_array4.o: /usr/include/stdlib.h /usr/include/sys/types.h
mat_write_array4.o: /usr/include/time.h /usr/include/endian.h
mat_write_array4.o: /usr/include/bits/endian.h /usr/include/sys/select.h
mat_write_array4.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
mat_write_array4.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
mat_write_array4.o: matfile.h
mat_read_array5.o: /usr/include/stdlib.h /usr/include/features.h
mat_read_array5.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
#mat_read_array5.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
mat_read_array5.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stddef.h
mat_read_array5.o: /usr/include/sys/types.h /usr/include/bits/types.h
mat_read_array5.o: /usr/include/time.h /usr/include/endian.h
mat_read_array5.o: /usr/include/bits/endian.h /usr/include/sys/select.h
mat_read_array5.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
mat_read_array5.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
mat_read_array5.o: /usr/include/stdio.h
#mat_read_array5.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
mat_read_array5.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stdarg.h
mat_read_array5.o: /usr/include/libio.h /usr/include/_G_config.h
mat_read_array5.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h
mat_read_array5.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h
mat_read_array5.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h
mat_read_array5.o: /usr/include/bits/posix2_lim.h matfile.h
mat_subarray5.o: /usr/include/stdlib.h /usr/include/features.h
mat_subarray5.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
#mat_subarray5.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
mat_subarray5.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stddef.h
mat_subarray5.o: /usr/include/sys/types.h /usr/include/bits/types.h
mat_subarray5.o: /usr/include/time.h /usr/include/endian.h
mat_subarray5.o: /usr/include/bits/endian.h /usr/include/sys/select.h
mat_subarray5.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
mat_subarray5.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
mat_subarray5.o: /usr/include/stdio.h
#mat_subarray5.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
mat_subarray5.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stdarg.h
mat_subarray5.o: /usr/include/libio.h /usr/include/_G_config.h
mat_subarray5.o: /usr/include/bits/stdio_lim.h /usr/include/assert.h
mat_subarray5.o: /usr/include/limits.h /usr/include/bits/posix1_lim.h
mat_subarray5.o: /usr/include/bits/local_lim.h /usr/include/linux/limits.h
mat_subarray5.o: /usr/include/bits/posix2_lim.h matfile.h
mat_utils5.o: /usr/include/limits.h /usr/include/features.h
mat_utils5.o: /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h
mat_utils5.o: /usr/include/bits/posix1_lim.h /usr/include/bits/local_lim.h
mat_utils5.o: /usr/include/linux/limits.h /usr/include/bits/posix2_lim.h
mat_utils5.o: /usr/include/stdlib.h
#mat_utils5.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stddef.h
mat_utils5.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stddef.h
mat_utils5.o: /usr/include/sys/types.h /usr/include/bits/types.h
mat_utils5.o: /usr/include/time.h /usr/include/endian.h
mat_utils5.o: /usr/include/bits/endian.h /usr/include/sys/select.h
mat_utils5.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
mat_utils5.o: /usr/include/sys/sysmacros.h /usr/include/alloca.h
mat_utils5.o: /usr/include/string.h matfile.h /usr/include/stdio.h
#mat_utils5.o: /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include/stdarg.h
mat_utils5.o: /usr/lib/gcc-lib/i486-suse-linux/3.3/include/stdarg.h
mat_utils5.o: /usr/include/libio.h /usr/include/_G_config.h
mat_utils5.o: /usr/include/bits/stdio_lim.h


More information about the SciPy-User mailing list