|
@@ -21,7 +21,7 @@ defaultValues={\
|
|
|
'project':'Analysis/Run',\
|
|
|
'schema':'lists',\
|
|
|
'query':'runs',\
|
|
|
- 'view':'withStrings'}
|
|
|
+ 'view':'WithStrings'}
|
|
|
|
|
|
def get(setup,par):
|
|
|
try:
|
|
@@ -104,18 +104,23 @@ def main(parFiles,jobDir,startDir='NONE'):
|
|
|
print('Using {}'.format(jobDir))
|
|
|
if startDir!='NONE':
|
|
|
print('Using solution from {}'.format(startDir))
|
|
|
- t0,y0,s0,lut,lutSE=getStartPointFromDir(startDir)
|
|
|
+ #t0,y0,s0,lut,lutSE=getStartPointFromDir(startDir)
|
|
|
+ startPoint=getStartPointFromDir(startDir)
|
|
|
print('t0={}'.format(t0))
|
|
|
else:
|
|
|
- t0,y0,s0,lut,lutSE=getStartPoint(setup)
|
|
|
+ #t0,y0,s0,lut,lutSE=getStartPoint(setup)
|
|
|
+ startPoint=getStartPoint(setup)
|
|
|
|
|
|
#we should reorder S1 to match model.lutSE
|
|
|
#S1 is nxm, so we should reorder columns
|
|
|
sIn=numpy.zeros(s0.shape)
|
|
|
+ s0=startPoint['s0']
|
|
|
+ t0=startPoint['t0']
|
|
|
+ y0=startPoint['y0']
|
|
|
if s0.size>0:
|
|
|
for x in model.lutSE:
|
|
|
#this could be modified for different ordering of lut as well
|
|
|
- sIn[:,model.lutSE[x]]=s0[:,lutSE[x]]
|
|
|
+ sIn[:,model.lutSE[x]]=s0[:,startPoint['lutSE'][x]]
|
|
|
#copy t0 to setup to help get the strides right
|
|
|
setup['t0']=t0
|
|
|
strides=getStrides(setup)
|
|
@@ -241,8 +246,12 @@ def read3D(fName):
|
|
|
def loadSolutionFromRef(setup, loadAll=False):
|
|
|
|
|
|
if setup['startFromRef']=='None':
|
|
|
- return 0,numpy.array([]),numpy.array([]),numpy.array([]),numpy.array([])
|
|
|
+ return {'t':0,'sol':numpy.array([]),'sOut':numpy.array([]),'x':numpy.array([]),'y':numpy.array([])}
|
|
|
|
|
|
+ ref=setup['startFromRef']
|
|
|
+ return loadSolutionFromRunRef(setup,ref,loadAll)
|
|
|
+
|
|
|
+def connect(setup):
|
|
|
nixSuite=os.path.join(os.path.expanduser('~'),'software','src','nixSuite')
|
|
|
sys.path.append(os.path.join(nixSuite,'wrapper'))
|
|
|
import nixWrapper
|
|
@@ -250,7 +259,7 @@ def loadSolutionFromRef(setup, loadAll=False):
|
|
|
|
|
|
import labkeyInterface
|
|
|
import labkeyFileBrowser
|
|
|
- #import labkeyDatabaseBrowser
|
|
|
+ import labkeyDatabaseBrowser
|
|
|
|
|
|
net=labkeyInterface.labkeyInterface()
|
|
|
fconfig=os.path.join(os.path.expanduser('~'),'.labkey',setup['network'])
|
|
@@ -258,15 +267,28 @@ def loadSolutionFromRef(setup, loadAll=False):
|
|
|
#debug
|
|
|
net.getCSRF()
|
|
|
|
|
|
- #db=labkeyDatabaseBrowser.labkeyDB(net)
|
|
|
+ db=labkeyDatabaseBrowser.labkeyDB(net)
|
|
|
fb=labkeyFileBrowser.labkeyFileBrowser(net)
|
|
|
+ return db,fb
|
|
|
|
|
|
- ref=setup['startFromRef']
|
|
|
- #refFilter={'variable':'runRef','value':ref,'oper':'eq'}
|
|
|
- #ds=db.selectRows(setup['project'],setup['schema'],setup['query'],[refFilter],setup['view'])
|
|
|
+def getRunRef(setup,key):
|
|
|
+ #get solution from key rather than runRef (easier to copy, understand)
|
|
|
+ db,fb=connect(setup)
|
|
|
+ keyFilter={'variable':'Key','value':'{}'.format(key),'oper':'eq'}
|
|
|
+ ds=db.selectRows(setup['project'],setup['schema'],setup['query'],[keyFilter],setup['view'])
|
|
|
+ try:
|
|
|
+ if len(ds['rows'])==0:
|
|
|
+ return 'NONE'
|
|
|
+ except KeyError:
|
|
|
+ print(ds)
|
|
|
+ return 'NONE'
|
|
|
+ print('Found {} rows for {}'.format(len(ds['rows']),key))
|
|
|
+ return ds['rows'][0]['runRef']
|
|
|
+
|
|
|
+def loadSolutionFromRunRef(setup,ref,loadAll=False):
|
|
|
+
|
|
|
+ db,fb=connect(setup)
|
|
|
|
|
|
- #parFileString=ds['rows'][0]['parameterFileString']
|
|
|
- #parFiles=parFileString.split(';')
|
|
|
remoteDir=fb.formatPathURL(setup['project'],'/'.join(['jobs',ref]))
|
|
|
|
|
|
try:
|
|
@@ -330,17 +352,28 @@ def loadSolutionFromDir(jobDir,loadAll=False):
|
|
|
except KeyError:
|
|
|
data[f]=idata
|
|
|
i+=1
|
|
|
- return data['t'],data['sol'],data['se'],data['sOut'],data['qt'],lut,lutSE,setup
|
|
|
+ data['lut']=lut
|
|
|
+ data['lutSE']=lutSE
|
|
|
+ data['setup']=setup
|
|
|
+ return data
|
|
|
|
|
|
def getStartPointFromDir(jobDir):
|
|
|
- t,sol,se,sOut,qt,lut,lutSE,setup=loadSolutionFromDir(jobDir)
|
|
|
- return t[-1],sol[-1],sOut[-1],lut,lutSE
|
|
|
+ data=loadSolutionFromDir(jobDir)
|
|
|
+ return startPointObject(data)
|
|
|
+
|
|
|
+def startPointObject(data):
|
|
|
+ vrs={'t':'t0','sol':'y0','sOut':'s0'}
|
|
|
+ out={vrs[x]:data[x][-1] for x in vrs}
|
|
|
+ addVrs=['lut','lutSE']
|
|
|
+ for x in addVrs:
|
|
|
+ out[x]=data[x]
|
|
|
+ return out
|
|
|
|
|
|
def getStartPoint(setup):
|
|
|
if setup['startFromRef']=='None':
|
|
|
- return 0,numpy.array([]),numpy.array([]),[],[]
|
|
|
- t,sol,se,sOut,qt,lut,lutSE,oldSetup=loadSolutionFromRef(setup)
|
|
|
- return t[-1],sol[-1],sOut[-1],lut,lutSE
|
|
|
+ return {'t':0,'sol':numpy.array([]),'sOut':numpy.array([]),'lut':[],'lutSE':[]}
|
|
|
+ data=loadSolutionFromRef(setup)
|
|
|
+ return startPointObject(data)
|
|
|
|
|
|
if __name__=="__main__":
|
|
|
parFiles=sys.argv[1].split(';')
|