package org.opencb.opencga.storage.core.manager.variant.operations;
import org.junit.Test;
import org.opencb.biodata.models.variant.VariantSource;
import org.opencb.commons.datastore.core.Query;
import org.opencb.commons.datastore.core.QueryOptions;
import org.opencb.opencga.catalog.models.Sample;
import org.opencb.opencga.storage.core.manager.variant.AbstractVariantStorageOperationTest;
import org.opencb.opencga.storage.core.variant.VariantStorageEngine;
import org.opencb.opencga.storage.core.variant.adaptors.VariantDBAdaptor;
import java.net.URI;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import static org.opencb.opencga.storage.core.variant.io.VariantWriterFactory.VariantOutputFormat;
/**
* Created on 12/12/16.
*
* @author Jacobo Coll <jacobo167@gmail.com>
*/
public class VariantImportTest extends AbstractVariantStorageOperationTest {
@Override
protected VariantSource.Aggregation getAggregation() {
return VariantSource.Aggregation.NONE;
}
@Test
public void testExportImport() throws Exception {
indexFile(getSmallFile(), new QueryOptions(VariantStorageEngine.Options.CALCULATE_STATS.key(), true), outputId);
String export = Paths.get(opencga.createTmpOutdir(studyId, "_EXPORT_", sessionId)).resolve("export.avro.gz").toString();
variantManager.exportData(export, VariantOutputFormat.AVRO_GZ, String.valueOf(studyId), sessionId);
clearDB(dbName);
variantManager.importData(URI.create(export), String.valueOf(studyId2), sessionId);
}
@Test
public void testExportSomeSamplesImport() throws Exception {
indexFile(getSmallFile(), new QueryOptions(VariantStorageEngine.Options.CALCULATE_STATS.key(), true), outputId);
String export = Paths.get(opencga.createTmpOutdir(studyId, "_EXPORT_", sessionId)).resolve("export.avro").toString();
List<Sample> samples = catalogManager.getAllSamples(studyId, new Query(), new QueryOptions(), sessionId).getResult();
List<String> someSamples = samples.stream().limit(samples.size() / 2).map(Sample::getName).collect(Collectors.toList());
Query query = new Query(VariantDBAdaptor.VariantQueryParams.RETURNED_STUDIES.key(), studyId)
.append(VariantDBAdaptor.VariantQueryParams.RETURNED_SAMPLES.key(), someSamples);
QueryOptions queryOptions = new QueryOptions();
variantManager.exportData(export, VariantOutputFormat.AVRO, query, queryOptions, sessionId);
clearDB(dbName);
variantManager.importData(URI.create(export), String.valueOf(studyId2), sessionId);
}
}