private synchronized void updateSamplesPosition() { if (samplesPosition == null) { List<String> samples = getSampleIds(); if (samples == null) { samplesPosition = null; } else { LinkedHashMap<String, Integer> newSamplesPosition = getSamplesPositionMap(samples); samplesPosition = newSamplesPosition; } } }
public void registerFileSamples(StudyConfiguration studyConfiguration, int fileId, VariantFileMetadata fileMetadata, ObjectMap options) throws StorageEngineException { //Assign new sampleIds for (String sample : fileMetadata.getSampleIds()) { registerSample(studyConfiguration, sample); } if (studyConfiguration.getSamplesInFiles().containsKey(fileId)) { LinkedHashSet<Integer> sampleIds = studyConfiguration.getSamplesInFiles().get(fileId); List<String> missingSamples = new LinkedList<>(); for (String sample : fileMetadata.getSampleIds()) { if (!sampleIds.contains(studyConfiguration.getSampleIds().get(sample))) { missingSamples.add(sample); } } if (!missingSamples.isEmpty()) { throw new StorageEngineException("Samples " + missingSamples.toString() + " were not in file " + fileId); } if (sampleIds.size() != fileMetadata.getSampleIds().size()) { throw new StorageEngineException("Incorrect number of samples in file " + fileId); } } else { LinkedHashSet<Integer> sampleIdsInFile = new LinkedHashSet<>(fileMetadata.getSampleIds().size()); for (String sample : fileMetadata.getSampleIds()) { sampleIdsInFile.add(studyConfiguration.getSampleIds().get(sample)); } studyConfiguration.getSamplesInFiles().put(fileId, sampleIdsInFile); } }
@Override public List<CS> convert(VariantFileMetadata fileMetadata) { return convert(fileMetadata.getId(), fileMetadata.getSampleIds()); }
/** * Calculates VariantSetStats for a file. * @param studyId StudyId * @param fileMetadata VariantFileMetadata */ public VariantSetStatsCalculator(String studyId, VariantFileMetadata fileMetadata) { this.studyId = studyId; this.metadata = fileMetadata.toVariantStudyMetadata(studyId); files = Collections.singleton(fileMetadata.getId()); samples = new HashSet<>(fileMetadata.getSampleIds()); header = fileMetadata.getHeader(); stats = new VariantSetStats(); fileMetadata.setStats(stats); }
public VariantTransformTask(VCFHeader header, VCFHeaderVersion version, String studyId, VariantFileMetadata fileMetadata, Path outputFileJsonFile, VariantSetStatsCalculator variantStatsTask, boolean includeSrc, boolean generateReferenceBlocks) { this.variantStatsTask = variantStatsTask; this.factory = null; this.fileMetadata = fileMetadata; this.metadata = fileMetadata.toVariantStudyMetadata(studyId); this.outputFileJsonFile = outputFileJsonFile; this.includeSrc = includeSrc; this.vcfCodec = new FullVcfCodec(); this.vcfCodec.setVCFHeader(header, version); this.converter = new VariantContextToVariantConverter(studyId, fileMetadata.getId(), fileMetadata.getSampleIds()); this.normalizer = new VariantNormalizer(true, true, false); normalizer.setGenerateReferenceBlocks(generateReferenceBlocks); }
sortedSampleNames = ((VariantFileMetadata) variantSourceObj).getSampleIds(); } else if (variantSourceObj instanceof Map) { sortedSampleNames = new ObjectMap((Map) variantSourceObj).getAsStringList("sampleIds"); sortedSampleNames = metadata.getSampleIds(); } else { sortedSampleNames = new LinkedList<>();
/** * Reads the VariantSource from a Variant file given an initialized VariantReader * * @param reader Initialized variant reader * @param metadata Optional metadata to fill up * @return The read variant metadata * @throws IOException if an I/O error occurs */ public static VariantFileMetadata readVariantFileMetadata(VariantReader reader, VariantFileMetadata metadata) throws IOException { Objects.requireNonNull(reader); if (metadata == null) { metadata = new VariantFileMetadata("", ""); } try { reader.open(); reader.pre(); metadata.setHeader(reader.getVariantFileMetadata().getHeader()); metadata.setSampleIds(reader.getVariantFileMetadata().getSampleIds()); metadata.setStats(reader.getVariantFileMetadata().getStats()); reader.post(); } finally { reader.close(); } return metadata; }
protected List<Variant> readVariants(StudyConfiguration sc, String fileName, Integer fileId, String sampleSufix) { FullVcfCodec codec = new FullVcfCodec(); LineIterator lineIterator = codec.makeSourceFromStream(getClass().getResourceAsStream(fileName)); VCFHeader header = (VCFHeader) codec.readActualHeader(lineIterator); VariantNormalizer normalizer = new VariantNormalizer().configure(header); VariantFileMetadata file = new VariantFileMetadata(fileId.toString(), "file"); VariantStudyMetadata studyMetadata = file.toVariantStudyMetadata(String.valueOf(sc.getStudyId())); VariantVcfHtsjdkReader reader = new VariantVcfHtsjdkReader(getClass().getResourceAsStream(fileName), studyMetadata, normalizer); reader.open(); reader.pre(); List<Variant> variants = reader.read(1000000); reader.post(); reader.close(); sc.getAttributes().append(DEFAULT_GENOTYPE.key(), defaultGenotype); LinkedHashSet<Integer> sampleIds = new LinkedHashSet<>(); LinkedHashMap<String, Integer> samplesPosition = new LinkedHashMap<>(); for (String sample : file.getSampleIds()) { sample = sample + sampleSufix; sc.getSampleIds().putIfAbsent(sample, sc.getSampleIds().size() + 1); sampleIds.add(sc.getSampleIds().get(sample)); samplesPosition.put(sample, samplesPosition.size()); } sc.getFileIds().put(getFileName(fileId), fileId); sc.getSamplesInFiles().put(fileId, sampleIds); for (Variant variant : variants) { variant.getStudies().get(0).setSortedSamplesPosition(samplesPosition); } return variants; }