At this point, the script writes out all of its pieces, so that’s a landmark in this debugging process. Now, I’m catching problems where the R script crashes, and they’re becoming more cryptic as I go, which is to be expected.
I found a line in my original Stella model that has an essentially meaningless model, but it’s still assigned a rank even though it doesn’t have any inflows/outflows. This means that it’s written out as a blank assignment in the R code. So, I added an additional test in the models loop. I took out the automatic rank assignment and instead moved it down…
if len(ltxt) > 0:
modelrank+=1
models[init_match.group('initname')].rank=modelrank
In part of this process, I decided that maybe it was a problem that in the body of the R script, there was a vector being created of array references before any array was created. For now, I’m writing out a blank array, and then the converter values in the body of the script.
convlist=convertors.keys()
parms=[]
convT = []
arrays = []
for conv in convlist:
if ('[' in conv):
ifsplit = re.split('\[',conv)[0]
if (ifsplit not in arrays):
arrays.append(ifsplit)
ff.writelines([ifsplit," <- c()\n"])
ff.writelines(["\n"])
convs=[]
for conv in convlist:
if (convertors[conv].value is not None): convs.append(conv)
convs = sorted(convs)
for i in range(0,len(convs)):
convertors[convs[i]].value = '{0:g}'.format(convertors[convs[i]].value)
ff.writelines([convs[i]," <- ",str(convertors[convs[i]].value),"\n"])
I’m also reformatting #s to get rid of superfluous trailing .0’s.