bigWig format


파일 유형 하나인 bigWig 포맷은 밀도있고 연속적인 데이터(dense, continuous data)를 Genome Browser상에 그래프에 나타내고자할 때 유용하다. bigWig 파일은 보통 [wigToBigWig]이라는 프로그램을 사용하여 wig 파일로부터 생성하나, bam 파일로부터 bigWig 파일을 생성할 수도 있다. 


bigWig 파일은 인덱스 처리된 바이너리 형태(indexed binary format)로 되어있다. 이와 같은 포맷의 주요 장점은 바로 파일 전체에서 특정 구간을 나타내는데 필요한 부분만 뽑아서 Genome Browser 서버로 보낼 수 있다는 것이다. 따라서, 대용량 데이터셋(dataset)을 다루는 경우, 일반적인 wig파일보다 bigWig파일이 훨씬 더 빠른 작업 속도를 보여준다.


다음은 샘플의 bam 파일로부터 bigWig 파일을 생성하는 방법에 대한 설명이다:

# 필터 처리된 bam 파일을 index 처리 진행 $ samtools index fwd.bam # run bamCoverage $ bamCoverage -b fwd.bam -o newfwd.bigWig


bigWig format에 대한 개념과 bam 파일로부터 bigWig 파일을 생성하는 방법에 대한 자세한 내용은 아래 링크를 참조하면 된다:

참조1: https://genome.ucsc.edu/goldenpath/help/bigWig.html

참조2: https://deeptools.readthedocs.io/en/develop/content/tools/bamCoverage.html

'Bioinformatics' 카테고리의 다른 글

NCBI blast+ local install OS Linux  (0) 2018.12.13
bedtools coverage  (0) 2018.12.04
Miso Analysis  (0) 2018.10.29
SAM FILE Format  (0) 2018.10.18
BED FILE FORMAT  (0) 2018.10.11

MySQL 기본 명령어 정리


데이터베이스 접속

mysql -u 사용자명 -p dbname

설치 직후에는 root 사용자에 비밀번호가 없으므로 다음과 같이 접속하여 MySQL을 관리할 수 있다.

mysql -u root mysql

외부 서버에서 접속이 불가하면 MySQL 설정에서 bind-address 항목을 살펴본다.

비밀번호 변경

MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않다. 다음 세가지 방법으로 비밀번호를 변경 할 수 있다.

# mysqladmin 이용
mysqladmin -u root password 새비밀번호
# update문 이용
mysql -u root mysql
----
mysql> UPDATE user SET password=password('새비밀번호') WHERE user='root';
mysql> FLUSH PRIVILEGES;
# Set Password 이용
mysql> SET PASSWORD FOR root=password('새비밀번호');

일단 root 비밀번호가 설정된 상태에서는 mysql이나 mysqladmin 명령을 실행할 때 -p 옵션을 붙여주고 기존 비밀번호를 입력해야만 한다.

사용자 확인

-- 현재 사용자 목록
use mysql;
select User,Host from user;

-- 권한 확인 'username'@'hostname'
SHOW GRANTS FOR 'username'@'%' 

사용자 추가 / 권한

-- 생성 후 필수 권한만 부여. - 실서비스 계정은 가급적 이렇게 필요 권한만 부여할 것.
CREATE USER username@localhost IDENTIFIED BY 'userpassword'
GRANT SELECT,INSERT,UPDATE,DELETE ON dbname.* TO 'username'@'localhost';
 
-- 생성과 전체 권한 일괄 부여
GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'password';

username 이라는 사용자를 password라는 비밀번호를 갖도록 하여 추가한다. username은 dbname이라는 데이타베이스에 대해 모든 권한을 가지고 있다. username 사용자는 로칼 호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면

GRANT ALL PRIVILEGES ON dbname.* TO username@'%' IDENTIFIED BY 'password';

위를 또한 번 실행한다. '%'에서 홑따옴표를 주의한다.

특정 권한만 주려면, 아래와 같은 형태로 권한을 나열한다.

GRANT INSERT, UPDATE, SELECT, DELETE,SHOW DATABASES, SHOW VIEW ON dbname.* TO username@'localhost' IDENTIFIED BY 'pwd';
-- 권한 뺐기
REVOKE CREATE,DROP,ALTER,CREATE VIEW,ALTER ROUTINE,CREATE ROUTINE
  ON dbname.* 
  FROM 'user'@'%';

MySQL error 1045(28000): Access denied for user ...에 따르면 '%'란 localhost 를 제외한 모든 호스트를 뜻한다고 한다. 즉, localhost에 대해서는 명시적으로 따로 권한을 지정해야 한다.

