/** * 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 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; }
fileMetadata.setStats(variantSetStats);
/** * 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; }
@Override public QueryResult updateStats(VariantSourceStats variantSourceStats, StudyConfiguration studyConfiguration, QueryOptions queryOptions) { MongoDBCollection coll = db.getCollection(collectionName); VariantFileMetadata source = new VariantFileMetadata("", ""); source.setStats(variantSourceStats.getFileStats()); Document globalStats = variantFileMetadataConverter.convertToStorageType("", source).get("stats", Document.class); Bson query = parseQuery(new Query(VariantFileMetadataQueryParam.STUDY_ID.key(), variantSourceStats.getStudyId()) .append(VariantFileMetadataQueryParam.FILE_ID.key(), variantSourceStats.getFileId())); Bson update = Updates.set("stats", globalStats); return coll.update(query, update, null); }