
Tenho uma análise para rodar no skatMeta (pacote R). Recebi uma runscript.sh
chamada myfile.R
para fazer a análise. No entanto, o script foi escrito para Linux, mas só tenho Windows. Instalei o Cygwin, mas agora não tenho ideia de como executá-lo. O runscript.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
Alguém pode me explicar o que devo fazer? Estou confuso sobre o que devo fazer: onde esses arquivos devem estar localizados, tudo bem se eu tiver R e skatMeta instalados para Windows, ... nem sei como executá-lo no cmd. E por favor, explique da forma mais clara e simples possível, pois não tenho ideia dessas coisas (uma explicação para manequins).
Responder1
Primeiro, vamos ver o que o script realmente faz:
O circuito externo:
for t in `echo A B` ; do
(removed for clarity)
done
Isso define a variável $t como A, executa o restante dos comandos no loop e depois o repete com $t definido como B. Ele também faz isso de uma maneira estranha ao executar um subshell para ecoar A e B. Um simples for t in A B ; do
seria fizeram o mesmo.
A seguir, o loop interno.
seq 1 22 ; echo X
seq cria umsequênciafluência dos números de 1 a 22. EntãoXEstá adicionado. Você escreveria em uma forma mais longa comofor 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
Por fim, os comandos:
Adicione isso ao código interno e você obterá estes comandos:
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" ;
Agora que sabemos o que isso faz, você pode executá-lo manualmente, escrever um arquivo em lote ou um script do PowerShell. :-)
Provavelmente conteria algo assim:
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
Onde a primeira linha é o caminho completo para o binário R (o padrão no Windows é C:\program files\name_of_the_manufacturer\program_name.exe) e onde o atalho unix para home ( ~
) foi substituído por %HOMEPATH%. O último provavelmente se expande para C:/users/your_username e eu o encapsulei em sinais % duplos, necessários para um arquivo em lote.
Vou deixar essa parte para outro postador, já que scripts do Windows não são meu forte.