I think it's better to wrap R scripting and void passing unuseful objects
back and forth between Python and R. In your script it doesn't seem that you
need direct interaction between Python and R (at least in this part of your
script).
I usually adopt something like this:

r("""CairoPNG(file="/var/www/img/prova"""+id+""".png",width=600, height=400)
hist(meuse[[id]],xlab=names(meuse[id]),main=paste("Histogram of
",names(meuse[id])))
dev.off
""")
where id is a Python variable...

In my use I limit the R-Python object translation only to cases when I
effectively need to use R results in Python (and viveversa).

Giovanni


2008/2/4, Roger Bivand <[EMAIL PROTECTED]>:
>
> On Mon, 4 Feb 2008, volkan kepoglu wrote:
>
> > I am new in R and Python. I write a couple of lines. The code does the
> > followings; Read point shp file, Compute a kernel smoothed intensity
> > function from a point pattern; density function, and convert pixel
> > image to spatialgriddataframe and export spatialgriddataframe to tif
> > raster format.
> >
> > the code is running in R. I am trying to use the code in python, but
> > could not. Could you help me?
>
> Cross-posting isn't a brilliant idea, by the way. I'm only replying to the
> R-sig-geo list; please summarise separately to other lists that you
> included to close the threads in a responsible way.
>
> Do as much as possible on the R side, do not try to cross the R/python
> interface with anything other than very simple objects (scalar, numeric
> vector), unless you really enjoy debugging (and since you are writing to
> multiple lists, you probably don't enjoy debugging). Just keep things very
> simple!
>
> >
> > my original R code;
>
> was not optimal anyway. Please use a canned file for your example:
>
> library(maptools)
> shpPoint <- readShapePoints(system.file("shapes/baltim.shp",
>    package="maptools")[1])
> bbox(shpPoint)
> library(spatstat)
> MYpppFormat <- as(shpPoint["STATION"], "ppp")
> summary(MYpppFormat)
> # note that window matches bounding box
> z <- density.ppp(MYpppFormat)
> # consider setting the bandwidth
> z_sgdf <- as(z, "SpatialGridDataFrame")
> outfilename <- paste(tempdir(), "exmPnt_density.tif",
>    sep=.Platform$file.sep)
> library(rgdal)
> writeGDAL(z_sgdf, outfilename, drivername = "GTiff")
>
> The only things that need to go over the interface are the input shapefile
> and output GTiff names, and possibly the bandwidth sigma. Try first as an
> os.system() call to a script running R, and move towards integrating
> tighter things that can be moved across the interface without falling
> over. I have a feeling that
>
> shpPoint = r.readShapePoints ("exmPnt.shp")
>
> has lost its class when it goes back across. I'm afraid you may get into a
> lot of r.assign() and r.get(). Best write a wrapper function taking the
> things you can pass, and leave everything else on the R side.
>
> If anyone has implemented reflected sp objects in python, please say so!
>
> Roger
>
> >
> > library(maptools)
> > shpPoint <- readShapePoints ("exmPnt.shp")
> > library(spatstat)
> > w <- as.owin(c(([EMAIL PROTECTED]"coords.x1","min"]),
> > ([EMAIL PROTECTED]"coords.x1","max"]),
> > ([EMAIL PROTECTED]"coords.x2","min"]),
> > ([EMAIL PROTECTED]"coords.x2","max"])))
> > MYpppFormat <- as.ppp([EMAIL PROTECTED], w)
> > z <- density.ppp(MYpppFormat, edge=TRUE)
> > plot(z, main="Kernel smoothed intensity of point pattern")
> > plot(shpPoint, add=TRUE)
> > z_sgdf <- as.SpatialGridDataFrame.im(z)
> > outfilename <- tempfile(pattern="file", tmpdir = tempdir())
> > writeGDAL(z_sgdf, outfilename, drivername = "GTiff")
> > file.rename (outfilename, "exmPnt_density.tif")
> >
> > conversion of R code to Python with Rpy;
> >
> > from rpy import *
> > r.library('maptools')
> > shpPoint = r.readShapePoints ("exmPnt.shp")
> > r.library('spatstat')
> >
> > # rest of them could not be converted to Rpy
> > w = r.as_owin(r.c((r.bbox(shpPoint)["coords.x1","min"]),
> > (r.bbox(shpPoint)["coords.x1","max"]),
> > (r.bbox(shpPoint)["coords.x2","min"]),
> > (r.bbox(shpPoint)["coords.x2","max"])))
> > MYpppFormat = r.as_ppp([EMAIL PROTECTED], w)
> >
> > # possible conversion, not tried.
> > z = r.density_ppp(MYpppFormat, edge=TRUE)
> > r.plot(z, main="Kernel smoothed intensity of point pattern")
> > r.plot(shpPoint, add=TRUE)
> > z_sgdf = r.as_SpatialGridDataFrame_im(z)
> > r.library('rgdal')
> > outfilename = r.tempfile(pattern="file", tmpdir = r.tempdir())
> > r.writeGDAL(z_sgdf, outfilename, drivername = "GTiff")
> > r.file.rename (outfilename, "exmPnt_density.tif")
> >
> > IN R, working;
> >> w <- as.owin(c(([EMAIL PROTECTED]"coords.x1","min"]), ([EMAIL PROTECTED]"
> coords.x1","max"]), ([EMAIL PROTECTED]"coords.x2","min"]), ([EMAIL PROTECTED]"
> coords.x2","max"])))
> >> w
> > window: rectangle = [575490, 619430] x [4890400, 4934800] units
> >
> > IN PYTHON, giving the following error;
> >>>> set_default_mode(NO_CONVERSION)
> >>>> w = r.as_owin(r.cbind((r.bbox(shpPoint)["coords.x1","min"]),
> > (r.bbox(shpPoint)["coords.x1","max"]),
> > (r.bbox(shpPoint)["coords.x2","min"]),
> > (r.bbox(shpPoint)["coords.x2","max"])))
> > Traceback (most recent call last):
> >  File "<stdin>", line 1, in <module>
> > TypeError: sequence index must be integer, not 'tuple'
> >>>> set_default_mode(BASIC_CONVERSION)
> >>>> w = r.as_owin(r.cbind((r.bbox(shpPoint)["coords.x1","min"]),
> > (r.bbox(shpPoint)["coords.x1","max"]),
> > (r.bbox(shpPoint)["coords.x2","min"]),
> > (r.bbox(shpPoint)["coords.x2","max"])))
> > Traceback (most recent call last):
> >  File "<stdin>", line 1, in <module>
> > IndexError: each subindex must be either a slice, an integer,
> > Ellipsis, or NewAxis
> >>>>
> >
> > What should I do?
> >
> > Thanks,
> > Volkan Kepoglu
> > PHD Candidate,
> > Department of GGIT in METU,
> > Ankara, Turkey.
> >
> > _______________________________________________
> > R-sig-Geo mailing list
> > R-sig-Geo@stat.math.ethz.ch
> > https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> >
>
> --
> Roger Bivand
> Economic Geography Section, Department of Economics, Norwegian School of
> Economics and Business Administration, Helleveien 30, N-5045 Bergen,
> Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
> e-mail: [EMAIL PROTECTED]
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo@stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-Geo mailing list
R-sig-Geo@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-geo

Reply via email to