import pyclassfiller from pyclassfiller import code # The various codes needed by the Class Data Format import numpy # The Y data (and CAL%COUNT) must be numpy arrays fileout = pyclassfiller.ClassFileOut() fileout.open(file='classdemo.30m',new=True,over=True,size=999999,single=True) obs = pyclassfiller.ClassObservation() obs.head.presec[:] = False # Disable all sections except... obs.head.presec[code.sec.gen] = True # General obs.head.presec[code.sec.pos] = True # Position obs.head.presec[code.sec.spe] = True # Spectroscopy nchan = 128 for i in xrange(100): # Fill the observation with dummy values # obs.head.gen.num = 0 obs.head.gen.ver = 0 obs.head.gen.teles = "MYTELES%s" % (i+1) obs.head.gen.dobs = 0 obs.head.gen.dred = 0 obs.head.gen.kind = code.kind.spec obs.head.gen.qual = code.qual.unknown obs.head.gen.scan = 1 obs.head.gen.subscan = 1 obs.head.gen.ut = 0. obs.head.gen.st = 0. obs.head.gen.az = 0. obs.head.gen.el = 0. obs.head.gen.tau = 0. obs.head.gen.tsys = 100. obs.head.gen.time = 100. obs.head.gen.parang = 0. obs.head.gen.xunit = code.xunit.velo # Unused here # obs.head.pos.sourc = "MYSOURCE%s" % (i+1) obs.head.pos.system = code.coord.equ obs.head.pos.equinox = 2000.0 obs.head.pos.proj = code.proj.none obs.head.pos.lam = numpy.pi/2. obs.head.pos.bet = numpy.pi/2. obs.head.pos.projang = 0.d0 obs.head.pos.lamof = 0. obs.head.pos.betof = 0. # obs.head.spe.line = "MYLINE%s" % (i+1) obs.head.spe.restf = 123456.7 obs.head.spe.nchan = nchan obs.head.spe.rchan = 1. obs.head.spe.fres = 1. obs.head.spe.vres = -1. obs.head.spe.voff = 0. obs.head.spe.bad = -1000. obs.head.spe.image = 98765. obs.head.spe.vtype = code.velo.obs obs.head.spe.vconv = code.conv.rad obs.head.spe.doppler = 0. # obs.datay = numpy.sin(2.*numpy.pi / nchan * numpy.array(range(nchan),dtype=numpy.float32)) # obs.write() fileout.close() del obs,fileout