сценарий оболочки для выполнения tophat протокола

Так, я использую протокол, названный 'смокингом' для RNA, упорядочивающего анализ данных. Это - больше вида технического вопроса, связанного со сценариями оболочки. Я могу сделать это в командной строке, и у меня нет проблем как таковых. Так как я делаю его в кластере, я хотел бы использовать сценарий, который может автоматизировать мою задачу.

Так команда протокола как таковы:

  1. tophat
  2. запонки
  3. cuffmerge
  4. cuffdiff

    Первая команда делает все выравнивание, которое генерирует некоторый файл, который я должен использовать для следующей команды cufflinks, затем cuffmerge и наконец cuffdiff.

Может любой помогать мне записать простой сценарий оболочки, который может звонить, каждый из них управляют и делают задачу.

Любая справка высоко ценилась бы.

аргументы

tophat -p 8 -G genes.gtf -o C1_R1_thout genome C1_R1_1.fq C1_R1_2.fq
cufflinks -p 8 -o C1_R1_clout C1_R1_thout/accepted_hits.bam
cuffmerge -g genes.gtf -s genome.fa -p 8 assemblies.txt 
cuffdiff -o diff_out -b genome.fa -p 8 –L C1,C2 -u merged_asm/merged.gtf \
./C1_R1_thout/accepted_hits.bam,./C1_R2_thout/accepted_hits.bam,./C1_R3_thout/accepted_hits.bam \
./C2_R1_thout/accepted_hits.bam,./C2_R3_thout/accepted_hits.bam,./C2_R2_thout/accepted_hits.bam

где, 'p' соответствует количеству процессора, '-o' соответствует выходному каталогу, и отдохните, '-g' соответствует файлу аннотации, который я использую для аннотирования моих НЕОБРАБОТАННЫХ чтений, которые будут выровненные.

0
задан 8 January 2017 в 06:13

1 ответ

Простое и хрупкое решение

Давайте запишем простой сценарий, названный hailmary.sh

#!/bin/bash
#The first line should always be just as it is above
#This script is called hailmary.sh
#because we run this script and we need to pray
#that all four commands will run correctly
#If one of them fail, you may not get the results

tophat -p 8 -G genes.gtf -o C1_R1_thout genome C1_R1_1.fq C1_R1_2.fq
cufflinks -p 8 -o C1_R1_clout C1_R1_thout/accepted_hits.bam
cuffmerge -g genes.gtf -s genome.fa -p 8 assemblies.txt 
cuffdiff -o diff_out -b genome.fa -p 8 –L C1,C2 -u merged_asm/merged.gtf ./C1_R1_thout/accepted_hits.bam,./C1_R2_thout/accepted_hits.bam,./C1_R3_thout/accepted_hits.bam ./C2_R1_thout/accepted_hits.bam,./C2_R3_thout/accepted_hits.bam,./C2_R2_thout/accepted_hits.bam
  1. Скопируйте и вставьте все вышеупомянутые строки включая строки, запускающиеся с "#" в gedit, и сохраните как hailmary.sh.
  2. В Наутилусе щелкните правой кнопкой по файлу, который Вы просто создали и выбор Properties. Перейдите в Permissions вкладка и помещенный галочка рядом с Позволяет выполнять файл как программу.

    Поочередно, в терминале войдите:

    chmod +x hailmary.sh

  3. Для запущения скрипта в терминале войдите:

    ./hailmary.sh

./ прежде чем имя необходимо, и предполагает, что файл находится в месте текущего каталога. Если Вы помещаете файл в папку, которая находится в пути, такой как /home/<userid>/bin, затем Вам не будет нужно ./. При помещении его где-то в другом месте, необходимо будет записать целый путь, такой как:

/home/<userid>/myspecialfolder/hailmary.sh

Отметьте, четыре команды и их аргументы находятся в четырех отдельных строках. Если Вы хотите поместить их в одну строку, необходимо разделить их && или ;. Нет никакой потребности в ; если они находятся в отдельных строках.

В любом из этих случаев не запустится вторая команда, пока первое не завершается (или катастрофические отказы!).

Проблема с этим подходом, это не проверяет, работала ли первая команда успешно прежде, чем выполнить вторую и т. д. и т. п. Итак, если tophat сбои по некоторым причинам, сценарий продолжит последовательность запонки, cuffmerge, и cuffdiff. Именно поэтому я называю этот документ на получение hailmary.sh.

Источник: https://unix.stackexchange.com/questions/184502/bash-how-to-run-a-command-after-the-previous-finished

Сценарий с проверкой на вывод tophat

#!/bin/bash
#The first line should always be just as it is above
#This script is called hailmary2.sh
#This script runs tophat
#then checks for the existance of the output file
#If the output is found, it runs the rest

tophat -p 8 -G genes.gtf -o C1_R1_thout genome C1_R1_1.fq C1_R1_2.fq

if [[ -f "./C1_R1_thout/accepted_hits.bam" ]]; then
    echo "tophat finished. Proceeding with the rest"
    cufflinks -p 8 -o C1_R1_clout C1_R1_thout/accepted_hits.bam
    cuffmerge -g genes.gtf -s genome.fa -p 8 assemblies.txt 
    cuffdiff -o diff_out -b genome.fa -p 8 –L C1,C2 -u merged_asm/merged.gtf ./C1_R1_thout/accepted_hits.bam,./C1_R2_thout/accepted_hits.bam,./#C1_R3_thout/accepted_hits.bam ./C2_R1_thout/accepted_hits.bam,./C2_R3_thout/accepted_hits.bam,./C2_R2_thout/accepted_hits.bamfi
else echo "tophat did not complete"
fi

Надежда, которой это помогает, пока кто-то еще не предоставляет более изящный ответ.

0
ответ дан 7 November 2019 в 04:48

Другие вопросы по тегам:

Похожие вопросы: