Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/ein16/synth/d2/test_writeDiderot.py
ViewVC logotype

Diff of /branches/ein16/synth/d2/test_writeDiderot.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4410, Fri Aug 12 18:28:32 2016 UTC revision 4411, Fri Aug 12 18:28:57 2016 UTC
# Line 32  Line 32 
32    
33  # type of field  # type of field
34  def fieldShape(f, fldty):  def fieldShape(f, fldty):
35      print "fldty: ",fldty      #print "fldty: ",fldty
36      foo = fty.toDiderot(fldty)      foo = fty.toDiderot(fldty)
37      f.write(foo.encode('utf8'))      f.write(foo.encode('utf8'))
38    
# Line 122  Line 122 
122          raise Exception ("unsupported placement")          raise Exception ("unsupported placement")
123    
124  def prntBinary(opr, e1, e2):  def prntBinary(opr, e1, e2):
125      print "prntBinary",opr.name      #print "prntBinary",opr.name
126      print "symb,",opr.symb      #print "symb,",opr.symb
127      if(opr.placement == place_left):      if(opr.placement == place_left):
128          return  (opr.symb)+"(("+e1+"),("+e2+"))"          return  (opr.symb)+"(("+e1+"),("+e2+"))"
129      elif(opr.placement == place_middle):      elif(opr.placement == place_middle):
# Line 246  Line 246 
246          #field type          #field type
247          # one or two operators?          # one or two operators?
248          if(app.isrootlhs):          if(app.isrootlhs):
249              print "going to 1"              #print "going to 1"
250              return gotop1(f,app, "",opfieldname1)              return gotop1(f,app, "",opfieldname1)
251          else: #twice embedded          else: #twice embedded
252              print "goint to 2"              #print "goint to 2"
253              return gotop2(f,app, "", opfieldname1)              return gotop2(f,app, "", opfieldname1)
254      else:      else:
255          return          return
# Line 296  Line 296 
296          opr_outer=app_outer.opr          opr_outer=app_outer.opr
297          app_inner=apply.get_unary(app_outer)          app_inner=apply.get_unary(app_outer)
298          opr_inner=app_inner.opr          opr_inner=app_inner.opr
299          def isProbe(ff, app):          def isProbe(ff, fld):
300              if(fty.is_Field(app.rhs.fldty)):              if(fty.is_Field(fld)):
301                  return ff+"(pos)"                  return ff+"(pos)"
302              else:              else:
303                  return ff                  return ff
304          def ifelse(e):          def ifelse(e):
305              k= "\n\tif("              k= "\n\tif(|"
306              k+=e+">0.01){\n\t"+set+"\t}\n\t"              k+=e+"|>0.01){\n\t"+set+"\t}\n\t"
307              k+="\n\telse{\n\t\t"+foo_out+" = "+outLineTF(oty, "7.2")+";\n\t}"              k+="\n\telse{\n\t\t"+foo_out+" = "+outLineTF(oty, "7.2")+";\n\t}"
308              return k              return k
309          if(opr_inner.id==op_division.id):          if(opr_inner.id==op_division.id):
310              foo+=ifelse(isProbe("F1", app_inner))              foo+=ifelse(isProbe("F1", app_inner.rhs.fldty))
311          elif(opr_outer.id==op_division.id):          elif(opr_outer.id==op_division.id):
312              if(opr_inner.arity==2):              if(opr_inner.arity==2):
313                  foo+=ifelse(isProbe("F2", app_outer))                  foo+=ifelse(isProbe("F2", app_outer.rhs.fldty))
314              else:              else:
315                  foo+=ifelse(isProbe("F1", app_outer))                  foo+=ifelse(isProbe("F1", app_outer.rhs.fldty))
316            elif(opr_outer.id==op_inverse.id):
317                #print "here found inverse"
318                #print "app_outer", app_outer.name
319                if(opr_inner.arity==2):
320                    #print "inner-2"
321                    detop = "det("+prntBinary(opr_inner,"F0","F1")+")"
322                    foo+=ifelse(isProbe(detop, app_inner.oty))
323                else:
324                    #print "inner-1"
325                    detop = "det("+prntUnary(opr_inner,"F0")+")"
326                    foo+=ifelse(isProbe(detop, app_inner.oty))
327            elif(opr_inner.id==op_inverse.id):
328                foo+=ifelse(isProbe("det(F0)", app_inner.oty))
329          else:          else:
330              foo += set              foo += set
331      f.write(foo.encode('utf8'))      f.write(foo.encode('utf8'))
# Line 342  Line 355 
355          a0 = re.search(foo_in, line)          a0 = re.search(foo_in, line)
356          if a0:          if a0:
357              #replace field input line              #replace field input line
358              print "inshape"              #print "inshape"
359              inShape(f,app)              inShape(f,app)
360              continue              continue
361          # is it output tensor line?          # is it output tensor line?
362          b0 = re.search(foo_outTen, line)          b0 = re.search(foo_outTen, line)
363          if b0:          if b0:
364              print "outline"              #print "outline"
365              outLine(f, app)              outLine(f, app)
366              continue              continue
367          # operation on field          # operation on field
368          c0 = re.search(foo_op,line)          c0 = re.search(foo_op,line)
369          if c0:          if c0:
370              print "replace op"              #print "replace op"
371              replaceOp(f, app)              replaceOp(f, app)
372              continue              continue
373          # index field at position          # index field at position
374          d0 = re.search(foo_probe,line)          d0 = re.search(foo_probe,line)
375          if d0:          if d0:
376              print "indexg"              #print "indexg"
377              indexG(f, pos, app)              indexG(f, pos, app)
378              continue              continue
379          # length number of positions          # length number of positions
380          e0=re.search(foo_length, line)          e0=re.search(foo_length, line)
381          if e0:          if e0:
382              print "Set length"              #print "Set length"
383              setLength(f,len(pos))              setLength(f,len(pos))
384              continue              continue
385          # nothing is being replaced          # nothing is being replaced
# Line 384  Line 397 
397          product *= x          product *= x
398      #  print "product", product      #  print "product", product
399      if(isVis):      if(isVis):
400          print "is vis"          #print "is vis"
401          m2 = len(pos)+1          m2 = len(pos)+1
402          # print "m2",m2          # print "m2",m2
403          w_shape=" -s "+str(product)+" "+str(m2)          w_shape=" -s "+str(product)+" "+str(m2)
# Line 392  Line 405 
405          os.system("./"+p_out+" -o tmp.nrrd")          os.system("./"+p_out+" -o tmp.nrrd")
406          os.system("unu reshape -i tmp.nrrd "+w_shape+" | unu save -f text -o "+p_out+".txt")          os.system("unu reshape -i tmp.nrrd "+w_shape+" | unu save -f text -o "+p_out+".txt")
407      else:      else:
408          print "not is vis"          #print "not is vis"
409          t= p_out+".txt"          t= p_out+".txt"
410          if(os.path.exists(t)):          if(os.path.exists(t)):
411              print "found txt pre run"              print "found txt pre run"
412          if(os.path.exists(p_out)):          if(os.path.exists(p_out)):
413              print "does ./ exsist?"              print "does ./ exsist?"
414          k="./"+p_out          k="./"+p_out
415          print "attempting"+k          #print "attempting"+k
416          os.system(k)          os.system(k)
417          if(os.path.exists(t)):          if(os.path.exists(t)):
418              print "found txt post run"              print "found txt post run"

Legend:
Removed from v.4410  
changed lines
  Added in v.4411

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0