반응형
안녕하세요 한주현입니다.
오늘은 java로 fastq.gz 을 읽는 방법에 대해 알아보겠습니다.
JAVA로 fastq.gz 읽기
JAVA로 fastq.gz 읽기
아래는 fastq.gz 파일을 읽는 소스코드입니다.
그냥 읽기만 하면 재미가 없으니 ㅎㅎ..
조건을 몇 개 설정해봅시다.
- 조건
1) fastq.gz 은 paired 되어있다.
2) 각 read의 naming은 sample_1.fastq.gz, sample_2.fastq.gz 으로 한다.
3) 각 read 별 fastq에서 평균 read length를 계산한다.
여러분들도 한 번 코드작성을 해보시기를 추천드립니다 ㅎㅎ;
여러모로 배울점들이 생기게 됩니다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 |
import java.io.*;
import java.util.zip.*;
class calcLength {
public static void main(String[] args) throws IOException {
if(args.length != 1) {
System.out.println("#usage: java calcLength SampleName");
System.exit(1);
}
String fq1 = args[0]+"_1.fastq.gz";
String fq2 = args[0]+"_2.fastq.gz";
GzipReader gzReader = new GzipReader();
String readAverage_fq1 = gzReader.readGzip(fq1);
String readAverage_fq2 = gzReader.readGzip(fq2);
System.out.println("Read1: "+readAverage_fq1+"\nRead2: "+readAverage_fq2);
}
}
class GzipReader {
private long lineNum = 0;
private long lengthSum = 0;
private String s;
private String result;
public String readGzip(String fq) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(fq))));
while((s = in.readLine()) != null) {
if(lineNum % 4 == 1) {
lengthSum += s.trim().length();
}
lineNum += 1;
}
return String.valueOf(lengthSum / (double)(lineNum/4));
}
} |
cs |
실행
7Gbp (70억 염기쌍) 의 fastq.gz 파일을 실행한 결과입니다.
1
2
3
4
5
6
7 |
$ time java calcLength sample
Read1: 144.41828094280308
Read2: 144.44187587501781
real 2m39.691s
user 2m34.084s
sys 0m10.525s |
cs |
오늘은 java로 fastq.gz 파일을 읽는 방법에 대해 알아봤습니다.
여러분들께 도움이 되셨음 좋겠습니다 ㅎㅎ
그럼 다음시간에 만나요~
반응형
'컴퓨터 > Java' 카테고리의 다른 글
[Java] 터미널, 콘솔 환경에서 jar 만들기 - jar 파일이란? (1) | 2018.07.04 |
---|---|
[java] 자바 스택, 큐 구현하기 - java stack, queue 구현하기 (0) | 2017.12.31 |
[java] 소수점 반올림 하는 방법 - 소수점 반올림하여 둘째자리 까지 남기기 - 자바 반올림 소수점 n번째 까지 남기기 (0) | 2017.12.31 |
[java] 배열 출력하는 방법 - 배열을 출력하는 가장 쉬운 방법 - java.util.Arrays (0) | 2017.12.30 |
[java] 문자열에서 정수형, double형으로 바꾸는 방법, 문자열에서 기본형으로 바꾸는 방법 - String to int, double (0) | 2017.12.30 |
댓글