i got that problem solved but i now have a new memory problem, the
error i get is
invalid command name " *randomnumber*callit"
while executing
" *randomnumber*callit"
("after" script)
searched the internet and found that there is some variable stuck
somewhere, here is the def cousing the error, is designed to read some
files (getting them from the lists self.files and self.workspaces)
make a plot and save the plot
def save2dmulti(self):
try:
os.mkdir(self.save+"/graph")
except:
pass
for x in range(0,1):
#fig = pyplot.figure()
for file in self.files:
ax = pyplot.subplot(111)#fig.add_subplot(111)
pyplot.hold(True)
for workspace in self.workspaces:
f = open(workspace+"/alignment.iuf","r")
idlist = pickle.load(f)
f.close()
self.__newdict = {}
for item in idlist:
self.__newdict[idlist[item]] = item
for x in range(0,1):
try:
f =
open(workspace+"/letters/letter_"+self.__newdict[file]+".txt", "r")
except:
print "gene "+file+" not found in
"+workspace+" skipping this workspace"
break
vals = pickle.load(f)
f.close()
base =
basecount =
for val in vals:
if val[0] == "A":
base.append("A")
basecount.append(val[1])
elif val[0] == "C":
base.append("C")
basecount.append(val[2])
elif val[0] == "T":
base.append("T")
basecount.append(val[3])
elif val[0] == "G":
base.append("G")
basecount.append(val[4])
N = len(base)
ind = numpy.arange(N)
width = 0.5
ax.plot(ind, basecount,'o-', label = workspace)
ax.set_xticks(ind)
ax.set_title(file)
pyplot.legend()
#print "one"
for workspacer in self.workspaces:
#print "pretry"
try:
#print "opening file"
f = open(workspacer+"/alignment.iuf","r")
idlist = pickle.load(f)
f.close()
#print "making dict"
self.__newdict = {}
for item in idlist:
self.__newdict[idlist[item]] = item
f =
open(workspacer+"/validated/"+self.__newdict[file]+".fa","r")
text = f.read()
text = text.split("\n")
#print text, text[0], text[1]
f.close()
f = open(self.save+"/temp.fa","w")
#print "check OK"+workspacer
t = text[0]+"\n"+text[1]+"\n"
f.write(t)
f.close()
output = ""
cline = "centroid_fold "+self.save+"/temp.fa"
test = subprocess.Popen(str(cline),stdout =
subprocess.PIPE,stderr = open(os.devnull))
output = test.communicate()[0]
#print output
output = output.split(">")
out = output[1]
out = out.split("\r\n")
#print out
xax =
counter =0
for x in range(0,len(base)):
xax.append(str(vals[counter][0])+"\n"+out[2][counter])
counter = counter +1
ax.set_xticks(ind)
ax.set_xticklabels(xax)
sav = file
sav =
sav.replace(":","_").replace("\\","_").replace("-","_").replace(">","")
#pyplot.show()
pyplot.savefig(self.save+"/graph/"+sav+".png")
os.remove(self.save+"/temp.fa")
pyplot.clf()
break
except:
#print workspacer +" failed"
#print "ERROR"
pass
the code itself works and does what it needs to do, side effect is
that when i later make and show a graph all the graphs made by this
code are also shown and i get the error
2009/10/14 Ryan May <rmay31@...287...>:
···
On Mon, Oct 12, 2009 at 8:09 AM, bas pigmans <mrnatrium@...287...> wrote:
hi
i am trying to use mathplot in a script that has to produce and store about
3000 graps a time, the problem i have is that something inside mathplot
keeps stroring in the memmory, (eigther the graph or the file to write to i
guess...) so once it reached 1.5GB of ram it crashes
i hope you can help me find a way to flush this memory usage
already tryed the .clf and .close options
In order to help you, we'll need to see a complete, minimal script
that shows the problem you're having. Memory issues usually depend on
the specifics of how you're doing something,
Ryan
--
Ryan May
Graduate Research Assistant
School of Meteorology
University of Oklahoma