In 1924 Hubble50 announced his discovery that some of the known nebulous objects are too distant to be within the the Milky Way (or Galaxy) and that they were probably distant Galaxies51 in their own right. He had also used them to show that the redshift of the nebulae increases with their distance. So now he wants to study them more accurately to see what they actually are. Since they are nebulous or amorphous, they can’t be modeled (like stars that are always a point) easily. So there is no better way to distinguish them than to visually inspect them and see if it is possible to classify these nebulae or not.
Hubble has stored all the FITS images of the objects he wants to visually inspect in his /mnt/data/images directory. He has also stored his catalog of extra-galactic nebulae in /mnt/data/catalogs/extragalactic.txt. Any normal user on his GNU/Linux system (including himself) only has read access to the contents of the /mnt/data directory. He has done this by running this command as root:
# chmod -R 755 /mnt/data
Hubble has done this intentionally to avoid mistakenly deleting or modifying the valuable images he has taken at Mount Wilson while he is working as an ordinary user. Retaking all those images and data is simply not an option. In fact they are also in another hard disk (/dev/sdb1). So if the hard disk which stores his GNU/Linux distribution suddenly malfunctions due to work load, his data is not in harms way. That hard disk is only mounted to this directory when he wants to use it with the command:
# mount /dev/sdb1 /mnt/data
In short, Hubble wants to keep his data safe and fortunately by default Gnuastro allows for this. Hubble creates a temporary visualcheck directory in his home directory for this check. He runs the following commands to make the directory and change to it52:
$ mkdir ~/visualcheck $ cd ~/visualcheck $ pwd /home/edwin/visualcheck $ ls
Hubble has multiple images in /mnt/data/images, some of his targets might be on the edges of an image and so several images need to be stitched to give a good view of them. Also his extra-galactic targets belong to various pointings in the sky, so they are not in one large image. Gnuastro’s Crop is just the program he wants. The catalog in extragalactic.txt is a plain text file which stores the basic information of all his known 200 extra-galactic nebulae. If you don’t have any particular catalog and accompanying image, you can use one the Hubble Space Telescope F160W catalog that we produced in General program usage tutorial along with the accompanying image (specify the exact image name, not /mnt/data/images/*.fits). You can select the brightest galaxies for an easier classification.
In its second column, the catalog has each object’s Right Ascension (the first column is a label he has given to each object), and in the third, the object’s declination (which he specifies with the --coordcol option). Also, since the coordinates are in the world coordinate system (WCS, not pixel positions) units, he adds --mode=wcs.
$ astcrop --coordcol=2 --coordcol=3 /mnt/data/images/*.fits \ --mode=wcs /mnt/data/catalogs/extragalactic.txt Crop started on Tue Jun 14 10:18:11 1932 ---- ./4_crop.fits 1 1 ---- ./2_crop.fits 1 1 ---- ./1_crop.fits 1 1 [[[ Truncated middle of list ]]] ---- ./198_crop.fits 1 1 ---- ./195_crop.fits 1 1 - 200 images created. - 200 were filled in the center. - 0 used more than one input. Crop finished in: 2.429401 (seconds)
Hubble already knows that thread allocation to the the CPU cores is
asynchronous. Hence each time you run it, the order of which job gets done
first differs. When using Crop the order of outputs is irrelevant since
each crop is independent of the rest. This is why the crops are not
necessarily created in the same input order. He is satisfied with the
default width of the outputs (which he inspected by running
-P). If he wanted a different width for the cropped images, he could do
that with the --wwidth option which accepts a value in
arc-seconds. When he lists the contents of the directory again he finds
his 200 objects as separate FITS images.
$ ls 1_crop.fits 2_crop.fits ... 200_crop.fits
The FITS image format was not designed for efficient/fast viewing, but mainly for accurate storing of the data. So he chooses to convert the cropped images to a more common image format to view them more quickly and easily through standard image viewers (which load much faster than FITS image viewer). JPEG is one of the most recognized image formats that is supported by most image viewers. Fortunately Gnuastro has just such a tool to convert various types of file types to and from each other: ConvertType. Hubble has already heard of GNU Parallel from one of his colleagues at Mount Wilson Observatory. It allows multiple instances of a command to be run simultaneously on the system, so he uses it in conjunction with ConvertType to convert all the images to JPEG.
$ parallel astconvertt -ojpg ::: *_crop.fits
For his graphical user interface Hubble is using GNOME which is the default
in most distributions in GNU/Linux. The basic image viewer in GNOME is the
Eye of GNOME, which has the executable file name
53. Since he has used it before,
he knows that once it opens an image, he can use the ENTER or
SPACE keys on the keyboard to go to the next image in the directory
or the Backspace key to go the previous image. So he opens the image
of the first object with the command below and with his cup of coffee in
his other hand, he flips through his targets very fast to get a good
initial impression of the morphologies of these extra-galactic nebulae.
$ eog 1_crop.jpg
Hubble’s cup of coffee is now finished and he also got a nice general impression of the shapes of the nebulae. He tentatively/mentally classified the objects into three classes while doing the visual inspection. One group of the nebulae have a very simple elliptical shape and seem to have no internal special structure, so he gives them code 1. Another clearly different class are those which have spiral arms which he associates with code 2 and finally there seems to be a class of nebulae in between which appear to have a disk but no spiral arms, he gives them code 3.
Now he wants to know how many of the nebulae in his extra-galactic sample are within each class. Repeating the same process above and writing the results on paper is very time consuming and prone to errors. Fortunately Hubble knows the basics of GNU Bash shell programming, so he writes the following short script with a loop to help him with the job. After all, computers are made for us to operate and knowing basic shell programming gives Hubble this ability to creatively operate the computer as he wants. So using GNU Emacs54 (his favorite text editor) he puts the following text in a file named classify.sh.
for name in *.jpg do eog $name & processid=$! echo -n "$name belongs to class: " read class echo $name $class >> classified.txt kill $processid done
Fortunately GNU Emacs or even simpler editors like Gedit (part of the
GNOME graphical user interface) will display the variables and shell
constructs in different colors which can really help in understanding
the script. Put simply, the
for loop gets the name of each JPEG
file in the directory this script is run in and puts it in
name. In the shell, the value of a variable is used by putting
$ sign before the variable name. Then Eye of GNOME is run on
the image in the background to show him that image and its process ID
is saved internally (this is necessary to close Eye of GNOME
later). The shell then prompts the user to specify a class and after
saving it in
class, it prints the file name and the given class
in the next line of a file named classified.txt. To make the
script executable (so he can run it later any time he wants) he runs:
$ chmod +x classify.sh
Now he is ready to do the classification, so he runs the script:
In the end he can delete all the JPEG and FITS files along with Crop’s log file with the following short command. The only files remaining are the script and the result of the classification.
$ rm *.jpg *.fits astcrop.txt $ ls classified.txt classify.sh
He can now use classified.txt as input to a plotting program to plot the histogram of the classes and start making interpretations about what these nebulous objects that are outside of the Galaxy are.
Edwin Powell Hubble (1889 – 1953 A.D.) was an American astronomer who can be considered as the father of extra-galactic astronomy, by proving that some nebulae are too distant to be within the Galaxy. He then went on to show that the universe appears to expand and also done a visual classification of the galaxies that is known as the Hubble fork.
Note that at that time, “Galaxy” was a proper noun used to refer to the Milky way. The concept of a galaxy as we define it today had not yet become common. Hubble played a major role in creating today’s concept of a galaxy.
pwd command is short for “Print Working
ls is short for “list” which shows the
contents of a directory.
Eye of GNOME is only available for users of the GNOME graphical
desktop environment which is the default in most GNU/Linux
distributions. If you use another graphical desktop environment, replace
eog with any other image viewer.
This can be done with any text editor