Thank you for your response! I don't believe that the timeout quota is the problem unfortunately, I checked and I have 49 hours and I've been doing stuff at least every couple of hours on the project.
I want to try saving the output to a file using Pickle, that sounds very cool. I'm reading this tutorial for help so far:
http://www.diveintopython3.net/serializing.html And I read somewhere that Sage has integrated save/load functions(using pickle as the backend?). Should I just use the save/load functions in sage or import pickle and use it directly?
Another problem with doing this is that my computation is running in macaulay2, using the Sage/M2 interface. Here's how it looks:
macaulay2.eval("""
K = toField(QQ[zet]/(zet^8 - zet^6 + zet^4 - zet^2 + 1))
needsPackage "InvariantRing"
A = []
B = []
C1 = []
C2 = []
C3 = []
C4 = []
C5 = []
C6 = []
C7 = []
C8 = []
C9 = []
C10 = []
for a1 from 1 to 20 do (for a2 from 1 to 20 do (for a3 from 1 to 20 do A = A|[matrix{{zet^(a1),0,0},{0,zet^(a2),0},{0,0,zet^(a3)}}] ) )
for i from 0 to (#A-1) do B = B|[generateGroup({A#i},K)]
""")
last time, my problem was that I was trying to output too large an amount of data from M2 at once, so i split it up into smaller parts this time. That's why I defined the arrays C1 through C10. All the for loop does is give me a long list, B, with every possible diagonalized cyclic group generated when you're dealing with the 20th root of unity in 3x3 matrices. I don't think that part matters much, it works fine, and the array has 8000 matrix groups in in (20^20^20).
Once I have all that stuff defined, I run the following code:
macaulay2.eval("for j from 0 to (799) do C1 = C1|[toString molienSeries B#j]")
This converts the molien series of a group from the array B, converts it into a string, and then stores it in C1.
I have 10 different versions of that line in different cells, the different between them being the start and stop points of the for loop, and which list I have it write to. For example, I have the line for list C2 running from 800 to 1599. What's strange is, the first one(from 0 to 799) works fine, it takes several hours but it does finish computing. Once it's finished, i try running the second one and leave it for a few hours. That one hasn't worked out, whenever I get back on sage to check on it after a few hours, it's crashed and all the previous computations and variables have been reset. I've written some code to convert the M2 object into a string that I can assign to a variable in Sage, but that only works when the computation has finished in macaulay (it basically just using to_sage() function on C1, C2, etc as they finish computing). Is it possible for me to use pickle to save the M2 computation up until the point it crashes, and then have it pick up where it left off? Or is my only option to make the for loops even shorter?
Thanks!