The Solar-Stellar Spectrograph

[ Home | About | Tech Info & Data | Publications | References ]      [ Site by Jeffrey Hall | Research funded by NSF ]



The Bias class is a data reduction class to handle removal of the electronic bias from a CCD frame. It inherits ReduceTool. It allows bias removal in two ways: (1) subtraction of a scalar from each pixel of the CCD frame or (2) pixel-by-pixel subtraction of a 2D bias frame from the object frame. The class performs pixel-by-pixel subtraction if the bias2D data member points to a valid heap variable; otherwise it performs scalar subtraction. As with all the reducer objects, Bias implements methods that set up the various relevant quantities, and a go method that does the actual work. The code samples presented in the documentation below presuppose familiarity with IDL programming and syntax.

Version History

2008 July 22 - Documentation written.


Data Members

pointer stats

pointer bias2D


Method List





get_stats( )


init( )



Method Descriptions


PRO attach_2dbias

argument pointer data

Calls Root::add_history

Sets the object's bias2D data member to the pointer passed as the argument. This argument should be a pointer to a valid heap variable containing the 2D bias frame to be subtracted from the data frame. If a bias frame is already attached, a warning is sent to the event list. To change the bias frame to be used, remove the present reference using detach_2dbias.

Calling this function and then invoking the object's go method will cause 2D bias subtraction to be performed on the data frame, since the bias2D data member will point to a valid variable. To switch back to scalar debiasing, detach any attached 2D bias first.


PRO cleanup

Calls ReduceTool::cleanup

Destructor. Calls ReduceTool::cleanup and then frees its own data member pointers. Never call this procedure directly; it is invoked by IDL's Obj_Destroy function.


PRO define

Structure definition. Specifies the contents of the IDL structure instantiated by the Bias class. Used by Obj_New; do not invoke directly.


PRO detach_2dbias

Calls Root::add_history

Sets the object's bias2D data member to Ptr_New( ) (i.e., a null pointer that will return FALSE if tested with Ptr_Valid( ). It does not free the pointer, since this would destroy the heap variablem leaving it inaccessible to other objects if needed. It sends an advisory to the event list if the pointer is already invalid.


FUNCTION get_stats

Calls Tool::add_active_rect

Return variant stats

Returns the object's stats data member. Note that the stats themselves are returned, not the pointer.


PRO go

Calls Root::add_history, ObArray::get_at, Rect::get_bottom_top, Rect::get_left_right

Performs debiasing. If the data data member (of superclass Tool) is invalid, then no data are attached to the tool and debiasing cannot proceed. An error is sent to the log in this case. Otherwise, debiasing proceeds in the following steps.

1. The bias statistics are cleared.

2. If a valid 2D bias is attached to the Bias object, a pixel-by-pixel bias subtraction is performed. The simple operation is

* -= *Self.bias2D.

Then the stats data member is set to contain the result of IDL's Moment function called on bias2D, plus information about the distribution of data values in the bias frame:

mm = Moment( *Self.bias2D )

Self.stats = Ptr_New( [ mm, Min( *Self.bias2D ), Histogram( *Self.bias2D ) ] )

3. If a valid 2D bias is not attached to the Bias object, a scalar bias subtraction is performed. The method calculates the mean bias level in an overscan region determined by the dimensions of the active rectangle attached to the Tool. This rectangle is assumed to be the zeroth element of the ObArray Tool.rectList. We have

* -= mm,

where mm is again the output of Moment. In this case, the stats are set as follows:

Self.stats = Ptr_New( [ mm, Min( overscan ), Histogram( overscan ) ] )

To do a scalar bias subtraction, a valid rectangle must first be defined with set_overscan.



keyword bool verbose

Calls Tool::add_active_rect

Return bool TRUE, FALSE

Constructor. If the keyword verbose is set, the verbose data member (inherited from Tool) is set to TRUE. It then adds a single, empty active rectangle to the tool. It does not initialize its stats data member, since this variable will be set and populated by go. Never call this function directly; it is invoked by IDL's Obj_New function.


PRO set_overscan

keyword int left

keyword int bottom

keyword int right

keyword int top

Calls Tool::set_rect

Sets the zeroth active rectangle in the object's rectangle list to be defined by the coordinates passed in the arguments.


[Back to contents]

Supported by grants from the National Science Foundation.
[ Back to my home page | Email me: jch [at] lowell [dot] edu ]
The SSS is publicly funded. Unless explicitly noted otherwise, everything on this site is in the public domain.
If you use or quote our results or images, we appreciate an acknowledgment.
This site is best viewed with Mozilla Firefox.