---
# System prepended metadata

title: Hypothalamus seq

---

---
tags: STAR, slurm script, htseq-count
--- 


# Hypothalamus seq

reads are in `/mnt/lz01/macmaneslab/shared/hypothalamus_seq/raw_reads`
index is here: /mnt/lz01/macmaneslab/shared/STAR_index

### I did this to the reads to remove the `001` which seems to be probelmatic

```
for filename in *fastq.gz; do                  
    [ -f "$filename" ] || continue
    mv "$filename" "${filename//_001/}"
done
```

### This is a working slurm script for mapping and counting
### Usage `sbatch MapCount.job index_location reads_dir results_dir`

current location is: `/mnt/lz01/macmaneslab/macmanes/MapCount.job`
Note-1 this is fairly substantially changed from Dani's script to make it more general.
Note-2 genome indexing is already done prior

```
#!/bin/bash
#SBATCH --partition=macmanes
#SBATCH --cpus-per-task=40
#SBATCH --mem 310Gb
#SBATCH --exclude=node117,node118
#SBATCH --output hypo_data.log

ulimit -n 10000
module purge
module load anaconda/colsa
conda activate star-2.7.10b

#### Purpose: align reads to a genome and count them


### USAGE
# sbatch MapCount.job index_location reads_dir _results_dir


DIR=$(pwd)
INDEX=$1
READ_DIR=$2
RESULTS_DIR=$3

echo "index: $INDEX"
echo "Reads directory: $READ_DIR"
echo "RESULTS_DIR: $RESULTS_DIR"

# make a directory for star read mapping
mkdir $RESULTS_DIR


#####################
##### map reads #####
#####################

# list all samples to map
samples=$(basename -a ${READ_DIR}/*1.fastq.gz | sed "s/R1.fastq.gz//g")

echo Mapping these samples: $samples

# map reads with STAR
for sample in $samples
do
STAR --runMode alignReads \
--genomeDir $INDEX \
--readFilesIn ${READ_DIR}/${sample}R1.fastq.gz ${READ_DIR}/${sample}R2.fastq.gz \
--readFilesCommand zcat \
--runThreadN 40 \
--outFilterMultimapNmax 20 \
--outFilterMismatchNmax 10 \
--outFilterScoreMinOverLread 0 \
--outFilterMatchNminOverLread 0.3 \
--quantMode GeneCounts \
--outFileNamePrefix $RESULTS_DIR/${sample} \
--outSAMtype BAM Unsorted \
--genomeLoad LoadAndKeep \
--limitBAMsortRAM 254748364800 \
--sjdbGTFtagExonParentTranscript Parent
done

#######################
##### count reads #####
#######################

conda deactivate
conda activate htseq-0.13.5

# count reads with htseq-count
echo Counting genes with htseq-count for these samples: $samples

for sample in $samples
do
htseq-count \
--stranded=reverse \
-f bam \
-t exon \
--idattr=Parent \
--additional-attr=gene \
--additional-attr=GeneID \
--additional-attr=Dbxref \
$RESULTS_DIR/${sample}Aligned.out.bam \
/mnt/lz01/macmaneslab/shared/genome/PerEre_H2_v1/PerEre_H2_v1_genomic.gff > $RESULTS_DIR/${sample}gene.counts
done
```

## mapping data analysis

```
printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\n" "date" "sample" "reads" "unique" "multi" "toomany" "unmapped"> mappingdata.txt

for file in $(ls -lthr  *Log.final.out | awk '{print $9}')
do
sample=$(echo $file | sed "s/_Log.final.out//g" | sed "s/.Log.final.out//g")
date=$(grep "Started job" $file | cut -f 2 | cut -d ' ' -f1-2 | sed "s/ //g")
reads=$(grep "Number of input reads" $file | cut -f 2)
unique=$(grep "Uniquely mapped reads %" $file | cut -f 2)
multi=$(grep "% of reads mapped to multiple loci" $file | cut -f 2)
toomany=$(grep "% of reads mapped to too many loci" $file | cut -f 2)
unmapped=$(grep "Number of reads unmapped: too short" $file | cut -f 2)
printf "%s\t%s\t%s\t%s\t%s\t%s\t%s\n" "$date" "$sample" "$reads" "$unique" "$multi" "$toomany" "$unmapped" >> mappingdata.txt
done
```


### once this is done, need to edit and download count files
for now, just need 1st and last cols in data. 
otherwise won't import preperly into DESeq2

```
mkdir count_data

for samples in *counts; 
do awk '{print $1, "\t", $NF}' $samples > count_data/$samples; 
done
```

### change names of files
to make parsing in R easier
##### Need to add water info here probably.. maybe will be easier to add it into R. Would be cleaner here if possible

```
cd count_data

for filename in *counts; do                  
    [ -f "$filename" ] || continue
    mv "$filename" "${filename/MP/_male_pit}"
    mv "$filename" "${filename/FP/_female_pit}"
    mv "$filename" "${filename/FS/_female_sonpvn}"
    mv "$filename" "${filename/MS/_male_sonpvn}"
done
```


download to local computer via whatever means is easiest. 

```
scp macmanes@premise.sr.unh.edu:/mnt/lz01/macmaneslab/macmanes/dani_mapping/count_data/*counts .
```

### Work in R

```
...
```

### scratch (don't use this code)

```
mkdir count_data

for samples in *counts; 
do awk '{print $(NF-1)}' $samples | awk -F : '{print $2}' | awk -F , '{print $1}' > temp1; 
    awk '{print $NF}' $samples > temp2; 
    paste temp1 temp2 > count_data/$samples; 
    sed -i '$d' count_data/$samples;
    sed -i '$d' count_data/$samples;
    sed -i '$d' count_data/$samples;
    sed -i '$d' count_data/$samples;
    sed -i '$d' count_data/$samples;
    rm temp1 temp2;
done
```
also need to aggregate count data 
```
#!/bin/bash

# Define the path to your TSV file
#input_file="path/to/your/file.tsv"
#output_file="path/to/your/aggregated_file.tsv"

# Use awk to process the TSV file
awk 'BEGIN {
    FS=OFS="\t"
}
{
    if (NR > 1) {  # Skip the header line if your file has a header
        data[$1] += $2
    }
}
END {
    for (id in data) {
        print id, data[id]
    }
}' $1 > $2

```






