CREATE USER를 통한 사용자 생성이 안될 경우에는 mysql - ERROR 1396 (HY000): Operation CREATE USER failed for 'jack'@'localhost' 참조하여, 먼저 생성하려던 사용자를 drop 하고 재시도 해본다. 이 현상이 나타나는 이유는, CREATE USER/GRANT 명령으로 사용자와 권한을 추가/관리해야 하는데 mysql.dbmysql.user테이블을 직접 조작하다가 일관성이 깨졌기 때문이다. 가급적 mysql의 계정/권한 테이블에 대한 직접 조작은 하지 말아야 한다.

drop user admin@localhost;
flush privileges;
create user admin@localhost identified by 'admins_password'

불필요한 사용자 삭제는

mysql> DLETE FROM USER WHERE USER='username';
mysql> FLUSH PRIVILEGES;

데이터베이스 생성/보기

# 데이터베이스를 생성하고,
mysql> CREATE DATABASE dbname;
 
mysql> CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 
# 현재 존재하는 데이터베이스 목록을 보여준다.
mysql> SHOW DATABASES;
 
# 특정 데이타베이스를 사용하겠다고 선언한다.
mysql> USE dbname;
 
# 쓸모 없으면 과감히 삭제한다.
mysql> DROP DATABASE [IF EXISTS] dbname;

IF EXISTS 옵션은 비록 데이타베이스가 없더라도 오류를 발생시키지 말라는 의미이다.

테이블 생성/보기

테이블을 생성하고,

mysql> CREATE TABLE tablename (
  column_name1 INT PRIMARY KEY AUTO_INCREMENT,
  column_name2 VARCHAR(15) NOT NULL,
  column_name3 INT
) ENGINE=INNODB;

현재 데이타베이스의 테이블 목록을 보고

mysql> SHOW TABLES;

테이블 구조를 살펴본다.

mysql> EXPLAIN tablesname;
혹은
mysql> DESCRIBE tablename;

이름을 잘못 지정했으면 이름을 변경할 수도 있다.

mysql> RENAME TABLE tablename1 TO tablename2[, tablename3 TO tablename4];

필요 없으면 삭제한다.

mysql> DROP TABLE [IF EXISTS] tablename;

현재 상태 보기

mysql> STATUS
 
--------------
mysql Ver 11.18 Distrib 3.23.58, FOR pc-linux (i686)
 
Connection id: 26
CURRENT DATABASE: study
CURRENT USER: study@localhost
CURRENT pager: stdout
USING OUTFILE: ''
Server version: 3.23.58
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: euc_kr
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 2 hours 9 MIN 59 sec
 
Threads: 1 Questions: 160 Slow queries: 0 Opens: 28 FLUSH TABLES: 1
OPEN TABLES: 1 Queries per SECOND avg: 0.021
--------------

INSERT

mysql> INSERT INTO tablename VALUES(1,2, ...);
혹은
mysql> INSERT INTO tablename (col1, col2, ...) VALUES(1,2, ...);

SELECT

mysql> SELECT col1, col2, ... FROM tablename;

컬럼명을 *로 하면 모든 컬럼 의미.

mysql> SELECT col1 AS '성명', col2 AS '국어점수' FROM grade;

컬럼의 이름을 바꿔서 출력.

mysql> SELECT * FROM tablename ORDER BY col1 DESC;
mysql> SELECT col1, korean + math english AS '총점' FROM tablename ORDER BY '총점' ASC;

DESC는 내림차순 ASC는 오름차순.

mysql> SELECT * FROM grade WHERE korean < 90;

결과중 처음부터 10개만 가져오기

mysql> SELECT * FROM grade LIMIT 10;

결과중 100번째부터 10개만 가져오기. 첫번째 레코드는 0번 부터 시작한다.

mysql> SELECT * FROM grade LIMIT 100, 10;

UPDATE

mysql> UPDATE tablename SET col1=새값 WEHER 조건

DELETE

mysql> DELETE FROM tablename WEHRE 조건

DELETE with JOIN

-- DELETE 바로 뒤에 삭제할 테이블을 적는다.
-- INNER JOIN
DELETE T1, T2
FROM T1
INNER JOIN T2 ON T1.key = T2.key
WHERE condition;
 
-- LEFT JOIN
DELETE T1
FROM T1 
LEFT JOIN T2 ON T1.key = T2.key 
WHERE T2.key IS NULL;

mysql에서 쿼리 결과 세로로 보기

-E 옵션을 줘서 실행한다.

mysql -E -u root -p mysql

mysql에서 발생한 오류나 경고 다시 보기

mysql> SHOW errors;
mysql> SHOW warnings;

show processlist

SHOW FULL processlist;
SHOW FULL processlist\G;

MySQL 버전 알아보기

SHOW VARIABLES LIKE "%version%";

CREATE TABLE 구문 보기

SHOW CREATE TABLE [테이블이름]\G

테이블/컬럼 정보보기

