Linux 상에서 bash 쉘 실행하기
public static class ShellHelper { public static ShellOutput Bash(this string cmd, string sWorkingDir) { var sEscapedArgs = cmd.Replace("\"", "\\\""); var process = new Process { StartInfo = new ProcessStartInfo { FileName = "/bin/bash", Arguments = $"-c \"{sEscapedArgs}\"", RedirectStandardOutput = true, RedirectStandardError = true, UseShellExecute = false, CreateNoWindow = true, WorkingDirectory = sWorkingDir } }; ShellOutput rv = null; try { process.Start(); process.WaitForExit(); rv = new ShellOutput(process); } catch (Exception ex) { rv = new ShellOutput(null, ex); LogEx.Logger.LogError(ex, nameof(ShellHelper)); } return rv; } } public class ShellOutput { public ShellOutput(Process process, Exception ex = null) { this.Process = process; m_sStdErr = ex?.Message; } #region Fields string m_sStdOut; string m_sStdErr; #endregion Fields public Process Process { get; } public bool IsSuccessful => this.Process?.ExitCode == 0; public string StdOutText => m_sStdOut ??= this.Process?.StandardOutput.ReadToEnd(); public string StdErrText => m_sStdErr ??= this.Process?.StandardError.ReadToEnd(); }
qiime 2가 설치된 Python 가상환경에서 실행시키기 위한 스크립트 작성
#!/bin/bash _CONDA_ROOT="/home/user/miniconda3" export PATH=$_CONDA_ROOT/bin:$_CONDA_ROOT/condabin source $_CONDA_ROOT/etc/profile.d/conda.sh #echo conda activate qiime2-2023.5 conda activate qiime2-2023.5 if [ $# == 0 ] then qiime info then qiime $* fi #echo conda deactivate conda deactivate
qiime 실행하고 결과 받기
string sResult = "Running..."; var rv = ShellHelper.Bash("~/qiime2/q2run.sh info", null); //var rv = ShellHelper.Bash("~/qiime2/q2run.sh tools list-types", null); //var rv = ShellHelper.Bash("~/qiime2/q2run.sh tools list-formats", null); if (rv.IsSuccessful) { sResult = rv.StdOutText; } else { sResult = rv.StdErrText; }
qiime 2가 설치된 Python 가상환경에서 여러 명령을 수행하는 스크립트
q2env.sh
#!/bin/bash _CONDA_ROOT="/home/user/miniconda3" export PATH=$_CONDA_ROOT/bin:$_CONDA_ROOT/condabin:$PATH source $_CONDA_ROOT/etc/profile.d/conda.sh #echo conda activate qiime2-2023.5 conda activate qiime2-2023.5 if [ $# == 0 ] then qiime info else tid=1 for i do echo "### q2-task-$tid" echo "$i" echo ">>>" $i echo "<<<" tid=`expr $tid + 1` done fi #echo conda deactivate conda deactivate
Example:
$ ./q2env.sh "qiime info" "qiime tools list-types" ### q2-task-1 qiime info >>> System versions : <<< ### q2-task-2 qiime tools list-types >>> Bowtie2Index No description : <<< $
'BIO' 카테고리의 다른 글
ASP.NET Core Dockerfile에 QIIME 2 환경 추가하기 (0) | 2023.08.11 |
---|---|
FASTQ format in QIIME 2 (0) | 2023.08.01 |
Installing the QIIME 2 Core 2023.5 distribution using WSL (0) | 2023.07.31 |
QIIME 2 Core concepts (0) | 2023.07.31 |
FASTAQ (0) | 2023.07.31 |