How the Sequence Selects Work
This section is intended to clarify how Sequence Generator Pro selects work during sequence execution:
Parts of a Sequence
A sequence consists of three hierarchical components:
- Targets: These are at the highest level. A sequence may contain many targets.
- Events: Each target can contain many events. An event characterizes how a target is captured. An example of an event is "Light frame using the red filter at 2x2 binning".
- Frames: Each event can contain many frames. A frame is best characterized as an individual image that contains properties as set forth in its parent event.
Execution of a multi-target sequence can be straightforward if it remain static during data capture. When you decide you want to alter the ordering of targets or events in real time, you might observe unexpected behavior if you are not familiar with the sequencing rules.
The simplest multi-target sequence will function as follows:
- Work is selected based on the order of the targets, from top to bottom (unchecked targets are considered inactive and will not be selected for work).
- A target consists of N events. Each event in the target will be executed in order (depending on event ordering options).
- When a target's events are completed, that target is marked as such (with a checkmark icon) and the sequencer will move to the next active target in the list. It is important to note that a target can be marked complete with remaining frames to capture... typically when a target reaches its user defined end time. Once this happens, this target will never be selected to run until the sequence is reset or its "completed" status is cleared.
This basic set of rules gets a bit more complex when you decide to alter the sequence in real-time. Here are some rules that are good to understand:
- Moving targets: In general, targets operate using the "sticky target" principle. This means that once a target starts, it will generally finish before moving on to another target. This includes targets that are moved above the currently running target. Suppose you have two targets (target 1 and target 2) and target 1 is running. If you then decide to alter the order of the targets and place target 2 above target 1, target 1 will continue to run until it is finished, then it will run target 2. If you wish to run target 2 immediately, you can either reset the sequence or uncheck target 1 (abort the sequence if you want to do this immediately). Unchecking target 1 will cause the sequence to look for other work and target 2 will be selected (it is now ahead of target 1).
- Completed targets: When a target completes all of events, it will be marked as completed. Being marked as completed is temporary and applies only to the current run. Completed targets may be modified, but will not be considered for work during this run. This means that if you add two new frames to a completed target, the sequence will be "complete" even though it has not attempted to capture the new frames. Completed targets have a checkmark icon to the left of the target name.
Typical use cases:
- A sequence with two targets: Simply add one additional target and use each target's settings to provide a unique name. Select each target and provide events as appropriate. When you run the sequence, the top-most event will run until completion . When it finishes, the next event will run and then the sequence will be complete.
- A sequence with two targets and an early end time for target 1: This is useful if target 1 sets early and, instead of figuring out in advance, how much time you have available, you can just ask the sequence to capture as much data as possible for that target until a specified end time (found in the target's settings). This is essentially the same process as described above, except that target 1 will use an end time.
- A sequence with two targets and an early end time for target 1 and a delayed start for target 2: This is the same as the scenario directly above, except that when target 1 ends early, target 2 will delay start until the specified start time.
Special use cases:
- Forcing a moved target to run immediately: As mentioned above, targets operate using the "sticky target" principle (see Moving Targets above). There may be times where you don't want the currently running target to finish before moving to the target you just re-ordered (above the currently running target). In order to do this, you can either reset the sequence or perform the following operations:
- If you want to run the reordered target immediately, abort the sequence (otherwise skip this step and the new target will run after the current frame completes)
- Move the desired target to the top of the list
- Uncheck / deactivate the currently running target (now below the reordered target)
- If you aborted the sequence, run it.
- The sequence will now select new work from the top of the list.
- After the new target is selected, you can optionally re-check the original target if you want the sequence to revisit that work later.
Example: A sequence contains targets for Horsehead, M42 and the Rosette nebula (in that order). You start the sequence and then realize you wanted to start with M42 first. Unfortunately, the Horsehead target has already started and, as a result of this, it is "sticky". This means that any attempt to simply re-order the targets (even if you pause and restart) will result in the Horsehead target running to completion. In order to force M42 to run, you will want to abort the sequence, move M42 above Horsehead, un-check Horsehead (this will remove the "sticky"), restart the sequence and then finally re-check Horsehead so it will be picked up after M42 completes. Of course, this is only an example to illustrate how to do this, if you haven't really gotten too far into a sequence, the best option would likely be to reset the sequence.
- Forcing modified completed targets to run: As mentioned above, completed targets are no longer considered for selecting work. There may be times where you want to modify a completed target and force it to run. It should be noted that resetting a sequence will automatically make any new work valid for selection. When faced with this situation, you can open the target's setting and check the box labeled "Clear completed status". After clicking ok, that target will no longer be in a completed status and will be eligible for work.
Example: A sequence contains targets for Horsehead, M42 and the Rosette nebula (in that order). Horsehead runs until completion and the sequence moves on to M42. During acquisition of M42, you realize you want to capture some more frames for Horsehead. You move to the Horsehead target add a few more frames, but the target is still marked as complete. Under normal circumstances, you can't add more work to completed targets. But... if you really want to force the sequence to consider the new work for this target, you will need to open the settings for Horsehead and check the "Clear completed status" option. After clicking "OK", the target's icon will change from the completed check-mark icon to the pause icon. After M42 completes, the sequence will actually go back to Horsehead and finish your new frames (any target options like "center on when target starts" are applicable in this case).
When the sequence begins capture of a target it will continue its execution until it is done. That is to say that the sequencer will not select work between targets during execution. If you are using an event rotation option in a sequence that has multiple targets, the sequence will not rotate through all events in the sequence, but rather rotate through all events in the target and then move to the next target.
The sequencer selects works in a hierarchical manner. That is to say that it will always consider events on the target in the highest (top-most) position first. If you have defined multiple targets, the sequence will start executing events from the "top-most" target and finish with events in the "bottom-most" target. This logic will always remain true, even if you reorder the targets. For example, if you have three targets and run half of the events in the top-most target, pause, move target 2 to the top-most position, target 2 will start up when the sequence is resumed and the next available event for target 2 will begin to run. Targets can be re-ordered in real time and the same rules will apply (in this case the current event will always finish). If you pause and resume the sequence in such a way that does not cause the current / next target to change (i.e. run pause / resume with no target reordering), then the sequence will resume where it left off (i.e. same target, next event).
Targets and events that are not "checked" will not be considered for work.
Resetting the Sequence
There are several ways you can alter the state and progress of a sequence. See here for more details.