У меня есть анализ для запуска в skatMeta (пакет R). Я получил runscript.sh который вызывает myfile.R для запуска анализа. Тем не менее, сценарий написан для Linux, но у меня есть только Windows. Я установил Cygwin, но теперь не знаю, как его запустить. Файл runcript.sh:

for t in `echo A B` ; do 
  for i in `seq 1 22 ; echo X` ; 
  do 
       qth "export R_LIBS=~/lib/ ; 
       R --vanilla --args phenotype=$t chr=$i < ~/bin/skat.R" ;
  done ;
done

Может кто-нибудь объяснить мне, что мне делать? Я все путаюсь с тем, что мне делать: где эти файлы должны находиться, нормально ли, если у меня установлен R и skatMeta для Windows, ..Я даже не знаю, как запустить его из cmd. И, пожалуйста, объясните это как можно яснее и проще, поскольку я понятия не имею об этих вещах (объяснение манекенов).

1 ответ1

0

Во-первых, давайте посмотрим, что на самом деле делает скрипт:


Внешний цикл:

for t in `echo A B` ; do
(removed for clarity)      
done

Это устанавливает переменную $ t в A, выполняет остальные команды в цикле и затем повторяет ее с $ t, установленным в B. Он также делает это странным образом, выполняя подоболочку для эха A и B. Простой for t in A B ; do бы то же самое.


Далее внутренний цикл.

seq 1 22 ; echo X

далее создает НомерСтарт uence чисел от 1 до 22. Затем X добавляется. Вы бы написали это в более длинной форме, как for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 X


Наконец, команды:

Добавьте это во внутренний код, и вы получите следующие команды:

 qth "export R_LIBS=~/lib/ ;  
 R --vanilla --args phenotype=A chr=1 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=A chr=2 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=A chr=3 < ~/bin/skat.R" ;  
 ...   
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=A chr=19 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=A chr=20 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=A chr=X < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;  
 R --vanilla --args phenotype=B chr=1 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=B chr=2 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=B chr=3 < ~/bin/skat.R" ;  
 ...   
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=B chr=19 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=B chr=20 < ~/bin/skat.R" ;  
 qth "export R_LIBS=~/lib/ ;   
 R --vanilla --args phenotype=B chr=X < ~/bin/skat.R" ;  


Теперь, когда мы знаем, что он делает, вы можете запустить его вручную, написать пакетный файл или скрипт powershell. :-)

Это, вероятно, будет содержать что-то вроде этого:

C:\program files\SkatMeta\R.exe --vanilla --args phenotype=A chr=1 < %%HOMEPATH%%\bin\skat.R" 
C:\program files\SkatMeta\R.exe --vanilla --args phenotype=A chr=2 < %%HOMEPATH%%\bin\skat.R"  
C:\program files\SkatMeta\R.exe --vanilla --args phenotype=A chr=3 < %%HOMEPATH%%\bin\skat.R" 

Etc etc with chr is 4 5 6 7 8 ... 21 22 X
And then the same for B

В первой строке это полный путь к двоичному файлу R (по умолчанию в Windows это C:\program files\name_of_the_manufacturer\program_name.exe), а ярлык unix для home (~) заменен на% HOMEPATH%. Последнее, вероятно, расширяется до C:/users/your_username, и я заключил его в двойные знаки%, которые необходимы для пакетного файла.

Я оставлю эту часть другому постеру, так как сценарии для Windows не являются моей сильной стороной.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .