Skip to content
Snippets Groups Projects
Commit ec321924 authored by tjc's avatar tjc
Browse files

use VCFRecord getters/setters

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@15181 ee4ac58c-ac51-4696-9907-e4b3aa274f04
parent ecf815cc
Branches
Tags
No related merge requests found
......@@ -26,6 +26,7 @@ package uk.ac.sanger.artemis.components.variant;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.Writer;
import java.util.List;
import java.util.Vector;
import java.util.regex.Pattern;
......@@ -66,21 +67,21 @@ class BCFReader extends AbstractVCFReader
is.seek(off);
}
protected VCFRecord next(int bid, int beg, int end) throws IOException
protected VCFRecord next(int beg, int end) throws IOException
{
try
{
VCFRecord bcfRecord = readVCFRecord();
if(bcfRecord.pos >= beg && bcfRecord.pos <= end)
if(bcfRecord.getPos() >= beg && bcfRecord.getPos() <= end)
return bcfRecord;
else if(bcfRecord.pos < beg)
else if(bcfRecord.getPos() < beg)
{
while( (bcfRecord = readVCFRecord()).pos <= beg )
while( (bcfRecord = readVCFRecord()).getPos() <= beg )
{
if(bcfRecord.pos >= beg && bcfRecord.pos <= end)
if(bcfRecord.getPos() >= beg && bcfRecord.getPos() <= end)
return bcfRecord;
}
if(bcfRecord.pos >= beg && bcfRecord.pos <= end)
if(bcfRecord.getPos() >= beg && bcfRecord.getPos() <= end)
return bcfRecord;
}
}
......@@ -173,9 +174,9 @@ class BCFReader extends AbstractVCFReader
private VCFRecord readVCFRecord() throws IOException
{
VCFRecord bcfRecord = new VCFRecord();
bcfRecord.chrom = seqNames[readInt(is)];
bcfRecord.pos = readInt(is)+1;
bcfRecord.quality = readFloat(is);
bcfRecord.setChrom( seqNames[readInt(is)] );
bcfRecord.setPos ( readInt(is)+1 );
bcfRecord.setQuality( readFloat(is) );
int slen = readInt(is);
byte[] str = new byte[slen];
......@@ -183,16 +184,16 @@ class BCFReader extends AbstractVCFReader
getParts(str, bcfRecord);
if(formatPattern.matcher(bcfRecord.format).matches())
if(formatPattern.matcher(bcfRecord.getFormat()).matches())
{
int n_alleles = bcfRecord.getNumAlleles();
int nc = (int) (n_alleles * ((float)(((float)n_alleles+1.f)/2.f)));
if(bcfRecord.alt.equals("."))
if(bcfRecord.getAlt().equals("."))
nc = 1;
String fmts[] = bcfRecord.format.split(":");
bcfRecord.data = new String[nsamples][fmts.length];
String fmts[] = bcfRecord.getFormat().split(":");
bcfRecord.setData( new String[nsamples][fmts.length] );
for(int j=0; j<nsamples; j++)
{
......@@ -212,7 +213,7 @@ class BCFReader extends AbstractVCFReader
else
value = "";
bcfRecord.data[j][k] = value;
bcfRecord.getData()[j][k] = value;
}
}
......@@ -255,12 +256,12 @@ class BCFReader extends AbstractVCFReader
String parts[] = buff.toString().replace(" ", " ").split(" ");
bcfRecord.ID = parts[0];
bcfRecord.ref = parts[1];
bcfRecord.alt = parts[2];
bcfRecord.filter = parts[3];
bcfRecord.info = parts[4];
bcfRecord.format = parts[5];
bcfRecord.setID( parts[0] );
bcfRecord.setRef( parts[1] );
bcfRecord.setAlt( parts[2] );
bcfRecord.setFilter( parts[3] );
bcfRecord.setInfo( parts[4] );
bcfRecord.setFormat( parts[5] );
}
/**
......@@ -325,6 +326,20 @@ class BCFReader extends AbstractVCFReader
return (int)(b & 0xFF);
}
protected static void writeVCF(Writer writer, String vcfFileName) throws IOException
{
BCFReader reader = new BCFReader(new File(vcfFileName));
writer.write( reader.headerToString()+"\n" );
int sbeg = 0;
int send = Integer.MAX_VALUE;
VCFRecord record;
while( (record = reader.next(sbeg, send)) != null)
writer.write(record.toString()+"\n");
writer.close();
}
protected List<BCFIndex> loadIndex() throws IOException
{
BlockCompressedInputStream is = new BlockCompressedInputStream(indexFileStream);
......@@ -402,7 +417,7 @@ class BCFReader extends AbstractVCFReader
System.out.println(reader.headerToString());
VCFRecord bcfRecord;
while( (bcfRecord = reader.next(bid, sbeg, send)) != null )
while( (bcfRecord = reader.next(sbeg, send)) != null )
System.out.println(bcfRecord.toString());
reader.close();
......
......@@ -533,7 +533,7 @@ public class VCFview extends JPanel
{
VCFview.this.setCursor(new Cursor(Cursor.WAIT_CURSOR));
IOUtils.export(entryGroup, vcfFiles, VCFview.this);
VCFview.this.setCursor(new Cursor(Cursor.WAIT_CURSOR));
VCFview.this.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
});
popup.add(exportVCF);
......@@ -776,9 +776,12 @@ public class VCFview extends JPanel
bcfReader.seek(off);
VCFRecord bcfRecord;
while( (bcfRecord = bcfReader.next(bid, sbeg, send)) != null )
while( (bcfRecord = bcfReader.next(sbeg, send)) != null )
{
if(bcfRecord.getChrom().equals(chr))
drawVariantCall(g, bcfRecord, start, i, pixPerBase, features);
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
......@@ -991,30 +994,30 @@ public class VCFview extends JPanel
//String parts[] = line.split("\\t");
//String parts[] = tabPattern.split(line, 0);
int basePosition = record.pos + getSequenceOffset(record.chrom);
int basePosition = record.getPos() + getSequenceOffset(record.getChrom());
if( !showVariant(record.ref, record.alt, features, basePosition, record.quality) )
if( !showVariant(record.getRef(), record.getAlt(), features, basePosition, record.getQuality()) )
return;
int pos[] = getScreenPosition(basePosition, pixPerBase, start, index);
if(isDeletion(record.ref, record.alt))
if(isDeletion(record.getRef(), record.getAlt()))
g.setColor(Color.gray);
else if(isInsertion(record.ref, record.alt))
else if(isInsertion(record.getRef(), record.getAlt()))
g.setColor(Color.yellow);
else if(record.alt.equals("C") && record.ref.length() == 1)
else if(record.getAlt().equals("C") && record.getRef().length() == 1)
g.setColor(Color.red);
else if(record.alt.equals("A") && record.ref.length() == 1)
else if(record.getAlt().equals("A") && record.getRef().length() == 1)
g.setColor(Color.green);
else if(record.alt.equals("G") && record.ref.length() == 1)
else if(record.getAlt().equals("G") && record.getRef().length() == 1)
g.setColor(Color.blue);
else if(record.alt.equals("T") && record.ref.length() == 1)
else if(record.getAlt().equals("T") && record.getRef().length() == 1)
g.setColor(Color.black);
else if(record.alt.equals(".") && record.ref.length() == 1)
else if(record.getAlt().equals(".") && record.getRef().length() == 1)
g.setColor(Color.magenta);
else
{
Matcher m = multiAllelePattern.matcher(record.alt);
Matcher m = multiAllelePattern.matcher(record.getAlt());
if(m.matches())
{
g.setColor(Color.orange);
......@@ -1191,9 +1194,12 @@ public class VCFview extends JPanel
{
bcfReader.seek(off);
VCFRecord bcfRecord;
while( (bcfRecord = bcfReader.next(bid, sbeg, send)) != null )
while( (bcfRecord = bcfReader.next(sbeg, send)) != null )
{
if(bcfRecord.getChrom().equals(chr))
isMouseOver(mousePoint, bcfRecord, features, i, start, pixPerBase);
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
......@@ -1228,9 +1234,9 @@ public class VCFview extends JPanel
int i,
int start, float pixPerBase)
{
int basePosition = record.pos + getSequenceOffset(record.chrom);
int basePosition = record.getPos() + getSequenceOffset(record.getChrom());
if( !showVariant(record.ref, record.alt, features, basePosition, record.quality) )
if( !showVariant(record.getRef(), record.getAlt(), features, basePosition, record.getQuality()) )
return;
int pos[] = getScreenPosition(basePosition, pixPerBase, start, i);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment