
Tengo un análisis para ejecutar en skatMeta (paquete R). Recibí un runscript.sh
mensaje que llama myfile.R
para ejecutar el análisis. Sin embargo, el script está escrito para Linux, pero yo sólo tengo Windows. Instalé Cygwin, pero ahora no tengo idea de cómo ejecutarlo. El runscript.sh es:
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
¿Alguien puede explicarme qué debo hacer? Estoy confundido sobre qué debo hacer: dónde deben ubicarse estos archivos, está bien si tengo instalado R y skatMeta para Windows... Ni siquiera sé cómo ejecutarlo desde cmd. Y por favor explícalo lo más claro y sencillo posible que no tengo ni idea de estas cosas (explicación para tontos).
Respuesta1
Primero, veamos qué hace realmente el script:
El bucle exterior:
for t in `echo A B` ; do
(removed for clarity)
done
Esto establece la variable $t en A, ejecuta el resto de los comandos en el bucle y luego lo repite con $t establecido en B. También lo hace de una manera extraña al ejecutar un subshell para hacer eco de A y B. Una simple for t in A B ; do
sería han hecho lo mismo.
A continuación, el bucle interior.
seq 1 22 ; echo X
secuencia crea unsecuenciauencia de números del 1 al 22. EntoncesXestá agregado. Lo escribirías en una forma más larga 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
Finalmente, los comandos:
Agregue esto al código interno y obtendrá estos 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" ;
Ahora que sabemos lo que hace, puede ejecutarlo manualmente, escribir un archivo por lotes o un script de PowerShell. :-)
Probablemente contendría algo como esto:
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
Donde la primera línea es la ruta completa al binario R (el valor predeterminado en Windows es C:\program files\name_of_the_manufacturer\program_name.exe) y donde el acceso directo de Unix para inicio ( ~
) ha sido reemplazado por %HOMEPATH%. El último probablemente se expande a C:/users/your_username y lo encapsulé en signos % dobles, lo cual es necesario para un archivo por lotes.
Dejaré esa parte para otro autor, ya que las secuencias de comandos de Windows no son mi fuerte.