-- 전체 테이블 정보를 주석까지 포함해 보여준다.
SHOW TABLE STATUS;

SHOW TABLE STATUS like 'member%'; -- 테이블 이름 매칭 조건

-- 테이블의 컬럼 정보를 주석까지 포함해 보여준다.
SHOW FULL COLUMNS FROM [테이블이름];

테이블/컬럼의 주석(Comment) 지정

-- 테이블의 주석 변경
ALTER TABLE [테이블이름] COMMENT = '테이블설명';

-- 컬럼의 주석 변경
ALTER TABLE [테이블이름] CHANGE COLUMN [컬럼이름] [새컬럼이름] ...여러 속성... COMMENT '새 주석';

테이블과 컬럼의 전체 정보

information_schema 의 TABLESCOLUMNS를 쿼리하여 테이블, 컬럼 정보를 살펴볼 수 있다.

select t.TABLE_SCHEMA, t.TABLE_NAME, c.COLUMN_NAME, c.COLUMN_TYPE, c.COLUMN_COMMENT from `TABLES` t
	inner join `COLUMNS` c on t.TABLE_NAME = c.TABLE_NAME
order by t.TABLE_SCHEMA, t.TABLE_NAME

출처 : http://kwonnam.pe.kr/wiki/database/mysql/basic

'Internet & Server' 카테고리의 다른 글

자료 구조의 필요성  (0) 2018.10.22
이진트리 운행법  (0) 2018.10.22
데이터베이스의 논리적 모델  (0) 2018.10.22
데이터 모델링  (0) 2018.10.22
Server란?  (0) 2018.10.10

Heatmap 시각화(Visualization)를 위한 다양한 툴

Tools


위에 나와있는 여러 종류의 Heapmap 시각화 툴 중, 가장 사용하기 쉽고 정확하며 gencode dataset의 사전처리(pre-processing) 과정이 거의 필요하지 않은 Deeptools에 대해서 다뤄보기로 한다.


Deeptools

INPUT Data: BigWig files of ChIP-seq marks, and feature dataset in BED format


앞서 설명한 바와 같이 Deeptools는 사용하기 쉽고 정확하며 gencode dataset의 사전처리 과정이 거의 필요하지 않다. 사실 Deeptools는 다양한 목적으로 사용될 수 있지만, 여기서는 Heatmap 제작에 관해서만 이야기해보기로 한다. 


Deeptools의 Heatmap 제작 과정은 크게 아래의 2단계로 이루어져있다:

  1.  Matrix file 생성
  2.  Heatmap 제작


그리고 1번의 Matrix file 생성시 사용하는 "computeMatrix" 함수에서 다음의 2가지 옵션을 선택할 수 있다: 

1. A reference-point centered option - dataset의 끝점(시작, 마지막) 혹은 가운데점을 기반으로 Heatmap를 제작하고자 할 때

$ computeMatrix reference-point \ --referencePoint TSS \ # alternatives: TES, center -b 3000 -a 3000 \ # define the region you are interested in -R genes.bed \ -S log2ratio_H3K4Me3_chr19.bw \ --skipZeros \ -o matrix1_H3K4me3_l2r_TSS.gz \ # to be used with plotHeatmap and plotProfile

2. A scale-regions option - 하나 이상의 변수를 가진 dataset에 대한 Heatmap를 제작하고자 할 때

$ computeMatrix scale-regions \ -R genes_chr19_firstHalf.bed genes_chr19_secondHalf.bed \ # separate multiple files with spaces -S log2ratio_*.bw \ or use the wild card approach -b 3000 -a 3000 \ --regionBodyLength 5000 \ --skipZeros -o matrix2_multipleBW_l2r_twoGroups_scaled.gz \ --outFileNameMatrix matrix2_multipleBW_l2r_twoGroups_scaled.tab \ --outFileSortedRegions regions2_multipleBW_l2r_twoGroups_genes.bed


위 예시 코드에 나와있는 command에 대한 자세한 설명은 아래 링크에서 참조하면 된다.

(참조: https://deeptools.readthedocs.io/en/develop/content/tools/computeMatrix.html)


Matrix file이 다 만들어지고나면 아래 명령문으로 Heatmap을 제작할 수 있다.

$ plotHeatmap -m matrix_two_groups.gz \ -out ExampleHeatmap2.png \ --colorMap RdBu \


위 예시 코드에 나와있는 command에 대한 자세한 설명은 아래 링크에서 참조하면 된다.

(참조: https://deeptools.readthedocs.io/en/develop/content/tools/plotHeatmap.html)





'Bioinformatics > Chip-seq' 카테고리의 다른 글

Chip-seq Analysis visualize CovPlot  (0) 2019.02.26
Chip-seq 분석이란?  (0) 2018.10.11

+ Recent posts