docs: def magic_read(self,infile):
          """
          reads  a Magic template file, puts data in a list of dictionaries
          """
  #        print "calling magic_read(self, infile)", infile
          hold,magic_data,magic_record,magic_keys=[],[],{},[]
          try:
              f=open(infile,"r")
          except:
              return [],'bad_file'
          d = f.readline()[:-1].strip('\n')
          if d[0]=="s" or d[1]=="s":
              delim='space'
          elif d[0]=="t" or d[1]=="t":
              delim='tab'
          else:
              print('error reading ', infile)
              sys.exit()
          if delim=='space':file_type=d.split()[1]
          if delim=='tab':file_type=d.split('\t')[1]
          if file_type=='delimited':
              if delim=='space':file_type=d.split()[2]
              if delim=='tab':file_type=d.split('\t')[2]
          if delim=='space':line =f.readline()[:-1].split()
          if delim=='tab':line =f.readline()[:-1].split('\t')
          for key in line:
              magic_keys.append(key)
          lines=f.readlines()
          for line in lines[:-1]:
              line.replace('\n','')
              if delim=='space':rec=line[:-1].split()
              if delim=='tab':rec=line[:-1].split('\t')
              hold.append(rec)
          line = lines[-1].replace('\n','')
          if delim=='space':rec=line[:-1].split()
          if delim=='tab':rec=line.split('\t')
          hold.append(rec)
          for rec in hold:
              magic_record={}
              if len(magic_keys) != len(rec):
  
                  print("Warning: Uneven record lengths detected: ")
                  #print magic_keys
                  #print rec
              for k in range(len(rec)):
                 magic_record[magic_keys[k]]=rec[k].strip('\n')
              magic_data.append(magic_record)
          magictype=file_type.lower().split("_")
          Types=['er','magic','pmag','rmag']
          if magictype in Types:file_type=file_type.lower()
  #        print "magic data from magic_read:"
  #        print str(magic_data)[:500] + "..."
  #        print "file_type", file_type
          return magic_data,file_type