Allow RODs to specify that incomplete records are okay (i.e. that they allow optional fields)

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@1433 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
ebanks 2009-08-18 15:26:10 +00:00
parent 9b1d7921e8
commit 53153fcd79
2 changed files with 15 additions and 1 deletions

View File

@ -63,6 +63,10 @@ public class SimpleIndelROD extends TabularROD implements Genotype, AllelicVaria
return getFWDAlleles().get(0).length();
}
public boolean allowIncompleteRecords() {
return true;
}
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(getLocation().getContig() + "\t" + getLocation().getStart() + "\t");

View File

@ -163,6 +163,16 @@ public class TabularROD extends BasicReferenceOrderedDatum implements Map<String
return readHeader(source);
}
/**
* By default, all records (i.e. RODs) must contain the same number of fields as specified
* by the header. Subclasses should override this method to disable this requirement.
*
* @return true if incomplete records are allowed; false otherwise
*/
public boolean allowIncompleteRecords() {
return false;
}
public static ArrayList<String> readHeader(final File source) throws FileNotFoundException {
ArrayList<String> header = null;
int linesLookedAt = 0;
@ -308,7 +318,7 @@ public class TabularROD extends BasicReferenceOrderedDatum implements Map<String
if ( parts.length == 0 || COMMENT_PATTERN.matcher(parts[0]).matches() || HEADER_PATTERN.matcher(parts[0]).matches() )
return false;
if (header.size() != parts.length) {
if ( !allowIncompleteRecords() && header.size() != parts.length) {
throw new IOException(String.format("Header length %d not equal to Tabular parts length %d", header.size(), parts.length));
}