Dear All,
I am quite a beginner with Rpy, but I have started using it in
conjunction with SciPy on the Python side.
Now, I am a bit puzzled since the same code is running without any
problem on my Debian testing laptop whereas it breaks down on my
Fedora Core 5 box.
True, FC5 has a the previous SciPy release, but the problem seems to
be on the R/Rpy side (most likely I am doing something wrong).
The Rpy script I am using relies on the igraph R library to study the
connected components in a graph.
It is not a long script and I include it directly in the following:

#!/usr/bin/R
library(igraph)

 distance=function(x){
#f=dist(x,method="euclidean")
f=dist(x,method="euclidean", p=3)

my_dist=as.matrix(f)
return(my_dist)
}

mycluster = function(dist_mat,d){
  #where x has to be the distance matrix! I will use it to generate a graph
my_g=graph.adjacency(dist_mat<=d,mode="undirected")
my_g=simplify(my_g)
nc=no.clusters(my_g)
nc=as.matrix(nc)
cluster_comp=clusters(my_g)$csize
cluster_comp=as.matrix(cluster_comp)
cluster_comp=rbind(nc,cluster_comp)
#print("the dimensions are")
#print(dim(cluster_comp))
#I have to turn everything into a matrix for SciPy!!!!!
return(cluster_comp)
}

Then there is the bit in my Python code where the R functions are
called (the R script is saved as cluster_functions.R and there is at
the beginning of the Python code the statement
import scipy as s):

        #Now I try loading the R script
        
        r.source("cluster_functions.R")

        #I now calculate the number of clusters in each configuration

        n_clusters=s.zeros(n_config)
#       min_dist=s.zeros(n_config)
        dist_mat=s.zeros((n_part,n_part))
        for i in xrange(0,n_config):
                test_arr=tot_config[i,:]
                test_arr=s.reshape(test_arr,(n_part,3))
#               if (i==14):
#                       p.save("test_14.dat",test_arr)
                #dist_mat=r.distance(test_arr)
                x_pos=x_arr[i,:]
                y_pos=y_arr[i,:]
                z_pos=z_arr[i,:]
                dist_mat=d_calc.distance_calc(x_pos,y_pos,z_pos, box_size)
#               if (i==71):
#                       p.save("distance_matrix_71.dat",dist_mat)
#                       p.save("x_pos_71.dat",x_pos)


                
                clust_struc= (r.mycluster(dist_mat,threshold))
#                print'clust_struct is, ', clust_struc
#               n_clusters[i]=r.mycluster(dist_mat,threshold)


                n_clusters[i]=clust_struc[0]
#               print 'the shape of cluster_struct is, ',s.shape(clust_struc)
                #dist_mat=s.where(dist_mat==0.,1000.,dist_mat)
#               min_dist[i]=(s.ravel(dist_mat)).min()


                #print 'The cluster distribution is, ', clust_struc[1:,0]
                #save the cluster size
                cluster_name="cluster_dist%05d"%i
                p.save(cluster_name,clust_struc[1:,0])

#       print 'the evolution of the number of clusters is, ', n_clusters

        p.save("number_cluster.dat",n_clusters)


And finally, this is the output I get:

Traceback (most recent call last):
  File "./plot_statistics.py", line 749, in ?
    clust_struc= (r.mycluster(dist_mat,threshold)) #a cumbersome
rpy.RException: Error in as.matrix(adjmatrix) : (list) object cannot
be coerced to 'double'

Exception in thread Thread-1 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
  File "/usr/lib/python2.4/threading.py", line 442, in __bootstrap
  File "/usr/lib/python2.4/threading.py", line 422, in run
  File "/usr/lib/python2.4/site-packages/rpy.py", line 112, in r_eventloop
exceptions.AttributeError: 'NoneType' object has no attribute 'isSet'

The problems seems to be the matrix I am creating to return the
results of the igraph package.
Basically, nc is a scalar (number of clusters) and
cluster_comp=as.matrix(cluster_comp) is a sequence containing the
number of particles in each cluster e.g.:
nc=4 ---->4 clusters
cluster_comp= 1 5 7 19   ----> number of particles in each cluster
and then I want to stitch them together in a way that can be
manipulated as a scipy array.
Sorry for the long post, but this exception does not exist on my
Debian testing box, so I had to describe it in detail.
Any help is really appreciated.
Many thanks

Lorenzo

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
rpy-list mailing list
rpy-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rpy-list

Reply via email to