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

fix for multiple samples

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@15750 ee4ac58c-ac51-4696-9907-e4b3aa274f04
parent 9c108ccb
No related branches found
No related tags found
No related merge requests found
...@@ -218,30 +218,36 @@ class BCFReader extends AbstractVCFReader ...@@ -218,30 +218,36 @@ class BCFReader extends AbstractVCFReader
String fmts[] = VCFRecord.COLON_PATTERN.split( bcfRecord.getFormat() ); String fmts[] = VCFRecord.COLON_PATTERN.split( bcfRecord.getFormat() );
bcfRecord.setData( new String[nsamples][fmts.length] ); bcfRecord.setData( new String[nsamples][fmts.length] );
for(int j=0; j<nsamples; j++) for(int i=0; i<fmts.length; i++)
{ {
for(int k=0; k<fmts.length; k++) int nb = getByteSize(fmts[i],nc);
str = new byte[nb];
is.read(str);
if(fmts[i].equals("GT"))
{ {
int nb = getByteSize(fmts[k],nc); for(int j=0; j<nsamples; j++)
str = new byte[nb]; bcfRecord.getData()[j][i] = getGTString(str[j]);
is.read(str);
final String value;
if(fmts[k].equals("GT"))
value = getGTString(str[0]);
else if(fmts[k].equals("PL"))
value = getPLString(str, nc);
else if(fmts[k].equals("DP")||fmts[k].equals("SP")||fmts[k].equals("GQ"))
value = Integer.toString(byteToInt(str[0]));
else
value = new String(str);
bcfRecord.getData()[j][k] = value;
} }
} else if(fmts[i].equals("PL"))
{
} String pls[] = getPLString(str, nsamples);
for(int j=0; j<nsamples; j++)
bcfRecord.getData()[j][i] = pls[j];
}
else if(fmts[i].equals("DP")||fmts[i].equals("SP")||fmts[i].equals("GQ"))
{
for(int j=0; j<nsamples; j++)
bcfRecord.getData()[j][i] = Integer.toString(byteToInt(str[j]));
}
else
{
bcfRecord.getData()[0][i] = new String(str);
}
}
}
return bcfRecord; return bcfRecord;
} }
...@@ -323,18 +329,32 @@ class BCFReader extends AbstractVCFReader ...@@ -323,18 +329,32 @@ class BCFReader extends AbstractVCFReader
else // misc else // misc
return 4*nsamples; // uint32_t+char* return 4*nsamples; // uint32_t+char*
} }
/**
private String getPLString(byte[] b, int nc) * Phred scaled likelihood of data.
* @param b
* @param nsamples
* @return
*/
private String[] getPLString(byte[] b, int nsamples)
{ {
StringBuffer buff = new StringBuffer(); String pls[] = new String[nsamples];
for(int i=0;i<b.length; i++) int nb = b.length / nsamples;
int cnt = 0;
for(int i=0; i<nsamples; i++)
{ {
buff.append(byteToInt(b[i])); StringBuffer buff = new StringBuffer();
if(i<b.length-1) for(int j=0;j<nb; j++)
buff.append(","); {
buff.append(byteToInt(b[cnt]));
if(j<nb-1)
buff.append(",");
cnt++;
}
pls[i] = buff.toString();
} }
return buff.toString(); return pls;
} }
/** /**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment