AWS HealthOmics Las tiendas de variantes y anotaciones dejarán de estar abiertas a nuevos clientes a partir del 7 de noviembre de 2025. Si quieres usar tiendas de variantes o tiendas de anotaciones, regístrate antes de esa fecha. Los clientes actuales pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulta el cambio de disponibilidad en la tienda de AWS HealthOmics variantes y en la tienda de anotaciones.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
AWS HealthOmics cambio en la disponibilidad del almacén de variantes y del almacén de anotaciones
Tras pensarlo detenidamente, decidimos cerrar las tiendas de AWS HealthOmics variantes y las tiendas de anotaciones a los nuevos clientes a partir del 7 de noviembre de 2025. Si quieres usar tiendas de variantes y tiendas de anotaciones, regístrate antes de esa fecha. Los clientes actuales pueden seguir utilizando el servicio con normalidad.
En la siguiente sección, se describen las opciones de migración para ayudarte a migrar tus tiendas de variantes y tiendas de análisis a nuevas soluciones. Si tienes alguna pregunta o duda, crea un caso de soporte en support.console.aws.amazon.com
Temas
Descripción general de las opciones de migración
Las siguientes opciones de migración ofrecen una alternativa al uso de almacenes de variantes y almacenes de anotaciones:
-
Utilice la implementación HealthOmics de referencia de la lógica ETL proporcionada.
Utilice los depósitos de tablas de S3 como almacenamiento y siga utilizando los servicios de AWS análisis existentes.
-
Cree una solución mediante una combinación de los AWS servicios existentes.
Para ETL, puedes escribir trabajos ETL de Glue personalizados o usar código HAIL o GLOW de código abierto en EMR para transformar los datos de variantes.
Utilice los cubos de tablas de S3 para almacenar y siga utilizando los servicios de análisis existentes AWS
-
Seleccione un AWS socio
que ofrezca una variante y una alternativa al almacén de anotaciones.
Opciones de migración para la lógica ETL
Tenga en cuenta las siguientes opciones de migración para la lógica de ETL:
-
HealthOmics proporciona la lógica ETL del almacén de variantes actual como HealthOmics flujo de trabajo de referencia. Puede utilizar el motor de este flujo de trabajo para impulsar exactamente el mismo proceso de ETL de datos de variantes que el almacén de variantes, pero con un control total sobre la lógica de ETL.
Este flujo de trabajo de referencia está disponible previa solicitud. Para solicitar acceso, crea un caso de soporte en support.console.aws.amazon.com
. -
Para transformar los datos de variantes, puedes escribir trabajos ETL de Glue personalizados o usar código HAIL o GLOW de código abierto en EMR.
Opciones de migración para el almacenamiento
Como reemplazo del almacén de datos hospedado en un servicio, puede utilizar los cubos de tablas de Amazon S3 para definir un esquema de tablas personalizado. Para obtener más información sobre los cubos de tablas, consulte los cubos de tablas en la Guía del usuario de Amazon S3.
Puede usar cubos de tablas para tablas Iceberg totalmente administradas en Amazon S3.
Puede plantear un caso de soporte
Una vez que los datos se hayan rellenado en el depósito de tablas de Amazon S3, puede eliminar los almacenes de variantes y los almacenes de anotaciones. Para obtener más información, consulta Eliminar almacenes HealthOmics de análisis.
Análisis
Para el análisis de datos, siga utilizando servicios de AWS análisis, como Amazon Athena, Amazon EMR, Amazon Redshift o Amazon Quick Suite.
AWS Socios
Puede trabajar con un AWS socio
Ejemplos
Los siguientes ejemplos muestran cómo crear tablas adecuadas para almacenar datos de VCF y GVCF.
Athena DDL
Puede usar el siguiente ejemplo de DDL en Athena para crear una tabla adecuada para almacenar datos de VCF y GVCF en una sola tabla. Este ejemplo no es el equivalente exacto de la estructura de almacenamiento de variantes, pero funciona bien para un caso de uso genérico.
Crea tus propios valores para DATABASE_NAME y TABLE_NAME al crear la tabla.
CREATE TABLE <DATABASE_NAME>. <TABLE_NAME> ( sample_name string, variant_name string COMMENT 'The ID field in VCF files, '.' indicates no name', chrom string, pos bigint, ref string, alt array <string>, qual double, filter string, genotype string, info map <string, string>, attributes map <string, string>, is_reference_block boolean COMMENT 'Used in GVCF for non-variant sites') PARTITIONED BY (bucket(128, sample_name), chrom) LOCATION '{URL}/' TBLPROPERTIES ( 'table_type'='iceberg', 'write_compression'='zstd' );
Crear tablas con Python (sin Athena)
El siguiente ejemplo de código de Python muestra cómo crear las tablas sin usar Athena.
import boto3 from pyiceberg.catalog import Catalog, load_catalog from pyiceberg.schema import Schema from pyiceberg.table import Table from pyiceberg.table.sorting import SortOrder, SortField, SortDirection, NullOrder from pyiceberg.partitioning import PartitionSpec, PartitionField from pyiceberg.transforms import IdentityTransform, BucketTransform from pyiceberg.types import ( NestedField, StringType, LongType, DoubleType, MapType, BooleanType, ListType ) def load_s3_tables_catalog(bucket_arn: str) -> Catalog: session = boto3.session.Session() region = session.region_name or 'us-east-1' catalog_config = { "type": "rest", "warehouse": bucket_arn, "uri": f"https://s3tables.{region}.amazonaws.com/iceberg", "rest.sigv4-enabled": "true", "rest.signing-name": "s3tables", "rest.signing-region": region } return load_catalog("s3tables", **catalog_config) def create_namespace(catalog: Catalog, namespace: str) -> None: try: catalog.create_namespace(namespace) print(f"Created namespace: {namespace}") except Exception as e: if "already exists" in str(e): print(f"Namespace {namespace} already exists.") else: raise e def create_table(catalog: Catalog, namespace: str, table_name: str, schema: Schema, partition_spec: PartitionSpec = None, sort_order: SortOrder = None) -> Table: if catalog.table_exists(f"{namespace}.{table_name}"): print(f"Table {namespace}.{table_name} already exists.") return catalog.load_table(f"{namespace}.{table_name}") create_table_args = { "identifier": f"{namespace}.{table_name}", "schema": schema, "properties": {"format-version": "2"} } if partition_spec is not None: create_table_args["partition_spec"] = partition_spec if sort_order is not None: create_table_args["sort_order"] = sort_order table = catalog.create_table(**create_table_args) print(f"Created table: {namespace}.{table_name}") return table def main(bucket_arn: str, namespace: str, table_name: str): # Schema definition genomic_variants_schema = Schema( NestedField(1, "sample_name", StringType(), required=True), NestedField(2, "variant_name", StringType(), required=True), NestedField(3, "chrom", StringType(), required=True), NestedField(4, "pos", LongType(), required=True), NestedField(5, "ref", StringType(), required=True), NestedField(6, "alt", ListType(element_id=1000, element_type=StringType(), element_required=True), required=True), NestedField(7, "qual", DoubleType()), NestedField(8, "filter", StringType()), NestedField(9, "genotype", StringType()), NestedField(10, "info", MapType(key_type=StringType(), key_id=1001, value_type=StringType(), value_id=1002)), NestedField(11, "attributes", MapType(key_type=StringType(), key_id=2001, value_type=StringType(), value_id=2002)), NestedField(12, "is_reference_block", BooleanType()), identifier_field_ids=[1, 2, 3, 4] ) # Partition and sort specifications partition_spec = PartitionSpec( PartitionField(source_id=1, field_id=1001, transform=BucketTransform(128), name="sample_bucket"), PartitionField(source_id=3, field_id=1002, transform=IdentityTransform(), name="chrom") ) sort_order = SortOrder( SortField(source_id=3, transform=IdentityTransform(), direction=SortDirection.ASC, null_order=NullOrder.NULLS_LAST), SortField(source_id=4, transform=IdentityTransform(), direction=SortDirection.ASC, null_order=NullOrder.NULLS_LAST) ) # Connect to catalog and create table catalog = load_s3_tables_catalog(bucket_arn) create_namespace(catalog, namespace) table = create_table(catalog, namespace, table_name, genomic_variants_schema, partition_spec, sort_order) return table if __name__ == "__main__": bucket_arn = 'arn:aws:s3tables:<REGION>:<ACCOUNT_ID>:bucket/<TABLE_BUCKET_NAME' namespace = "variant_db" table_name = "genomic_variants" main(bucket_arn, namespace, table_name)