Creates ped file from reads

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@1711 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
sjia 2009-09-24 02:48:29 +00:00
parent b0ec7fc144
commit 5c5151c4e7
1 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,94 @@
/*
* Creates a ped file given reads (for SNP analysis, imputation, etc)
*/
package org.broadinstitute.sting.playground.gatk.walkers.HLAcaller;
import net.sf.samtools.SAMRecord;
import org.broadinstitute.sting.gatk.contexts.AlignmentContext;
import org.broadinstitute.sting.playground.gatk.walkers.HLAcaller.ReadCigarFormatter;
import org.broadinstitute.sting.gatk.walkers.*;
import java.io.FileInputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.lang.Math;
/**
*
* @author shermanjia
*/
@Requires({DataSource.READS, DataSource.REFERENCE})
public class CreatePedFileWalker extends ReadWalker<Integer, Integer> {
ReadCigarFormatter formatter = new ReadCigarFormatter();
char c;
boolean DEBUG = false;
int HLA_A_start = 30018310;
int HLA_A_end = 30021211;
String[] SNPnames;
String SNPname;
int start, end;
Integer I;
Hashtable indexer = new Hashtable();
public Integer reduceInit() {
SNPnames = new String[HLA_A_end-HLA_A_start+1];
start = HLA_A_start;
end = HLA_A_end;
indexer.put('A', (Integer) 1);
indexer.put('C', (Integer) 2);
indexer.put('G', (Integer) 3);
indexer.put('T', (Integer) 4);
indexer.put('D', (Integer) 0); // D for deletion
out.print("Reads:\n");
return 0;
}
public Integer map(char[] ref, SAMRecord read) {
int readstart = read.getAlignmentStart();
int readstop = read.getAlignmentEnd();
if(readstart <= HLA_A_end && readstop >= HLA_A_start){
String s = formatter.FormatRead(read.getCigarString(),read.getReadString());
String name = read.getReadName();
out.printf("%s\t%s\t0\t0\tM",name,name);
for (int i = start; i <= end; i++){
if (i - readstart < s.length() && i - readstart >= 0){
c = s.charAt(i-readstart);
I = (Integer) indexer.get(c);
out.printf("\t%s %s",I,I);
}else{
out.print("\t0 0");
}
}
out.printf("\n");
}
return 1;
}
public Integer reduce(Integer value, Integer sum) {
return value + sum;
}
public void onTraversalDone(Integer value) {
out.print("\nSNP names:\n");
for (int pos = start; pos <= end; pos++){
SNPname = "M CHR6_POS" + String.valueOf(pos);
SNPnames[pos-start]=SNPname;
out.printf("%s\n",SNPname);
}
}
}