Para enviar datos al Instituto Nacional de Archivos de Datos de Salud Mental (NDA), los usuarios deben validar sus datos para garantizar que cumplan con el formato requerido. Esto se hace utilizando la herramienta de carga y validación de NDA. Además, los usuarios también pueden empaquetar y descargar datos de NDA. Si los datos asociados se descargan de S3, se requieren tokens de AWS federados temporales. Se han desarrollado un paquete Python y clientes de línea de comandos para permitir a los usuarios validar, empaquetar, enviar y/o descargar datos mediante programación. Servicios web de validación, paquete de envío y envío de datos.
El usuario necesitará una distribución de Python para utilizar el cliente. Ejecute lo siguiente desde una terminal/símbolo del sistema para determinar si Python ya está instalado:
python3 --version
Notas:
Desde Python 3.4, pip se incluye de forma predeterminada con el binario de Python. Puedes consultar la versión con:
pip3 --version
Si pip está instalado, debería ver la información de la versión. Si no, deberías instalar pip. Primero, descárguelo de https://bootstrap.pypa.io/get-pip.py, luego ejecute lo siguiente para instalarlo para su usuario.
python3 get-pip.py --user
Notas:
Estas instrucciones lo ayudarán a configurar para ejecutar el cliente.
Simplemente ingrese el siguiente comando en su terminal o símbolo del sistema para instalar nda-tools:
pip install nda-tools
Esto instalará automáticamente el paquete nda-tools, incluidos los scripts de línea de comando y los paquetes necesarios.
Notas:
pip install nda-tools --user
python -m NDATools.clientscripts.[NDAtoolcommand]
Si bien no es necesario únicamente para la validación, si desea crear un paquete y enviar sus datos a la NDA, debe tener una cuenta activa con nosotros. Esto se puede solicitar desde el sitio web de la NDA. Puede leer más sobre lo que se necesita para aportar datos a la NDA aquí.
Keyring es un paquete de Python que aprovecha el administrador de credenciales del sistema operativo para almacenar y recuperar de forma segura las credenciales de usuario.
Para usuarios de cualquier sistema operativo, la contraseña se puede actualizar con:
keyring.set_password('nda-tools', USERNAME, NEW_PASSWORD)
Los usuarios de Mac y Windows pueden utilizar Keychain y Credentials Manager, respectivamente, para actualizar sus contraseñas.
Para actualizar su contraseña con llavero, ejecute:
keyring.set_password('nda-tools', 'YOUR_USERNAME', 'NEW_PASSWORD')
,reemplazando YOUR_USERNAME y NEW_PASSWORD con su nombre de usuario NDA y nueva contraseña. Puede leer más en la documentación del llavero.
Si no tiene ninguna entrada almacenada a través del llavero, se le pedirá que ingrese la contraseña. Si la autenticación es exitosa, nda-tools almacenará su contraseña mediante un llavero. El uso posterior de nda-tools recuperará la contraseña de forma automática y segura del llavero.
Es posible que los usuarios de Linux necesiten instalar una implementación backend de llavero, ya que es posible que no tengan un administrador de credenciales nativo como los incluidos en los sistemas operativos Mac y Windows. Si falta el backend del llavero, nda-tools imprimirá el siguiente mensaje:
If there is no backend set up for keyring, you may try pip install secretstorage --upgrade keyrings.alt
Para usuarios de Ubuntu,
apt-get install -y gnome-keyring
Tenga en cuenta que si encuentra errores de SSL al ejecutar el cliente, es posible que deba volver a ejecutar la instalación de solicitudes de pip, con pip install pip install requests[secure]
que instalará algunos paquetes adicionales con más soporte para conexiones SSL.
Para ver las opciones disponibles para el cliente Python de la herramienta de validación, ingrese el siguiente comando:
vtcmd -h
o para ver las opciones disponibles para el cliente Descargar Python, ingrese:
downloadcmd -h
El archivo ~.NDAToolssettings.cfg proporcionado con el cliente contiene opciones configurables para puntos finales, archivos e información de usuario.
Normalmente, no necesitará cambiar las entradas en la sección "Puntos finales"; sin embargo, es posible que desee modificar las secciones "Archivos" y "Usuario" con ubicaciones preferidas para los resultados de la validación, el inicio de sesión del usuario y la información de las credenciales de AWS.
Si bien los argumentos no son posicionales, el primer argumento debe ser la lista de archivos a validar.
vtcmd -l "Users/[youruser]/Documents/MultipleDataTypes"
"Users/[youruser]/Documents/MultipleDataTypes/Stage_Testing_BigFiles_genomics_sample03.csv"
Es necesario que conozca la ruta completa a los archivos csv que se van a validar. Además, si sus datos incluyen manifiestos y/o archivos asociados (es decir, archivos genómicos, archivos de imágenes, etc.), también debe conocer la ruta completa a estos archivos, que debe ingresarse como un argumento opcional de la línea de comandos. De lo contrario, el cliente le pedirá que ingrese una lista de directorios donde se almacenan los archivos adicionales. También puede enumerar un depósito, un prefijo opcional y sus credenciales de AWS si los archivos asociados están en AWS.
Tenga en cuenta: al enumerar el directorio de archivos asociados, incluya la carpeta hasta , pero sin incluir, el nombre del archivo que figura en el archivo csv.
Si el nombre del archivo asociado está en Usuarios/[su usuario]/Documentos/MultipleDataTypes/data/1G_file.fastq y aparece en su archivo csv como:
datos/archivo_1G.fastq
entonces el directorio al que ingresarás es:
Usuarios/[suusuario]/Documentos/Múltiples tipos de datos
No debe incluir la carpeta 'datos/' como parte del nombre del directorio.
Para iniciar la validación, debe ingresar una lista de archivos (o una ruta de archivo si no está en el directorio actual), separados por un espacio:
vtcmd MultipleDataTypes/genomics_sample03.csv testdata/with_associated_files/genomics_sample03.csv
Si tus datos incluyen archivos de manifiesto, debes ingresar los directorios donde se encuentran los archivos de manifiesto, separados por un espacio:
vtcmd submission_data/sample_imagingcollection01.csv -m submission_data/Manifests
Si hay archivos asociados, ingrese los directorios donde se encuentran, separados por un espacio:
vtcmd MultipleDataTypes/genomics_sample03.csv testdata/with_associated_files/genomics_sample03.csv -l MultipleDataTypes testdata/with_associated_files
Si los archivos están ubicados en otro lugar que no sea el directorio de trabajo actual, debe ingresar la ruta completa a los archivos:
vtcmd MultipleDataTypes/genomics_sample03.csv testdata/with_associated_files/genomics_sample03.csv -l Users/[youruser]/Downloads/SubmissionData testdata/with_associated_files
Si sus archivos asociados están en S3, debe incluir el nombre del depósito, la clave de acceso y la clave secreta.
vtcmd MultipleDataTypes/genomics_sample03.csv testdata/with_associated_files/genomics_sample03.csv -s3 my_bucket -ak XXXXXXXXXXXXXX -sk XXXXXXXXXXXXXX
Nota: También puede cargar archivos asociados guardados localmente y en s3. Solo asegúrese de incluir el directorio donde se guardan los archivos locales (-l ruta/a/local/asociado/archivos)
Para crear un paquete, ingrese "-b" al final del argumento de su línea de comando. También puede ingresar su nombre de usuario, credenciales de AWS, ID de colección y el título y descripción de su envío, o puede ingresar esta información más tarde cuando el cliente se lo solicite. El cliente no comenzará a crear el paquete de envío hasta que:
Una vez que se complete el envío y la carga del paquete, recibirá un correo electrónico en su bandeja de entrada de NDA confirmando que su envío fue exitoso. Una versión local del paquete se guardará automáticamente en la carpeta ~nda-toolsvtcmdsubmission_package y se puede encontrar en la pestaña de envío de la colección en el sitio de NDA.
Se realiza una verificación de calidad de todos los datos después de que se hayan enviado a la NDA para detectar inconsistencias en los puntos de datos, incluidos el sexo, el sujeto, la edad de la entrevista y la fecha de la entrevista. Si se encuentra algún problema con los datos, se enviará un correo electrónico a los usuarios que crearon el envío junto con un informe de los errores encontrados por la NDA.
Para corregir los datos en NDA para su envío, debe reemplazar todos los archivos csv que contenían errores en su envío original. Para hacer esto debes:
Por ejemplo, si el envío original con ID 123456 constaba de file1.csv, file2.csv y file3.csv, y era necesario realizar correcciones en file1.csv y file2.csv, el comando para corregir errores de qa se verá así:
vtcmd -b -rs 123456 corrected-file1.csv corrected-file2.csv
Observe que file3.csv está excluido del comando porque no es necesario realizar cambios en ese archivo en particular.
Tenga en cuenta que este comando debe ejecutarse una vez para un envío y debe incluir todos los archivos que contienen correcciones a los datos . es decir, no ejecute vtcmd una vez para el archivo corregido1.csv y otra vez para el archivo corregido2.csv. Si accidentalmente omite archivos que contienen cambios necesarios al ejecutar el comando, comuníquese con el servicio de asistencia técnica en [email protected].
También tenga en cuenta que los archivos csv deben contener todos los datos enviados originalmente. es decir , si un csv originalmente tenía 800 filas y solo era necesario cambiar 3 filas, todas las 800 filas deberían estar presentes en el csv cuando se ejecuta vtcmd , no solo las 3 filas que contienen cambios. Cualquier dato que quede fuera del csv se reflejará en los números de datos esperados para la recopilación.
El script no cargará ningún archivo asociado que se haya cargado durante el envío original. Sólo será necesario subir los archivos asociados si aparecen en archivos csv corregidos pero no en ninguno de los archivos csv del envío original. Esto ahorra tiempo durante los envíos de imágenes y genómica, donde los archivos asociados pueden tardar días en cargarse.
Para descargar datos, debe utilizar el comando downloadcmd. Esto proporciona varias opciones para descargar los datos empaquetados de su NDA o un subconjunto de los datos. Todos los archivos se descargan automáticamente en la carpeta ~nda-toolsdownloadcmdpackages , pero puede cambiar esto indicando un nuevo directorio en la línea de comando para guardar archivos. Tenga en cuenta: el límite máximo de transferencia de datos es de 20 TB por mes.
Todos los datos empaquetados se pueden descargar pasando el ID del paquete:
downloadcmd -dp
Nota: NO descargará archivos asociados a menos que haya creado su paquete NDA con archivos asociados . Los pasos para descargar los archivos asociados se encuentran a continuación.
El comando downloadcmd tiene dos opciones para descargar datos dentro de archivos .txt. Si descargó su paquete NDA, encontrará archivos .txt de metadatos, muchos de los cuales representan medidas de datos. La genómica, las imágenes y otros datos asociados se enumerarán en estos archivos .txt como enlaces s3. Si desea descargar todos los enlaces s3 en su archivo .txt, puede indicarlo pasando el indicador -ds.
downloadcmd -dp
Si desea descargar su paquete NDA y todos los datos genómicos, de imágenes y otros datos asociados como una lista de enlaces s3 almacenados en un archivo .txt personalizado, puede hacerlo usando el indicador -t.
downloadcmd -dp
El comando downloadcmd puede descargar su paquete NDA directamente en su depósito S3.
downloadcmd -dp
Esta es la forma preferida de descargar datos de NDA por dos motivos:
La descarga a otro depósito de S3 es considerablemente más rápida porque los datos no salen de AWS.
Nos permite descargar una cantidad ilimitada de datos de NDA a su depósito directamente.
Para que las operaciones de copia de S3 a S3 sean exitosas, el depósito de S3 proporcionado como argumento del programa debe configurarse para permitir operaciones de objetos PUT para arn:aws:sts::618523879050:federated-user/
, donde
es su nombre de usuario NDA.
Para depósitos no públicos, esto requerirá una actualización de la política del depósito. Se debe agregar la siguiente declaración para permitir los permisos necesarios después de reemplazar
con el nombre del depósito:
{
"Sid": "AllowNDAUpload",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::618523879050:federated-user/"
},
"Action": "s3:PutObject*",
"Resource": "arn:aws:s3:::/*"
}
Es posible que deba enviar un correo electrónico al departamento de TI de su empresa/institución para que se agregue esto.
Nota: Si su depósito de S3 está cifrado con una clave KMS administrada por el cliente, también deberá actualizar la política de la clave que se utiliza para cifrar el depósito.
Se debe agregar la siguiente declaración a la política de su clave:
{
"Sid": "EnableUseForFederatedNDA",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::618523879050:user/DownloadManager"
},
"Action": ["kms:GenerateDataKey","kms:Decrypt"],
"Resource": "*"
}
Si tiene algún problema con este cliente Python de la herramienta de validación o desea enviar comentarios, envíenos un correo electrónico a [email protected].