public static void writeVariantFileMetadata(VariantFileMetadata fileMetadata, Path outputFileJsonFile) { ObjectMapper jsonObjectMapper = new ObjectMapper(); jsonObjectMapper.addMixIn(GenericRecord.class, GenericRecordAvroJsonMixin.class); ObjectWriter variantSourceObjectWriter = jsonObjectMapper.writerFor(org.opencb.biodata.models.variant.metadata.VariantFileMetadata.class); try { String sourceJsonString = variantSourceObjectWriter.writeValueAsString(fileMetadata.getImpl()); StringDataWriter.write(outputFileJsonFile, Collections.singletonList(sourceJsonString)); } catch (JsonProcessingException e) { throw new UncheckedIOException(e); } }
public AbstractVariantReader(Path metadataPath, VariantStudyMetadata metadata) { this.metadataPath = metadataPath; this.samplesPositions = null; if (metadata.getFiles().isEmpty()) { fileMetadata = new VariantFileMetadata("", ""); metadata.getFiles().add(fileMetadata.getImpl()); } else { fileMetadata = new VariantFileMetadata(metadata.getFiles().get(0)); } }
public VariantStudyMetadata toVariantStudyMetadata(String studyId) { return VariantStudyMetadata.newBuilder() .setId(studyId) .setFiles(Collections.singletonList(getImpl())) .setSampleSetType(SampleSetType.UNKNOWN) .build(); }
private void update(String studyId, VariantFileMetadata metadata) throws IOException { Objects.requireNonNull(metadata); ensureTableExists(); Integer fileId = Integer.valueOf(metadata.getId()); checkFileId(fileId); Put put = new Put(getVariantFileMetadataRowKey(Integer.valueOf(studyId), fileId)); put.addColumn(this.family, getValueColumn(), metadata.getImpl().toString().getBytes()); put.addColumn(this.family, getTypeColumn(), Type.VARIANT_FILE_METADATA.bytes()); hBaseManager.act(tableName, table -> { table.put(put); }); }
protected VariantMetadata makeVariantMetadata(List<StudyConfiguration> studyConfigurations, ProjectMetadata projectMetadata, Map<Integer, List<Integer>> returnedSamples, Map<Integer, List<Integer>> returnedFiles, QueryOptions queryOptions) throws StorageEngineException { VariantMetadata metadata = new VariantMetadataConverter() .toVariantMetadata(studyConfigurations, projectMetadata, returnedSamples, returnedFiles); Map<String, StudyConfiguration> studyConfigurationMap = studyConfigurations.stream() .collect(Collectors.toMap(StudyConfiguration::getStudyName, Function.identity())); for (VariantStudyMetadata studyMetadata : metadata.getStudies()) { StudyConfiguration studyConfiguration = studyConfigurationMap.get(studyMetadata.getId()); List<Integer> fileIds = studyMetadata.getFiles().stream() .map(fileMetadata -> { Integer fileId = studyConfiguration.getFileIds().get(fileMetadata.getId()); if (fileId == null) { fileId = studyConfiguration.getFileIds().get(fileMetadata.getPath()); } return fileId; }).collect(Collectors.toList()); if (fileIds != null && !fileIds.isEmpty()) { Query query = new Query() .append(VariantFileMetadataDBAdaptor.VariantFileMetadataQueryParam.STUDY_ID.key(), studyConfiguration.getStudyId()) .append(VariantFileMetadataDBAdaptor.VariantFileMetadataQueryParam.FILE_ID.key(), fileIds); scm.variantFileMetadataIterator(query, new QueryOptions()).forEachRemaining(fileMetadata -> { studyMetadata.getFiles().removeIf(file -> file.getId().equals(fileMetadata.getId())); studyMetadata.getFiles().add(fileMetadata.getImpl()); }); } } return metadata; }