/** * 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); }
@Override public List<VS> apply(List<VariantFileMetadata> variantFileMetadata) { Set<VS> gaVariantSets = new LinkedHashSet<>(); for (VariantFileMetadata fileMetadata : variantFileMetadata) { List<Object> metadata = new ArrayList<>(); for (VariantFileHeaderComplexLine line : fileMetadata.getHeader().getComplexLines()) { Map<String, List<String>> info = line.getGenericFields().entrySet().stream() .collect(Collectors.toMap(Map.Entry::getKey, value -> Arrays.asList(value.getValue().split(",")))); metadata.add(factory.newVariantSetMetadata(line.getKey(), null, line.getId(), line.getType(), line.getNumber(), line.getDescription(), info)); } fileMetadata.getHeader().getSimpleLines().forEach(line -> metadata.add(factory.newVariantSetMetadata(line.getKey(), line.getValue(), null, null, null, null, Collections.emptyMap()))); @SuppressWarnings("unchecked") VS variantSet = (VS) factory.newVariantSet(fileMetadata.getId(), fileMetadata.getPath(), "", "", (List) metadata); gaVariantSets.add(variantSet); } return new ArrayList<>(gaVariantSets); }
@Override public boolean pre() { if (metadataPath != null) { Files.exists(metadataPath); try (InputStream inputStream = FileUtils.newInputStream(metadataPath)) { // Read global JSON file and copy its info into the already available VariantSource object VariantFileMetadata readMetadata = VariantReaderUtils.readVariantFileMetadataFromJson(inputStream); fileMetadata.setId(readMetadata.getId()); fileMetadata.setPath(readMetadata.getPath()); fileMetadata.setHeader(readMetadata.getHeader()); fileMetadata.setSamplesPosition(readMetadata.getSamplesPosition()); fileMetadata.setStats(readMetadata.getStats()); } catch (IOException ex) { throw new UncheckedIOException(ex); } } if (fileMetadata != null) { Map<String, Integer> samplesPosition = fileMetadata.getSamplesPosition(); this.samplesPosition = new LinkedHashMap<>(samplesPosition.size()); String[] samples = new String[samplesPosition.size()]; for (Map.Entry<String, Integer> entry : samplesPosition.entrySet()) { samples[entry.getValue()] = entry.getKey(); } for (int i = 0; i < samples.length; i++) { this.samplesPosition.put(samples[i], i); } } return true; }
@Before public void setUp() throws Exception { studyConfiguration = new StudyConfiguration(1, "study"); studyConfiguration.getSampleIds().put("s1", 1); studyConfiguration.getSampleIds().put("s2", 2); studyConfiguration.getSampleIds().put("s3", 3); studyConfiguration.getSampleIds().put("s4", 4); studyConfiguration.getSampleIds().put("s5", 5); studyConfiguration.getSampleIds().put("s6", 6); studyConfiguration.getSampleIds().put("s7", 7); studyConfiguration.getIndexedFiles().add(10); studyConfiguration.getFileIds().put("file1.vcf", 10); studyConfiguration.getSamplesInFiles().put(10, new LinkedHashSet<>(Arrays.asList(1, 2, 3, 4))); studyConfiguration.getIndexedFiles().add(11); studyConfiguration.getFileIds().put("file2.vcf", 11); studyConfiguration.getSamplesInFiles().put(11, new LinkedHashSet<>(Arrays.asList(4, 5, 6))); studyConfiguration.getCalculatedStats().add(20); studyConfiguration.getCohortIds().put("ALL", 20); studyConfiguration.getCohorts().put(20, new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 6))); URI uri = VariantStorageBaseTest.getResourceUri("platinum/1K.end.platinum-genomes-vcf-NA12877_S1.genome.vcf.gz"); VariantFileMetadata fileMetadata = VariantReaderUtils.readVariantFileMetadata(Paths.get(uri), null); studyConfiguration.addVariantFileHeader(fileMetadata.getHeader(), null); variantMetadataConverter = new VariantMetadataConverter(); objectWriter = new ObjectMapper() .configure(MapperFeature.REQUIRE_SETTERS_FOR_GETTERS, true) .setSerializationInclusion(JsonInclude.Include.NON_EMPTY) .writerWithDefaultPrettyPrinter(); projectMetadata = new ProjectMetadata("hsapiens", "37", 1); }
normalizer.configure(fileMetadata.getHeader()); normalizer.setGenerateReferenceBlocks(generateReferenceBlocks);
normalizer.configure(fileMetadata.getHeader());
VariantFileHeader variantMetadata = metadata.getHeader(); String filePath = metadata.getPath(); String fileName = Paths.get(filePath).getFileName().toString();
/** * 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; }