DS9(1)

πŸ“¦
version 8.6 Β· 4 versions
, in debian trixie, ubuntu resolute, ubuntu stonking

🌸 ds9(1) β€” General Commands Manual 🌸

okay bestie, welcome to section 1 of the General Commands Manual, and it's all about ds9 and I'm literally so excited to walk you through it πŸ’–


✨ NAME ✨

ds9 β€” image tool for astronomy


✨ SYNOPSIS ✨

ds9 [options]

✨ DESCRIPTION ✨

DS9 DS9 (yes it says it twice, we love a dramatic entrance πŸ‘‘) is the modern image tool used by astronomers for visualization of astronomical data.

It supports a plethora of command line options, which may be used in a script-like fashion. iconic behavior ✨

An instance of the program is entirely controllable from the commandline with the XPA tools. no cap, the whole thing 🫢


✨ OPTIONS ✨

  • -analysis β€” histogram save

and then the page just… drops a whole parade of -region lines on us. here they all are, verbatim, every single one πŸ’…

ds9 -region composite

ds9 -region dissolve

ds9 -region template foo.tpl

ds9 -region template foo.tpl at 13:29:55.92 +47:12:48.02 fk5

ds9 -region savetemplate foo.tpl

ds9 -region group new

ds9 -region group foo new

ds9 -region group foo update

ds9 -region group foo select

ds9 -region group foo color red

ds9 -region group foo copy

ds9 -region group foo delete

ds9 -region group foo cut

ds9 -region group foo font 'times 14 bold'

ds9 -region group foo move 100 100

ds9 -region group foo movefront

ds9 -region group foo moveback

ds9 -region group foo property delete no

ds9 -region copy

ds9 -region cut

ds9 -region paste wcs

ds9 -region undo

ds9 -region open

ds9 -region close

  • -red β€” For RGB frames, sets the current color channel to red. πŸ“

Syntax

-red

Example:

ds9 -rgb -red foo.fits

  • -restore β€” Restore DS9 to a previous state from a backup save set. it's giving time travel, but make it backups πŸ¦‹

Syntax

-restore <filename>

Example:

ds9 -restore ds9.bck

  • -rgb β€” Create RGB frame and control RGB frame parameters. the full rainbow moment 🌈

Syntax

-rgb []
 [red| green| blue]
 [channel [red| green| blue] ]
 [view [red| green| blue]  [yes| no] ]
 [system <coordsys> ]
 [lock wcs| crop| slice| bin| scale| scalelimits| colorbar| block| smooth [yes| no] ]
 [open| close]

Example:

ds9 -rgb # create new rgb frame

ds9 -rgb red # set current channel to red

ds9 -rgb channel red # set current channel to red

ds9 -rgb view blue no # turn off blue channel

ds9 -rgb system wcs # set rgb coordinate system

ds9 -rgb lock wcs yes

ds9 -rgb lock crop yes

ds9 -rgb lock slice yes

ds9 -rgb lock bin yes

ds9 -rgb lock scale yes

ds9 -rgb lock scalelimits yes

ds9 -rgb lock colorbar yes

ds9 -rgb lock block yes

ds9 -rgb lock smooth yes

ds9 -rgb open

ds9 -rgb close

  • -rgbarray β€” Load raw data array cube into rgb frame. raw data, no filter, main character energy ✨

Syntax

-rgbarray <filename> [[xdim=<x> , ydim=<y> | dim=<dim> ] , [zdim=3] , bitpix=<b> , skip=<s> , endian=[little| big] ]

Example:

ds9 -rgbarray foo.arr[dim=512, zdim=3, bitpix=-32, endian=little]
$cat foo.arr |  ds9 -rgbarray -[dim=512, zdim=3, bitpix=-32, endian=little]

  • -rgbcube β€” Load FITS rgbcube into rgb frame. 🧊 (cube… get it… okay moving on)

Syntax

-rgbcube <filename>

Example:

ds9 -rgbcube foo.fits
$cat foo.fits |  ds9 -rgbcube -

  • -rgbimage β€” Load FITS rgbimage into rgb frame. πŸ–ΌοΈ

Syntax

-rgbimage <filename>

Example:

ds9 -rgbimage foo.fits
$cat foo.fits |  ds9 -rgbimage -

  • -rotate β€” Controls the rotation angle (in degrees) of the current frame. spin it, bestie πŸ’«

Syntax

-rotate [<value> ]
 [to <value> ]
 [open| close]

Example:

ds9 -rotate 45

ds9 -rotate to 30

ds9 -rotate open

ds9 -rotate close

  • -samp β€” Configure SAMP protocol. protocol girlies rise πŸ™ˆ

Syntax

-samp [yes| no] | client [yes| no] ] | hub [yes| no] ] | web hub [yes| no] ] | connect| disconnect] [broadcast [image| table] ] [send [image| table] <application> ] [hub [start| stop| info] ]

Example:

ds9 -samp yes

ds9 -samp connect

ds9 -samp broadcast

ds9 -samp broadcast table

ds9 -samp send table

ds9 -samp send table topcat

ds9 -samp hub info

  • -saturation β€” For HLS and HSV frames, sets the current color channel to saturation. πŸ’…

Syntax

-saturation

Example:

(and that's where this part cuts off β€” the example's still loading, more pages incoming πŸŽ€)

πŸ“Ž real talk, the running footer on this page reads exactly:
ds9 -hsv -saturation foo.fits

πŸ’Ύ -save β€” save that data, bestie

okay so -save grabs the loaded image data of your current frame and writes it out as FITS. that's it, that's the whole assignment. your pixels, preserved, iconic πŸ’–

Syntax

-save[fits|rgbimage|rgbcube|mecube|mosaic|mosaicimage] <filename> [image|table|slice]

Example

ds9 -save foo.fits
ds9 -save fits foo.fits image
ds9 -save fits foo.fits table
ds9 -save fits foo.fits slice
ds9 -save rgbimage foo.fits
ds9 -save rgbcube foo.fits
ds9 -save mecube foo.fits
ds9 -save mosaic foo.fits
ds9 -save mosaicimage foo.fits

πŸ“Έ -saveimage β€” screenshot era, no cap

creates a snap shot of the current DS9 window and saves it in whatever image format you asked for 🫢 and listen: if you don't specify a format, the file name extension is what decides the output format. so pick your extension wisely, bestie.

optional parameters, because we love options: jpeg quality int(1-100), and the tiff compression method. periodt ✨

Syntax

-saveimage[fits|eps|gif|tiff|jpeg|png] <filename>
-saveimage <filename>.jpeg [int(1-100)]
-saveimage <filename>.tiff [none|jpeg|packbits|deflate]

Example

ds9 -saveimage ds9.tiff

ds9 -saveimage jpeg ds9.jpeg 75

✨ scale ✨

okay bestie this one is a whole vibe β€” -scale is the icon that runs the show for the limits and the color scale distribution. she decides what your data actually looks like. main character energy, no cap. πŸ‘‘

πŸ’… Syntax

-scale [linear|log|pow|sqrt|squared|asinh|sinh|histequ]
       [log exp <value>]
       [datasec yes|no]
       [limits <minvalue> <maxvalue>]
       [mode minmax|<value>|zscale|zmax]
       [scope local|global]
       [match]
       [match limits]
       [lock [yes|no]]
       [lock limits [yes|no]]
       [open|close]

🌸 Example

ds9 -scale linear

ds9 -scale log exp 100

ds9 -scale datasec yes

ds9 -scale histequ

ds9 -scale limits 1 100

ds9 -scale mode zscale

ds9 -scale mode 99.5

ds9 -scale scope local

ds9 -scale match

ds9 -scale match limits

ds9 -scale lock yes

ds9 -scale lock limits yes

like… look at her go πŸ¦‹ every single one of those is a real, legal invocation, and they all do different things, so don't be out here mixing them up fr fr. ✨

  • -scale open β€” okay so this one's here, and that's literally the whole thing, no extra lore attached πŸ’…
  • -scale close β€” same energy, this is the counterpart, and again that's all there is to say about it, bestie πŸŽ€
  • shm β€” this one's the main character of this little trio: it Loads a shared memory segment into the current frame ✨ like, that's the whole job, that's the assignment, and it ate 🫢

fr fr if you were waiting for a deep-dive on the first two, there just isn't one in this bit β€” they're listed plain, so I'm handing them to you plain πŸ’€ no invented behaviour, no made-up tea, we don't do that here πŸ™ˆ

okay so here's the whole shape of it, bestie β€” this is the master list of every way you can spell out these forms on the command line. One form per line, and every single one of them ends with that optional <filename> if you wanna point at a file instead of just an id. Look at her. She contains multitudes. πŸ’…

-shm [<key> [<filename>]]
     [key <id> [<filename>]]
     [shmid <id> [<filename>]]
     [fits [key|shmid] <id> [<filename>]]
     [mosaicimage [iraf|wcs|wcsa...wcsz|wfpc2] [key|shmid] <id> [<filename>]]
     [mosaic [iraf|wcs|wcsa...wcsz] [key|shmid] <id> [<filename>]]
     [rgbcube [key|shmid] <id> [<filename>]]
     [rgbimage [key|shmid] <id> [<filename>]]
     [rgbarray [key|shmid] <id> [xdim=<x>,ydim=<y>|dim=<dim>,zdim=3],bitpix=<b>,[skip=<s>]]
     [array [key|shmid] <id> [xdim=<x>,ydim=<y>|dim=<dim>],bitpix=<b>,[skip=<s>]]

quick vibe check on what you're looking at, because the nesting is giving layers on layers πŸŽ€:

  • -shm kicks the whole thing off, and everything after it is bracketed β€” meaning optional, meaning choose your fighter 🫢
  • the first two are the bare-bones ones: just -shm with an optional <key>, or -shm with the word key plus an <id>
  • then shmid, then fits, then mosaicimage β€” and not me noticing mosaicimage is the only one with wfpc2 in its little menu of choices, the others get iraf, wcs, or wcsa...wcsz ✨
  • mosaic has the same menu but no wfpc2, and rgbcube, rgbimage, rgbarray and array just take [key|shmid] and go πŸ’€
  • and the last two? rgbarray and array are the high-maintenance icons of the group β€” they want xdim=<x>,ydim=<y> or dim=<dim>, and rgbarray also drags along zdim=3, then bitpix=<b>, then an optional skip=<s> πŸ‘‘
ngl bestie, do not hand-type these from memory. The | means "pick one," the ... means "a whole range lives in there," and the commas in those last two forms are literally part of the syntax. Copy, don't freestyle. πŸ™ˆ

Example: 🌸

okay so here she is in the wild β€” first the simplest possible call, then the same thing but with the word key out front so you're saying it's a key, not a shmid. iconic, no notes πŸ’–

ds9 -shm 102

ds9 -shm key 102
notice how 102 doesn't change between the two β€” it's the <id> either way, you're just telling ds9 which flavour of id it's looking at. πŸ¦‹

so like, the -shm thing has SO many flavors bestie, it's giving ✨options✨ for days. let's go through every single one, no skips, no cap πŸ’…

first up, the simplest vibe β€” you can just hand it a shmid directly:

ds9 -shm shmid 102 foo

okay and if you'd rather speak in fits terms:

ds9 -shm fits 100 foo

now we get into mosaic territory πŸ¦‹ and there's a whole palette of mosaic types here, so buckle up:

ds9 -shm mosaicimage iraf key 100 foo
ds9 -shm mosaicimage wcs key 100 foo
ds9 -shm mosaicimage wcsa key 100 foo
ds9 -shm mosaicimage wfpc2 key 100 foo

like, iraf, wcs, wcsa, wfpc2 β€” all four mosaicimage options, iconic πŸ‘‘

then plain-ol' mosaic (not mosaicimage, they're different bestie, don't @ me):

ds9 -shm mosaic iraf key 100 foo
ds9 -shm mosaic wcs key 100 foo

just the two for mosaic: iraf and wcs. periodt.

and then the rgb squad 🌈 β€” three of them, all taking a key:

ds9 -shm rgbcube key 100 foo
ds9 -shm rgbimage key 100 foo

last but absolutely not least, rgbarray, which is the ✨special✨ one because it takes a shmid and a bracketed descriptor instead of just a key:

ds9 -shm rgbarray shmid 102 [dim=32, zdim=3, bitpix=-32]

see that [dim=32, zdim=3, bitpix=-32] at the end?? yeah that's the whole shape of the array right there β€” dim, zdim, bitpix, all chillin in the brackets. keep it exactly like that, no edits, i'm obsessed πŸ’–

lowkey that's the entire -shm lineup and it's giving thorough. take a lil breather, there's more coming 🫢

okay so finishing the -shm thought from before πŸ’… β€” the line lands exactly like this, no cap:

ds9 -shm array shmid 102 [dim=32, bitpix=-32]

  • -sia β€” Support for VO Simple Image Access protocol πŸ›°οΈβœ¨πŸ’–

Here's the tea, bestie: the first command is the one that creates a new search 🌱. Every single other command after that? It operates on the last search created 🎯 β€” unless you say otherwise with the current command. iykyk. 🫢

Syntax πŸ“

-sia[2mass|akari|astrowise|cadc|cxc|hla|mast|sdss|skyview|tgssadr] [cancel] [clear] [close] [save <filename>] [export rdb|tsv <filename>] [coordinate <ra> <dec> <coordsys>] [crosshair] [current <ref>] [name <object>] [print] [retrieve] [radius <value> degrees|arcmin|arcsec] [sky <skyframe>] [skyformat <skyformat>] [system <coordsys>] [update]

So the service lineup is 2mass, akari, astrowise, cadc, cxc, hla, mast, sdss, skyview, and tgssadr πŸŽ€ β€” pick your fighter, they're all iconic.

And the sub-commands tagging along for the ride: cancel, clear, close, save <filename>, export rdb|tsv <filename>, coordinate <ra> <dec> <coordsys>, crosshair, current <ref>, name <object>, print, retrieve, radius <value> degrees|arcmin|arcsec, sky <skyframe>, skyformat <skyformat>, system <coordsys>, and update πŸ‘‘πŸ’…

Example 🌸

ds9 -sia 2mass
ds9 -sia cancel

the way that's it, that's the whole -sia situation πŸ¦‹πŸ’œ

okay so we're still deep in the -sia zone, and bestie, -sia is basically the group chat you slide subcommands into β€” one bullet, one command, every single one of them, verbatim, no edits, no cap πŸ’…

  • clear β€” ds9 -sia clear ✨
  • close β€” ds9 -sia close
  • coordinate β€” ds9 -sia coordinate 202.48 47.21 fk5, and yes, those three args are 202.48, 47.21 and fk5 πŸ¦‹
  • crosshair β€” ds9 -sia crosshair
  • current β€” ds9 -sia current 2mass
  • export β€” ds9 -sia export tsv bar.tsv
  • name β€” ds9 -sia name m51
  • print β€” ds9 -sia print
  • retrieve β€” ds9 -sia retrieve
  • save β€” ds9 -sia save foo.xml
  • radius β€” ds9 -sia radius 1 degrees
  • sky β€” ds9 -sia sky fk5
  • skyformat β€” ds9 -sia skyformat degrees
  • system β€” ds9 -sia system wcs
  • update β€” ds9 -sia update

  • single β€” Set display mode to single. One mode. Single. It's giving main character energy, obviously πŸŽ€

Syntax: -single

Example:

ds9 -single skyview
  • skyview β€” Support for SkyView image server at HEASARC. obsessed, actually πŸ”₯
Not me pointing out that the example line above runs straight into the next entry in the source text β€” we keep it exactly as written, bestie, snuggled up and all πŸ’–

✨ Syntax ✨

okay bestie, here's the whole shape of it in one breath β€” this is the -skyview syntax, laid out exactly how the page lays it out 🌸

-skyview [] [<object>] [name <object> | clear] [<ra> <dec>] # in wcs fk5 [size <width> <height> degrees|arcmin|arcsec] [pixels <width> <height>] [save yes|no] [frame new|current] [update frame|crosshair] [survey <survey>] [open|close]

that's it, that's the whole thing πŸ’… square brackets mean optional, <angle brackets> are the spots where you plug something in, and a | is a "pick one of these" moment. the # in wcs fk5 bit is sitting right there in the middle of it, so don't come for me, I'm just transcribing πŸ’–


πŸŽ€ Example πŸŽ€

the page hands you a whole lil starter pack of invocations, and I'm handing them right back to you, untouched, exactly as written 🫢

ds9 -skyview
ds9 -skyview m31
ds9 -skyview name m31
ds9 -skyview name clear
ds9 -skyview 00:42:44.404 +41:16:08.78
ds9 -skyview size 60 60 arcmin
ds9 -skyview pixels 600 600
ds9 -skyview save yes
ds9 -skyview frame current
ds9 -skyview update frame

look at that range, no cap 😭 bare invocation, an object by name, coordinates, sizing in arcmin, sizing in pixels, saving, framing, updating β€” it's giving full menu, main character energy for real πŸ‘‘

More -skyview tea, bestie β€” here's how you actually call it πŸ’…

ds9 -skyview survey sdssi

ds9 -skyview open

ds9 -skyview close

sleep 😴

Not me giving you a literal nap button. This one delays execution for specified number of seconds. And if you're too lazy to say how long? The default is 1 second. Fr fr, it just vibes for a sec and then keeps going.

Syntax

