반응형

Argument받아서 처리하기




bash 스크립트로 argument를 여러 개 받아 해당 수 만큼 for loop을 돌릴 때 쓰는 방법이다.


전체 argument를 반복하고 싶다면 아래처럼 하면 된다.


for i in $@ ; do echo $i ; done 


특정 구간만을 반복시키고 싶다면 indexing을 넣어주어야 한다. 아래 예시는 2번부터 끝까지 반복이다.


for i in ${@:2} ; do echo $i ; done


2번부터 3번 반복하고 싶다면 (즉 2부터 4까지) 아래처럼 더 추가한다.


for i in ${@:2:3} ; do echo $i ; done



argument가 몇 개 인지 알고싶다면 "$#" 를 사용하면 된다.


argument가 0개 일때의 조건문.


if [ $# -eq 0 ] ; then

        echo "Number of argument is 0"

else 

        echo "Number of argument is $#"

fi





Reference -

https://stackoverflow.com/questions/255898/how-to-iterate-over-arguments-in-a-bash-script

https://stackoverflow.com/questions/4423306/how-do-i-find-the-number-of-arguments-passed-to-a-bash-script

반응형
반응형

특정 파일이나 디렉토리를 남기고 모두 지우기



file.txt라는 이름의 파일을 남기고 나머지를 모두 지우기.


find . ! -name 'file.txt' -type f -exec rm -f {} +



디렉토리라면 type을 d로 바꾸고 rm 에 recursive 옵션을 추가하면 된다.


find . ! -name 'file.txt' -type d -exec rm -rf {} +

* 주의사항 

위의 디렉토리만 남기고 모두 지우기는 디렉토리 안의 파일도 모두 지움

디렉토리 수준에서만 적용하고 싶다면 아래처럼 사용한다


find . -maxdepth 1 ! -name 'file.txt' -type d -exec rm -rf {} +
depth제한을 둠으로써 하위 폴더로 내려가지 않고 현재 폴더에서만 적용.


여러 개의 파일을 남겨놓고 싶다면 아래처럼 추가 할 수 있다.


find . ! -name 'file.txt' ! -name 'file2.txt' -type f -exec rm -f {} +


Reference -

https://unix.stackexchange.com/questions/153862/remove-all-files-directories-except-for-one-file

반응형

'Computer Science > linux' 카테고리의 다른 글

linux 계정 정보 옮기기  (1) 2019.08.21
tar 디렉토리 지정해서 압축 풀기  (0) 2018.10.04
리눅스에서 프록시 설정하기  (0) 2018.07.26
neocomplcache vim plugin 설치하기  (0) 2018.07.12
samba 설정하기  (0) 2018.02.02
반응형

DESeq2 에서 multiple condition 수행하기




DESeq2는 여러 컨디션이 있어도 DEG분석이란 결국 pairwise하게 비교해야 하기 때문에 condtion을 구분 해 놓은뒤 결과를 원하는 두 컨디션을 놓고 비교해서 각각 분석해야 한다.

SRA010153 데이터로 전체적인 DEG analysis workflow는 추후에 정리하기로 하고 여기서는 multiple condition의 비교에만 중점을 두고 설명하겠다.

SRA010153은 여러 컨디션이 있지만 Brain과 UHR phi X 데이터만 받은 상태에서 임의로 test 컨디션을 아래처럼 추가했다. (원래는 7개의 Brain과 7개의 UHR이다.)

sampleCondition<-c('Brain','Brain','Brain','Brain','Brain','Brain','test', 'UHR','UHR','UHR','UHR','test','UHR','test')

sampleTable<-data.frame(sampleName=sampleFiles, fileName=sampleFiles, condition=sampleCondition)    

                                                                   

ddsHTSeq<-DESeqDataSetFromHTSeqCount(sampleTable=sampleTable, directory=directory, design=~condition)

write.csv(assay(ddsHTSeq),quote=F,file="raw_count.csv")                                                                               

                                                

colData(ddsHTSeq)$condition<-factor(colData(ddsHTSeq)$condition, levels=c('Brain','UHR','test'))

                                                                                        

cts <- counts(ddsHTSeq)                                                                 

geoMeans <- apply(cts, 1, function(row) if (all(row == 0)) 0 else exp(mean(log(row[row != 0]))))

ddsHTSeq <- estimateSizeFactors(ddsHTSeq, geoMeans=geoMeans)                            

dds<-DESeq(ddsHTSeq)


res <- results(dds)


쭉 진행하면 나오는 결과는 test와 brain간의 비교이다. DESeq2는 default로 가장 처음과 마지막에 있는 컨디션을 비교하기 때문이다.


이를 아래처럼 수정하면 test와 UHR간의 비교 결과를 보여준다.


results(dds,contrast=c('condition','test','UHR'))


2, 3번째 값을 수정하면 그에 맞게 바뀌는데 당연히 이미 설정해놓은 컨디션 값을 지정해주어야하며


순서를 바꾸면 log2FoldChange값이 +에서 -로 바뀌게 된다.


> results(dds,contrast=c('condition','UHR','test'))

log2 fold change (MLE): condition UHR vs test 

Wald test p-value: condition UHR vs test 

DataFrame with 60461 rows and 6 columns

                          baseMean     log2FoldChange             lfcSE

                         <numeric>          <numeric>         <numeric>

ENSG00000000003   92.1871316897525  0.479423175690374  0.43657650183317

ENSG00000000005   2.33464385903914  0.243364522893621 0.807778836598724


> results(dds,contrast=c('condition','test','UHR'))

log2 fold change (MLE): condition test vs UHR 

Wald test p-value: condition test vs UHR 

DataFrame with 60461 rows and 6 columns

                          baseMean      log2FoldChange             lfcSE

                         <numeric>           <numeric>         <numeric>

ENSG00000000003   92.1871316897525  -0.479423175690374  0.43657650183317

ENSG00000000005   2.33464385903914  -0.243364522893621 0.807778836598724


log2FC값 외에 변경되는 값은 없다.





반응형
반응형

리눅스에서 프록시 설정하기




외부로 연결되는 서버 A가 있고 이 서버를 통해서 연결할 수 있는 내부만 연결이 되어 있는 서버 B에서 작업할 때 프록시 설정을 해 놓으면 A서버가 중개해서 B서버가 외부와 통신할 수 있게 된다.

B서버의 .bash_profile 안에 아래와 같이 입력하면 된다.

#proxy setting
export http_proxy=http://[ID]:[PASSWORD]@ip:port/
export https_proxy=http://[ID]:[PASSWORD]@ip:port/
export ftp_proxy=http://[ID]:[PASSWORD]@ip:port/

ID와 password가 A서버와 B서버가 동일하다면 생략해도 되며 ip와 port는 반드시 넣어주어야 한다.

port는 proxy의 기본 port number가 3128라서 따로 설정하지 않았다면 3128을 넣으면 된다.



반응형
반응형

Centos 6에서 R 설치를 위한 라이브러리 설치




Root권한이 있다면 yum이나 apt-get으로 설치하면서 진행할 수 있겠지만 local로 설치하려고 하니 local library에 따로 설치해야 하는 것들이 많아서 정리해 보고자 한다.

먼저 local library 설치 폴더를 만든다. 간단하게 만들어도 무방하다.

mkdir ~/library 

zlib

제일 처음 문제가 생긴 부분은 zlib 버전이 1.2.5 미만이라는 것. zlib를 다운받는다. 이때 1.2.10 이상 버전을 받으면 lexiographically 1.2.10이 더 낮다고 판단하는 문제가 있기 때문에 무난하게 1.2.9로 받도록 하자. (lexiographically는 숫자를 문자로 인식해서 5와 15를 비교할 때 5 > 1 로 비교해서 5가 15보다 더 높다고 비교하는 방식이다.)
참조 (https://stackoverflow.com/questions/42076936/zlib-bz2-library-and-headers-are-requried-for-compiling-r)

wget https://osdn.net/frs/g_redir.php?m=kent&f=libpng%2Fzlib%2F1.2.9%2Fzlib-1.2.9.tar.gz
tar -zxf zlib-1.2.9.tar.gz
cd zlib-1.2.9
./configure --prefix=~/library
make && make install

일반적인 설치 방법대로 하면 zlib가 설치된다. 설치가 끝나면 ~/library 폴더 안에 lib와 include폴더가 생성되는데 여기에 나머지 라이브러리들도 다 넣고 이 라이브러리 경로를 잡아서 R을 설치 할 것이다.

bzip

bzip은 설치방법이 약간 다르다. configure가 없다. 바로 make를 하는데 prefix가 대문자임에 주의하면서 진행하면 된다.

wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar -zxf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make --PREFIX=~/library

liblzma

lzma는 lzma를 직접 설치하는게 아니라 XZ를 설치하면 자동으로 해결된다. https://tukaani.org/xz/ 에서 받을 수 있다.

wget https://tukaani.org/xz/xz-5.2.4.tar.gz
tar -zxf xz-5.2.4.tar.gz
cd xz-5.2.4
./configure --prefix=~/library
make && make install

pcre

pcre는 추가로 설정해줘야하는 부분이 있다. 우선 파일은 https://ftp.pcre.org/pub/pcre/에서 받으면 되는데 pcre2를 받지 말고 pcre 8.42정도를 받자.

wget https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
tar -zxf pcre-8.42.tar.gz
cd pcre-8.42
./configure --prefix=~/library --enable-utf8
make && make install

cd ~/library/include
mkdir pcre
ln -s pcre* include/.

make 이후에 ~/library/include에 생성된 pcre.h 헤더 파일이 있는데 이 파일을 include/pcre 폴더 안에 링크로 넣어주는 작업까지 해야 완료가 된다. 왜인지는 모르겠지만 R 설치시 헤더파일을 pcre폴더 안에서 찾기 때문이다.

curl

마지막으로 curl은 일반적인 설치 방식을 따라가면 된다. https://curl.haxx.se/download.html

wget https://curl.haxx.se/download/curl-7.61.0.tar.gz
tar -zxf curl-7.61.0.tar.gz
cd curl-7.6.10
./configure --prefix=~/library
make && make install



모든 dependency가 설치되었으면 R의 configure를 해보도록 하자.


./configure --prefix=/PATH/TO/INSTALL/R --enable-R-shlib LDFLAGS="-L~/library/lib/" CPPFLAGS="-I~/library/include/"

make && make install




중간에 warning이 뜨긴 했지만 일단 무시하고 진행했으며 R일 실행되는 것 까지 확인하였다.


Reference -

https://unix.stackexchange.com/questions/343452/how-to-install-r-3-3-1-in-my-own-directory

반응형

'Computer Science > R' 카테고리의 다른 글

Kegg pathway에 속하는 유전자 정보 가져오기  (2) 2018.09.11
pheatmap으로 heatmap그리기  (0) 2018.09.11
R에서 Dataframe 합치기  (0) 2018.09.05
DESeq2 에서 multiple condition 수행하기  (1) 2018.07.27
Arguments in R  (0) 2018.07.25
반응형

Arguments in R




Rscript를 사용할 때 argument를 input으로 받는 방법.

args = commandArgs(trailingOnly=TRUE)
species <- args[1]
inputfile <= args[2]

Rsciprt test.R human hg19.fasta


argument를 더 복잡하게 쓰려면 optparse라는 라이브러리를 써도 되지만 간단하게 정리하고 싶다면 위와 같이 작성할 수 있다.


추가로 argument를 입력하지 않았을 때 간단한 설명을 넣고 싶다면 아래와 같이 하면 된다.


if(length(args)==0 {

        stop("All argument must be supplied ex) human hg19.fasta",call.=FALSE))

}


argument가 하나도 들어오지 않았다면 ERROR 메세지 뒤에 정해놓은 문자열을 출력하고 자동 종료된다.



반응형
반응형

neocomplcache vim plugin 설치하기




neocomplcache는 autocomplpop과 비슷한 자동완성 플러그인이다. vim에서 작업할 때 변수명이 길어지거나 외부 폴더 경로를 잡는데 유용하게 사용할 수 있다.



이미 선언한 변수도 가능하며



폴더에도 아래처럼 적용 가능하다.


아래의 목록이 떳을 때 방향키로 선택 후 엔터를 누르면 바로 적용된다.


설치 방법은 vim 플러그인 매니저를 사용하지 않고 메뉴얼하게 설치하는 방법만 설명하기로 한다.


git 저장소의 위치는 아래와 같다


https://github.com/Shougo/neocomplcache.vim


다운로드 후 폴더를 열면 autoload, doc, plugin README.md 등의 파일이 존재한다.


이 폴더들은 그대로 ~/.vim/ 아래에 붙여넣으면 설치는 끝난다.



설치 후에 플러그인을 실행하기 위해서는 두 가지 방법이 있는데 


첫째는 vim 실행 후 명령 모드에서 아래 명령을 실행하는 것이며


NeoComplCacheEnable


두번째는 ~/.vimrc에 아래와 같은 명령을 작성하는 것이다.


vimrc파일이 없다면 생성하면 된다.


let g:neocomplcache_enable_at_startup = 1


첫번째 방법은 vim을 실행할 때 마다 입력해줘야 적용이 되고 vimrc에 작성하는 방법은 vim을 실행할 때 마다 vimrc파일을 읽으면서 플러그인을 적용시키는 방법이다.



반응형

'Computer Science > linux' 카테고리의 다른 글

특정 파일이나 디렉토리를 남기고 모두 지우기  (0) 2018.09.03
리눅스에서 프록시 설정하기  (0) 2018.07.26
samba 설정하기  (0) 2018.02.02
awk 응용하기!  (0) 2017.10.18
MPC 설치하기  (0) 2017.09.19
반응형

samba 설정하기



samba를 설치하는 방법은 다른 홈페이지를 참고. centos에서는 아래 명령어로 설치 가능하다

yum install samba

samba에 접속할 디렉토리를 설정하기 위해서 /etc/samba/smb.conf 파일을 수정해야 한다.


global 설정을 아래처럼 하고 특정 IP만 허용하고 싶으면 hosts allow 부분에 아이피를 넣어주면 된다.


[global]

        workgroup = WORKGROUP

        security = user

        passdb backend = tdbsam

        hosts allow = *.*.*.*

        unix charset = UTF-8

        dos charset = CP932

        printing = cups

        printcap name = cups

        load printers = yes

        cups options = raw


user의 Home을 공유하고 싶으면 아래처럼 넣어준다.

[homes]
        comment =   User  Home  Directories
        writable = yes
        browseable = no

특정 유저에게 특정 path을 연결하고 싶으면 아래처럼 추가하면 된다.

[test]
        comment = test directory
        path = /DIR/TO/TEST
        writable = yes
        valid users = testuser
        browseable = yes


모든 설정이 끝나고 나면 samba를 재시작 해야한다.

systemctl restart samba

user가 samba를 쓰고 싶다면 password를 부여해야 한다.

smbpasswd -a username

윈도우에서 samba를 네트워크 드라이브로 연결하기 위해서는 내 PC에 들어가서 아래처럼 네트워크 드라이브 연결을 해주면 된다.



home에 연결하기 위해서는 \\server\[username] 을 입력해주면 되고 특정 폴더에 연결하고 싶다면 \\server\TEST로 연결해 주면 된다.


반응형

'Computer Science > linux' 카테고리의 다른 글

리눅스에서 프록시 설정하기  (0) 2018.07.26
neocomplcache vim plugin 설치하기  (0) 2018.07.12
awk 응용하기!  (0) 2017.10.18
MPC 설치하기  (0) 2017.09.19
MPFR 설치하기  (0) 2017.09.19
반응형

awk 응용하기!



awk '{if ($1 ~ ">gga" || $1 ~ ">tgu") {print $1 ; getline ; print}}' mature.fa > mature.others.fa


줄의 시작이 ">gga" 또는 ">tgu"로 시작하는 줄에서 $1를 프린트 하고 라인을 읽고 전체 줄을 프린트한다.


mature.fa 파일은 mirbase에서 다운로드 받은 것으로 전체 종의 대한 mature miRNA sequence가 전부 포함되어 있다.


mirdeep2에서 유사종의 mature miRNA sequence만 가져오고 싶으며 또한 sequence id에 추가 설명 없이 1번 column만 포함되어야 하므로 위와 같은 코드를 구성하였다.







fasta 파일에서 contig 별로 sequence 가져오기.


contig의 형식은 아래와 같았다.


>Contig1

sequence


>로 시작하는 id는 substr를 사용해 숫자 부분만 가져오고 >로 시작하지 않으면 이전에 정한 id 변수 이름에 write.


awk '{if ($1 ~ ">") id = substr($1,8)} {print >> "jelly.out.break.fasta."id".txt"}' ../break/jelly.out.break.fasta


필요에따라 id를 변수로 지정하는 부분만 바꿔주면 될듯 하다.




fasta 파일에서 "|" 와 "_"로 이어져있는 id를 쪼개기.


awk '{if ($1 ~ ">") {split($1,tmpid,"|");split(tmpid[1],id,"_");print ">"id[2] >> "knd1.fa"} else {print >> "knd1.fa"}}' consensus_ngmlr.fasta


반응형

'Computer Science > linux' 카테고리의 다른 글

neocomplcache vim plugin 설치하기  (0) 2018.07.12
samba 설정하기  (0) 2018.02.02
MPC 설치하기  (0) 2017.09.19
MPFR 설치하기  (0) 2017.09.19
GMP 설치하기  (1) 2017.09.19
반응형

MPC 설치하기

 

 

 

GMP, MPFR과 마찬가지로 GNU에서 제공하는 C library이다.

 

반드시 GMP, MPFR 설치 후 진행해야 한다.

 

2017/09/19 - [linux] - GMP 설치하기

 

2017/09/19 - [linux] - MPFR 설치하기

 

 

홈페이지는 - http://www.multiprecision.org/ 이다.

 

다운로드는 다운로드 탭으로 들어가면 된다. http://www.multiprecision.org/index.php?prog=mpc&page=download

 

1.0.3 버전으로 진행하였다.

 

wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
tar zxf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure --prefix=/PATH/TO/INSTALL/MPC --with-mpfr=/PATH/TO/INSTALL/MPFR --with-gmp=/PATH/TO/INSTALL/GMP
make && make install

 

 

 

반응형

'Computer Science > linux' 카테고리의 다른 글

samba 설정하기  (0) 2018.02.02
awk 응용하기!  (0) 2017.10.18
MPFR 설치하기  (0) 2017.09.19
GMP 설치하기  (1) 2017.09.19
GCC 설치하기  (1) 2017.09.18

+ Recent posts