<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Insilico on Castro Lab</title><link>https://www.castrolab.org/tags/insilico/</link><description>Recent content in Insilico on Castro Lab</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>ecastron@utalca.cl (Eduardo Castro)</managingEditor><webMaster>ecastron@utalca.cl (Eduardo Castro)</webMaster><copyright>&amp;copy; 2023</copyright><lastBuildDate>Thu, 23 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.castrolab.org/tags/insilico/" rel="self" type="application/rss+xml"/><item><title>Getting Started on McCartney — HPC User Guide</title><link>https://www.castrolab.org/protocols/mccartney/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>ecastron@utalca.cl (Eduardo Castro)</author><guid>https://www.castrolab.org/protocols/mccartney/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Version 0.2 — March 2026.&lt;/strong&gt; This guide replaces v0.1.&lt;br&gt;
Questions, password resets, software requests, or bugs? Contact the SysAdmins:
&lt;strong&gt;Gabriel Ballesteros&lt;/strong&gt; · &lt;a href="mailto:gaballesteros@gmail.com"&gt;gaballesteros@gmail.com&lt;/a&gt;  |  &lt;strong&gt;Valentín Berríos&lt;/strong&gt; · &lt;a href="mailto:v.berriosfarias@gmail.com"&gt;v.berriosfarias@gmail.com&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="1-overview"&gt;1. Overview&lt;/h2&gt;
&lt;p&gt;McCartney is a Linux-based HPC cluster running &lt;a href="https://slurm.schedmd.com/"&gt;Slurm&lt;/a&gt; as its workload manager. It has no graphical interface — all interaction happens through a &lt;strong&gt;Bash command-line terminal&lt;/strong&gt;. If you are new to the Linux command line, work through one of these tutorials before proceeding:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sandbox.bio/tutorials/terminal-basics"&gt;Terminal Basics (interactive, browser-based)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linuxcommand.org/lc3_learning_the_shell.php"&gt;Learning the Shell — linuxcommand.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://missing.csail.mit.edu/"&gt;The Missing Semester of Your CS Education — MIT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2-hardware"&gt;2. Hardware&lt;/h2&gt;
&lt;p&gt;McCartney consists of &lt;strong&gt;four compute nodes&lt;/strong&gt; across two partitions, plus a dedicated storage node that also hosts the &lt;strong&gt;front-end&lt;/strong&gt; (the machine you log into).&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The front-end has only 4 GB RAM and 2 CPU cores — intentionally limited.&lt;/strong&gt;&lt;br&gt;
Do not run analyses on it. Use it only to write scripts, manage files, and submit jobs to the queue.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="partition-basic"&gt;Partition: &lt;code&gt;basic&lt;/code&gt;&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Node&lt;/th&gt;
&lt;th&gt;CPUs (cores)&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;n001&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;2 TB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n002&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;256 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;n003&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;256 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="partition-gpu"&gt;Partition: &lt;code&gt;gpu&lt;/code&gt;&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Node&lt;/th&gt;
&lt;th&gt;CPUs (cores)&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;GPU&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;g001&lt;/td&gt;
&lt;td&gt;40&lt;/td&gt;
&lt;td&gt;256 GB&lt;/td&gt;
&lt;td&gt;NVIDIA RTX A5000 (24 GB VRAM)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="which-node-should-i-use"&gt;Which node should I use?&lt;/h3&gt;
&lt;p&gt;Choose based on three factors:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;How many CPU cores does my tool use?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How much RAM does my job need?&lt;/strong&gt; (jobs requiring &amp;gt;256 GB must go to n001)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Does my tool use GPU acceleration?&lt;/strong&gt; → &lt;code&gt;--partition=gpu&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="3-your-account"&gt;3. Your Account&lt;/h2&gt;
&lt;p&gt;Accounts follow the format &lt;strong&gt;first initial + last name&lt;/strong&gt; (all lowercase). Passwords are set to &lt;strong&gt;firstname + account creation date&lt;/strong&gt; by default.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; A user named Paul McCartney, whose account was created on the 18th of June, receives:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;username: pmccartney
password: paul18
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;Custom passwords are available on request — contact a SysAdmin.&lt;br&gt;
&lt;strong&gt;Note:&lt;/strong&gt; when you type your password in the terminal, no characters are displayed. This is normal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="4-connecting-via-ssh"&gt;4. Connecting via SSH&lt;/h2&gt;
&lt;p&gt;All connections use &lt;strong&gt;SSH&lt;/strong&gt; (&lt;a href="https://www.ssh.com/academy/ssh"&gt;Secure Shell&lt;/a&gt;). You need:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Port&lt;/td&gt;
&lt;td&gt;&lt;code&gt;20223&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inside UTALCA Wi-Fi / wired&lt;/td&gt;
&lt;td&gt;&lt;code&gt;172.22.0.21&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Outside UTALCA (home, 5G, Starlink, abroad)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;190.110.100.21&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;The UTALCA-Visitas network does &lt;strong&gt;not&lt;/strong&gt; work for SSH connections.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="on-macos--linux"&gt;On macOS / Linux&lt;/h3&gt;
&lt;p&gt;Open a terminal and run:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# From inside the university network&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh pmccartney@172.22.0.21 -p &lt;span style="color:#ae81ff"&gt;20223&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# From outside&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ssh pmccartney@190.110.100.21 -p &lt;span style="color:#ae81ff"&gt;20223&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="on-windows"&gt;On Windows&lt;/h3&gt;
&lt;p&gt;SSH is built into Windows 10/11. Press &lt;strong&gt;Start&lt;/strong&gt;, type &lt;code&gt;cmd&lt;/code&gt;, open &lt;strong&gt;Command Prompt&lt;/strong&gt;, and run the same command above.&lt;br&gt;
Alternatively, install &lt;a href="https://aka.ms/terminal"&gt;Windows Terminal&lt;/a&gt; for a better experience.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;3-strike rule:&lt;/strong&gt; entering the wrong password three times in a row will &lt;strong&gt;ban your IP address&lt;/strong&gt;. If this happens, switch networks and contact a SysAdmin to unblock you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="5-transferring-files"&gt;5. Transferring Files&lt;/h2&gt;
&lt;h3 id="windows--winscp-recommended"&gt;Windows — WinSCP (recommended)&lt;/h3&gt;
&lt;p&gt;Download &lt;a href="https://winscp.net/eng/index.php"&gt;WinSCP&lt;/a&gt; and fill in the connection details:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;File protocol&lt;/td&gt;
&lt;td&gt;SFTP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Host name&lt;/td&gt;
&lt;td&gt;&lt;code&gt;172.22.0.21&lt;/code&gt; (or &lt;code&gt;190.110.100.21&lt;/code&gt; from outside)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Port&lt;/td&gt;
&lt;td&gt;&lt;code&gt;20223&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User name&lt;/td&gt;
&lt;td&gt;your username (e.g. &lt;code&gt;pmccartney&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Password&lt;/td&gt;
&lt;td&gt;your password&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The left panel shows your local machine; the right panel shows the cluster. Drag and drop to transfer.&lt;/p&gt;
&lt;h3 id="macos--linux--command-line"&gt;macOS / Linux — command line&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Copy a local file TO the cluster&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;scp -P &lt;span style="color:#ae81ff"&gt;20223&lt;/span&gt; myfile.fastq.gz pmccartney@172.22.0.21:/home/pmccartney/data/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Copy an entire folder TO the cluster&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;scp -P &lt;span style="color:#ae81ff"&gt;20223&lt;/span&gt; -r my_reads/ pmccartney@172.22.0.21:/home/pmccartney/data/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Copy a result FROM the cluster to your local machine&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;scp -P &lt;span style="color:#ae81ff"&gt;20223&lt;/span&gt; pmccartney@172.22.0.21:/home/pmccartney/results/output.tsv ./
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can also mount the cluster as a network drive in your file manager:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# Linux file manager → &amp;#34;Connect to server&amp;#34;
ssh://172.22.0.21
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="faster-large-transfers--rsync"&gt;Faster large transfers — rsync&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Sync a folder, showing progress, over the custom port&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rsync -avz --progress -e &lt;span style="color:#e6db74"&gt;&amp;#34;ssh -p 20223&amp;#34;&lt;/span&gt; my_reads/ pmccartney@172.22.0.21:/home/pmccartney/data/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="6-software-modules"&gt;6. Software Modules&lt;/h2&gt;
&lt;p&gt;McCartney uses the &lt;a href="https://modules.readthedocs.io/en/latest/"&gt;Environment Modules&lt;/a&gt; system. Software is &lt;strong&gt;not available by default&lt;/strong&gt; — you must load it before use.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# See all installed software&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;module avail
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Load a specific tool&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;module load NCBI-Blast
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;module load FastQC
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;module load Bowtie2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# See what you have loaded right now&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;module list
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Unload a module&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;module unload FastQC
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Unload everything&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;module purge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Do not install software in your home directory.&lt;/strong&gt; If a tool you need is missing, contact Gabriel or Valentín — they will install it system-wide, along with any required databases.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Reference scripts with common module combinations are available on the cluster at:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/home/scripts-referencia/
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id="7-the-slurm-job-scheduler"&gt;7. The SLURM Job Scheduler&lt;/h2&gt;
&lt;p&gt;McCartney runs &lt;a href="https://slurm.schedmd.com/"&gt;Slurm&lt;/a&gt; (Simple Linux Utility for Resource Management) to allocate compute resources fairly across all users. You do not run jobs directly — you &lt;strong&gt;submit them to a queue&lt;/strong&gt; and Slurm starts them when the requested resources become free.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Over-requesting resources harms everyone.&lt;/strong&gt; A job asking for 20 CPUs when your code uses only 1 blocks those CPUs for other users and forces your own job to wait longer for a slot. Estimate carefully.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="monitoring-commands"&gt;Monitoring commands&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# View all jobs currently running or queued&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;squeue
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# View only your jobs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;squeue -u pmccartney
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Check node availability (idle = free, alloc = fully busy, mix = partially free)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sinfo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Cancel a job (find JOBID with squeue first)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;scancel &amp;lt;JOBID&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Cancel all your jobs at once&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;scancel -u pmccartney
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;code&gt;sinfo&lt;/code&gt; state&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;idle&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Node is 100% free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mix&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Node has some CPUs/RAM still available&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;alloc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Node is fully occupied&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;drain&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Node is being taken offline by admin&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Full documentation: &lt;a href="https://slurm.schedmd.com/squeue.html"&gt;slurm.schedmd.com/squeue.html&lt;/a&gt; · &lt;a href="https://slurm.schedmd.com/sinfo.html"&gt;sinfo&lt;/a&gt; · &lt;a href="https://slurm.schedmd.com/scancel.html"&gt;scancel&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="8-writing-job-scripts"&gt;8. Writing Job Scripts&lt;/h2&gt;
&lt;p&gt;Jobs are submitted with &lt;code&gt;sbatch&lt;/code&gt; using a shell script (&lt;code&gt;.sh&lt;/code&gt;) that begins with &lt;code&gt;#SBATCH&lt;/code&gt; directives declaring the resources you need.&lt;/p&gt;
&lt;h3 id="common-sbatch-directives"&gt;Common &lt;code&gt;#SBATCH&lt;/code&gt; directives&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Directive&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--job-name&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--job-name=blast_run&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Label shown in &lt;code&gt;squeue&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--partition&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--partition=basic&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Which partition to use&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--nodes&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--nodes=1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Number of nodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--ntasks&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--ntasks=1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Number of parallel tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--cpus-per-task&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--cpus-per-task=16&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;CPU cores per task&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--mem&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--mem=64G&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;RAM per node (K/M/G/T suffixes)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--time&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--time=24:00:00&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Max wall-clock time (HH:MM:SS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--output&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--output=job_%j.out&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;File for standard output (&lt;code&gt;%j&lt;/code&gt; = job ID)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--error&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--error=job_%j.err&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;File for standard error&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--array&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--array=1-6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Submit N identical jobs as an array&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--mail-type&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--mail-type=END,FAIL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Email on job end or failure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--mail-user&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;--mail-user=pmccartney@utalca.cl&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Notification address&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Full reference: &lt;a href="https://slurm.schedmd.com/sbatch.html"&gt;slurm.schedmd.com/sbatch.html&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="9-script-templates"&gt;9. Script Templates&lt;/h2&gt;
&lt;h3 id="template-a--single-core-low-memory"&gt;Template A — Single core, low memory&lt;/h3&gt;
&lt;p&gt;Suitable for: simple scripts, R, Python, serial tools.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --job-name=my_job&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --partition=basic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --nodes=1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --ntasks=1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --cpus-per-task=1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --mem=4G&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --output=output_%j.out&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --error=output_%j.err&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Load required module(s)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;module load &amp;lt;module_name&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Your command&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;command&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Submit with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sbatch my_script.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="template-b--multi-core-high-memory"&gt;Template B — Multi-core, high memory&lt;/h3&gt;
&lt;p&gt;Suitable for: assembly, read mapping (BWA, Bowtie2), database searches (DIAMOND, BLAST).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --job-name=mapping_run&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --partition=basic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --nodes=1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --ntasks=1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --cpus-per-task=16&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --mem=64G&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --time=24:00:00&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --output=mapping_%j.log&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --error=mapping_%j.err&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;module load Bowtie2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Pass the thread count automatically from SLURM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;THREADS&lt;span style="color:#f92672"&gt;=&lt;/span&gt;$SLURM_CPUS_PER_TASK
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bowtie2 -p $THREADS &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -x /path/to/index &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -1 reads_R1.fastq.gz &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -2 reads_R2.fastq.gz &lt;span style="color:#ae81ff"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -S output.sam
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id="template-c--job-array-process-multiple-samples-in-parallel"&gt;Template C — Job array (process multiple samples in parallel)&lt;/h3&gt;
&lt;p&gt;Slurm launches one independent copy of the script per array index. Use this whenever you have N samples that can be processed identically and independently — it is much more efficient than submitting N separate scripts.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --job-name=fastqc_array&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --partition=basic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --array=1-6 # launches 6 jobs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --cpus-per-task=16&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --mem=64G&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --time=04:00:00&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --output=fastqc_%A_%a.out # %A = array job ID, %a = task index&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --error=fastqc_%A_%a.err&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 1. Define sample list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SAMPLES&lt;span style="color:#f92672"&gt;=(&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Sample1&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Sample2&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Sample3&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Sample4&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Sample5&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Sample6&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 2. Select this task&amp;#39;s sample (SLURM_ARRAY_TASK_ID starts at 1, bash arrays at 0)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;INDEX&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$((&lt;/span&gt;$SLURM_ARRAY_TASK_ID &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SAMPLE&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SAMPLES[$INDEX]&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 3. Run&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;module load FastQC
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p fastqc_results
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;Processing &lt;/span&gt;$SAMPLE&lt;span style="color:#e6db74"&gt; at &lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;fastqc -t &lt;span style="color:#ae81ff"&gt;16&lt;/span&gt; -o fastqc_results/ reads/&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SAMPLE&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;_R1.fastq.gz reads/&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SAMPLE&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;_R2.fastq.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;Done at &lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Learn more: &lt;a href="https://slurm.schedmd.com/job_array.html"&gt;Slurm job arrays documentation&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="template-d--array-with-local-scratch-fast-io"&gt;Template D — Array with local scratch (fast I/O)&lt;/h3&gt;
&lt;p&gt;Copying data to the node&amp;rsquo;s local &lt;code&gt;/scratch&lt;/code&gt; disk before processing avoids network bottlenecks on I/O-heavy jobs.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --job-name=fastqc_scratch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --partition=basic&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --array=1-6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --nodes=1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --ntasks=1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --cpus-per-task=16&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --mem=64G&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --time=04:00:00&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --output=fastqc_%A_%a.out&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#SBATCH --error=fastqc_%A_%a.err&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SAMPLES&lt;span style="color:#f92672"&gt;=(&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Sample1&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Sample2&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Sample3&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Sample4&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Sample5&amp;#34;&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Sample6&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;INDEX&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$((&lt;/span&gt;$SLURM_ARRAY_TASK_ID &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SAMPLE&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SAMPLES[$INDEX]&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SUBMIT_DIR&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;pwd&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;INPUT_DIR&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SUBMIT_DIR&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/reads&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;OUTPUT_DIR&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SUBMIT_DIR&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/fastqc_results&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Set up scratch space on the compute node&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;SCRATCH&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;/scratch/&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SLURM_JOB_ID&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;_&lt;/span&gt;&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SLURM_ARRAY_TASK_ID&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p $SCRATCH
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Cleanup scratch on exit (success or failure)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cleanup&lt;span style="color:#f92672"&gt;()&lt;/span&gt; &lt;span style="color:#f92672"&gt;{&lt;/span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;Cleaning scratch...&amp;#34;&lt;/span&gt;; rm -rf &lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;$SCRATCH&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;; &lt;span style="color:#f92672"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;trap cleanup EXIT
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Copy input data to scratch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp &lt;span style="color:#e6db74"&gt;${&lt;/span&gt;INPUT_DIR&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;/&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SAMPLE&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;_R1.fastq.gz $SCRATCH/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp &lt;span style="color:#e6db74"&gt;${&lt;/span&gt;INPUT_DIR&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;/&lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SAMPLE&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;_R2.fastq.gz $SCRATCH/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Run analysis on scratch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd $SCRATCH
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;module load FastQC
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;fastqc -t &lt;span style="color:#ae81ff"&gt;16&lt;/span&gt; -o $SCRATCH/ &lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SAMPLE&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;_R1.fastq.gz &lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SAMPLE&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;_R2.fastq.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Move results back to shared storage&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir -p $OUTPUT_DIR
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mv &lt;span style="color:#e6db74"&gt;${&lt;/span&gt;SAMPLE&lt;span style="color:#e6db74"&gt;}&lt;/span&gt;*_fastqc.&lt;span style="color:#f92672"&gt;{&lt;/span&gt;html,zip&lt;span style="color:#f92672"&gt;}&lt;/span&gt; $OUTPUT_DIR/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;Finished &lt;/span&gt;$SAMPLE&lt;span style="color:#e6db74"&gt; at &lt;/span&gt;&lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;date&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="10-using-ai-to-generate-script-drafts"&gt;10. Using AI to Generate Script Drafts&lt;/h2&gt;
&lt;p&gt;Large language models (ChatGPT, Google Gemini, Claude) can generate solid SLURM script drafts. Use prompts like:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&amp;ldquo;Write a SLURM script for the basic partition requesting 64 GB RAM and 16 CPUs to run DIAMOND blastp on a protein FASTA file.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Always review the generated script and verify that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The partition name matches (&lt;code&gt;basic&lt;/code&gt; or &lt;code&gt;gpu&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Memory and CPU requests are realistic&lt;/li&gt;
&lt;li&gt;The module names match what is installed on McCartney (&lt;code&gt;module avail&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="11-best-practices"&gt;11. Best Practices&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Do&lt;/th&gt;
&lt;th&gt;Don&amp;rsquo;t&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Run &lt;code&gt;sinfo&lt;/code&gt; before submitting to gauge node availability&lt;/td&gt;
&lt;td&gt;Run compute jobs directly on the front-end&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Estimate memory needs — check tool documentation&lt;/td&gt;
&lt;td&gt;Request 20× more RAM than needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use &lt;code&gt;$SLURM_CPUS_PER_TASK&lt;/code&gt; instead of hardcoded thread counts&lt;/td&gt;
&lt;td&gt;Hardcode &lt;code&gt;-t 16&lt;/code&gt; if you might change &lt;code&gt;--cpus-per-task&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Set &lt;code&gt;--time&lt;/code&gt; to a realistic upper bound&lt;/td&gt;
&lt;td&gt;Leave &lt;code&gt;--time&lt;/code&gt; unset (may block the queue)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Use &lt;code&gt;--array&lt;/code&gt; for batches of similar samples&lt;/td&gt;
&lt;td&gt;Submit dozens of identical &lt;code&gt;sbatch&lt;/code&gt; calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Redirect output to &lt;code&gt;.out&lt;/code&gt; / &lt;code&gt;.err&lt;/code&gt; files&lt;/td&gt;
&lt;td&gt;Let job output flood the terminal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clean up intermediate files when the job finishes&lt;/td&gt;
&lt;td&gt;Leave hundreds of GB of temporary files&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="12-useful-links"&gt;12. Useful Links&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Resource&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Slurm official documentation&lt;/td&gt;
&lt;td&gt;&lt;a href="https://slurm.schedmd.com/"&gt;slurm.schedmd.com&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sbatch&lt;/code&gt; man page&lt;/td&gt;
&lt;td&gt;&lt;a href="https://slurm.schedmd.com/sbatch.html"&gt;slurm.schedmd.com/sbatch.html&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Job arrays guide&lt;/td&gt;
&lt;td&gt;&lt;a href="https://slurm.schedmd.com/job_array.html"&gt;slurm.schedmd.com/job_array.html&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terminal basics (interactive)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://sandbox.bio/tutorials/terminal-basics"&gt;sandbox.bio/tutorials/terminal-basics&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Learning the Shell&lt;/td&gt;
&lt;td&gt;&lt;a href="https://linuxcommand.org/lc3_learning_the_shell.php"&gt;linuxcommand.org/lc3_learning_the_shell.php&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MIT Missing Semester&lt;/td&gt;
&lt;td&gt;&lt;a href="https://missing.csail.mit.edu/"&gt;missing.csail.mit.edu&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WinSCP (Windows file transfer)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://winscp.net/eng/index.php"&gt;winscp.net&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Windows Terminal&lt;/td&gt;
&lt;td&gt;&lt;a href="https://aka.ms/terminal"&gt;aka.ms/terminal&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HPC Carpentry (Slurm tutorial)&lt;/td&gt;
&lt;td&gt;&lt;a href="https://carpentries-incubator.github.io/hpc-intro/"&gt;carpentries-incubator.github.io/hpc-intro&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="13-getting-help"&gt;13. Getting Help&lt;/h2&gt;
&lt;p&gt;For any of the following, contact the SysAdmins directly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Software installation or database setup&lt;/li&gt;
&lt;li&gt;Password reset or new account creation&lt;/li&gt;
&lt;li&gt;Node failures or unexpected job terminations&lt;/li&gt;
&lt;li&gt;Access from a banned IP&lt;/li&gt;
&lt;li&gt;Any doubt not covered here&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Gabriel Ballesteros&lt;/strong&gt; — &lt;a href="mailto:gaballesteros@gmail.com"&gt;gaballesteros@gmail.com&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Valentín Berríos&lt;/strong&gt; — &lt;a href="mailto:v.berriosfarias@gmail.com"&gt;v.berriosfarias@gmail.com&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can also query each Slurm command&amp;rsquo;s built-in manual page directly on the cluster:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;man sbatch
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;man squeue
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;man sinfo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/blockquote&gt;</description></item><item><title>McCartney SLURM Script Generator</title><link>https://www.castrolab.org/protocols/mccartney-script-generator/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><author>ecastron@utalca.cl (Eduardo Castro)</author><guid>https://www.castrolab.org/protocols/mccartney-script-generator/</guid><description>&lt;p&gt;An interactive Shiny app that generates ready-to-submit SLURM batch scripts for the &lt;strong&gt;McCartney HPC cluster&lt;/strong&gt; without having to remember syntax or look up documentation.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ecastron.shinyapps.io/mccartney-script-generator/" target="_blank" class="btn btn-primary btn-lg" style="margin:.6rem 0 1.2rem;"&gt;Launch Script Generator →&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="what-it-does"&gt;What it does&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Select partition (&lt;code&gt;basic&lt;/code&gt; or &lt;code&gt;gpu&lt;/code&gt;), CPUs, RAM, and wall-clock time&lt;/li&gt;
&lt;li&gt;Toggle &lt;strong&gt;job arrays&lt;/strong&gt; — paste your sample names and the app writes the &lt;code&gt;SAMPLES=(...)&lt;/code&gt; bash array automatically&lt;/li&gt;
&lt;li&gt;Toggle &lt;strong&gt;scratch filesystem&lt;/strong&gt; — the app wraps your command with copy-in / run / copy-back logic and a &lt;code&gt;trap cleanup EXIT&lt;/code&gt; so scratch is always removed&lt;/li&gt;
&lt;li&gt;Search and load any installed software module&lt;/li&gt;
&lt;li&gt;Copy the finished script to the clipboard or download it as a &lt;code&gt;.sh&lt;/code&gt; file&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="how-to-use"&gt;How to use&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Launch Script Generator&lt;/strong&gt; above&lt;/li&gt;
&lt;li&gt;Fill in the sidebar — the script updates live in the right panel&lt;/li&gt;
&lt;li&gt;Hit &lt;strong&gt;Download .sh&lt;/strong&gt; and submit with &lt;code&gt;sbatch your_script.sh&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;For the full cluster user guide (SSH, file transfer, module system, script templates) see the
&lt;a href="https://www.castrolab.org/protocols/mccartney/"&gt;McCartney HPC User Guide&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>