NRAO Home  >  Green Bank  |  Wiki Topic:    GB > Software > ObservingAPIBeta > ObservingAPIBuildingBlocks
   Changes | Index | Contents | Search | Statistics | Go

Observing API Building Blocks


The purpose of Turtle to to provide a series of building blocks that observers may utilize to create their own observation procedures; these building blocks can then be used to create complex movements of the beam across the sky. Turtle will also provide a pre-defined suite of commonly used procedures created by on-site astronomers for observers, which in turn may also be used as building blocks to create even more complex beam movements. Observers who only use the pre-defined procedures will probably not find this page useful, since they only deal with the procedures at a higher level (in a scheduling block). The suite of predefined procedures is enumerated later in this page as observing cases.



Building Blocks

circumpolar GetRise() GetSet()
northern (never sets) current time None
southern (never rises) None current time
      Note that Horizon only works for objects defined in catalogs
      with spherical coordinates.  Planets and ephemeris tables will not work.


Observing API Source Code for Selected Scan Types

The following examples show how the Observing API Building Blocks have been used to describe patterns of antenna motion which are commonly needed by observers. These scan types can be called directly in an observing script which is part of a Scheduling Block. Note: The creation of receiver and scan objects is omitted from the examples in order to focus attention on antenna movement rather than coding details.


Slew

The "Slew" observing procedure simply moves the GBT to a Location on the sky. The "Slew" observing procedure is composed of one building block - a MoveTo. Here is how a "Slew" might be implemented using the building blocks mentioned above:

beam     = receiver.GetBeam("1")
location = Location("J2000", "15:30:00", 14.0)

scan.SetDuration(60.0)

beam.MoveTo(location)


Track

The "Track" observing procedure causes the GBT to track a Location on the sky. The "Track" observing procedure is composed of two building blocks - a MoveTo a Location and a Move to an Offset. Here is how a "Track" might be implemented using the building blocks mentioned above:

beam     = receiver.GetBeam("1")
location = Location("J2000", "15:30:00", 14.0)
offset   = Offset("J2000", "00:15:00", 16.0)

scan.SetDuration(60.0)

scan.AddAnnotation("PROCNAME", "Track")
scan.AddAnnotation("PROCTYPE", "SIMPLE")
scan.AddAnnotation("PROCSIZE", 1)

beam.MoveTo(location)

scan.Comment("Track: Subscan 1 of 1\n")
scan.AddAnnotation("PROCSEQN", 1)

scan.Start()
beam.Move(offset)
scan.Stop()

In the implementation of "Track," an Offset does not have to be specified. This value defaults to None if an Offset is not specified.


Peak

The Peak procedure sweeps through the specified sky location in the four cardinal directions. Its primary use is to determine pointing offsets for use in subsequent procedures.

beam     = receiver.GetBeam("1")
location = Location("J2000", "01:37:41.30", "+33:09:35.4")
hOffset  = Offset("Encoder", "90:00", 0)
vOffset  = Offset("Encoder", 0, "90:00")

scan.SetDuration(60.0)

scan.AddAnnotation("PROCNAME", "Track")
scan.AddAnnotation("PROCTYPE", "SIMPLE")
scan.AddAnnotation("PROCSIZE", 4)

beam.MoveTo(location)
beam.Move(-hOffset/2)

scan.Comment("Peak: Subscan 1 of 4\n")
scan.AddAnnotation("PROCSEQN", 1)

scan.Start()
beam.Move(hOffset)
scan.Stop()

scan.Comment("Peak: Subscan 2 of 4\n")
scan.AddAnnotation("PROCSEQN", 2)

scan.Start()
beam.Move(-hOffset)
scan.Stop()

beam.MoveTo(self.location)
beam.Move(-vOffset/2)

scan.Comment("Peak: Subscan 3 of 4\n")
scan.AddAnnotation("PROCSEQN", 3)

scan.Start()
beam.Move(vOffset)
scan.Stop()

scan.Comment("Peak: Subscan 4 of 4\n")
scan.AddAnnotation("PROCSEQN", 4)

scan.Start()
beam.Move(-vOffset)
scan.Stop()


On-Off

The "On-Off" observing procedure can be described using two "Track" procedures - one "Track" for Off and one "Track" for On. Here is how "On-Off" might be implemented using the building blocks mentioned above:

beam     = receiver.GetBeam("1")
location = Location("J2000", "15:30:00", 14.0)

scan.SetDuration(60.0)

scan.AddAnnotation("PROCNAME", "OnOff")
scan.AddAnnotation("PROCTYPE", "SIMPLE")
scan.AddAnnotation("PROCSIZE", 2)

beam.MoveTo(self.location)

# On source
scan.Comment("OnOff: Subscan 1 of 2\n")
scan.AddAnnotation("PROCSEQN", 1)

scan.Start()
beam.Move(None)
scan.Stop()

beam.Move(self.offset)

# Off source
scan.Comment("OnOff: Subscan 2 of 2\n")
scan.AddAnnotation("PROCSEQN", 2)

scan.Start()
beam.Move(None)
scan.Stop()


Nod

The "Nod" observing procedure can be described using two "Track" procedures. Here is how "Nod" might be implemented using the building blocks mentioned above:

beam1    = receiver.GetBeam("1")
beam2    = receiver.GetBeam("2")
location = Location("J2000", "15:30:00", 14.0)

scan.SetDuration(60.0)

scan.AddAnnotation("PROCNAME", "Nod")
scan.AddAnnotation("PROCTYPE", "SIMPLE")
scan.AddAnnotation("PROCSIZE", 2)

# Track Beam 1
beam1.MoveTo(location)

scan.Comment("Nod: Subscan 1 of 2\n")
scan.AddAnnotation("PROCSEQN", 1)

scan.Start()
beam1.Move()
scan.Stop()

# Track Beam 2
beam2.MoveTo(location)

scan.Comment("Nod: Subscan 2 of 2\n")
scan.AddAnnotation("PROCSEQN", 2)

scan.Start()
beam2.Move()
scan.Stop()

Topic ObservingAPIBuildingBlocks . { Edit | Attach | Ref-By | Printable | Diffs | r1.17 | > | r1.16 | > | r1.15 | More }
Revision r1.17 - 27 Sep 2006 - 21:57 GMT - JoeBrandt
Parents: ObservingAPIBeta
Content copyright © 1999-2007 by the contributing authors.
All material on this collaboration platform is the property of the contributing authors.

Software.ObservingAPIBuildingBlocks moved from Data.ObservingAPIBuildingBlocks on 04 Nov 2004 - 19:57 by NicoleRadziwill - put it back