-sleep [#]

Example:

ds9 -sleep

ds9 -sleep 2

slice / noslice 🍰

So slice is telling ds9 that the next files loaded are to treated as slices of a cube β€” like, the images are all layers of one big 3D situation, not separate lil pics. Iconic. And if you're over it? You can turn the whole thing off with the noslice command. Slay, reversible queen πŸ‘‘

Syntax

-slice <filename>
-noslice

Example:

ds9 -slice *.fits

So, bestie, let me put you onto -smooth πŸ’– β€” it smooths the current image, or it sets up the smooth parameters for you. Both. It's giving versatility, periodt.

And before anyone comes for me: yes, -noslice is sitting right here in this section too. Noted. Logged. Never skipped. πŸ’…

Here's the tea on what each function actually does to your pixels:

  • Boxcar β€” width = 2*radius+1
  • Tophat β€” diameter = 2*radius+1
  • Gaussian β€” diameter = 2*radius+1, mean=0
  • Elliptical Gaussian β€” diameter = 2*radius+1, mean=0

✨ Syntax ✨

-smooth [] [yes|no] [function boxcar|tophat|gaussian|elliptic]
        [radius <value>] [radiusminor <value>] [sigma <value>]
        [sigmaminor <value>] [angle <value>] [match]
        [lock [yes|no]] [open|close]

✨ Example: ✨

ds9 -smooth
ds9 -smooth yes
ds9 -smooth function tophat
ds9 -smooth radius 4

Look at those β€” four lil' glow-ups, all yours πŸ¦‹ Run one, run all, whatever your heart says. 🌸

okay so the -smooth saga keeps going, bestie β€” these are all examples, so you can literally copy-paste the vibe πŸ’…

ds9 -smooth radiusminor 4
ds9 -smooth sigma 2.0
ds9 -smooth sigmaminor 2.0
ds9 -smooth angle 45
ds9 -smooth match
ds9 -smooth lock yes
ds9 -smooth open
ds9 -smooth close

  • -squared β€” picks the squared scale function for the current frame. that's the whole job, she's simple, she's iconic ✨
    • Syntax: -squared
    • Example: ds9 -squared
  • -sqrt β€” picks the square root scale function for the current frame. yes it's the sibling of -squared, they're giving twins πŸ¦‹
    • Syntax: -sqrt
    • Example: ds9 -sqrt
  • -source β€” sources TCL code from a file. basically you hand her a file and she runs the TCL in it, no questions asked 🫢
    • Syntax: -source <filename>

and the example for that one? hold on, it's literally coming right upβ€”

okay bestie before we get into it, the page hands us this little leftover right here:

ds9 -source extensions.tcl

that's the tail end of the bit above, and then it launches straight into the good stuff. πŸŽ€

  • -tcl β€” Execute one TCL command. πŸͺ„ one command, that's it, that's the whole job.
⚠️ Note: this a different behavior from previous versions of DS9. so if you're running on pure muscle memory from an older DS9, vibe check yourself before assuming it behaves the same. πŸ’€

Syntax ✨

-tcl <tcl command>

Example 🌸

ds9 -tcl 'puts "Hello, World"'

  • -tiff β€” Load TIFF image into current frame. πŸ–ΌοΈ TIFF girlies, this one's for you.

Syntax ✨

-tiff <filename>

Example 🌸

ds9 -tiff foo.tiff

and because we simply must pipe things around here:

$cat foo.fits | ds9 -tiff -

yep, that lone - is sitting in the filename spot doing the work. 🫢

  • tile β€” Controls the tile display mode. 🧩

and that's where this part runs out of page, so hold that thought β€” more is coming. πŸ’œ

okay so here's the literal spelling of -tile, bestie β€” the whole menu of things it can swallow, in order:

-tile
[]
[yes|no]
[mode grid|column|row]
[grid]
[grid mode automatic|manual]
[grid direction x|y]
[grid layout <col> <row>]
[grid gap <pixels>]
[row]
[column]

everything in those square brackets is optional, and [] on its own is the "no arguments at all, thank u next" case. the words mode, grid, direction, layout, gap, row and column are literal keywords β€” you type them exactly like that, no vibes-based paraphrasing πŸ’…


✨ Syntax ✨

the shapes it comes in:

-tile
[] [yes|no] [mode grid|column|row] [grid] [grid mode automatic|manual] [grid direction x|y] [grid layout <col> <row>] [grid gap <pixels>] [row] [column]

like. <col>, <row> and <pixels> are the placeholders β€” you swap in actual numbers there, not the words themselves. don't be the girl who types <pixels> and wonders why nothing happened 😭


πŸŽ€ Example: πŸŽ€

these are all valid, fr fr:

ds9 -tile
ds9 -tile yes
ds9 -tile mode row
ds9 -tile grid
ds9 -tile grid mode manual
ds9 -tile grid direction x

see how each one just stacks a lil more detail on top of the last? -tile alone, then a yes/no, then a mode, then full-on grid girlie mode with grid, grid mode, grid direction… the pipeline is piping 🫢


ds9 -tile grid layout 5 5

okay so here's you setting up a grid layout that's 5 by 5 β€” five rows, five columns, all cute and even πŸ’…


ds9 -tile grid gap 10

and here's the same energy but with a gap of 10 between them 🫢


ds9 -tile row

row mode, bestie 🌸


ds9 -tile column

column mode, no cap ✨


  • -title name β€” this one changes the display window title to whatever name you hand it. like, you literally get to name your window. main character behaviour fr fr πŸ‘‘

✨ Syntax ✨

-title name

✨ Example: ✨

ok so real talk bestie β€” the raw page has a stray -title / Voyager fragment wedged right here above this option, that's the leftover from the -title entry earlier, it's not part of what's below πŸ’… don't let it jump-scare you
  • -unix name β€” sets the IRAF unix socket name, the socket IRAF uses to communicate with DS9. The default is /tmp/.IMT%d, so that the standard IRAF unix socket is defined. 🫢

Syntax ✨

-unix name

Example: πŸŽ€

(…and the example lines are dropping right below, keep scrolling bestie πŸ’–)

  • -unix β€” the socket-name option, and its value is the template "/tmp/.IMT%d". 🧚
  • unix_only β€” only use the IRAF unix socket name, bestie, that's the whole vibe πŸ’…. This is the same as -fifo none -port 0.

✨ Syntax ✨

-unix_only

πŸŽ€ Example πŸŽ€

the example is literally right there in the next part, hold on πŸ™ˆπŸ’–
  • ds9 -unix_only update β€” bestie, this one refreshes your current frame, or just a region of a frame, whichever vibe you're on. ✨

Now, in the second form, the first argument is the number of the fits HDU β€” and heads up, that count starts with 1 β€” and the remaining args are a bounding box in IMAGE coordinates. πŸ“¦

By default, the screen gets updated the next available idle cycle, so it's not like, instantly-instant, it just waits its turn like a polite little icon. 🫢

BUT β€” and this is the fun part β€” you can also just force an immediate update whenever you want, by throwing in the NOW option. No waiting, no patience, no ~vibes-based delay~. You said now, so it's now, bestie. ✨

Syntax πŸ’…

-update []
 [# x1 y1 x2 y2]
 [now]
 [now # x1 y1 x2 y2]
Lowkey obsessed with how flexible this is. Empty? Fine. Coordinates? Fine. now? Fine. now plus coordinates? Also fine. She contains multitudes. πŸ‘‘

Examples 🫢

Just plain, no extras, let her do her thing:

ds9 -update

Now with a lil rectangle of coordinates because you're being specific about it:

ds9 -update 1 100 100 300 400

And finally, the impatient icon behaviour β€” now and nothing else:

ds9 -update now

That's the whole move. Three little invocations, three completely different energies. Pick your fighter. 🌸

  • -update β€” the line here reads now 1 100 100 300 400, and that is the entire thing πŸ’€ so it's now, then 1, 100, 100, 300, 400, in exactly that order, no commas, no renaming, no creative liberties πŸ™ˆ
  • -url β€” loads a FITS file from a URL straight into the frame you're currently in</p> πŸ’–πŸŒ no local path required, she'll go get it for you, main character behaviour fr fr

Syntax:

-url <url>

Example:

ds9 -url http://foo.bar.edu/foo.fits
  • -value β€” for HSV frames, this sets the current color channel to value 🎨✨ that's it, that's the whole vibe check.

Syntax:

-value

Example:

...and we're still rolling through this bit, so here's the rest, untouched and exactly as it lands:

ds9 -hsv -value foo.fits

✨ version ✨

okay this one is giving one job, done perfectly πŸ’… It returns the current version of DS9 and exits. That's the whole personality. It tells you what version you're running and then it dips. Iconic behavior honestly, no notes 🫢

Syntax

-version

Example:

ds9 -version

πŸ¦‹ view πŸ¦‹

This one controls the GUI. yep, that's it β€” that's the entire job description, bestie. short, sweet, slaying 🌸


✨ Syntax ✨

okay bestie, so -view has a whole little grammar of its own and it's giving "build your own dashboard" energy πŸ’… every single bracket-y bit is optional, and you just stack the ones you want, okay? like a lil charcuterie board of display settings πŸŽ€

-view
  [layout horizontal|vertical|basic|advanced]
  [multi yes|no]
  [keyvalue <string>]
  [info yes|no]
  [panner yes|no]
  [magnifier yes|no]
  [buttons yes|no]
  [icons yes|no]
  [colorbar yes|no]
  [graph horizontal|vertical|yes|no]
  [filename yes|no]
  [object yes|no]
  [keyword

like… look at her 😭 every one of those <pink>yes|no</pink> pairs is literally just a little on/off switch you flip, and the ones with three or four choices (horizontal|vertical|basic|advanced for layout, and horizontal|vertical|yes|no for graph) are the ones where you gotta pick a vibe, not just a boolean 🌸

and yes, the graph one is being extra β€” it takes either a direction (horizontal or vertical) or a plain yes/no, so she's flexible like that πŸ’β€β™€οΈ no cap.

heads up bestie: keyvalue is the only one here that wants an actual <string> handed to it β€” everybody else just wants a yes/no or a keyword. don't be out here passing strings to panner, she will not know what to do with that πŸ™ˆ

and then there's [keyword β€” still going, still mysterious, we love a cliffhanger πŸ’€ stay tuned, the syntax section isn't done with us yet πŸ¦‹

and the list just keeps going bestie, we are so back πŸ’– every single one of these takes a yes or a no, and you already know which one you're picking 😌

  • ... yes|no] β€” the tail end of the one that got cut off in the last part, don't @ me, that's just how the manpage rolled 🫢
  • [minmax yes|no] β€” minmax, toggled with a plain little yes or no ✨
  • [lowhigh yes|no] β€” lowhigh, same deal, yes or no πŸŽ€
  • [units yes|no] β€” units, yes or no, iconic behavior honestly 🌸
  • [image|physical|wcs|wcsa...wcsz yes|no] β€” okay so here you get choices inside your choices 😭 it's image, or physical, or wcs, or wcsa...wcsz, and then a yes or a no tacked on the end. yes, that ... is literally in there, that is the manpage's own doing and not mine πŸ’€ main character energy fr fr πŸ‘‘
  • [frame yes|no] β€” frame, yes or no πŸ¦‹
  • [rgb red yes|no] β€” rgb red, and yep, yes or no πŸ’…
  • [rgb green yes|no] β€” rgb green, yes or no πŸ“
  • [rgb blue yes|no] β€” rgb blue, yes or no 🌈
  • [hls hue yes|no] β€” hls hue, yes or no πŸ’œ
  • [hls lightness yes|no] β€” hls lightness, yes or no ⭐
  • [hls saturation yes|no] β€” hls saturation, yes or no πŸ”₯

and there's literally more where that came from, so keep scrolling bestie, we are not done here πŸ˜­πŸ™ˆ

  • hsv hue yes|no β€” the H of the HSV trio, and yes bestie it's the exact same yes/no energy as everything else in this family. Flip it on, flip it off. πŸŽ€
    • hsv saturation yes|no β€” the S of the HSV trio, still living that yes/no toggle life. πŸ’…
    • hsv value yes|no β€” the V of the HSV trio, rounding out the set, and nope, still just yes or no. No plot twist, no secret third option. 😌

✨ Example ✨

okay so here's what actually calling these looks like, one per line, no cap:

ds9 -view layout vertical

ds9 -view multi yes

ds9 -view keyvalue BITPIX

ds9 -view info yes

ds9 -view panner yes

ds9 -view magnifier yes

ds9 -view buttons yes

like… look at that. layout vertical to stack things up, multi yes to go multi-frame mode, keyvalue BITPIX to key off the BITPIX value, then info, panner, magnifier and buttons all switched on with a lil yes. iconic. πŸ”₯

quick reminder bestie: every single one of those takes the values exactly as written β€” vertical, yes, BITPIX β€” so don't get cute and swap the spelling, the vibe check is case- and letter-sensitive fr fr. πŸ’–

Like okay bestie, here's the greatest hits of the -view command line flex πŸ’… β€” each one spins up a display with a different panel already turned on, so you don't gotta click around like a lost girlie. Copy, paste, slay:

ds9 -view icons yes

Icons panel? On. Say less. ✨

ds9 -view colorbar yes

Colorbar coming through, so you can actually read what those pixels mean 🌈

ds9 -view graph horizontal yes

Graph panel but make it horizontal β€” the layout is giving spreadsheets but cuter πŸ“Š

ds9 -view filename yes

Filename view showing, so you never lose track of which file you're looking at πŸ™ˆ

ds9 -view object yes

Object panel up and running β€” your celestial bestie's got a name tag now πŸͺ

ds9 -view keyword yes

Keyword panel vibes, for when you wanna peek at all that header info πŸ‘‘

ds9 -view minmax yes

minmax view, so you can see the range of your data at a glance πŸ’–

ds9 -view lowhigh yes

lowhigh view β€” lowkey/highkey but for pixel values 😭

ds9 -view wcsa yes

WCSA view activated. It's giving world coordinate system energy, periodt 🧚

ds9 -view frame yes

Frame view, so every frame gets its own lil moment in the spotlight 🌸


That's the whole -view menu of yes-es, fr fr β€” flip any of these to no and it just won't show up, simple as. Keep reading bestie, there's more πŸ’œ

  • -view β€” the values it takes are rgb, red, yes, and visual. This one is the color visual picker: it forces DS9 to use the specified color visual. πŸ’…
🚨 bestie READ THIS: this argument MUST be the first argument listed. Like, first-first. Not second, not "after that one other flag I wanted", first. And it requires the visual to be available β€” if it isn't, that's a whole problem, so vibe check your display first. 🫢

Syntax:

-visual [truecolor|truecolor8|truecolor16|truecolor24]

Example:

  • -visual truecolor24 β€” okay bestie, so this is the visual vibe check: you pass truecolor24 to it. Run it like ds9 -visual truecolor24 and you're literally slaying. πŸ’…βœ¨
  • vla β€” Support for VLA Sky Survey. πŸŒŒπŸ‘‘

✨ Syntax ✨

okay so this is the syntax breakdown, bestie, and it's giving optional brackets on brackets πŸ’…. every single token, exactly as it came, no cap:

-vla
[]
[<object>]
[name <object> | clear]
[<ra> <dec>]
#
in
wcs
fk5
[size <width> <height> degrees|arcmin|arcsec]
[save yes|no]
[frame new|current]
[update frame|crosshair]
[survey first|stripe82]
[open|close]

like, the way these are all lined up ✨. iconic.

Example

and here's the example that shows it in action:

ds9 -vla

that's the vibe, slay πŸŽ€


okay bestie, this is the part where we show you what it actually looks like when you drive ds9 from the command line with the -vla switch. ten lil one-liners, each one a whole vibe, each one exactly as it's written. No cap, no edits, no "improvements". Copy-paste at your own risk (it's fine, they're fine, you're fine) πŸ’…

  • ds9 -vla m31 β€” the classic. just the -vla flag and a target name, and you're off. short, sweet, iconic ✨
  • ds9 -vla name m31 β€” same energy but you're being explicit about it, saying the word name out loud like the main character you are. πŸ‘‘
  • ds9 -vla name clear β€” instead of a name, you pass clear. not me wiping the slate clean mid-session πŸ™ˆ
  • ds9 -vla 00:42:44.404 +41:16:08.78 β€” no words, just coordinates β€” right ascension then declination, dropped straight in. it's giving "I know exactly where I'm going" πŸ’«
  • ds9 -vla size 60 60 arcmin β€” three little tokens: the word size, then 60, then 60, then the units arcmin. numbers stay numbers, units stay units πŸŽ€
  • ds9 -vla save yes β€” the word save, and then yes. consent culture but for files 🫢
  • ds9 -vla frame current β€” frame says what, current says which. two words, one job, slay
  • ds9 -vla update frame β€” note the order bestie, update comes first, frame comes second. do not flip them, I am begging 😭
  • ds9 -vla survey stripe82 β€” survey is the keyword, stripe82 is the value. iykyk 🌈
  • ds9 -vla open β€” and the grand finale, a single lonely word with nothing after it. she's done, she's just open, periodt πŸ’–

so the pattern is: ds9 -vla, then a keyword, then however many arguments that keyword wants β€” zero, one, two, three, whatever. ⭐ Some of these take a target, some take a coordinate pair, some take a couple of numbers and a unit, some take a single word, and one of them takes literally nothing at all. the range?? unmatched πŸ¦‹

and yes, m31 shows up twice because name is how you set it and the bare form is just... the bare form. Both are in the list, so both are getting written down. πŸ’€

Bestie, the option rollout continues and this little bite is short but it's serving πŸ¦‹

  • -vla β€” Support for NRAO VLSS Sky Survey. πŸ›°οΈβœ¨
  • close
  • vlss

That's genuinely the whole drop, no cap. -vla is the one wearing the description β€” Support for NRAO VLSS Sky Survey. β€” and close and vlss are just chillin' right there in the same part of the list with nothing else attached to them, so I'm not gonna make up lore that isn't there πŸ’€

Not me handing you three lines and calling it a day 😭 the page is long, there is so much more where this came from, so stay with me πŸŽ€

✨ Syntax ✨

okay so before you type a single character, bestie, you need to see the whole shape of -vlss, because it's a lot and it's giving runway walk. here it is, every bracket, every pipe, exactly as written, no edits from me:

-vlss [] [<object>] [name <object> | clear] [<ra> <dec>] # in wcs fk5 [size <width> <height> degrees|arcmin|arcsec] [save yes|no] [frame new|current] [update frame|crosshair] [open|close]

and now let's break it down piece by piece, like we're going through an outfit and deciding what actually slays πŸ’…

  • -vlss β€” the flag itself. the main character. the whole reason we're here. πŸ‘‘
  • [] β€” an empty pair of square brackets, sitting right there after the flag. yes, genuinely. it's in the syntax. no, I don't make the rules.
  • [<object>] β€” optionally, an object.
  • [name <object> | clear] β€” either the word name followed by an object, or the word clear. pick your fighter. πŸ₯Š
  • [<ra> <dec>] β€” an ra and a dec, together, holding hands. 🫢
  • # β€” a literal #. that's it. that's the token.
  • in wcs fk5 β€” the words in, wcs and fk5, in that order, right there in the middle of the syntax. periodt.
  • [size <width> <height> degrees|arcmin|arcsec] β€” the word size, then a width, then a height, and then one of degrees, arcmin or arcsec. three options, choose wisely. πŸŽ€
  • [save yes|no] β€” the word save, set to yes or no.
  • [frame new|current] β€” the word frame, set to new or current.
  • [update frame|crosshair] β€” the word update, set to frame or crosshair.
  • [open|close] β€” either open or close. and that's the whole vibe check. 🌈

πŸ’« Example πŸ’«

two examples, and honestly they're lowkey the cutest little pair:

ds9 -vlss

just the flag. no object, no extras, nothing β€” running it bare and unbothered. ✨

ds9 -vlss m31

and here we're handing it m31 alongside the flag. that's the only difference between these two: one has an object, one doesn't. πŸ’–


so yeah, that's the syntax and that's the examples β€” keep going bestie, there's still more coming πŸ’œ


okay so this is the part where the manpage just throws a whole gallery of VLSS examples at you, one after another, like a slideshow of its best angles πŸ’… and honestly? every single one of them matters, so let's go through them all, no skipping, no skimming, bestie.

Each one is a ds9 invocation with the -vlss option and a sub-command hanging off it. Here's the full set, in order, exactly as written:

  • name it β€” hand the survey a name, here m31:
ds9 -vlss name m31
  • clear the name β€” the clear sub-command, doing its little reset thing:
ds9 -vlss name clear
  • point it at a spot on the sky β€” right ascension and declination, in hh:mm:ss.sss and +dd:mm:ss.ss form:
ds9 -vlss 00:42:44.404 +41:16:08.78
  • set the size β€” 60 60 in units of arcmin:
ds9 -vlss size 60 60 arcmin
  • save it β€” yes, as one does:
ds9 -vlss save yes
  • frame, but make it current:
ds9 -vlss frame current
  • update the frame:
ds9 -vlss update frame
  • and just… open πŸ‘‘
ds9 -vlss open

that's the whole run-through, no notes, every line preserved like the little artifact it is 🫢 notice how the pattern never changes β€” it's always ds9 -vlss followed by whatever you want it to do, and the arguments trail along after like they're holding hands with the sub-command. name takes a word or clear, the bare coordinate form takes two sexagesimal values, size takes two numbers plus a unit, save takes yes, and frame and update each take a frame-ish keyword. iconic, consistent, obsessed ✨

and there's still more coming, so don't you dare close the tab πŸ’–

the command ds9 is here, and it's bringing -nvess, close, and vo along for the ride πŸ’–

  • -nvess β€” no description in this chunk, just the flag itself, but we're including it because every detail is sacred πŸ’…
  • -vo β€” Invoke an connection to a Virtual Observatory site. (yes, the manpage really said "an connection", we're just the messenger 😭)

Syntax:

-vo [method xpa|mime] [server <url>] [internal yes|no] [delay #] [<url>] [connect <url>] [disconnect <url>] [open|close]

Example:

(and that's where this part dips, so the example is a mystery for now πŸ•΅οΈβ™€οΈ)


okay so -vo is the whole virtual-observatory vibe, and she comes with a little squad of subcommands, so let's run through them one by one because they're all kinda cute πŸ¦‹

first up: method. you're telling ds9 how to talk to the VO services, and bestie you have options:

ds9 -vo method xpa

that's the classic move, she's using XPA to chatter back and forth πŸ’…


then there's server, where you point her at a server. and look, she does not care about your vibes β€” she wants a real URL:

ds9 -vo server "http://foo.bar.edu/list.txt"

note the quotes bestie, because URLs be URLing and shells be shelling πŸ™ˆ


next, internal. this one toggles whether she spins up her own internal VO server. yes means yes:

ds9 -vo internal yes

iconic. self-sufficient. main character energy fr fr πŸ‘‘


and then there's delay, which is literally just the keep-alive timing. she pings to stay awake, and you decide how long she waits between lil naps:

ds9 -vo delay 15 # keep-alive delay

15 seconds of chill, then she's back at it ✨


okay now the service-y ones. chandra-ed β€” that's the Chandra Ed server, no argument needed, she just knows:

ds9 -vo chandra-ed

you can also connect to it explicitly if you're feeling thorough:

ds9 -vo connect chandra-ed

and naturally, what goes up must come down, so disconnect:

ds9 -vo disconnect chandra-ed

she's logging off, no hard feelings, we love a clean exit 🫢


aaaand last but never least, open:

ds9 -vo open

that's the one that actually throws open the VO interface so you can go browse the cosmos like it's a lil app store 🌈⭐


quick vibe check: every one of these rides on -vo, and they stack the way you'd expect β€” pick your method, point at your server, flip internal on if you want, tune the delay, then connect/disconnect services or just open the thing. keep going bestie, there's more where this came from πŸ’–

  • -vo β€” okay so -vo is the one with little sub-things tucked underneath it, and the page lists them like this:
    • close β€” that's the whole thing the page gives us here. No description, no elaboration, and bestie I am not about to invent one πŸ™ˆ
    • wcs β€” Controls the World Coordinate System for the current frame. If the wcs system, skyframe, or skyformat is modified, the info panel, compass, grid, and

and yes, that sentence is literally still going 😭 the page cuts off mid-thought right there β€” no cap, that's just where this chunk of the manpage ends. The rest of that list is coming up next, so don't panic. 🫢


  • -mecube <filename> β€” -mecube, and it takes a <filename>. That's it, that's the line. No extra lore on this one yet, so we keep it exactly as written and move on. ✨

🌸 Example:

the example is loading in the next bit, hold please πŸ’…

...and yes bestie, you can totally pipe that data in, she's flexible like that πŸ’…

ds9 -mecube foo.fits
$cat foo.fits | ds9 -mecube -

Look at that β€” read it off disk, or stream it straight down the pipe with - standing in for "the data's coming from stdin, bestie, don't worry about it". Both serve the exact same snack. πŸ“


minmax ✨

Okay so this is the part where we talk about how DS9 decides the min and max data values from the data. That's literally the whole vibe of minmax, no cap.

And then there's SCAN β€” SCAN will scan all data. That's it, that's the whole thing. She looks at everything, every last pixel, no skipping, no shortcuts. Thorough queen energy fr fr πŸ‘‘


Syntax ✨

okay so the -minmax option has its own whole lil grammar and honestly it's giving "build your own adventure" πŸ’… here's the shape of it:

-minmax
  [scan|sample|datamin|irafmin]
  [mode scan|sample|datamin|irafmin]
  [interval #]
  [rescan]

that's the whole vibe: you can hand it a bare mode, or say mode and then the mode, or tweak the interval, or just yell rescan at it πŸ¦‹


Examples:

ds9 -minmax scan
ds9 -minmax mode scan
ds9 -minmax interval 100
ds9 -minmax rescan mode

and Select the current mode. πŸ‘‘

ngl the flags are literally verbatim up there β€” don't go freestyling the spelling, bestie, or it's not gonna hit the way you want it to 😭
  • -mode [none|region|crosshair|colorbar|pan|zoom|rotate|catalog|examine|3d] β€” bestie, this sets the whole vibe of how your cursor and clicks behave. You got none, region, crosshair, colorbar, pan, zoom, rotate, catalog, examine, and 3d. For example: ds9 -mode crosshair πŸ’…βœ¨
  • -mosaic [wcs|wcsa...wcsz|iraf] <filename> β€” loads a FITS mosaic segment into the current frame. The options are wcs, wcsa...wcsz, or iraf. Example: ds9 -mosaic foo.fits πŸ¦‹πŸŒΈ

okay so like, peep how flexible this thing is, bestie πŸ’… β€” you can feed it a real file, or you can pipe the FITS data straight in and let it drink from stdin:

ds9 -mosaic wcs foo.fits
$ cat foo.fits | ds9 -mosaic -
$ cat foo.fits | ds9 -mosaic wcs -

three ways, same energy, no cap 🌈


🧩 mosaicimage

Loads a FITS mosaic image into the current frame. literally just drops it right where you're standing, no new window drama πŸŽ€

Syntax

-mosaicimage [wcs| wcsa...wcsz| iraf| wfpc2] <filename>

so the bracketed bit is your mosaic method situation β€” you got wcs, or a whole lil' range of wcsa...wcsz, or iraf, or wfpc2 β€” and then <filename> is the file you're serving up 🫢

Example:

ds9 -mosaicimage foo.fits

and that's it, that's the whole vibe ✨

  • -mosaicimage β€” okay so this one builds a mosaic image for you, bestie πŸ’–. You tell it which coordinate system to use with a wcs argument, then hand it the file, like:
ds9 -mosaicimage wcs foo.fits

You can also pipe stuff straight in if that's more your vibe ✨:

$cat foo.fits | ds9 -mosaicimage
$cat foo.fits | ds9 -mosaiimage wcs
ngl that last one is spelled -mosaiimage in here, so type it exactly like that if that's the invocation you're copying. no cap, don't let autocorrect gaslight you πŸ’…
  • -movie β€” this one is literally so fun, it makes a movie out of snap shots of the DS9 window 🎬✨. And when it's a slice movie? It cycles though all the slices of a cube, one after another, like a little flipbook of your data πŸ¦‹. Iconic behavior, fr fr.

okay so listen, bestie, here's the movie tea 🎬 because movies in ds9 are NOT like, cinema movies, they're literally how the frames do their lil dance ✨

  • frame movie β€” a frame movie just cycles through all the active frames. that's it, that's the whole vibe. it's giving slideshow but make it iconic. πŸ¦‹
  • 3d movie β€” a 3d movie cycles through specified viewing angles instead. so not just flipping through frames, but swiveling around them angles. main character energy fr. πŸ’…

and the default action? it's slice. no cap, if you don't say what you want, slice is what you get. periodt. πŸ‘‘

also, movie types β€” you've got exactly two options, and i do mean exactly:

  • MPEG
  • Animated GIF

and the default is MPEG. so if you say nothing, you're getting MPEG, mwah πŸ’–


Optional parameters for 3d:

<nice β€” next part picks it up from here> 🌈✨

...and here's the lil menu of stuff you can hand over to it β€” mix and match, pick your faves, there are genuinely no wrong answers bestie πŸ›οΈβœ¨

  • number of frames β€” literally just that, the number of frames 🎞️
  • azimuth from/to β€” an azimuth, specified as a from and a to, we love a range in this house πŸ’«
  • elevation from/to β€” same energy, but for elevation: from, slash, to 🧚
  • slice from/to β€” and again for slice, from/to, iconic behavior honestly 🌸
  • oscillate/repeat times β€” oscillate, or repeat, plus the times for whichever one you picked πŸ”
heads up: that / in oscillate/repeat is doing real work β€” those are two different things, not one long word πŸ’…

and yeah, that's the whole vibe check for these args β€” everything here is fair game to combine, so go off πŸ‘‘

🎬 Syntax 🎬

okay bestie, buckle up, because -movie has two whole flavors and they do not take the same ingredients. here's the shape of each one, exactly as written:

-movie [slice|frame] [mpeg|gif <delay> blink|fade] <filename>

that's the first one πŸ’– so you got a slice or a frame situation up front (both optional, both chillin' in their little brackets), then optionally mpeg or gif with a <delay>, plus blink or fade, and then <filename> rounds it out. the brackets mean optional, so like, vibe check each piece before you commit, iykyk.


and now the second form, the one with 3d in it, because we're being extra:

-movie 3d [mpeg|gif <delay>] <filename> [number|az from|az to|el from|el to|slice from|slice to|zoom from|zoom to|oscillate]

see the difference? 3d is just there, not optional, main character energy fr fr. then mpeg or gif with <delay> (still optional, still in brackets), then your <filename>, and then the big finale: a whole menu of trailing options 🫢

  • number
  • az from
  • az to
  • el from
  • el to
  • slice from
  • slice to
  • zoom from
  • zoom to
  • oscillate

ngl that list is giving "pick your fighter" πŸŽ€ and note that the from and to ones come in pairs β€” az from/az to, el from/el to, slice from/slice to, zoom from/zoom to β€” so they're literally just written out as separate items in the syntax, no shorthand, no merging. copy it exactly, bestie, don't get cute and invent a combined form πŸ’…

heads up: these are the syntax shapes as documented, character for character. the brackets and the | bars are doing the heavy lifting here, so don't drop them when you're typing your command β€” that's the difference between slay and πŸ’€

lowkey obsessed with how the second form just keeps going, it's the syntax equivalent of "and another thingβ€”" 😭 anyway, that's the shape of it. more coming, don't go anywhere ✨

okay so the tail end of that parameter list is where the personality lives, bestie. Three little tokens, and they change <em>everything</em>:

  • repeat β€” slap this in and the movie just... keeps going. Forever. It's giving infinite loop energy, it's giving screensaver at 3am, it's giving ✨never-ending story✨.
  • <#> β€” you want a specific number of laps instead of infinity? That's this one. You put your number where the <#> is. A finite, countable, reasonable amount of repeating. Iconic.
  • ] β€” the closing bracket. That's it. That's the whole job. It wraps the whole optional bundle up and says we're done here πŸ’…. Every group needs someone to close it out, and this one is a closer fr fr.

Example: 🌈

okay watch, here's the vibe in action, three little commands, three little moods:</p>

ds9 -movie slice mpeg ds9.mpg
ds9 -movie frame gif ds9.gif
ds9 -movie frame gif 100 fade ds9.gif

see how it works? The third one is the one doing the most β€” frame as the format, gif as the type, then 100 sitting there doing the count, fade doing the transition, and ds9.gif as the file catching all of it. That's a whole choreography and she ate πŸ”₯

and yeah, the first two are lowkey minimal β€” no repeat, no number, just the format and the file, chilling. Then the third one walks in with the 100 and the fade like the main character she is πŸ‘‘

πŸ’€ ngl, the number is the thing people forget, and then they're confused why it doesn't loop the way they wanted. So like... don't be that girl. Put your number in.

anyway, that's the movie parameter list fully assembled, start to finish, no crumbs left πŸ’–

  • -movie β€” okay so bestie, this is the one that records a whole movie for you 🎬✨, and it takes a lil stack of keywords to tell it exactly what you want. The keywords go in order, like a lil recipe, and here's the whole lineup:
    • 3d β€” renders it as a 3D movie, obviously πŸ’…
    • mpeg β€” the output format, mpeg style πŸŽ€
    • ds9.mpg β€” the filename it writes to, literally called ds9.mpg πŸ¦‹
    • number β€” says "next up is a number" πŸ‘‘
    • 10 β€” and that number is 10 ⭐
    • az β€” says "next up is an azimuth" 🌸
    • from β€” the start of the azimuth range ✨
    • -60 β€” start it at -60 πŸ’–
    • az β€” another azimuth keyword, yes again, she's thorough 🫢
    • to β€” the end of that range 🌈
    • 60 β€” end it at 60 πŸ’œ
    • oscillate β€” and make it swing back and forth πŸ”₯
    • 1 β€” with a value of 1 for the oscillating 😭
  • -msg β€” this one lets you point at a whole directory full of translation tables and say "load these please" πŸ“‚πŸ’«

The syntax is exactly this, no notes:

-msg <directory>

Example:

  • -msg β€” $HOME/msgs πŸ’Œ
  • -multiframe β€” Load FITS multiple extension file as multiple images. πŸ”₯

bestie. this is the one. one FITS file, a whole little family of images hiding inside it (multiple extensions, we love to see it πŸŽ€), and this flag is how you tell ds9 to open them all as separate images instead of you sitting there doing it one by one like it's 2009.

Syntax

-multiframe <filename>

Example:

ds9 -multiframe foo.fits
$cat foo.fits | ds9 -multiframe -

see the two routes? 🫢 route one: just hand over foo.fits like a normal person. route two: pipe it in with $cat, then drop a lone - right where the filename would've gone. same destination, different vibe. slay.

  • -nameserver β€” Support Name Server functions. Coordinates are in fk5. ✨

yep, that's fk5 β€” lowercase, exactly like that, don't come for me πŸ’…

✨ Syntax ✨

okay so -nameserver has a whole syntax moment, and it's lowkey specific. here's the exact shape, bestie β€” no edits, no cap:

-nameserver
[<object>]
[name
<object>]
[skyformat
degrees|
sexagesimal]
[pan]
[crosshair]
[open|
close]
those brackets and pipes are literally part of the syntax, so don't come for me. πŸ’…

✨ Example: ✨

like, actual examples? say less. here's every single one, exactly as written:

ds9 -nameserver m31
ds9 -nameserver name m31
ds9 -nameserver server ned-sao
ds9 -nameserver skyformat sexagesimal
ds9 -nameserver pan

and that's the -nameserver syntax + example vibe, fr fr. πŸ¦‹

  • -nameserver crosshair
  • -nameserver open
  • -nameserver close

🌸 notes 🌸

Display Notebook. That's it, that's the whole vibe β€” this one pulls up the notebook so you can actually look at it. ✨

✨ Syntax ✨

-notes [<string>] [append <string>] [insert <string>] [clear] [load <filename>] [save <filename>] [open|close]

okay so real quick, bestie, let's walk through this lineup 🫢

  • [<string>] β€” drop in a string, just like that.
  • [append <string>] β€” tack a <string> onto the end.
  • [insert <string>] β€” slide a <string> in.
  • [clear] β€” wipe it clean, no cap.
  • [load <filename>] β€” pull in a <filename>.
  • [save <filename>] β€” write it out to a <filename>.
  • [open|close] β€” open it up or close it down, your call πŸ’…

✨ Example: ✨

okay so here's the thing bestie β€” -notes has moves, and the way you call it changes everything. let's run the whole little tour, one vibe at a time πŸ’…


set a note, plain and simple:

ds9 -notes 'Hello World'

✨ boom. note set. that's it, that's the whole thing.


now append it instead β€” tack your text onto whatever's already chillin' in there:

ds9 -notes append 'Hello World'

no cap, this is the "and also…" of notes 🫢


or insert it, if you want it slid in rather than tacked on:

ds9 -notes insert 'Hello World'

the way that one little word changes the whole placement… iconic.


wanna wipe it clean? clear said what it said:

ds9 -notes clear

gone. poof. main character energy, zero regrets πŸ’€


pull a note in from a file? load:

ds9 -notes load foo.txt

reading foo.txt and bringing it straight into your notes, no drama 🌸


push it back out? save:

ds9 -notes save foo.txt

your notes, off to foo.txt, safe and sound πŸŽ€


and last but not least, open:

ds9 -notes open

that's the whole lineup, bestie. every single one of these is literally just ds9 + -notes + whatever you want it to do 🌈

okay bestie, we're still deep in flag territory β€” -notes, close, and the rest of the crew are all hanging out here in the list, and next up is one for the science girlies πŸ’–


🌸 nrrd β€” Load an NRRD (Nearly Raw Raster Data) file 🌸

nrrd is giving "I have a big chunky slab of raw raster data and I need it on my screen, like, yesterday" ✨ And yes, NRRD literally stands for Nearly Raw Raster Data, iykyk πŸ§šπŸ’…

Syntax

-nrrd <filename>

Just hand it a filename and it goes πŸ¦‹

Example:

ds9 -nrrd foo.nrrd
$cat foo.nrrd | xpaset ds9 -nrrd-

See what's happening there? You can either point ds9 straight at the file πŸ‘‘ or pipe the bytes in through xpaset and let it eat from the stream instead. Both iconic, both valid, pick your fighter 😭πŸ”₯


πŸ’œ nvss β€” Support for NRAO VLA Sky Survey πŸ’œ

  • -nvss β€” support for the NRAO VLA Sky Survey ⭐ That's the whole thing, no cap. Sky survey data, loaded up, slay 🌈🫢
fr fr, that's all this part of the list has to say β€” more flags coming, so don't go anywhere πŸ’–

✨ Syntax ✨

okay bestie, here's the whole shape of it β€” every piece in square brackets, because apparently we're being ✨flexible✨ about literally all of it:

-nvss
[]
[<object>]
[name <object> | clear]
[<ra> <dec>]
# in wcs fk5
[size <width> <height> degrees|arcmin|arcsec]
[save yes|no]
[frame new|current]
[update frame|crosshair]
[open|

look at all those brackets πŸ’… that's the universal handshake for "you don't gotta include this one, but you absolutely can."

so you've got your empty [] doing its little minimalist moment, then [<object>] where you can just... hand it a thing. then [name <object> | clear] β€” and yes, that | is a real either/or, so you're choosing between naming your <object> or just going clear. then [<ra> <dec>] for when you wanna drop coordinates, and # in wcs fk5 sitting right there in the middle like the main character it is πŸ‘‘

after that it's [size <width> <height> degrees|arcmin|arcsec] β€” width, height, and you pick your unit flavor from degrees, arcmin, or arcsec πŸŽ€

[save yes|no] β€” yes or no, iconic binary behavior, no notes.

[frame new|current] β€” new frame or the current one, your call bestie.

[update frame|crosshair] β€” updating the frame or the crosshair.

and then [open| just... shows up and keeps going, because the list is not done with us yet 😭

close] β€” and that's the bracket closed, we love a tidy bracket πŸ’…


πŸŽ€ Example πŸŽ€

Ok bestie, receipts time. Every single invocation, exactly as written, nothing renamed, nothing "fixed", no cap. Here we go 🫢



ds9 -nvss

the bare version β€” just the option, no extra args riding along ✨



ds9 -nvss m31

now with m31 tagged on the end 🌸



ds9 -nvss name m31

here we've got the name keyword, and m31 after it πŸ‘‘



ds9 -nvss name clear

same name keyword, but this time the thing after it is clear 🌈



ds9 -nvss 00:42:44.404 +41:16:08.78

and this one is just that literal pair β€” 00:42:44.404 and +41:16:08.78 β€” every colon and every dot left exactly where it was, don't touch it 🎯



ds9 -nvss size 60 60 arcmin

size, then 60, then 60, then arcmin β€” all four tokens, in that exact order πŸ“



ds9 -nvss save yes

and finally save with a yes, because we love an affirmative πŸ’–


ok that's the example reel, we move πŸ’œ

Okay bestie, next batch of calls coming in hot πŸ”₯ β€” write them down exactly, character for character, no autocorrect, no vibes-based spelling:

ds9 -nvss frame current
ds9 -nvss frame update
ds9 -nvss open
ds9 -nvess close
Not a typo on my end, bestie β€” that last one is -nvess, not -nvss. Copy what the page says, don't "helpfully" fix it, the shell will absolutely notice πŸ‘€

orient β€” this one controls the orientation of the current frame. Like, which way it's facing. The frame's whole little pose πŸ’…

Syntax

-orient [none|x|y|xy] [open|close]

Example:

ds9 -orient xy

ds9 -orient open

ds9 -orient close

Okay so those are the -orient examples, bestie. No cap, you just run them exactly like that. πŸ’…


  • -pagesetup β€” controls Page Setup options. It's giving "let me set up my page, actually." πŸŽ€

Syntax

-pagesetup [orient portrait|landscape] [scale <numberic>] [size letter|legal|tabloid|poster|a4]

Example:

more -pagesetup glow-ups, bestie, because the people needed receipts ✨

Wanna flip your whole layout sideways? Say less:

ds9 -pagesetup orient portrait

Wanna tell it exactly how big to print? Just hand it a number:

ds9 -pagesetup scale 50

And if you're feeling extra and want a giant multi-page situation, go full poster mode:

ds9 -pagesetup size poster

That's the trio of -pagesetup flexes right there β€” orientation, scale, and size. Collect all three, iykyk πŸŽ€


  • pan β€” this one controls the current image cursor location for the current frame. That's it, that's the whole vibe check β€” it's your little remote for where the cursor is sitting in whatever frame you're on right now. Lowkey powerful, fr fr πŸ’…

✨ Syntax ✨

okay so here's the whole vibe of -pan, laid out for u bestie πŸ’–

-pan [<x> <h> <coordsys> [<skyframe>]] # relative [to <x> <h> <coordsys> [<skyframe>]] # absolute [open|close]

breaking it down fr fr:

  • the args in the first bracket are relative β€” <x>, <h>, <coordsys>, and <skyframe> if u need it
  • then the # separator, and then absolute β€” again [to <x> <h> <coordsys> [<skyframe>]]
  • and at the end, [open|close] β€” like, pick one bestie, not both πŸ‘‘
ngl the # in there is literally part of the syntax, not a comment. don't come for me, that's just how it is πŸ’…

🌸 Example 🌸

no cap, here's what it actually looks like in the wild:

ds9 -pan 200 200 image# pan relative

see?? 200 and 200 for the <x> and <h>, then image as the <coordsys>, then that # doing its little separator thing, and pan relative closing it out πŸ¦‹ iconic behavior, honestly.

okay so we're still deep in the OPTIONS section and the -pan sub-commands keep coming, bestie, they are so extra and I love that for them πŸŽ€


  • -pan to x y physical β€” moves the pan to physical coordinates. You hand it two numbers, x then y, and it pans right on over to that physical spot. That trailing # you'll see in the raw help text? That's just the little separator between the command and its description, not a real argument β€” don't panic and don't type it πŸ’…
ds9 -pan to 400 400 physical

pan to physical coords β€” that's the whole vibe: 400 across, 400 down, physical units, done ✨

  • -pan to x y wcs fk β€” same idea but in wcs coordinates, so instead of boring pixels you're giving it actual sky coordinates. The numbers here are 13:29:55 and 47:11:50, and then you tack on wcs and the fk system. celestial main character energy πŸ¦‹
ds9 -pan to 13:29:55 47:11:50 wcs fk

pan to wcs coords β€” no cap, this is the one where you feel like an astronomer πŸ‘‘

  • -pan open β€” and then there's this lil one. No coordinates, no numbers, just open, and it does the pan thing it's supposed to do. iconic, minimal, no notes 🌸
ds9 -pan open

fr fr that's the -pan menu of moves β€” to with physical coords, to with wcs coords, and open doing its quiet little thing 🫢 and yeah, there's more where that came from, so stay with me πŸ’–

…and yeah, that's ds9 -pan close wrapped up, moving on bestie πŸ’…

  • -pixeltable β€” shows the pixel table, or hides it. That's the whole job. No cap. πŸŽ€

✨ Syntax ✨

-pixeltable [] [yes|open] [no|close]

so like, you can pass nothing (the empty [] vibe), or you can pass yes / open to pop it open, or no / close to make it go bye-bye. Two words for the same energy in each direction, pick whichever feels cuter πŸ¦‹


🌸 Example 🌸

ds9 -pixeltable
ds9 -pixeltable yes
ds9 -pixeltable open

three little baddies, three little ways to get that pixel table living its best life ✨ iconic behavior, honestly πŸ’–

  • -pixeltable β€” okay so this is the plot corner of ds9, and it comes with close and plot under it. Its whole job? Display and configure data plots. πŸŽ€

The vibe here is no take-backs: the last plot created is assumed. Like, it's not gonna ask you which one you meant β€” it just rolls with the most recent one. πŸ’…

And the plot data itself? It's assumed to be a pair of coordinates, with optional error

lowkey the energy of this one is "trust the newest thing on the pile" β€” that's it, that's the whole rule. πŸ¦‹
  • -plot β€” okay so this one is create new plot from data file πŸ“ˆβœ¨ like, actual graph-making energy, bestie, we are no longer just looking at pixels, we are visualizing data. The grammar is giving "every slot is required, don't be shy":
-plot [line|bar [<ref>]] [line|bar [<ref>]] <title> <xaxis label> <yaxis label> xy|xyex|xyey|xyexey

and then there's the lil' short-serve version πŸŽ€

-plot [line|bar] <filename>

let's break the pieces down because there's a lot of brackets happening πŸ’…

  • line | bar β€” those are your two choices, right there in the syntax, and notice you can do the whole [line|bar [<ref>]] situation twice in a row before you even get to the labels. iconic.
  • <ref> β€” optional, sits inside the brackets, no notes.
  • <title> β€” the title, duh, and yes it comes after the plot-type stuff.
  • <xaxis label> and <yaxis label> β€” the axis labels, in that order, x first then y, periodt.
  • xy | xyex | xyey | xyexey β€” pick exactly one, those are the four flavors, don't mix and match πŸ™ˆ
  • <filename> β€” the data file the new plot is being created from πŸ¦‹
ngl the short form -plot [line|bar] <filename> is the low-effort main-character move: file in, plot out, we love a one-liner πŸ’–

okay so we're still deep in this option's whole situation, and here's the rest of its shape, bestie β€” every bracket exactly where it lives, do not "tidy" it up:

[<ref>] xy|xyex|xyey|xyexey]
  • [<ref>] β€” optional ref, it can come along or it can sit this one out, her choice πŸ’…
  • xy, xyex, xyey, xyexey β€” these four are the plot-type tokens, and you pick one. That's the whole vibe: it's giving "choose your fighter" but for axes. No cap, write them exactly like that, lowercase and glued together, xyexey is not a typo and it is not two words, it is one iconic little string πŸ¦‹

then the fancy version of the same deal:

[line|bar <filename> [<ref>] <title> <xaxis label> <yaxis label> xy|xyex|xyey|xyexey]
  • line|bar β€” pick line or pick bar, no third option, we don't do that here πŸ™ˆ
  • <filename> β€” the file, the whole file, nothing but the file πŸ“
  • [<ref>] β€” again optional, again just vibing in brackets
  • <title> β€” the title. it wants a title. give it a title.
  • <xaxis label> and <yaxis label> β€” yes both, in that order, x first then y, don't switch them or the whole plot gets main-character-in-the-wrong-movie energy 😭
  • xy|xyex|xyey|xyexey β€” same four tokens as before, same rule: pick exactly one ✨

and then we hit this:

# existing plot
plot [gui] [load <filename> xy|xyex|

# existing plot is just sitting there being a comment, and then plot shows up with [gui] and [load <filename> xy|xyex| and then it just β€” trails off mid-token πŸ’€ because of course it does, this manpage is 125 parts long and it is not done with us yet. xy|xyex| is literally cut off in the middle of the list, so hold that thought, bestie, because the next bit picks it right back up and we are so close to knowing what comes after that pipe β€”

okay so we are still in this list, no brakes, no detours, and here come the next entries exactly as they show up πŸ“

Two of them land right here and they are β€” no cap, character for character β€” just this:

xyey|
xyexey]

and then the bracketed ones roll in one after another. Quick notation check for my bestie who's new here: the [ ] around a thing means that thing is optional, and the | between two things means pick one. That's the whole grammar of this list, iykyk. πŸ’…

  • [save <filename>] β€” save, and the name of the file goes right into the <filename> slot. πŸŽ€
  • [current <ref>] β€” current, with a <ref> sitting in its slot. ✨
  • [layout grid|row|column|strip] β€” layout, and you choose one of grid, row, column, or strip. That little | is giving or-energy the entire time. πŸ”₯
  • [layout strip scale <percent>] β€” layout strip scale, and <percent> is where the number lives. 🌸
  • [add graph line|bar] β€” add graph, and it's line or bar, pick your fighter. ⭐
  • [current graph <graph>] β€” current graph, <graph> slot included, no substitutions. πŸ¦‹
  • [delete graph] β€” delete graph. That's the whole thing. No slots, no extras, nothing to fill in. πŸ’€
  • [current β€” and then the source just… stops. Mid-bracket. Mid-word. A genuine cliffhanger 😭 bestie the rest of this one is absolutely coming in the next chunk, do not move.
  • dataset <dataset> β€” the dataset entry, and it's bringing a <dataset> along with it πŸ’… that's the whole vibe, no cap.
  • delete dataset β€” yep, two whole words, delete and then dataset. Not me double-checking that bestie, it literally says what it says ✨
  • duplicate β€” just the one word, riding solo, no arguments, no notes πŸ¦‹
  • stats yes|no β€” stats, and you pick: yes or no. Two options, that's the entire menu, periodt πŸ‘‘
  • list yes|no β€” same energy fr fr: list plus a yes or a no, and that's it πŸŽ€
  • backup <filename> β€” backup, and it wants a <filename> handed to it. A whole filename, bestie, don't be shy πŸ“
  • restore <filename> β€” restore, also holding out its little hand for a <filename> 🌸 the symmetry is lowkey iconic
  • pagesetup orient portrait|landscape β€” okay so it's pagesetup followed by orient, and then you're choosing between portrait and landscape. That's the pair, those two, the whole vibe check πŸ–ΌοΈ
  • pagesetup size letter|legal|tabloid|poster|a4 β€” and pagesetup again, this time with size, and the lineup is letter, legal, tabloid, poster, a4 β€” five of them, all exact, iykyk ✨
bestie these are literal, character for character, so type them exactly how they're written here β€” no autocorrect glow-ups, no cute little renames, fr fr πŸ’–

and yeah, the list just keeps going, so stay with me 🫢

  • [print] β€” bestie, just print it. that's the whole vibe. πŸ–¨οΈ
  • [print destination printer|file] β€” where's it going? you get exactly two choices and they are printer or file. pick one, no third option, i don't make the rules πŸ’…
  • [print command <command>] β€” wanna hand it off to a <command> of your very own choosing? iconic. you're the main character here.
  • [print filename <filename>] β€” and if you're the type who needs a specific <filename>, yeah, that's a thing you can set. go off πŸŽ€
  • [print color rgb|gray] β€” color mood check ✨: rgb for the full rainbow moment, gray for the moody grayscale era. those are the two, periodt.
  • [close] β€” closing time, you don't gotta go home but you can't stay here πŸ¦‹
  • [mode pointer|zoom] β€” what's the vibe? pointer or zoom. two modes, no in-between, pick your fighter πŸ‘‘
  • # export plot β€” exporting a plot, lowkey a whole moment 🌸
  • [export <filename>] β€” your <filename> goes right there, and boom, exported. so satisfying fr fr πŸ’–
  • [export eps| β€” okay so the export format list starts with eps|… and it keeps going, bestie, we are not done here. next part, keep scrolling 🌈
  • export gif|tiff|jpeg|png <filename> β€” bestie, this is the export squad πŸ’… pick your format off the menu and hand over a <filename>, and boom, your image is out the door. gif, tiff, jpeg, png β€” four flavours, one job.
  • export jpeg <filename> [int(1-100)] β€” the JPEG-specific glow-up ✨ same <filename> deal, but you can slide in an optional quality number that's an integer from 1 to 100. That's the whole vibe check for how crisp you want it. int(1-100), no cap.
  • export tiff <filename> none|jpeg|packbits|deflate β€” TIFF girlies, this one's for you πŸŽ€ give it a <filename> and then pick your compression era: none (raw, unbothered, moisturised), jpeg, packbits, or deflate. Four choices, zero drama, pick one and go.
  • # configure graph plot [axis x|y grid yes|no] β€” okay so this is the plotting setup line 🌈 the # is giving prompt energy, and then you're configuring a graph plot. Inside those square brackets you've got optional knobs: axis x|y to say which axis you're on, and grid yes|no to toggle whether a grid shows up. Note the brackets β€” these bits are optional, so you can absolutely leave 'em out if you're feeling minimal. πŸ¦‹

Heads up bestie πŸ’– those [ ] brackets mean optional β€” everything inside them is a lil extra you can take or leave. The | bars mean pick exactly one from the list. Don't go picking two, that's not the move. πŸ™ˆ

and now we're deep in axis territory, so if you've been following along β€” hi, you're doing amazing πŸ’– β€” every single one of these starts with that same axis x|y prefix. Pick x for the x-axis, pick y for the y-axis, and then tell it what to do. That's the whole vibe. No cap.

  • axis x|y log yes|no β€” toggles the log setting for whichever axis you named ✨ say yes to turn it on, no to turn it off. You gotta say one of them, bestie, there's no "eh whatever" option here.
  • axis x|y flip yes|no β€” flips that axis. yes or no, pick your fighter πŸ¦‹
  • axis x|y auto yes|no β€” the auto setting for the axis, yes or no. Let the axis have main character energy and handle itself, or don't πŸ’…
  • axis x|y min <value> β€” sets the minimum for the axis, and you gotta hand it a value. Like, an actual number. Don't leave it hanging πŸ™ˆ
  • axis x|y max <value> β€” same deal but for the max, and again it wants a value in there. Fill it in or it's just gonna sit there staring at you πŸ’€

so yeah β€” every one of these needs BOTH the axis letter AND the yes/no (or the value, for min and max). It's giving "two ingredients, no substitutions" πŸŽ€ and honestly? iconic. keep scrolling, there's more of this axis lore, and I am lowkey obsessed πŸ‘‘

  • axis x|y format <string> β€” bestie you're picking which axis you're talking about (x or y), then feeding it a format and a <string>. Two tokens, one job. πŸ’…
  • background <value> β€” set the background, drop your <value> in, done. ✨
  • legend yes|no β€” legend on, legend off. That's the entire menu, no secret third option. πŸŽ€
  • legend position right|left|top|bottom|plotarea β€” okay and where does the legend go? right, left, top, bottom, or straight up plotarea. Pick your fighter. πŸ‘‘
  • font title|labels|numbers font times|helvetica|courier β€” first you say which text you're styling (title, labels, or numbers), then you say which font it gets (times, helvetica, or courier). Yes, the word font shows up twice. That's not a typo, that's just how she is. πŸ¦‹
  • font β€” and then this one just... stops. Mid-thought. Mid-bracket. Iconic behaviour honestly, but we're gonna have to keep reading to find out what it wants. πŸ’€
heads up β€” we're still deep inside the big bracket stack from earlier, so all of these are just more of the same choose-your-own-adventure keywords. Nothing has closed yet. 🌸

and we're still deep in this syntax bestie, the grammar just keeps going 😭 here's the rest of it, verbatim:

title|labels|numbers size <value>]
[font title|labels|numbers weight normal|bold]
[font title|labels|numbers slant roman|italic]
[title <string>]
[title x|y <string>]
#

okay let's actually read this thing because it's giving very much "choose your own adventure" πŸ’…

  • the title|labels|numbers trio is your picker β€” you're saying which text you're talking about: the title, the labels, or the numbers ✨
  • size <value> β€” you want a size? you feed it a <value>. that's the whole vibe, no notes πŸ¦‹
  • [font title|labels|numbers weight normal|bold] β€” weight time! pick normal or pick bold, there is no third option, it's giving decisive queen πŸ‘‘
  • [font title|labels|numbers slant roman|italic] β€” same energy but for the slant: roman or italic, choose your fighter 🌸
  • [title <string>] β€” hand it a <string> and boom, that's your title, periodt πŸ’–
  • [title x|y <string>] β€” and over here you can also slide in an x or a y alongside the <string> 🧚
  • and then there's just a lone # chillin' at the end like πŸ‘οΈπŸ‘„πŸ‘οΈ iconic honestly
okay so about those square brackets [ ] bestie β€” that's just the syntax waving at you saying "this whole chunk is optional," so you only grab the bits you actually need 🫢

ngl this is the part where the font stuff really shows off, because you're not just picking a font, you're picking it per element β€” title over here, labels over there, numbers somewhere else entirely, each one with its own size, its own weight, its own slant 😀 and the title bits let you set the actual text, with an x or a y if you're feeling fancy about it ⭐

lowkey obsessed with how much control this gives you fr fr πŸ’œ

...and bestie, this next bit is all about making your plot actually look like something, okay? πŸ’…

dataset plot [show yes|no] [name <string>]
# line dataset plot [line smooth step|linear|cubic|quadratic|catrom] [line color <value>] [line width <value>] [line dash
  • dataset plot β€” the base move. This is you telling ds9 "hey, we're messing with a plot now," and everything after it is just stacking lil modifiers on top. ✨
  • [show yes|no] β€” toggles whether the plot is actually visible. Say yes and it's showing up to the function, no and it's giving invisible. Your call, no judgment. 🫢
  • [name <string>] β€” gives your plot a name. Pass in a <string> and that's its label now, periodt. πŸŽ€

Then we get the line flavored ones, and ngl this is where it gets cute:

  • # line dataset plot β€” comment-prefixed version of the dataset plot line. Same energy, just chillin' behind a #. πŸ’œ
  • [line smooth step|linear|cubic|quadratic|catrom] β€” picks how your line gets smoothed out. Your options are step, linear, cubic, quadratic, or catrom. That's the whole menu, bestie, no secret sixth one hiding. 🌈
  • [line color <value>] β€” sets the line's color. Drop your <value> in there and boom, it's a whole mood. 🎨
  • [line width <value>] β€” controls how thick the line is. Plug in a <value> and decide if it's serving thin and delicate or bold and main character. πŸ‘‘
  • [line dash β€” and it just... keeps going from here, so hold that thought πŸ’€

...and it closes out with a <pink>yes</pink> or a <pink>no</pink> β€” yes|no]. That little bracket is just the tail end of the toggle from before, bestie. Nothing new, carry on. πŸ’…

  • [line fill yes|no] β€” the fill toggle for your line. Say yes to fill it in, no to leave it hollow and sad. That's it, that's the whole vibe check. πŸŽ€
  • [line fill color <value>] β€” you wanna pick the actual color of that fill? This is where you do it. Drop your <value> in and the fill goes from "default nothing" to serving. 🌈
  • [line shape symbol none|circle|square|diamond|plus|splus|scross|triangle|arrow] β€” okay this one is the fun one, ngl. You're choosing what lil symbol sits on your line. Your menu is, verbatim:
    • none
    • circle
    • square
    • diamond
    • plus
    • splus
    • scross
    • triangle
    • arrow

Pick one, any one. circle for the soft girls, diamond for the ones who ate, arrow if you're feeling directional. ✨

  • [line shape size <integer>] β€” and now you're setting how big that symbol is, with an <integer>. Bigger number, bigger symbol, more main character energy. πŸ‘‘
  • [line β€” and that's where this part literally cuts off, mid-thought, [line and nothing else 😭🫢

okay bestie we're still deep in this list and it has not stopped, it just keeps handing you more tokens like a group chat that never sleeps 😭 here's the exact next run of them, no renaming, no skipping, just vibes and keywords:

  • shape
  • color
  • <value>
  • ]
  • [line
  • shape
  • fill
  • yes|no]
  • #
  • bar
  • dataset
  • plot
  • [bar
  • border
  • color
  • <value>
  • ]
  • [bar
  • border
  • width
  • <value>
  • ]
  • [bar
  • fill
  • yes|no]
  • [bar
  • color

like… see how it just keeps going? πŸ’… the ] guys are closing the little bracketed blocks and the [line, [bar guys are opening new ones, so it's giving very much "nested options but make it a novel". the # is sitting there in the middle doing its thing, yes|no] is the whole choose-your-own-adventure moment, and bar + dataset + plot are just… existing, side by side, unbothered ✨

fr fr do not get creative with these β€” every token is spelled exactly like this on purpose, brackets and pipes included 🫢

and then [bar color… yeah. it's still not done. hold on, bestie 🌸

okay so we're literally still in the middle of this list, no recap, no re-intro, we just keep going πŸ’…βœ¨

here's the next chunk, token for token, copied exactly how it shows up:

<value>
]
[bar
width
<value>]
#
error
bar
plot
[error
yes|no]
[error
color
<value>]
[error
cap
yes|no]
[error
width
<value>]

let me walk you through what you're looking at, bestie, because this part is lowkey just the tail end of the group we were already inside πŸŽ€

  • The bare <value> and the lone ] up top aren't a new thing β€” they're the closing bits of whatever bracket-group we were in the middle of. The <value> is the placeholder you swap for your actual value, and the ] is the hug closing. Don't drop either of them 🫢
  • [bar width <value>] β€” there it is. bar, then width, then a <value> slot, all wrapped up in square brackets. Square brackets are the classic "you can skip this whole thing if you want" hug, so it's optional vibes only ✨
  • # β€” yes, a literal, bare # just sitting there on its own line. It is not decor, it is not a comment, it is a token. Copy it exactly, no cap πŸ’€
  • error, bar, plot β€” three separate words, each chilling on its own line. That's it, that's the whole vibe πŸ”₯
  • [error yes|no] β€” optional group, keyword error, then a yes|no choice. Pick one, you don't get both, that's the | doing its job πŸ’–
  • [error color <value>] β€” same energy, but this one wants a color and then a <value> to go with it 🌈
  • [error cap yes|no] β€” error, then cap, then yes|no. Again, one or the other πŸ‘‘
  • [error width <value>] β€” and we close out the chunk with error, width, and a <value> slot πŸ¦‹

quick vibe check on the notation itself, since it's the same grammar every time and i want you to feel it, not memorise it:

  • square brackets [ ] = optional, skip-friendly, no pressure 🌸
  • <value> = a placeholder, like a lil blank for you to fill in, not a literal word you type
  • yes|no = choose exactly one of the two, the pipe means "or"

and that's this stretch. the list keeps going, so stay with me, we are so not done yet 🧚

okay bestie so let's see this in action, because reading about plot windows is one thing and watching them pop into existence is another πŸ’…

Example:

# create new empty plot window
ds9 -plot line
ds9 -plot bar
# create new plot from data file
ds9 -plot line xy.dat xy

so like, look at that first little trio πŸ‘‘ β€” you hit ds9 -plot line and boom, empty line plot window, all yours, no data, just vibes and axes waiting to be filled. then ds9 -plot bar does the exact same thing but a bar plot instead, no cap. those two are literally just "give me a blank canvas" energy ✨

and then the last one is the glow-up moment: ds9 -plot line xy.dat xy β€” now you're not starting empty at all, you're pulling from an actual data file xy.dat and telling it xy is the name you want attached. it's giving "i brought my own data to the party" πŸŽ€

heads up though: notice how each one is a separate ds9 invocation. every command spawns its own window with its own plot. they don't stack, they don't merge, they don't share. one call, one plot, periodt πŸ’–

so like, lowkey the whole pattern is: -plot <type> for a blank one, -plot <type> <file> <name> for one loaded from a file πŸ¦‹ easy, iconic, no notes 🌸


So like, here's the plot era of the examples, bestie β€” all the ways you can boss ds9 around from the command line πŸ’…


First up: you can yeet a whole new plot into existence and name it, all in one line. Title, X axis label, Y axis label, and a plot name of your choosing β€” the xy at the end is the name it'll go by:

ds9 -plot line xy.dat 'The Title' 'X Axis' 'Y Axis' xy # existing plot

That trailing # existing plot is the manpage's little note that you're pointing at a plot named xy. Obsessed with how much you can cram into one command, fr fr ✨


Wanna skip the typing and just vibe with the GUI instead? Say less:

ds9 -plot gui

Main character energy β€” you get the graphical plotting window and you can click around like a normal person πŸŽ€


Already got a data file and want it loaded straight into a plot you've named? Here's the move:

ds9 -plot load xy.dat xy

Reads xy.dat and loads it into the plot called xy. Iconic πŸ¦‹


And if you've made something beautiful in the GUI and you're NOT about to lose it β€” save that masterpiece to disk, bestie:

ds9 -plot save foo.dat

Dumps the current plot out to foo.dat so it lives forever πŸ’–


Last one in this little lineup: switching the active plot to one you already made. Meet foo:

ds9 -plot current foo

That's you telling ds9, "hey, this one β€” foo β€” is the plot we're working with now." Periodt. πŸ‘‘


Reminder bestie: ds9 -plot needs its plot subcommand, and it needs it before any file gets opened β€” otherwise the plotting action just never happens and you'll be sitting there like 😭 wondering where your graph went.

and the plot example saga continues, bestie πŸ’– same energy, same ds9, same -plot β€” just more flavors of it. keep these in your back pocket iykyk:

ds9 -plot layout strip

strip the layout, periodt. πŸŽ€


ds9 -plot layout strip scale 30

same strip moment, but now with a scale of 30 attached. ✨


ds9 -plot add graph bar

adding a graph over here, and the graph type is bar. it's giving data visualization main character energy fr fr πŸ“Š


ds9 -plot current graph 1

pointing at the current graph and calling out 1. πŸ‘‘


ds9 -plot delete graph

bye bye graph πŸ’€ deleting it, no notes.


ds9 -plot current dataset 1

and now the current dataset gets the 1 treatment. 🌸

not me casually running through every -plot variant like it's a playlist 🎧 like, all of these are literally just ds9 + -plot + the subcommand + its args, and the args stay exactly where you put them β€” no rearranging, no renaming, copy them character for character or the vibe check will fail 😭

lowkey obsessed with how consistent this pattern is tho πŸ¦‹ same shape every single time:

ds9 -plot <subcommand> <thing> <value>

and the next one's already waiting for you, so don't you dare close the terminal 🫢

okay bestie, more -plot examples, keep scrolling, we're still in the thick of it ✨

ds9 -plot delete dataset

deleting a dataset, no cap β€” poof, gone, that's the whole vibe πŸ¦‹


ds9 -plot duplicate

duplicating, bestie β€” a lil copy moment, iconic πŸŽ€


ds9 -plot stats yes

stats turned on, yes energy only πŸ’…


ds9 -plot list yes

listing, also with the yes ✨


ds9 -plot backup foo.bck

backing it up into foo.bck β€” protect the goods, fr fr 🫢


ds9 -plot restore foo.bck

and restoring right back from foo.bck, the way it should be 🌸


ds9 -plot pagesetup orient portrait

page setup but make it portrait orientation, slay πŸ‘‘


and yes we're still going, don't you dare close this tab yet πŸ’œ

So like, say you wanna actually print a plot instead of just staring at it? These are the little one-liners you type, bestie. Copy-paste energy, no cap. πŸ’…

Set up your page size to letter:

ds9 -plot pagesetup size letter

Then just… send it. Straight to the printer:

ds9 -plot print

Wanna name a destination of file? Say less:

ds9 -plot print destination file

Wanna hand it off to a command β€” literally lp, the classic β€” because you're feeling fancy:

ds9 -plot print command lp

Prefer to aim it at a specific filename, like foo.ps? Iconic, here:

ds9 -plot print filename foo.ps

And if you want your color to be rgb, because obviously you do πŸŽ€:

ds9 -plot print color rgb

That's the whole vibe check on these β€” same flags, same order, same everything, just your printer getting fed the good stuff. ✨

okay bestie so the -plot flag has a bunch of lil sub-commands and we're gonna run through the glow-ups one by one, no skips πŸ’…

First up, if you wanna just yeet the plot window closed? Say less:

ds9 -plot close

That's it. That's the whole vibe. She's gone. 🫢


Next, setting the pointer mode β€” the way you tell ds9 what kind of pointer energy you want in the plot:

ds9 -plot mode pointer
ngl the pointer there is just the mode name, keep it exactly as written, don't get creative ✨

Now here's a lil comment marker moment for you β€” this line is just labeling what's coming next, not an actual command:

# export plot

iykyk, the # is doing the narrator voice. πŸŽ€


Wanna export your plot as a TIFF? Periodt, here's how:

ds9 -plot export tiff foo.tiff jpeg

So you're naming the format (tiff), giving it the filename (foo.tiff), and then β€” plot twist β€” that trailing jpeg is part of the command too. Keep all three, bestie, don't drop the last one. πŸ™ˆ


Same energy but for JPEG, except this one gets a lil quality number at the end:

ds9 -plot export jpeg foo.jpeg 75

See that 75? That's the quality value. Slay. πŸ’…


And for the PNG girlies:

ds9 -plot export png foo.png

Clean, simple, iconic. No extra numbers needed here. ⭐


Last one in this batch is just another lil comment flagging what's next:

# configure graph

Again, # = narrator voice, not a real command. The plot thickens (literally, we're about to configure a graph) and we'll get into it in the next bit πŸ‘‘


okay bestie, we're in the -plot axis x era and it's giving ✨ total control ✨. every one of these is the same lil sentence with one word swapped, so once you get the pattern you're literally unstoppable 🫢

first up, the grid. you want it? you say yes. that's it, that's the whole vibe:

ds9 -plot axis x grid yes

grid? on. slay. πŸ’…

next one β€” same energy, different word. you're flipping the log switch to yes:

ds9 -plot axis x log yes

then flip, also yes. yes yes yes, we love a girl who commits:

ds9 -plot axis x flip yes

then auto, and this one's a no β€” not me turning auto off because I want to do it myself, main character energy fr fr πŸ‘‘

ds9 -plot axis x auto no

and finally min, which takes an actual number, and that number is 1:

ds9 -plot axis x min 1

see the shape of it? it's always ds9 -plot axis x then one keyword, then a value β€” usually yes or no, sometimes a real number like that 1 up there. copy the pattern, swap the keyword, you're golden 🌟

and lowkey that min 1 is the one to watch, because it's the first time we've handed it an actual value instead of a yes/no β€” so keep that in your back pocket, bestie πŸŽ€

no cap, this axis x stuff keeps going, so don't wander off β€”

Okay bestie, the -plot era continues and honestly? It's giving full customisation πŸ’… every one of these is a ds9 command you can literally just type, and the plot does what you told it. No cap.


Capping that x axis at a whole 100

ds9 -plot axis x max 100

So axis x max 100 is you saying "bestie, the x axis stops at 100" β€” that's the max, that's the ceiling, that's the vibe. πŸŽ€


Giving the x axis a format

ds9 -plot axis x format '%f'

axis x format '%f' β€” here's you handing the x axis a printf-style format string, and in this example it's '%f'. Keep those quotes, they're load-bearing, iykyk 🫢


Background: white. Periodt.

ds9 -plot background white

background white β€” because sometimes the plot needs to look like a crisp lil piece of paper and not, like, the void. 🌸 Set it, forget it, screenshot it for the group chat.


Legend: yes pls

ds9 -plot legend yes

legend yes β€” the legend is ON, it's invited to the party, it's main character energy, it's showing up. ✨


Legend but make it left

ds9 -plot legend position left

legend position left β€” so when the legend is enabled, you're telling it to post up on the left. Not right. Not floating around being mysterious. Left. πŸ‘‘


See how these all stack? You can hit ds9 with a whole lil bouquet of -plot flags and it just… does all of it. Iconic behaviour, truly. πŸ¦‹

okay so real talk β€” fonts in ds9 plots are a whole thing, and the way you set them is by chaining little keywords together after -plot font numbers. it's giving ✨lego bricks✨. watch:

ds9 -plot font numbers font times

that's you telling ds9: "hey bestie, for the numbers in my plot, use the times font." πŸŽ€


want it bigger? say less:

ds9 -plot font numbers size 12

size takes a number, and 12 is the number you're handing over. periodt. πŸ’…


feeling bold? (literally, not metaphorically, although also maybe metaphorically)

ds9 -plot font numbers weight bold

weight set to bold. no cap, that's the whole vibe. πŸ”₯


and for the italic girlies:

ds9 -plot font numbers slant italic

slant β†’ italic. slay. πŸ’œ


so the pattern is honestly so simple it's iconic: you start with ds9 -plot font numbers, then tack on whichever property you wanna flex β€” font times, size 12, weight bold, slant italic β€” and each one is its own little ds9 invocation. not me thinking this was gonna be complicated 😭

ngl, copy these exactly as written β€” same keywords, same order, same everything. the values matter, bestie. 🫢

okay bestie so you wanna label your plots?? πŸ’… because unlabeled axes are giving "mystery meat" and we are NOT doing that ✨

here's the vibe β€” slap a title on the whole plot:

ds9 -plot title 'This is a Title'

iconic. she has a name now πŸŽ€

and if you want to label the individual axes? you just tell it which axis, lowercase, and then the string:

ds9 -plot title x 'X Axis'
ds9 -plot title y 'Y Axis'

so β€” x for the x axis, y for the y axis, and the quoted string is literally whatever you want it to say 🌸 keep it in quotes so your spaces and punctuation survive the trip through the shell, no cap.

lowkey the quotes are doing a lot of heavy lifting here β€” don't drop them and then act surprised when the shell eats your title πŸ’€

three commands, three vibes, all the labels your plot could ever dream of πŸ¦‹ and yes you can mix and match, go off πŸ‘‘

Ok bestie so here's how you actually use these plot commands, watch this ✨

ds9 -plot title legend 'This is the Legend'   # configure current dataset

That's it, that's the move. You're passing -plot title legend with the string 'This is the Legend', and the comment is right there in the original: this configures the current dataset. Note the quotes around the legend text β€” multi-word strings need them or your shell will eat the spaces and you'll be sad 😭


ds9 -plot show yes

Turning the plot display on with -plot show yes. Simple, iconic, no notes πŸ’…


ds9 -plot name 'My Data'   # line dataset

Setting the name to 'My Data' with -plot name. And see that comment? # line dataset β€” so name here is about the line dataset, iykyk. Again: quotes, bestie, always quotes πŸŽ€


ds9 -plot line smooth step

And finally -plot line smooth step β€” using smooth as the value for line in this case. Three little tokens, one very specific vibe 🌸


🫢 Fr fr: keep those single quotes exactly where they are in these examples. The shell is not your friend about whitespace and the manpage is showing you the safe way.

okay bestie these next few are all about the line in your plot β€” same shape every time, ds9 -plot line and then one little setting, okay? watch πŸ‘‘

  • set the line color to red:
ds9 -plot line color red
  • set the line width to 2:
ds9 -plot line width 2
  • turn the dash on with yes:
ds9 -plot line dash yes
  • turn the fill off with no:
ds9 -plot line fill no
  • set the fill color to red:
ds9 -plot line fill color red

see the pattern? πŸ’… it's giving one knob per command, no cap β€” you just swap out the last word and the value after it and you're literally customizing your line. iconic ✨

Okay so next up in the -plot line glow-up tour πŸ’… we're just stacking little style tweaks on top of each other, one at a time, and honestly? That's the whole vibe. Each one of these is a standalone command you can run on its own. No cap. ✨

First up, you wanna tell your line what shape of marker to use at the data points. Here we're going with circles, because circles are iconic and round things are superior 🫢

ds9 -plot line shape symbol circle

Then you can decide how big that marker is. Size 5. That's it, that's the whole command:

ds9 -plot line shape size 5

Now let's talk colour, because obviously we care about aesthetics 🌈 β€” set the line's colour to cyan:

ds9 -plot line shape color cyan

And last but definitely not least, you can turn the fill off with no:

ds9 -plot line shape fill no
# bar dataset
Heads up bestie β€” that # bar dataset line is sitting right there in the docs as a comment, so don't go typing it into your shell expecting magic. It's a note, not a flag. 😭

okay so these are the lil bar-plot glow-up recipes πŸ’… every single one is a full ds9 invocation you can paste straight into your terminal and watch the magic happen. same -plot bar energy, different ✨lewk✨. let's get into it:


  • border in red, because why would the frame be boring:
ds9 -plot bar border color red
  • chunky border, width 2 β€” a lil baby border, cute, subtle, demure:
ds9 -plot bar border width 2
  • kill the fill β€” fill no, so your bars are just outlines. hollow. ethereal. ghost bars fr fr:
ds9 -plot bar fill no
  • the bars themselves in red β€” not the border this time bestie, the whole vibe, the main character bars:
ds9 -plot bar color red
  • bar width 10 β€” thicc. unbothered. those bars ate and left no crumbs:
ds9 -plot bar width 10

and yes, ds9 -plot bar border color red shows up in the list twice 😭 that's not a typo, that's just the manpage being extra, and honestly? iconic. the border-color-in-red agenda is so real it had to be said twice. periodt. 🫢

also quick vibe check on the whole set: every one of these is the same shape β€” you're calling ds9, you're saying -plot bar, and then you're stacking whatever bar options you want on top. mix and match them however you like, no cap. πŸŽ€

Okay so these are the -plot error glow-ups, bestie β€” little one-liners that tweak how that error plot shows up πŸ’…

  • ds9 -plot error yes β€” turns the error plot on. That's it, that's the whole job ✨
  • ds9 -plot error color red β€” sets the error plot's color to red. Yes literally the word red. Obsessed πŸ“
  • ds9 -plot error cap yes β€” caps the error plot. yes means capped, slay πŸŽ€
  • ds9 -plot error width 2 β€” sets the error plot width to 2. Lowkey a whole vibe 🌸

png πŸ¦‹

Load PNG image into current frame. Iconic. Not me just dropping a PNG straight into whatever frame is on deck rn 😭

Syntax

-png <filename>

Example:

okay so real quick, the vibe here is you can absolutely pipe an image straight into DS9, no big deal, no cap πŸ’…

ds9 png foo.png
$ cat foo.png | ds9 -png -

like. the way that you just hand it a file, or you cat one and shove it down the pipe β€” both iconic, both valid, both slay ✨


  • -port β€” sets the IRAF port number, the lil channel IRAF uses to actually talk to DS9 🫢 The default is 5137, the standard IRAF…

the port that's getting used by ximtool. ✨ iykyk.

Syntax πŸ’…

-port number

Example 🌸

ds9 -port 5137

  • port_only, inet_only β€” only use the IRAF port number, bestie, that's it, that's the whole vibe. this is literally the same thing as running -fifo none -unix none. 🫢 no cap.
  • -port_only β€” bestie, this one locks it down to port-only mode. That's the whole vibe, nothing else to it. πŸ’…

Syntax:

-port_only

Example:

ds9 -port_only

Short, sweet, iconic. No notes. ✨

  • pow β€” pick the power scale function for whatever frame you're currently looking at. Yeah, the current frame, so like, check which one you're on before you go changing things, okay? 🫢

Syntax:

-pow

Example:

ds9 -pow
  • prefs β€” controls a whole bunch of preference settings. That's it, that's the description. It's giving "trust me, you'll figure it out" energy but fr fr that's what the page says. πŸŽ€

✨ Syntax ✨

okay bestie, this is the whole vibe of the -prefs command β€” like, every little piece you can slot in. here's the shape of it, no cap:

-prefs
   [open]
   [save]
   [clear]
   [close]
   [bg color yes|no]
   [bg color <color>]
   [nan color <color>]
   [precision <linear> <degree> <hms> <dms> <len linear> <len degree>]

so real talk, -prefs is the main character here πŸŽ€ and everything in those square brackets is optional β€” you pick and choose, mix and match, whatever your little heart desires πŸ’–


πŸ¦‹ the options, one by one πŸ¦‹

  • open β€” pulls up (opens) the preferences, like opening a fresh tab on your soul ✨
  • save β€” saves the current prefs, so your settings are locked in and remembered. periodt πŸ’…
  • clear β€” wipes the prefs clean, like clearing your camera roll after a bad photoshoot 😭
  • close β€” closes the preferences back up, bye bye πŸ‘‹
  • bg color yes|no β€” toggles the background colour on or off. it's literally a yes-or-no situation, no in-between energy πŸ’€
  • bg color <color> β€” sets the background colour to whatever <color> you drop in there 🎨
  • nan color <color> β€” sets the colour used for NaN values to <color>. so when the data's giving "not a number", at least it looks cute 🌸
  • precision <linear> <degree> <hms> <dms> <len linear> <len degree> β€” this one's the overachiever fr fr, it takes six values at once:
    • <linear> β€” precision for linear values
    • <degree> β€” precision for degree values
    • <hms> β€” precision for hours, minutes, seconds
    • <dms> β€” precision for degrees, minutes, seconds
    • <len linear> β€” precision for linear length values
    • <len degree> β€” precision for degree length values
ngl bestie, don't skip any of those six β€” it wants all of them, in that exact order, no substitutions πŸ™ˆ

 [<len arcmin>]
 [<len arcsec>]
 [<angle>]
 [theme <theme>]
 [threads <numeric>]
 [irafalign yes|no]

okay so let's vibe-check the last few of these bc they're giving "optional, but iconic" ✨

  • <len arcmin> β€” a length, bestie, and you're measuring it in arcminutes. space math, we love her πŸ¦‹
  • <len arcsec> β€” same energy, but the unit is arcseconds. smaller. precise. main character energy πŸ’…
  • <angle> β€” literally just an angle. that's the whole assignment. put an angle here πŸ”₯
  • theme <theme> β€” hand it a <theme> and go. that's the deal 🌸
  • threads <numeric> β€” a <numeric> value goes here. number in, number out, no cap πŸ”’
  • irafalign yes|no β€” you literally pick yes or no. that's it. that's the choice πŸ‘‘

Example:

 ds9 -prefs open

 ds9 -prefs save

 ds9 -prefs clear

not me showing you three whole moods in one go 😭 like, ds9 -prefs open, ds9 -prefs save, ds9 -prefs clear β€” that's the trio, fr fr πŸŽ€ keep reading, we're not done yet 🫢

okay so these are literally the examples, bestie β€” copy-paste energy, no cap. 🫢

ds9
-prefs
close

that's the close one, in all its tiny lowercase glory. the prefs get told close, and that's the whole command. iconic minimalism, honestly. πŸ’…


ds9
-prefs
bg
color
no

here you're handing the bg color pref the value no. three little tokens doing the absolute most. 🌸

ds9
-prefs
bg
color
red

same shape, different vibe β€” bg color gets red this time. swap that last word and you've changed the whole aesthetic. main character behavior fr fr. πŸ”₯

ds9
-prefs
nan
color
blue

and this one's for the nan color, set to blue. yes, nan β€” like Not-A-Number. the pixels that aren't really pixels deserve a color too, and hers is blue. πŸ¦‹


see the pattern? it's always:

ds9
-prefs
<pref>
<value>

pref, then value, then go. that's the whole rhythm, and once you clock it you can set basically anything your heart desires. πŸ’–

Okay bestie, this is the part where we just show you the prefs getting set, because reading is one thing and watching it happen is another πŸ’…


✨ setting the precision, one number at a time ✨

The precision pref wants a whole lil squad of numbers, and you feed them in like this:

ds9
-prefs
precision
8
7
4
3
8
7
5
3
8

Yes, that's nine of them, in that exact order, no substitutions πŸ™ˆ Count them again if you want, they're all there: 8, 7, 4, 3, 8, 7, 5, 3, 8. Don't get creative, don't drop one, just hand them over in a row like you're passing notes in class πŸ“


πŸŽ€ setting the theme πŸŽ€

Then there's the theme pref, which is genuinely the most main character pref of the bunch because it changes the whole vibe:

ds9
-prefs
theme
radiance

So here the theme is being set to radiance. That's the value. That's the whole thing. Slay ✨


🧡 setting the threads 🧡

And finally, the threads pref, for when you want to tell it how many threads to run with:

ds9
-prefs
threads
8

Eight threads. 8. That's the number 🫢


So yeah, the pattern here is always the same shape, bestie: you say ds9, you say -prefs, you name the pref, and then you give it whatever it wants β€” a stack of numbers, a word, a single digit, doesn't matter. It's giving very consistent, very demure, very mindful 🌸

ngl, the line breaks in the original are doing the most πŸ’€ β€” just read each one as a single command: ds9 -prefs precision 8 7 4 3 8 7 5 3 8, ds9 -prefs theme radiance, and ds9 -prefs threads 8. Same characters, same order, zero changes. Promise 🀞

More of these coming, don't go anywhere πŸ’–

ds9 -prefs iraf yes

πŸ’– preserve

okay bestie, so preserve is literally here to preserve the follow attributes while loading a new image. no cap, that's the whole vibe. (yes, "follow", not "following", we keep it exactly πŸ’€βœ¨)

✨ Syntax ✨

-preserve [pan yes|no] [regions yes|no]

🌸 Example 🌸

ds9 -preserve pan yes
  • -preserve regions yes β€” okay so this one keeps your regions file alive through the operation, no cap ✨ it's giving "don't touch my stuff" energy and honestly? iconic. πŸ’…
  • psprint β€” invokes PostScript printing πŸ–¨οΈβœ¨ like, it literally fires up the whole postscript printing thing. but bestie, if you wanna know more, it's pointing you at print for further details β€” so go read that one, iykyk. 🫢
  • print β€” controls printing πŸŽ€ the main character of print options, fr fr. and listen: use the print option itself to set your printing options. yes it's a little "option-ception" moment, we don't make the rules πŸ’€ but that's literally how you configure it, so go off. πŸ‘‘

✨ Syntax ✨

okay bestie, here's the shape of the whole thing when you actually write it out 🫢 every one of these bracket-y bits is a little optional slot you can fill in, and the pipes are just "pick ONE of these, not all of them" energy:

-print [destination printer|file] [command <command>] [filename <filename>] [color rgb|cmyk|gray] [level 1|2|3] [resolution72|screen|96|144|150|225|300|

and yes it literally just trails off right there 😭 the page got cut mid-option, so hold that thought.


here's the breakdown, one bracket at a time:

  • [destination printer|file] β€” where you want the output to land. you're picking between a printer or a file, not both, bestie πŸ’…
  • [command <command>] β€” a command slot, and the placeholder it wants is literally written as <command>. iconic.
  • [filename <filename>] β€” same deal, but for a file name. the placeholder is <filename>, no cap.
  • [color rgb|cmyk|gray] β€” the color situation 🌈 and your three choices are rgb, cmyk, or gray. pick your palette, queen.
  • [level 1|2|3] β€” a level, and it only goes 1, 2, or 3. three little tiers, no more, no less ✨
  • [resolution72|screen|96|144|150|225|300| β€” the resolution slot, and look at all these options: 72, screen, 96, 144, 150, 225, 300, and then it just... stops. mid-pipe. the page ran out of room 🫠
ngl the whole thing is giving "choose your own adventure but make it a print command" and I am obsessed πŸ’–

...and the very last lil bits of that value list, sitting here all by themselves like the end of a group chat scroll:

  • 600|
  • 1200]

That's the whole list, bestie. Nothing missing, nothing extra. πŸ’…


🌸 Example ✨

Okay so here's how you'd actually run this in real life β€” every single one of these is a legit invocation, copy-paste ready, no edits needed:

ds9 -print
ds9 -print destination file
ds9 -print command lp
ds9 -print filename foo.ps
ds9 -print color cmyk
ds9 -print level 2

Six whole moods. Pick the one that matches your vibe and go off. πŸ‘‘

The tail of the list, bestie β€” every single token exactly as it drops, no edits, no vibes-based renaming πŸ’…

  • ds9 β€” the name of the program itself, lowercase, no caps, no notes. It's giving main character energy and it knows it. πŸ‘‘
  • -print β€” one dash, the word print, all lowercase. That's the whole flag, spelled exactly like that. Don't get creative with it. πŸŽ€
  • resolution β€” spelled out fully, all lowercase, no hyphens hiding in there. ✨
  • 96 β€” just the number. Two digits. 96. Not 96.0, not ninety-six, not 9 6. Ninety-six, periodt. πŸ”₯
  • prism β€” lowercase, one word, five letters. πŸ¦‹
  • Invoke β€” capital I, the rest lowercase. Yes, the capital matters, don't @ me. 🌸
  • FITS β€” all four letters uppercase, always. It's an acronym and it will not be disrespected. πŸ’œ
  • analysis β€” lowercase, one word, no dash, no space. 🧚
  • tool. β€” lowercase, and yes, the period is part of the line. Take the whole thing, punctuation included. πŸ’€

No cap, lowkey the rule for this whole stretch: copy it character for character. Every letter, every capital, every dash, every dot. If you change one of them, that's not the same thing anymore. πŸ™ˆ

So the line reads, in full and untouched:

Invoke FITS analysis tool.

Obsessed with how plain it is. It just says what it says and moves on. 🫢

✨ Syntax ✨

okay so bestie, not me about to drop the syntax tea β˜•οΈ the way that -prism has a whole little entourage of optional commands? it's giving main character energy, fr fr. here's the exact lineup, no cap:

-prism [open] [<filename>] [load <filename>] [import xml|rdb|tsv <filename>] [export xml|rdb|tsv <filename>] [clear] [current <ref>] [ext <int>

lowkey iconic. highkey obsessed. πŸ’–

okay bestie, we're mid-syntax-situation, the bracket tower continues, do NOT panic, just breathe and read the lil grammar drip πŸ’…

<extname>] [first|next|prev|last] [goto <int>] [image] [mode newplot|newgraph|overplot] [histogram <col> <numbins> [<min> <max>]] [plot <colx> <coly> [<colerrx>

and here's the same energy, broken out so your eyes stop crying 😭

  • ] β€” yes, it's just a lone closing bracket, it's closing something that opened back in the previous part, she's the end of a bracket that had her whole beginning somewhere else, iconic cliffhanger behaviour fr fr
  • [first|next|prev|last] β€” the little squad of four. you pick exactly one: first, next, prev, or last. no cap, that's the whole vibe check.
  • [goto <int>] β€” goto plus a whole integer <int>. a number. she wants a number. πŸŽ€
  • [image] β€” just image, standing there, no arguments, no notes, main character energy 🌸
  • [mode newplot|newgraph|overplot] β€” the word mode followed by one of three: newplot, newgraph, or overplot. three doors, pick one πŸšͺ
  • [histogram <col> <numbins> [<min> <max>]] β€” okay so this one's nested, it's giving matryoshka πŸͺ†. you've got histogram, then <col>, then <numbins>, and inside all of that there's an optional [<min> <max>] sitting pretty.
  • [plot <colx> <coly> [<colerrx> β€” and we're cutting off right here mid-bracket, plot then <colx> then <coly> then an optional bracket opening with <colerrx>… and that's where this part ends bestie, the bracket is literally still open, it's a cliffhanger, we are NOT resolving it in this part 😭
reminder: every one of these lil guys is optional, hence the square hugs around all of them. the brackets aren't decoration, they're the whole point. 🫢

we'll pick that dangling <colerrx> bracket back up in the next chunk, don't you dare close it yourself ✨

so the plot-type vibe check is literally just this β€” you pick one of these and that's the whole personality of your prism plot πŸ’«

]
[<colerry>
]
xy|
xyex|
xyey|
xyexey]
  • xy β€” no error bars, just x and y doing their little thing, clean and unbothered ✨
  • xyex β€” x values come with errors, so you get horizontal error bars, she's horizontal πŸ’…
  • xyey β€” y values come with errors, vertical error bars only, standing tall πŸ‘‘
  • xyexey β€” both directions get errors, full error-bar realness, the whole package fr fr πŸ”₯

🌈 Example 🌈

not me showing you five whole ways to summon prism bestie 😭 every single one of these is literally just ds9 -prism plus whatever energy you're bringing:

ds9
-prism
ds9
-prism
open
ds9
-prism
foo.fits
ds9
-prism
load
bar.fits
ds9
-prism
import
tsv
bar.tsv

okay so like β€” ds9 -prism on its own? she just arrives, no data, no notes, main character energy πŸŽ€

ds9 -prism open is her opening the whole thing up for you, iykyk πŸ¦‹

ds9 -prism foo.fits is you handing her an actual FITS file and she's like "say less" 🌸

ds9 -prism load bar.fits is the load of it all, loading that bar.fits in πŸ’–

and ds9 -prism import tsv bar.tsv is her importing a tsv β€” bar.tsv specifically β€” and honestly? ate. no cap πŸ“

lowkey obsessed with how much you can do just by tacking words onto -prism, it's giving versatility 🌟

Aight bestie, time for the -prism glow-up tour ✨ Here's every single incantation, served fresh, no edits, no crumbs left behind πŸ“


Wipe the whole prism slate clean:

ds9 -prism clear

Swap over to the prism named prism2:

ds9 -prism current prism2

Point at extension number 2:

ds9 -prism ext 2

Or aim it at the extension literally called STDEVT β€” yes, by name, iconic behavior πŸ‘‘

ds9 -prism ext STDEVT

Jump straight back to the first one:

ds9 -prism first

And just step forward one, no drama:

ds9 -prism next

Feeling specific? Teleport straight to 20345:

ds9 -prism goto 20345

That's the whole lineup, babes πŸ’œ Copy them exactly as they are β€” no cap, these arguments are picky and the vibes do not survive typos 🫢

Okay bestie, here come the glow-up examples πŸ’… β€” the way you actually type these out. Watch and learn 🫢


ds9 -prism image

So you've got ds9, you've got -prism, and then you're handing it the word image like a little gift. That's the whole vibe. ✨


ds9 -prism mode newplot

Now we're in mode territory, and the mode we're asking for is newplot. New plot, who dis. πŸ¦‹


ds9 -prism histogram RAWX 40

A histogram moment, RAWX as the axis, and a 40 sitting at the end doing its little number thing. No notes. 🌸


ds9 -prism histogram RAWX 40 0 100

Same histogram RAWX 40 energy, but now with 0 and 100 tagging along at the back β€” two extra numbers, same iconic lineup. πŸ˜­πŸ’–


ds9 -prism plot RAWX RAWY xy

And finally: a plot with RAWX and RAWY and then xy just chilling at the end. It's giving coordinates, it's giving main character, it's giving plot. πŸ”₯


Every single one of these is ds9 first, -prism second, then whatever the actual command wants. Order matters, bestie β€” don't shuffle the lineup. πŸŽ€

okay so the prism thing β€” here's what those invocations actually look like, bestie:

ds9 -prism plot RAWX RAWY PHA xyex

and the slightly more extra version:

ds9 -prism plot RAWX RAWY PHA PHI xyexey

That's the whole squad of tokens: plot, RAWX, RAWY, PHA, PHI, xyex, xyexey. Write them exactly like that, no cap. ✨


🫢 -raise β€” the "notice me" flag

  • -raise β€” raise the thing in the window stacking order. That's literally the entire job. It pulls the window up to the front, like when your one unread notification finally claws its way above the other 47 tabs you swore you'd close. πŸ‘‘ Iconic behaviour, honestly.

Syntax

-raise

Example:

  • -raise region β€” bestie this one is literally the region wrangler πŸ’… it takes the argument region and it controls regions in the current frame. that's the whole vibe. current frame. regions. controlled. periodt ✨
heads up that this is all about the current frame β€” not some other frame, not a future frame, the one you're looking at right now πŸŽ€

✨ Syntax ✨

okay bestie, here's the whole -region shape, laid out exactly like ds9 wants it πŸ’–

-region
  [<filename>]
  [load [all] <filename>]
  [save [select] <filename>]
  [list [close|select]]
  [epsilon <integer>]
  [show yes|no]
  [showtext yes|no]

read this like a lil recipe, not a spell 🧚 β€” everything inside [ ] is optional, and a | means "pick one of these, not both." that's the whole vibe check on the brackets, iykyk.


πŸŽ€ what each lil piece is giving

  • -region β€” the main character flag itself. everything below hangs off it. πŸ‘‘
  • [<filename>] β€” an optional filename you can hand over right there, no extra keyword needed. just drop it in. 🌸
  • [load [all] <filename>] β€” the load move, with an optional all in the middle and a required <filename> at the end. so it can be load <filename> or load all <filename>, your call bestie πŸ’…
  • [save [select] <filename>] β€” the save move, with an optional select tucked in and a required <filename> after it. again: save <filename> or save select <filename>. 🫢
  • [list [close|select]] β€” list on its own, or list followed by either close or select. one or the other, no doubling up. πŸ¦‹
  • [epsilon <integer>] β€” epsilon plus an integer value. yes, an actual number, not a vibe. πŸ”’
  • [show yes|no] β€” show wants a straight-up yes or no. binary, no in-between. ✨
  • [showtext yes|no] β€” same energy: showtext takes yes or no. that's it, that's the tea. πŸ“
fr fr, if you're ever staring at this block wondering "do i need the brackets??" β€” no. the brackets are notation, not characters you type. they're just telling you what's optional. 😭

lowkey iconic that a syntax block can be this compact and still say so much. anyway, keep scrolling bestie, there's more πŸ’œ

  • [centroid] β€” okay so this is the whole centroid vibe, bestie πŸ’… it's the umbrella situation, and the little bracketed bits that follow are the options you can stack inside it. Bare [centroid] on its own? Valid. No cap.
  • [centroid auto yes|no] β€” the auto setting inside [centroid], and it takes exactly one of two values: yes or no. That's it, that's the whole menu πŸŽ€ pick your fighter.
  • [centroid radius <value>|iteration <value>] β€” here's where it gets spicy 🌢️ inside [centroid] you get to choose one of these two: either radius with a <value>, or iteration with a <value>. Note the pipe β€” it's giving "either/or", not "and", periodt. <value> is a placeholder, so swap in your actual number, don't type the angle brackets literally πŸ™ˆ
  • [move front|back] β€” the move move πŸ’« it takes front or back. Pick a lane, bestie, you can't have both.
  • [select all|none|all|front|back] β€” yes you're reading that right, all shows up twice in this list πŸ‘€ and that is exactly how it's written in the manual, so I'm not touching it. Your options are all, none, all, front, back. Iconic. Slightly chaotic. We love her anyway πŸ¦‹
  • [delete [select]] β€” the delete situation, and nested inside it there's a lil optional [select] 🫢 so [delete] alone is fine, and [delete [select]] is also a thing. Nested brackets, main character energy, she's doing the most and I respect it.
  • [delete β€” okay so we're mid-thought here, this one literally cuts off at [delete and keeps going in the next part 😭 do **not panic, nothing's broken, the page just keeps scrolling. Stay with me, bestie, we're picking this back up in a sec πŸ’–
[load <filename>]
[format ds9|xml|ciao|saotng|saoimage|pros|xy]
[system image|physical|wcs|wcsa...wcsz]
[sky fk4|fk5|icrs|galactic|ecliptic]
[skyformat degrees|sexagesimal]
  • load <filename> β€” okay so this is the "bestie, open this one for me" move πŸ’– you hand it a <filename> and that's the file you're loading, no cap.
  • format ds9|xml|ciao|saotng|saoimage|pros|xy β€” this one's a pick-your-fighter situation πŸŽ€ you tell ds9 which format the file is in, and your options are literally these seven and only these seven: ds9, xml, ciao, saotng, saoimage, pros, xy. Not me listing all of them so you don't have to guess πŸ’…
  • system image|physical|wcs|wcsa...wcsz β€” the coordinate system vibe check ✨ choices are image, physical, wcs, and then wcsa all the way through to wcz (yes really, wcsa...wcz, every letter in between, it's giving alphabet energy 🌈).
  • sky fk4|fk5|icrs|galactic|ecliptic β€” which sky frame we're living in πŸ¦‹ pick fk4, fk5, icrs, galactic, or ecliptic. Iconic lineup fr fr.
  • skyformat degrees|sexagesimal β€” how the sky coords get written out πŸ‘‘ either degrees or sexagesimal. That's the whole menu bestie, no hidden items πŸ’œ
the ... in wcsa...wcz is literally part of the syntax, don't @ me, that's just how it's written πŸ’€ keep it exactly like that.

...and then it just keeps going, bestie, like the syntax said "and one more thing" six times in a row πŸ’€. Here's the rest of it, exactly as it lands:

[strip yes|no] [shape <shape>] [color <color>] [fill yes|no];
[width <width>] [dash yes|no] [font times|helvetica|courier]
[fontsize <value>

Yes, that last bracket is genuinely left hanging open in the original. Not me being messy. It's giving cliffhanger. 🫢


🌸 the lil dials, one by one

  • [strip yes|no] β€” takes yes or no, that's the whole menu. Pick your fighter.
  • [shape <shape>] β€” you hand it a <shape>. Whatever shape you got, that's the shape you're getting.
  • [color <color>] β€” feeds on a <color>. Dress it up πŸ’…
  • [fill yes|no] β€” again yes or no. Binary queen, no in-between.
  • [width <width>] β€” takes a <width>. Thiccness is a spectrum, apparently.
  • [dash yes|no] β€” yes or no. Dashes: on or off, no half measures. ✨
  • [font times|helvetica|courier] β€” exactly three choices and not a single one more: times, helvetica, courier. That's the whole roster. No Arial erasure discourse today, the manpage said what it said.
  • [fontsize <value>] β€” takes a <value>. And yeah, the bracket closes... eventually. πŸ™ˆ
lowkey everything in this cluster is optional β€” see how they're all wrapped in [ ]? Bestie, that's the brackets saying "only if you feel like it." You are never obligated. That's the vibe. πŸ¦‹

Every single one of these is a slot you can fill and none of them are a slot you must fill.</purl> Note that semicolon sitting right after [fill yes|no] up there β€” that's not decoration, it's punctuation with a job, so don't go ghosting it when you're typing this out for real. Copy it exactly, bestie, I am begging. 😭

And the [fontsize <value> at the very end? It just... stops. Right there. Mid-bracket. The syntax said "I'm tired" and clocked out. So when you're writing it out yourself you're gonna need to close that thing β€” because bestie, nothing in Unix closes your brackets for you. Ever. πŸŽ€

...and we're back, bestie πŸ’… no new heading needed, we're just continuing the list like nothing happened. These are all still part of the same big family of bracketed choices, so read 'em, love 'em, and copy 'em character for character:

  • [fontweight normal|bold] β€” pick your weight, gorgeous: normal or bold. That's the whole menu, two options, no in-between πŸŽ€
  • [fontslant roman|italic] β€” and here's the slant: roman (straight up) or italic (leaning, serving looks) ✨

Then the toggle squad rolls in β€” four little switches, and each one wants a yes or a no, okay?

  • [fixed|edit|rotate|delete yes|no] β€” yes, all four live in one bracket, and each of them takes either yes or no. Say it with me: yes or no, no maybes, no "kinda", periodt πŸ’…

  • [include|exclude|source|background] β€” four words, one bracket, no values attached. Just pick your fighter: include, exclude, source, or background πŸ¦‹

  • [command <marker command>] β€” this one's a placeholder situation, so keep the angle brackets exactly as they are: <marker command> goes in there literally as the placeholder, not as something you swap the words out of 🫢

  • [analysis histogram|panda|plot2d| β€” and here we go again with the alternatives, bestie: histogram, panda, plot2d...
and yep, that bracket is still open 😭 it just keeps going, we are not done β€” hold that thought, the next chunk picks it right back up πŸ’–

...and the grammar keeps going, so here's the next stretch of the card πŸ’–

plot3d|radial|stats
[open|close|save]
]
[composite]
[dissolve]
[template <filename>]
[template <filename> at <ra> <dec> <coordsys> <skyframe>]
[savetemplate <filename>]
[group new]

okay bestie, read this like a recipe card where the square brackets mean "only if you want it" and the straight-up words mean "yes, this, for real" πŸŽ€

  • plot3d | radial | stats β€” three little words, and you pick exactly one of them. The | is the "or" of the whole thing. Not all three. One. Periodt. πŸ’…
  • [open|close|save] β€” optional, and if you do want it, it's another pick-one-of-three: open, close, or save. Same | energy.
  • ] β€” bestie this is just the closing bracket for a group that got opened earlier, before this part. It has no friends and no arguments. It just closes the thing. Don't leave it out if you opened the thing. 🫢
  • [composite] β€” optional, standalone, no arguments, just the one word doing its little solo.
  • [dissolve] β€” same deal, optional, just the word by itself.
  • [template <filename>] β€” optional, and here <filename> is a placeholder, so you swap in your actual file name. Don't type the angle brackets, iykyk ✨
  • [template <filename> at <ra> <dec> <coordsys> <skyframe>] β€” the longer twin of the one above: same template <filename>, then the word at, then four placeholders in a row: <ra>, <dec>, <coordsys>, <skyframe>. All four. In that order. No cap. 🌈
  • [savetemplate <filename>] β€” optional, and heads up: it's one word, savetemplate, no space in the middle, then your <filename> placeholder. The space goes after it, not inside it. πŸ™ˆ
  • [group new] β€” optional, and it's two literal words: group, then a space, then new. Both stay exactly like that, lowercase, as-is. Don't smoosh them together. πŸ“
lowkey the whole vibe here is: brackets = optional, no brackets = you're typing it, | = choose one, <like this> = swap in your own value. Learn that pattern once and the rest of this page just unlocks. πŸ‘‘

it's giving grammar slay and honestly? obsessed. πŸ’œ

  • [group <tag> new] β€” okay so this is the group family, and this is the new flavour of it. You're handing it a <tag> (that's a placeholder, bestie, swap in your actual tag name ✨) and asking for a brand-new one. <tag> stays a placeholder β€” don't literally type the angle brackets, iykyk πŸ’…
  • [group <tag> update] β€” same group energy, same <tag>, but this one is the update one. You already have a thing and you wanna refresh it. Lowkey the glow-up option 🫢
  • [group <tag> select] β€” the select variant of group <tag>. Picking it. Choosing it. Main character energy, obviously πŸ‘‘
  • [group <tag> color <color>] β€” oh this one's fun, it takes two placeholders: the <tag> and a <color>. So it's group, then <tag>, then color, then <color>. Two blanks to fill, no skipping, fr fr πŸŽ€
  • [group <tag> copy] β€” the copy one. Same group, same <tag>, and then copy. That's the whole line, no extra arguments hanging off it 🌸
  • [group <tag> delete] β€” the delete one. group, <tag>, delete. That's it. (Be careful with delete-type things in general, bestie β€” that's just good life advice πŸ’€)
  • [group <tag> cut] β€” and the cut one. group, <tag>, cut. Same shape as its siblings, no extra bits πŸ¦‹
  • [group <tag> β€” and then it just… trails off 😭 The line stops right there mid-thought, after group and <tag>, with the bracket still wide open and absolutely no idea what comes next. We don't get to find out in this breath β€” hold that thought, the rest is pulling up any second now 🧚

okay so we're still deep in the command grammar and bestie it's literally just a list of tokens, but every single one matters, no cap. here's the next chunk, keep it exact:

font
<font>
]
[group
<tag>
move
<int>
<int>
]
[group
<tag>
movefront]
[group
<tag>
moveback]
[group
<tag>
property
<property>
yes|
no]
[copy]
[cut]
[paste
image|

and yes, there's more coming, so stay tuned πŸ‘‘

...and the last of those bracket-y choices, bestie, in the exact order they show up:

physical|
wcs|
wcsa...wcsz]
[undo]
[open|
close]
  • physical β€” one of the picks you can hand over ✨
  • wcs β€” another one πŸ¦‹
  • wcsa...wcsz β€” the whole alphabet-ish range, a through z πŸ’…
  • undo β€” yep, that's an option in there too πŸ™ˆ
  • open | close β€” these two share a slot, it's giving "pick a lane" πŸ’–
fr fr, that ] at the end of wcsa...wcsz] is just the closing bracket of the optional group β€” the list is donezo after this, no cap.

πŸŽ€ Example πŸŽ€

Like, here's how it actually looks when you type it out:

ds9 -region foo.reg

And if you wanna be specific about the flavor of region file you're loading:

ds9 -region -format ciao bar.reg    # load as ciao format

That # load as ciao format bit? Chef's kiss, it's literally telling you the vibe of that line β€” ciao format, loaded up, main character energy πŸ‘‘

like, sometimes you just wanna yeet a region file straight at DS9 and let it cook πŸ’… so here's the vibe:

ds9 -region foo.fits      # FITS region files do not need a format specification
ds9 -region load foo.reg  # load foo.reg into current frame

okay so line one, bestie: you hand ds9 the -region flag with foo.fits and that's it β€” no format specification required, because FITS region files already know what they are πŸ¦‹ they're self-describing, they're the main character, they do not need you to hold their hand ✨

line two is the other flavour: -region load foo.reg β€” see that little load in there? that's the subcommand telling DS9 to load foo.reg into the current frame πŸ’œ not a new one, not a different one, the one you're already on. periodt.

ngl the difference matters: bare -region with a FITS file just does its thing, but if you're working with a plain region file you're gonna be typing load (or one of its siblings, iykyk β€” more on that in a sec πŸ‘€).

Aaand here's the little demo section, bestie β€” look how cute these two lines are πŸŽ€

ds9 -region load all foo.reg        # load foo.reg into all frames
ds9 -region load '*.reg'            # expand *.reg and load into current frame

Okay so let's break down what's actually happening here, because it's giving so much in like four words of flags πŸ’…

  • ds9 -region load all foo.reg β€” this one loads foo.reg into all frames. Like, every single frame gets it. Not just the one you're staring at. All of them. Generous queen behavior πŸ‘‘
  • ds9 -region load '*.reg' β€” and this one is the sneaky one. Here the shell expands *.reg for you (that's why it's wrapped in quotes so it travels as-is, and then it gets expanded at the right moment), and the result gets loaded into the current frame. Just the one you're on right now, not the whole squad πŸ¦‹
Lowkey important: notice the difference in scope, bestie. all = every frame. No all = just the current frame. That's the whole plot twist right there ✨

so iconic, so simple, so slay 🌈

Okay bestie, more region example recipes, and these ones are lowkey the most useful ones for scripting, so lock in πŸ”’βœ¨

First up β€” loading a whole glob of region files into every single frame, no cap:

ds9 -region load all '*.reg'  # expand *.reg and load into all frames

The way that all just scoops up every matching *.reg and yeets them into all frames?? Iconic. Note the quotes around '*.reg' β€” that's so your shell doesn't go feral and expand the glob itself before ds9 ever sees it. Let ds9 do the expanding, periodt. πŸ’…


Next, saving the current regions out to a file:

ds9 -region save foo.reg

Just writes them out to foo.reg, simple as that. 🌸


But wait β€” what if you only want the selected regions, not the whole vibe? Say less:

ds9 -region save select foo.reg

That select keyword is doing the heavy lifting β€” only the selected regions make it into foo.reg. Main character behavior fr fr. πŸ‘‘


And if you just wanna peek at what regions exist without saving anything?

ds9 -region list

Manifesting that region list right into your terminal. No files harmed, no frames touched, just vibes and information. πŸ¦‹


Heads up babe β€” all of these use the exact same -region flag from earlier, so if you skipped that part go back and read it, iykyk. The action word (load, save, list) is what tells ds9 what to do, and the stuff after it is the what and where. πŸŽ€
ds9 -region list select

okay bestie this one right here ✨ β€” you're handing ds9 the -region flag, then telling it list, then select. three little words and a whole mood πŸ’…

ds9 -region list close

same -region list energy, but the third word is close this time. notice how the pattern is doing the work here πŸ¦‹ β€” -region, then list, then whatever verb you're feeling that day.

ds9 -region epsilon 5

epsilon 5 πŸ’– the number is literally 5, no cap. that 5 is the whole point of this line β€” it's an argument to epsilon and it rides along after the -region flag like it owns the place πŸ‘‘

ds9 -region show yes

show gets yes. that's it, that's the line 🌸 β€” yes as the value, plain as day.

ds9 -region showtext no

showtext β€” not show, careful, they're different words and this is the exact kind of thing where a typo will lowkey betray you 😭 β€” and its value here is no.

ds9 -region centroid

and finally, centroid with no argument at all 🧚 β€” just vibing on its own at the end of the line. no value, no number, nothing trailing after it. periodt.


a lil vibe check πŸ”₯ β€” see how every single one of these starts the exact same way? ds9 -region … and then the rest is just whatever you're asking for. that's the shape of it. don't overthink, don't add words that aren't there πŸ™ˆ

these are all straight-up command lines you'd type at your shell, btw πŸ’œ β€” not fragments, not pseudocode, just you, your terminal, and ds9 doing exactly what you said.


okay bestie, more region glow-up recipes, let's go πŸŽ€

First up β€” let the centroid just do its thing automatically:

ds9
-region
centroid
auto
yes

✨ Set auto to yes and the centroid computation handles itself. Lowkey the easiest glow-up in the whole file.


Wanna control how far out it reaches? Give it a radius:

ds9
-region
centroid
radius
10

🌸 That 10 is the radius value β€” no cap, that's literally just the number the example uses. Swap in whatever you need, iykyk.


And if it needs to iterate, you tell it how many times:

ds9
-region
centroid
iteration
20

πŸ’… Twenty rounds of iteration. She's thorough. She's committed. She's giving main character energy.


Now the layering vibes β€” sending a region to the back:

ds9
-region
move
back

πŸ¦‹ move back β€” that region is going behind everything else. Not deleted, bestie, just humble. Still there, just not stealing the spotlight.


And the reverse, obviously β€” front and center:

ds9
-region
move
front

πŸ‘‘ move front β€” now she's the moment. On top of every other region, impossible to ignore. Ate, no crumbs.


🫢 Quick reminder, bestie: back and front are the two literal values shown here β€” don't go freestyling extra words in there, fr fr.
ds9 -region select all

okay bestie, this one right here? select all does exactly what it says on the tin β€” every single region in the whole dang list gets selected. no picking and choosing, no little checkboxes, just ALL OF THEM πŸ’–. it's giving "select all" in your group chat when you're trying to mass-mute everyone, except iconic and about regions. periodt.


ds9 -region select none

and then we have the opposite energy 🫢 β€” select none deselects literally everything. zero regions selected, a totally blank slate, the cleanest vibe check you've ever seen. it's the "nvm ignore me" of region commands and honestly? sometimes you need that reset button energy. ✨


ds9 -region select invert

NOT me flipping the whole situation upside down 😭. select invert takes whatever's selected and makes it unselected, and whatever's unselected and makes it selected. the switcheroo. the uno reverse card πŸŽ€. if you had 3 regions selected out of 10, boom, now the other 7 are selected instead. math is mathing and the plot is plotting.


ds9 -region select front

ooh okay this one is layering coded πŸ‘‘ β€” select front grabs the region(s) at the very front of the stack, aka the ones sitting on top of everything else, the main character regions if you will. front row seats, VIP section, no cap. πŸ”₯


ds9 -region select back

and naturally we needed the flip side, so select back picks the region(s) hanging out at the back of the stack β€” the quiet ones, the wallflowers, the background characters who are lowkey carrying the whole plot πŸ™ˆ. not forgotten, just behind everyone. πŸ’œ


ds9 -region delete

final one for this part and it's a big mood ⚠️ β€” ds9 -region delete removes the selected region(s). gone. deleted. yeeted into the void πŸ’€. so like… make sure you actually want them gone before you hit this, bestie, because there is no "oops undo" in the group chat. πŸ¦‹

  • -region + delete select β€” yeets the currently selected regions out of existence πŸ—‘οΈβœ¨ they're gone, they're deleted, it's over for them


ds9
-region
delete
select
  • -region + delete load foo.reg β€” loads foo.reg and then deletes what's in it, so basically "open this file just to destroy it" πŸ’€ iconic behaviour honestly


ds9
-region
delete
load
foo.reg
  • -region + format ds9 β€” sets the region file format to ds9, which is the native DS9 region format πŸŽ€ the home-team format, the one that just gets it


ds9
-region
format
ds9
  • -region + system wcs β€” sets the coordinate system to wcs 🌌 so your regions are being read in World Coordinate System land, i.e. actual sky coordinates, not just pixel vibes


ds9
-region
system
wcs
  • -region + sky fk5 β€” sets the sky coordinate system to fk5 ⭐ the classic FK5 frame, she's an oldie but a goodie and she is not going anywhere


ds9
-region
sky
fk5
  • -region + skyformat degrees β€” sets the sky format to degrees 🌈 so all your sky coords are being spoken in degrees, no sexagesimal nonsense, just straight-up decimal degrees, clean and simple, we love to see it


ds9
-region
skyformat
degrees

okay bestie notice the pattern here πŸ‘€ every single one of these is just ds9 followed by -region followed by what you wanna do followed by the value you wanna do it with β€” it's giving "learn one, you've learned them all" energy, and honestly? that's the whole flex πŸ’…

Okay bestie, more examples, let's gooo πŸŽ€

Here's how you tell it to strip, and the answer is yes:

ds9 -region strip yes

Feeling a little round today? The example goes ellipse for the shape:

ds9 -region shape ellipse

And now she's wearing red πŸ’…:

ds9 -region color red

Filled in? yes please 🫢:

ds9 -region fill yes

Line's a little thicc β€” 3:

ds9 -region width 3

And dash it up, yes ✨:

ds9 -region dash yes
Heads up, bestie: these are literally the command lines exactly as they appear. Type them the way they're written β€” the values (yes, ellipse, red, 3, yes) stay exactly like that. No freelancing on the spelling, fr fr. 😭

okay bestie these next ones are all about making your -region text look exactly how you want it, and honestly? iconic behaviour ✨ every single one of these is a full command you can just type, no cap πŸ’…

ds9
-region
font
times

font? set to times. it's giving ✨classic✨, it's giving "my annotations have main character energy" πŸ“


ds9
-region
fontsize
24

fontsize cranked to 24 β€” big text, big opinions, we LOVE to see it 🫢


ds9
-region
fontweight
bold

fontweight on bold because sometimes your region labels simply need to be FELT, not just read πŸ’ͺ


ds9
-region
fontslant
italic

fontslant set to italic β€” slanted, dramatic, a little mysterious πŸ¦‹


ds9
-region
edit
yes

edit set to yes β€” you're in charge now, go ahead and tweak, you got this πŸ’–


ds9
-region
include

and then include, just vibing there at the end of the list, doing its thing πŸŽ€

heads up bestie β€” these are the region options the way they show up in the examples, so type them exactly like this, spacing and all, or the whole vibe check fails 😭

...and honestly bestie, these are the little region glow-ups you can just type at it. Watch:

ds9 -region command "circle 100 100 20 # color=red"

That one hands the region a direct order β€” a circle at 100 100 with radius 20, and the # color=red is you telling it what to wear. πŸ’…

ds9 -region analysis stats

Same energy, but now you're asking for the analysis stats instead. Slay.

And if you already got a DS9 running and wanna talk to it through the -region pipe? It's giving full group-chat, fr fr:

$ds9 -region analysis stats
close
$ds9 -region

See how it just... listens? You say analysis stats, you say close, and it's like okay bestie noted. Main character energy. πŸ‘‘


πŸ“ FILES πŸ“

The complete text of the DS9 manual β€” like the whole thing, not just this page β€” lives on Debian systems right here:

  • /usr/share/doc/saods9/ref/

Go read it. It's long but it's iconic. 🫢


πŸ‘‘ AUTHOR πŸ‘‘

DS9 is a product of the Smithsonian Astrophysical Observatory</>. No cap, that's the whole flex.

Also, this manual page wasn't hand-typed by some Victorian scribe β€” it was generated from the DS9 HTML documentation by a script written by Justin Pryzby</> and Ole Streicher</>. Automation ate, honestly. ✨


🌸 SEE ALSO 🌸

Go bother these cousins next:


And that's the whole page, bestie!! πŸŽ€ This lil' DS9(1) page is dated 03 Jul 2012</> and yes it's the DS9(1) manual β€” oldie but a baddie, lowkey timeless. πŸ’– Go circle some pixels for me. πŸŒˆπŸ¦‹

πŸ“¦ where this page comes from