Added a function to get families only for a given list of samples.

This commit is contained in:
Laurent Francioli 2011-11-28 17:10:33 +01:00
parent b1dd632d5d
commit 5c2595701c
1 changed files with 18 additions and 6 deletions

View File

@ -142,17 +142,29 @@ public class SampleDB {
* @return * @return
*/ */
public final Map<String, Set<Sample>> getFamilies() { public final Map<String, Set<Sample>> getFamilies() {
return getFamilies(null);
}
/**
* Returns a map from family ID -> set of family members for all samples in sampleIds with
* non-null family ids
*
* @param sampleIds - all samples to include. If null is passed then all samples are returned.
* @return
*/
public final Map<String, Set<Sample>> getFamilies(Collection<String> sampleIds) {
final Map<String, Set<Sample>> families = new TreeMap<String, Set<Sample>>(); final Map<String, Set<Sample>> families = new TreeMap<String, Set<Sample>>();
for ( final Sample sample : samples.values() ) { for ( final Sample sample : samples.values() ) {
final String famID = sample.getFamilyID(); if(sampleIds != null && sampleIds.contains(sample.getID())){
if ( famID != null ) { final String famID = sample.getFamilyID();
if ( ! families.containsKey(famID) ) if ( famID != null ) {
families.put(famID, new TreeSet<Sample>()); if ( ! families.containsKey(famID) )
families.get(famID).add(sample); families.put(famID, new TreeSet<Sample>());
families.get(famID).add(sample);
}
} }
} }
return families; return families;
} }