...
There will be 4 types of code blocks used throughout this class. Text inside of code blocks represent "right" answersat least 1 possible correct answer, and should either be typed EXACTLY into the terminal window as they are, or copy pasted with . There is a notable exception . Text that exist within text between <> symbols represent something that you need to replace before sending it to the terminal. Yes, the <> marks themselves also need to be replaced. We try to put informative text within the brackets so you know what to replace it with. If you are ever unsure of what to replace the <> text with, just ask.
- Visible
- These are code blocks that you would have no idea what to type without help. (like when a new command is being introduced)
- These will typically be associated with longer/more detailed text above the text box explaining things.
An example code block showing you the command you need to type into the prompt to list what directory you are currently in:
Code Block language bash pwd
- Hinted
- These are code blocks that you can probably figure out what to type with a hint that goes beyond what the tutorial is requesting. Access the hint by clicking the triangle or hint hyperlink text.
- These exist to force you to think about what command you need, and hopefully make some connections to help you remember what you will need to type in the future.
- These should all come with additional explanation as to what is going on.
- Rather than just expanding these by reflex, I strongly suggest seeing if you can figure out what the command will be, and checking your work
Example:
Expand title what command would you use to Print your current Working Directory In this example the letters P W and D are all capitalized to try to help you focus on the command itself
Code Block language bash pwd
- Hidden:
- These code blocks represent things that you should have seen several times already, or things that can be succinctly explained.
Example:
Code Block language bash title use the pwd command to print your current working directory collapse true pwd
Speed bump:
- This combines the previous 2 types to deliberately slow you down and be cumbersome.
- If you find yourself consistently wrong about what eventually shows up in the text box, slow down, step back, think about whats going on, and consider asking a question.
- These should only come after you have seen the same (or very similar) commands in the other formats previously
Example:
Expand title print your current working directory Remember, the command you need is "pwd".
Code Block language bash title This command needs no options collapse true pwd
...
Info | |||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||
In the above code box, you see that the names start with a . when a filename starts with a . it conveys a special meaning to the operating system/command line. Specifically, it prevents that file from being displayed when you use the Let's look at a few different ways we will use the
Throughout the course you will notice that many options are supplied to commands via a single dash immediately followed by a single letter. Usually when you have multiple commands supplied in this manner you can combine all the letters after a single dash to make things easier/faster to type. Experiment a little to prove to yourself that the following 2 commands give the same output.
While knowing that you can combine options in this way helps you analyze data faster/better, the real value comes from being able to decipher commands you come across on help forums, or in publications. For ls specifically the following association table is worth making note of, but if you want the 'official' names consider using the
|
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
exitlogout # or logoutexit |
then log back in:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
ssh <username>@ls5.tacc.utexas.edu |
If everything is working correctly you should now see a this as your prompt like this:
No Format |
---|
tacc:~$ |
Warning |
---|
If you see anything besides " |
...
Code Block | ||
---|---|---|
| ||
cdh ln -s $SCRATCH scratch ln -s $WORK work ln -s $BI BioITeam |
Several people report seeing an error message stating "ln: failed to create symbolic link 'BioITeam/BioITeam': Permission denied."
This is being investigated, but is not expected to impact today's tutorial.
Understanding what your .bashrc file actually does.
Expand | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||
|
...
- Linux text editors installed at TACC (nano, vi, emacs). These run in your terminal window. vi and emacs are extremely powerful but also quite complex, so nano may be is the best choice as a first local text editor. If you are already familiar with one of the other programs you are welcome to continue using it.
- Text editors or IDEs that run on your local computer but have an SFTP (secure FTP) interface that lets you connect to a remote computer (Notepad++ or Komodo Edit). Once you connect to the remote host, you can navigate its directory structure and edit files. When you open a file, its contents are brought over the network into the text editor's edit window, then saved back when you save the file.
- Software that will allow you to mount your home directory on TACC as if it were a normal disk e.g. MacFuse/MacFusion for Mac, or ExpanDrive for Windows or Mac ($$, but free trial). Then, you can use any text editor to open files and copy them to your computer with the usual drag-drop.
...
Expand | ||||
---|---|---|---|---|
| ||||
Want your Lonestar Lonestar5 files to appear like any other place on your hard drive? You can do this using MacFuse/MacFusion on a Mac. Want to edit files on TACC without having to use Editing Text Files on TACC: TextWrangler TextWrangler is a recommended FreeWare text editor for MacOS X. (It even keeps with the theme TACC has going with naming its clusters!) You can use it to directly edit text files on Lonestar with OSXFuse/MacFusion using a nice GUI. It is a much more powerful text editor than TextEdit, and won't trip you up by wrapping lines etc., if you learn to use it. Even if you cannot install OSXFuse/MacFusion, TextWrangler allows you to edit a remote file via SSH. To do this:
Tip: Files beginning in a dot (.) like (.profile_userbashrc) are "hidden" and won't show up when you are navigating in Finder (if using OSXFuse/MacFusion). There is a way to turn on showing these files in finder, but it can get annoying because they will show up everywhere. If you use the TextWrangler "open" command to open a file, there is a box that you can check to show these files. Connecting to TACC Like a Hard Drive: MacFuse/MacFusion Here are the steps for an installation:
Copying Files To and From TACC: SFTP Clients If you can't get OSXFuse/MacFusion to work, you can still copy files back and forth between your computer and TACC using a secure FTP (SFTP) client. Some examples of free programs for Mac are: |
...
- The most important thing to get used to is the convention of using . or _ in _ or capitalizing the first letter in each word in names rather than spaces in names, and limiting your use of any other punctuation. Spaces are great for mac and windows folder names when you are using visual interfaces, but on the command line, a space is a signal to start doing something different. Imagine instead of a BioITeam folder you wanted to make it a little easier to read and wanted to call it "Bio I Team" certainly everyone would agree its easier to read that way, but because of the spaces, bash will think you want to create 3 folders, 1 named Bio another named I and a third named Team. Now this is certainly behavior you can use when appropriate to your advantage, but generally speaking spaces will not be your friend. Early on in my computational learning I was told "A computer will always do exactly what you told it to do. The trick is telling it to do what you want it to do".
- Name things something that makes it obvious to you what the contents are not just today but next week, next month, and next year even if you don't touch the it for weeks-months-years.
...
When you execute the ls -1 > whatisHere
command, you should have noticed nothing happening happened on the screen, and when you cat the whatisHere file, you should notice the output you would have expected from the ls -1 > whatisHere
command. Often it is useful to chain commands together using the output of the first command as the input of the second command. Commands are chained together using the "|" character (shift \ above the return key). Use redirection to put the first 2 lines of the $BI directory contents into the whatisHere
file.
...
Expand | |||||||
---|---|---|---|---|---|---|---|
| |||||||
Obviously not, "Here" is ambiguous, and "whatis" doesn't immediately tell you that its actually a list of directory contents.
This is what i I would consider a good better best improvement. Yes the last one is particularly long, but almost guaranteed that you will know what exactly what that file is no matter when the next time you see it is. |
Understanding TACC
Now that we've been using lonestar for a little bit, and have it behaving in a way that is a little more useful to us, let's get more of a functional understanding of what exactly it is and how it works.
...
Code Block | ||||
---|---|---|---|---|
| ||||
cp $WORK/my_fastq_data/*fastq $SCRATCH/my_project/ |
...
- Job: Not required by the script, but likely always will be. This file has a list of commands that you want to run, and is probably biggest part of what makes tacc great... letting you run a large number of commands all at once rather than having to run them 1 at a time on your own computer.
- Time and name: They are required so obviously important for that reason. Also names are important as mentioned above naming everything 'tacc_job' will make your life much more confusing at some point.
- Wayness: 12 is the default, 48 is the max on lonestar.
- This is a balance of memory and to a lesser extent speed against how long you want to wait for your job to run and SU cost.
- Imagine you have 96 commands you want to run. 12, 24, and 48 as the "w" option will require 8, 4, and 2 remote computers to run at the same time, 2 computers are typically available sooner than a set of 4 and 4 are available sooner than a set of 8. So your job is likely to spend less time 'in the queue' with larger numbers.
- We'll go over "SUs" near the end of the course, but for now it is sufficient to say they are a currency for tacc, and that smaller numbers will cost more SUs
- For bacterial work, 48 is a much better choice in nearly all situations, unless you are experiencing problems or know you have a massive amount of data.
- The downside is if you pick a number that is too small, your commands may have errors and not actually produce results requiring you to start over with longer requests, or smaller "w" values
- queue: Development and normal are the 2 you are likely to deal with most often. normal "Normal" is a better choice unless you are developing new code or have odd turn around time requirements.
Running a job
Tip | ||
---|---|---|
| ||
Consider skipping the rest of the tutorials on this page, and jump over to this tutorial on transferring files between tacc and your local computer. You will have plenty of time to come back to this tutorial on Wednesday/Thursday/Friday when we enter the choose your own adventure portion of the coursebegin working with the specialized tutorials, as well as running jobs on tacc being covered in its own tutorial on the last half of Friday's course. |
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# remember that things after the # sign are ignored by bash # lines in code blocks like this often will scroll to the right if you have a narrow browser window cds # move to your scratch directory mkdir my_first_job # make a new folder called "my_first_job" cd my_first_job # move into the new folder to make it easier to create a file there nano commands |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
cat commands > commands.out # this will print the contents of the file you are currently editing to a new file called commands.out date > date.out # this will create a file with todays date on it pwd > current_directory.out # this will create a file with the current directory in it echo "my name is <YOURNAME>" >> name.out # Note that this time we used the append symbol >> not the write symbol > as we plan to put multiple things into the same file. Be sure to replace the <> signs with your name echo "This is the final result of my first script. It worked how I thought it would, or hopefully have the resources to figure out why it didn't" >> name.out # this will add another line of text to the name.out file. # feel free to add up to 7 more lines to your commands file here using the cat/ls/pwd/mkdir/other commands that you know. # beware using cd commands here as it will change your directory as if you were doing it on an interactive node and may cause you to reference files that don't exist commands that you know. # beware using cd commands here as it will change your directory as if you were doing it on an interactive node and may cause you to reference files that don't exist |
Info | ||
---|---|---|
| ||
In the next code box you see the top line is commented out but says to hit 'ctrl-o' 'ctrl-x' to write and exit nano. Since files that you open with nano are able to be edited immediately, it is a good idea to get in the habit of only saving files when you explicitly know you meant to edit them with the ctrl-o command (control + o) and then when you hit ctrl-x (control + x) nano exits gracefully. Conversely, if you open a file with nano with the intent of just looking at it or decide not to make any changes, or want to get rid of all your changes, you can hit ctrl-x and exit nano without saving the changes. If you instead choose to exit nano with ctrl-x and then select 'save' you risk building a habit of always saving when you exit and thus may introduce edits to your files you didn't mean to. |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# write and exit nano now ctrl-o ctrl-x launcher_creator.py -n "my_first_job" -j commands -t 00:02:00 -a "UT-2015-05-18" # this will create a my_first_job.slurm file that will run for 2 minutes sbatch my_first_job.slurm # this will actually submit the job to the Queue Manager and if everything has gone right, it will be added to the development queue. |
...
Tip | ||
---|---|---|
| ||
While not strictly necessary, using the " While it is tempting to only use "module load name" without the version numbers, using the version numbers can help keep track of what versions were used for referencing in your future publications, and make it easier to identify what went wrong when scripts that have been working for months or years suddenly stop working (ie TACC changed the default version of a program you are using). |
...
You will notice when you type module list you have several different modules installed already. These come from both TACC defaults (TACC, linux, etc), and several that are used so commonly both in this class and by biologists that it becomes cumbersome to type "module load python2python3
" all the time and therefore we just have them turned on by default by putting them in our profile to load on startup. As you advance in your own data analysis you may start to find yourself constantly loading modules as well. When you become tiered of doing this (or see jobs fail to run because the modules that load on the compute nodes are based on your .bashrc file plus commands given to each node), you may want to add additional modules to your .bashrc file. This can be done using the "nano .bashrc" command from your home directory.
...
As this tutorial is focused only on downloading interesting programs you may read about, this is the final step. If you do the optional trimmomatic tutorial later in the course, we'll go over some of the nuances of trimmomatic and shortcuts to make it easier to use. This page will be updated to include a link to said tutorial later in the week.
wget alternative
It is always an alternative to download such files directly to your computer using a web browser and then use the scp command to transfer it to TACC. The wget command can help you avoid these intermediate steps and is more convenient most of the time unless you want to install the program on both your laptop and TACC, and have the same operating system on both.
...
This is about using the pip3 install
command. pip is the standard package manager for the common programing language python. When labs put together new analysis programs/packages, increasingly they try to make these programs available for others to use via pip. pip3 rather than just pip references the current specific version of python.
Here we will install the multiqc
analysis program which compiles reports from a program called fastqc
about the quality of fastq files from multiple different samples at one time. In the later portion of the class you may choose to work with this program to get a better overall view of multiple fastq files all at once rather than clicking through individual reports.
...
If you still see something else, let the instructor know.
The multiqc tutorial can be found here.
This concludes the the linux and lonestar refresher/introduction tutorial.
...