diff --git a/Cargo.lock b/Cargo.lock index 690b921..e743461 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1188,14 +1188,14 @@ dependencies = [ [[package]] name = "gdi-build-info" -version = "1.0.0-rc.2" +version = "1.0.0-rc.3" dependencies = [ "tempfile", ] [[package]] name = "gdi-dataset-tool" -version = "1.0.0-rc.2" +version = "1.0.0-rc.3" dependencies = [ "async-trait", "clap", @@ -1226,7 +1226,7 @@ dependencies = [ [[package]] name = "gdi-node-standalone" -version = "1.0.0-rc.2" +version = "1.0.0-rc.3" dependencies = [ "anyhow", "async-trait", @@ -1278,7 +1278,7 @@ dependencies = [ [[package]] name = "gdi-node-standalone-beacon" -version = "1.0.0-rc.2" +version = "1.0.0-rc.3" dependencies = [ "arrow-array", "criterion", @@ -1296,7 +1296,7 @@ dependencies = [ [[package]] name = "gdi-node-standalone-core" -version = "1.0.0-rc.2" +version = "1.0.0-rc.3" dependencies = [ "arrow-array", "arrow-buffer", @@ -1339,7 +1339,7 @@ dependencies = [ [[package]] name = "gdi-node-standalone-fairdp" -version = "1.0.0-rc.2" +version = "1.0.0-rc.3" dependencies = [ "criterion", "gdi-node-standalone-core", @@ -3624,7 +3624,7 @@ dependencies = [ [[package]] name = "test-util" -version = "1.0.0-rc.2" +version = "1.0.0-rc.3" dependencies = [ "serial_test", "tempfile", diff --git a/Cargo.toml b/Cargo.toml index 7675543..4fce63f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,9 +18,9 @@ exclude = ["crates/core/fuzz"] [workspace.package] # The exact version being shipped, pre-release suffix and all: this is what the binary # reports as `CARGO_PKG_VERSION`, and `version-guard` in release.yml compares the tag to it -# with no stripping. So this tree tags `v1.0.0-rc.2`, and the final release means setting +# with no stripping. So this tree tags `v1.0.0-rc.3`, and the final release means setting # `1.0.0` here and tagging `v1.0.0`. -version = "1.0.0-rc.2" +version = "1.0.0-rc.3" edition = "2024" rust-version = "1.96" license = "MIT OR Apache-2.0" diff --git a/README.md b/README.md index 4107dbe..fd4a012 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ metadata a harvester needs. It does nothing else, which is why it stays small: o no database, no message bus. It runs on a laptop, and [Quickstart 1](#quickstart-1--see-it-work) has it answering a query in minutes. -**Pre-release.** `v1.0.0-rc.2` is out. Binaries, a container image and checksums are on the +**Pre-release.** `v1.0.0-rc.3` is out. Binaries, a container image and checksums are on the [Releases page](https://github.com/GenomicDataInfrastructure/gdi-node-standalone/releases). It is a candidate, so the image has no `:latest` tag. [CHANGELOG.md](CHANGELOG.md) records what `1.0.0` will commit to. @@ -144,7 +144,7 @@ binary is Linux only and is the full build; the tool also ships for macOS and Wi ([platforms](docs/deployment.md#binaries-and-platforms)). ```bash -V=v1.0.0-rc.2 +V=v1.0.0-rc.3 U=https://github.com/GenomicDataInfrastructure/gdi-node-standalone/releases/download/$V R=https://raw.githubusercontent.com/GenomicDataInfrastructure/gdi-node-standalone/$V/crates/gdi-dataset-tool/tests/fixtures mkdir -p ~/gdi-demo && cd ~/gdi-demo @@ -163,7 +163,7 @@ not, so compile that one there. Each release also has a provenance attestation i attestation store; the commands to check it are in [operating.md §20](docs/operating.md#20-verifying-release-artifacts--the-container-image). There is an image too, `linux/amd64` only: -`docker pull ghcr.io/genomicdatainfrastructure/gdi-node-standalone:v1.0.0-rc.2`. +`docker pull ghcr.io/genomicdatainfrastructure/gdi-node-standalone:v1.0.0-rc.3`. **Build** to work on the code, or for the tool where there is no download (Intel Macs, aarch64 Linux). The service runs on Linux only @@ -240,7 +240,7 @@ For a Beacon that answers like a real export (1 637 sites, twelve populations, c build the realistic sample instead and repeat the `deploy` and `publish` lines with its id: ```bash -V=v1.0.0-rc.2 +V=v1.0.0-rc.3 S=https://raw.githubusercontent.com/GenomicDataInfrastructure/gdi-node-standalone/$V/crates/test-util/tests/fixtures/sample curl --fail-early -fsSLO "$S/gdi-sample.package.yaml" -O "$S/gdi-sample.GRCh38.vcf.gz" gdi-dataset-tool build gdi-sample.package.yaml --cc EE -o build-sample # checkout: crates/test-util/tests/fixtures/sample/ diff --git a/THIRD-PARTY-LICENSES.md b/THIRD-PARTY-LICENSES.md index afeb11f..5f6c359 100644 --- a/THIRD-PARTY-LICENSES.md +++ b/THIRD-PARTY-LICENSES.md @@ -7639,13 +7639,13 @@ limitations under the License. ### Apache License 2.0 (Apache-2.0) Used by: -- gdi-node-standalone-beacon 1.0.0-rc.2 -- gdi-build-info 1.0.0-rc.2 -- gdi-node-standalone-core 1.0.0-rc.2 -- gdi-node-standalone-fairdp 1.0.0-rc.2 -- gdi-dataset-tool 1.0.0-rc.2 -- gdi-node-standalone 1.0.0-rc.2 -- test-util 1.0.0-rc.2 +- gdi-node-standalone-beacon 1.0.0-rc.3 +- gdi-build-info 1.0.0-rc.3 +- gdi-node-standalone-core 1.0.0-rc.3 +- gdi-node-standalone-fairdp 1.0.0-rc.3 +- gdi-dataset-tool 1.0.0-rc.3 +- gdi-node-standalone 1.0.0-rc.3 +- test-util 1.0.0-rc.3 - anyhow 1.0.104 - arraydeque 0.5.1 - async-trait 0.1.92 diff --git a/crates/core/fuzz/Cargo.lock b/crates/core/fuzz/Cargo.lock index 87abe10..2557a13 100644 --- a/crates/core/fuzz/Cargo.lock +++ b/crates/core/fuzz/Cargo.lock @@ -640,7 +640,7 @@ dependencies = [ [[package]] name = "gdi-node-standalone-beacon" -version = "1.0.0-rc.2" +version = "1.0.0-rc.3" dependencies = [ "gdi-node-standalone-core", "serde", @@ -651,7 +651,7 @@ dependencies = [ [[package]] name = "gdi-node-standalone-core" -version = "1.0.0-rc.2" +version = "1.0.0-rc.3" dependencies = [ "arrow-array", "arrow-buffer", diff --git a/docs/api.md b/docs/api.md index c8b9b48..a8dc562 100644 --- a/docs/api.md +++ b/docs/api.md @@ -547,7 +547,7 @@ programmatic consumer should check the status code before parsing the body as JS ```json { - "service_version": "1.0.0-rc.2", + "service_version": "1.0.0-rc.3", "gdi_metadata_version": "", "git_sha": "", "build_epoch": "" diff --git a/docs/deployment.md b/docs/deployment.md index 6cc7814..162084f 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -28,7 +28,7 @@ The service is a single binary, built in two flavours: Prefer `gnu`. Reach for `musl` only when the gnu binary will not start. -There are prebuilt binaries for `v1.0.0-rc.2`, listed further down. To build from source: +There are prebuilt binaries for `v1.0.0-rc.3`, listed further down. To build from source: ```bash cargo build --release --features full -p gdi-node-standalone @@ -148,7 +148,7 @@ single-writer invariant. ## Container image > **There is no `:latest`.** The workflow moves it only on a stable release, and -> `v1.0.0-rc.2` is a candidate. Pull the exact tag. +> `v1.0.0-rc.3` is a candidate. Pull the exact tag. Tagged releases publish a container image to GHCR, packaged from the same released `gnu` (glibc) binary onto a minimal `distroless/cc` base. There is no recompile: the binary is diff --git a/docs/gdi-dataset-tool.md b/docs/gdi-dataset-tool.md index 86fabd6..2a1740c 100644 --- a/docs/gdi-dataset-tool.md +++ b/docs/gdi-dataset-tool.md @@ -145,7 +145,7 @@ version is 1.96, and every crate builds a C-dependent build script, so a linker Nothing else: no S3 endpoint, no Vault, no at-rest encryption. The binary does always link the S3 and network stack, as the note below explains. -> **There are prebuilt binaries now.** `v1.0.0-rc.2` ships the tool for Linux (`gnu` and +> **There are prebuilt binaries now.** `v1.0.0-rc.3` ships the tool for Linux (`gnu` and > `musl`), macOS on Apple silicon and Windows, with checksums and a provenance attestation, > on the [Releases page](https://github.com/GenomicDataInfrastructure/gdi-node-standalone/releases). > Building from source, below, still works. diff --git a/docs/images/wizard.svg b/docs/images/wizard.svg index c9a108b..489f57f 100644 --- a/docs/images/wizard.svg +++ b/docs/images/wizard.svg @@ -1 +1 @@ -provider@laptop:~/work$gdi-dataset-toolprovider@laptop:~/work$gdi-dataset-toolwizard==[1/5]Setup:profile&keys====================================================================✔Profilename·defaultthenode'spublicbaseURL.Blankifthereisnonodeyet;youwillhandthepackageoverinstead.✔NodeserviceURL·http://127.0.0.1:38080blankunlessthenodeisco-locatedandyoucanreachitsmanagementplane(typicallyhttp://127.0.0.1:9090).✔NodemanagementURL·http://127.0.0.1:39090recipientfingerprint:sha256:7ea8195a445c0b15bdab652619a0e0f9148af528a4d8407b308b1983264d7e28✔Trustthisrecipient?·yes✔Synccatalogsfromthenode?·yes✔ConfigureS3upload?·yes✔S3bucketname·gdi-datasets✔S3endpointURL·http://127.0.0.1:3900thenode'sregion:garageforGarage,us-east-1forMinIO/Ceph,thebucket'sownforAWS.✔S3region·garagemustmatchthenode'skeyprefixforthisbucketexactly;askthenode'soperator.Aprefixononesideonlyisasilentdesync.✔Keyprefixinthebucket(blank=thewholebucket)·✔S3accesskeyid(blanktoskip;fillintool-secrets.tomllater)·********✔S3secretaccesskey·********thenode'snameforthisbucket'schannel;askthenode'soperator.✔Channelname(blankleavesthewrong-bucketguardoff)·primary✔Path-styleS3URLs?(yes:RGW/MinIO/Garage;no:virtual-hosted)·yescreatedyourproviderkeyat/home/provider/.config/gdi/keys/provider.c4gh(sha256:ed9dfdad9533205bb97ab69ba226c020ad22e03c5963e4fd5b6f6362f4aba367).Everypackageyoubuildcarriesitasitswriter;ifthenodeacceptspackagesonlyfromlistedkeys,giveitsoperatorthisfingerprint.✔Two-lettercountrycode(e.g.EE)·EEtheORGinGDI-EE-<ORG>-...,e.g.EXAMPLE.✔Instituteabbreviationfordatasetids·EXAMPLEthenodedropstheseatingest;`--header-policy`onbuild/packagealwaysoverridestheprofile.✔VCFheaderstoshipinpackages·minimal:structuralkeysonly,nosampleidentifiers(default)ok:profile'default'writtento/home/provider/.config/gdi/tool.tomlstoredtheS3credentialsin/home/provider/.config/gdi/tool-secrets.toml(owner-only),whereeverylaterrunreadsthem;verifythebucketwith`gdi-dataset-tooldoctor`(itdoesaprobePUT/DELETE)==[2/5]Author:describethedataset(package.yaml)==============================================--Sourcedata------------------------------------------------------------------------------------plain.vcfor.vcf.gz;adirectoryoffersitsVCFstopickfrom.✔VCFfileordirectoryofVCFs(Tabcompletes)·data/gdi-sample.GRCh38.vcf.gz✔AddanotherVCFfileordirectory?·nopreview:populationsinthe1sourceVCF(s),fromtheheaders:[1/1]gdi-sample.GRCh38.vcf.gz:EE,EE_F,EE_M,F,FI,FI_F,FI_M,LV,LV_F,LV_M,M,TotalassemblyGRCh38readfromtheVCFheader;confirmit,orpicktheother✔Assembly·GRCh38--Catalogentry:publishedviathenode'sFAIRDataPoint----------------------------------------✔DatasetIDprefix·GDIorg:EXAMPLE(fromtheprofile)✔Catalog·gdi-aggregated?Datasettitle›Synthetic?Datasettitle›Syntheticallele?Datasettitle›Syntheticallelefrequencies,?Datasettitle›Syntheticallelefrequencies,twelve✔Datasettitle·Syntheticallelefrequencies,twelvepopulations?Description›Synthetic?Description›Syntheticaggregated?Description›Syntheticaggregatedallele?Description›Syntheticaggregatedallelefrequencies?Description›Syntheticaggregatedallelefrequenciesfor?Description›Syntheticaggregatedallelefrequenciesfora?Description›Syntheticaggregatedallelefrequenciesforanode✔Description·Syntheticaggregatedallelefrequenciesforanodedemo.howthedatawasproduced:e.g.sequencing,variantcallingandhowthefrequencieswerecomputed.✔Provenance(blanktoskip)·✔Adddiscoverykeywords?·yes✔Keywords(comma-separated)·allele-frequency,genomicsnumberOfUniqueIndividuals:recommended;buildwarnswhenitisabsent.✔Recordcohortsize?·yes✔Distinctsequencedsubjects(blanktoskip)·500✔Typicalagerangeinyears,e.g.18-90or18+(blanktoskip)·✔Isthissyntheticdata?·yesthefullpublicnameshowninthecatalogentry:nottheIDabbreviationfromsetup.?Creatingorganisation›Example✔Creatingorganisation·ExampleInstitutewhotowritetoaboutthedataset,shownonitscataloguepage:ateamorservicemailboxratherthanaperson's.?Contactname(e.g.Dataaccessteam)›Data?Contactname(e.g.Dataaccessteam)›Dataaccess✔Contactname(e.g.Dataaccessteam)·Dataaccessteam✔Contacte-mail·data@example.org✔Contactwebpage(blanktoskip)·✔Rememberthiscontactpointintheprofileforfuturedatasets?·yes✔Healthcategories(EHDSArt.51;Spacetoggles,Enterconfirms)·Humangenomicgenomicsbelongsunder"Healthproducts,technologies,data&research";foradiseasecohort,alsotickitsdiseasearea.✔Healththemes(Spacetoggles,Enterconfirms)·Healthproducts,technologies,data&researchoptional:acomplianceclaimaboutTHISdataset;leaveeverythinguntickedtoomitit.✔Conformsto(GDIstandards);Spacetoggles,Enterconfirms·✔Publicationaboutthedataset,asaDOI(blanktoskip)·--Access&legal---------------------------------------------------------------------------------?Accessrights›NON_PUBLIC✔Accessrights·PUBLIC?License›Other(enterIRI)✔License·CC01.0:publicdomain(typicalforsyntheticdata)EUELIIRIs,e.g.http://data.europa.eu/eli/reg/2025/327/oj.TheEHDSrowmaybeunticked;buildthenwarns,and`--strict`failsonthatwarning.✔Applicablelegislation(Spacetoggles,Enterconfirms)·EHDS:Regulation(EU)2025/327✔AddanotherlegislationELIorIRI?·no--Beaconprovenance:citedineveryBeaconanswer------------------------------------------------setsbothafSourceandafSourceReference.✔UsethestandardGenomeofEuropeAFprovenance?·yes--Disclosurecontrols----------------------------------------------------------------------------Smallallelecountscanbewithheldatbuildtime(minAlleleCount).TheunitisALLELES,notpeople:ahomozygouscarriercounts2,so5~threepeople.✔Withholdrowswithallelecountbelow(0=publisheverything)·10gdi-sample.GRCh38.vcf.gz[]0B/490.81KiB(0%)0B/sETA0satminAlleleCount10:6411row(s)belowthefloor,10687moreremovedbycollapsing1447variant(s)toTotal;populationsthatsurvive:EE,EE_F,EE_M,F,FI,FI_F,FI_M,LV,LV_F,LV_M,M,Totalkeywords:-"allele-frequency"-"genomics"numberOfUniqueIndividuals:500accessRights:"http://publications.europa.eu/resource/authority/access-right/PUBLIC"applicableLegislation:-"http://data.europa.eu/eli/reg/2025/327/oj"license:"http://publications.europa.eu/resource/authority/licence/CC0"creator:-name:"ExampleInstitute"contactPoint:fn:"Dataaccessteam"hasEmail:"mailto:data@example.org"healthCategory:-"http://data.gdi.eu/core/p2/HealthCategoryHumanGenomic"healthTheme:-"https://hdeu-dcat.data.health.europa.eu/resource/authority/health-theme/HEALTH_PRODUCTS"files:-category:"VCF"reference:"GRCh38"files:-"/home/provider/work/data/gdi-sample.GRCh38.vcf.gz"internal:{}config:mode:aggregatedblockRange:10000000minAlleleCount:10afSource:"TheGenomeofEurope"afSourceReference:"https://genomeofeurope.eu/"---------------------------------------------------------------------------------------------------✔Writepackage.yaml?·Writeitwrotepackage.yamlrememberedthecontactpointin/home/provider/.config/gdi/tool.toml:thewizardwillofferitnexttime==[3/5]Build:convert&validate================================================================disclosurepreview:whatthisdatasetwillpublish(1sourceVCF(s)):[1/1]/home/provider/work/data/gdi-sample.GRCh38.vcf.gz:EE,EE_F,EE_M,F,FI,FI_F,FI_M,LV,LV_F,LV_M,M,TotalVCFheaders:minimal:structuralkeysonly,nosampleidentifiers✔Publishthesepopulations?·yesnote:recommendedsub-field"hasURL"isabsentonthecontactPointconvertingVCF1/1:/home/provider/work/data/gdi-sample.GRCh38.vcf.gznote:themin_allele_countfloorsuppressed6411populationrow(s)whoseACwasbelowitnote:k-anonymitycoherencecollapsed1447variant(s)totheirTotalrowonly,removing10687furtherpopulationrow(s)regardlessoftheirownAC:awithheldpopulationforcesitssiblingstobewithheldtoonote:11of413emittedvariant(s)haveTotalAF=0:nocopyofthealternatealleleinthewholecohort,andarestoredandservedlikeanyotherrow,asavariantpresentwithfrequency0;removemonomorphicsitesbeforebuilding(`bcftoolsview-c1`)ifthatisnotintendednote:dropped1224of1637inputrecords(0non-primarycontig,0nosupportedALT;symbolic/SV/gVCF/missing,0noallelefrequencyintheinput,1224everypopulationrowwithheldbythek-anonymityfloor)/home/provider/work/data/gdi-sample.GRCh38.vcf.gz:populationsemitted(12):EE,EE_F,EE_M,F,FI,FI_F,FI_M,LV,LV_F,LV_M,M,TotalbuiltdatasetGDI-EE-EXAMPLE-20261008135653596->./build/GDI-EE-EXAMPLE-20261008135653596==[4/5]Pack:encryptintoonepackage===========================================================packingparquet1/23:allele-freq.chr21.0.br10000000.6e44adfd808b30ac.parquetpackingparquet2/23:allele-freq.chrM.0.br10000000.6e44adfd808b30ac.parquetpackingparquet3/23:allele-freq.chrX.0.br10000000.6e44adfd808b30ac.parquetpackingparquet4/23:allele-freq.chrX.1.br10000000.6e44adfd808b30ac.parquetpackingparquet5/23:allele-freq.chrX.10.br10000000.6e44adfd808b30ac.parquetpackingparquet6/23:allele-freq.chrX.11.br10000000.6e44adfd808b30ac.parquetpackingparquet7/23:allele-freq.chrX.12.br10000000.6e44adfd808b30ac.parquetpackingparquet8/23:allele-freq.chrX.13.br10000000.6e44adfd808b30ac.parquetpackingparquet9/23:allele-freq.chrX.14.br10000000.6e44adfd808b30ac.parquetpackingparquet10/23:allele-freq.chrX.15.br10000000.6e44adfd808b30ac.parquetpackingparquet11/23:allele-freq.chrX.2.br10000000.6e44adfd808b30ac.parquetpackingparquet12/23:allele-freq.chrX.3.br10000000.6e44adfd808b30ac.parquetpackingparquet13/23:allele-freq.chrX.4.br10000000.6e44adfd808b30ac.parquetpackingparquet14/23:allele-freq.chrX.5.br10000000.6e44adfd808b30ac.parquetpackingparquet15/23:allele-freq.chrX.6.br10000000.6e44adfd808b30ac.parquetpackingparquet16/23:allele-freq.chrX.7.br10000000.6e44adfd808b30ac.parquetpackingparquet17/23:allele-freq.chrX.8.br10000000.6e44adfd808b30ac.parquetpackingparquet18/23:allele-freq.chrX.9.br10000000.6e44adfd808b30ac.parquetpackingparquet19/23:allele-freq.chrY.1.br10000000.6e44adfd808b30ac.parquetpackingparquet20/23:allele-freq.chrY.2.br10000000.6e44adfd808b30ac.parquetpackingparquet21/23:allele-freq.chrY.3.br10000000.6e44adfd808b30ac.parquetpackingparquet22/23:allele-freq.chrY.4.br10000000.6e44adfd808b30ac.parquetpackingparquet23/23:allele-freq.chrY.5.br10000000.6e44adfd808b30ac.parquetpackedGDI-EE-EXAMPLE-20261008135653596->./GDI-EE-EXAMPLE-20261008135653596.tar.c4gh./build/GDI-EE-EXAMPLE-20261008135653596;plaintextbuildoutput;the.tar.c4ghholdsthesamecontentencrypted,andarebuildrecreatesit.✔Removethestagingdir?·yesremovedthestagingdir./build/GDI-EE-EXAMPLE-20261008135653596==[5/5]Publish:sendittothenode=============================================================✔Sendthepackagetothenodenow?·UploadtoS3(S3bucketgdi-datasets@http://127.0.0.1:3900)uploadedGDI-EE-EXAMPLE-20261008135653596(hidden)toS3bucketgdi-datasets@http://127.0.0.1:3900note:thenodepollsitsbucket,soGDI-EE-EXAMPLE-20261008135653596takesuptoafewminutestoappear(thatgapisexpected).Run`statusGDI-EE-EXAMPLE-20261008135653596`toconfirm,then`publishGDI-EE-EXAMPLE-20261008135653596`tomakeitvisible.Orre-runwith`--wait`toblockuntilthenodehasingestedit.ok:wizardfinisheddatasetGDI-EE-EXAMPLE-20261008135653596package./GDI-EE-EXAMPLE-20261008135653596.tar.c4ghmanifestpackage.yaml(re-runthewizardheretorebuildoredit)shippeduploadedtotheS3bucket;thedatasetlandshiddenandthenodepolls(allow~30sbeforeitevenlooks)nextrun`gdi-dataset-toolstatusGDI-EE-EXAMPLE-20261008135653596`toconfirmingest,then`gdi-dataset-toolpublishGDI-EE-EXAMPLE-20261008135653596`tomakeitvisibleprovider@laptop:~/work$provider@laptop:~/work$gprovider@laptop:~/work$gdprovider@laptop:~/work$gdiprovider@laptop:~/work$gdi-provider@laptop:~/work$gdi-dprovider@laptop:~/work$gdi-daprovider@laptop:~/work$gdi-datprovider@laptop:~/work$gdi-dataprovider@laptop:~/work$gdi-datasprovider@laptop:~/work$gdi-dataseprovider@laptop:~/work$gdi-datasetprovider@laptop:~/work$gdi-dataset-provider@laptop:~/work$gdi-dataset-tprovider@laptop:~/work$gdi-dataset-toprovider@laptop:~/work$gdi-dataset-tooprovider@laptop:~/work$gdi-dataset-toolwprovider@laptop:~/work$gdi-dataset-toolwiprovider@laptop:~/work$gdi-dataset-toolwizprovider@laptop:~/work$gdi-dataset-toolwizaprovider@laptop:~/work$gdi-dataset-toolwizar?Profilename(default)›?NodeserviceURL›?NodeserviceURL›h?NodeserviceURL›ht?NodeserviceURL›htt?NodeserviceURL›http?NodeserviceURL›http:?NodeserviceURL›http:/?NodeserviceURL›http://?NodeserviceURL›http://1?NodeserviceURL›http://12?NodeserviceURL›http://127?NodeserviceURL›http://127.?NodeserviceURL›http://127.0?NodeserviceURL›http://127.0.?NodeserviceURL›http://127.0.0?NodeserviceURL›http://127.0.0.?NodeserviceURL›http://127.0.0.1?NodeserviceURL›http://127.0.0.1:?NodeserviceURL›http://127.0.0.1:3?NodeserviceURL›http://127.0.0.1:38?NodeserviceURL›http://127.0.0.1:380?NodeserviceURL›http://127.0.0.1:3808?NodeserviceURL›http://127.0.0.1:38080?NodemanagementURL›?NodemanagementURL›h?NodemanagementURL›ht?NodemanagementURL›htt?NodemanagementURL›http?NodemanagementURL›http:?NodemanagementURL›http:/?NodemanagementURL›http://?NodemanagementURL›http://1?NodemanagementURL›http://12?NodemanagementURL›http://127?NodemanagementURL›http://127.?NodemanagementURL›http://127.0?NodemanagementURL›http://127.0.?NodemanagementURL›http://127.0.0?NodemanagementURL›http://127.0.0.?NodemanagementURL›http://127.0.0.1?NodemanagementURL›http://127.0.0.1:?NodemanagementURL›http://127.0.0.1:3?NodemanagementURL›http://127.0.0.1:39?NodemanagementURL›http://127.0.0.1:390?NodemanagementURL›http://127.0.0.1:3909?NodemanagementURL›http://127.0.0.1:39090?Trustthisrecipient?(y/n)›yes?Synccatalogsfromthenode?(y/n)›yes?ConfigureS3upload?(y/n)›no?S3bucketname›?S3bucketname›g?S3bucketname›gd?S3bucketname›gdi?S3bucketname›gdi-?S3bucketname›gdi-d?S3bucketname›gdi-da?S3bucketname›gdi-dat?S3bucketname›gdi-data?S3bucketname›gdi-datas?S3bucketname›gdi-datase?S3bucketname›gdi-dataset?S3bucketname›gdi-datasets?S3endpointURL›?S3endpointURL›h?S3endpointURL›ht?S3endpointURL›htt?S3endpointURL›http?S3endpointURL›http:?S3endpointURL›http:/?S3endpointURL›http://?S3endpointURL›http://1?S3endpointURL›http://12?S3endpointURL›http://127?S3endpointURL›http://127.?S3endpointURL›http://127.0?S3endpointURL›http://127.0.?S3endpointURL›http://127.0.0?S3endpointURL›http://127.0.0.?S3endpointURL›http://127.0.0.1?S3endpointURL›http://127.0.0.1:?S3endpointURL›http://127.0.0.1:3?S3endpointURL›http://127.0.0.1:39?S3endpointURL›http://127.0.0.1:390?S3endpointURL›http://127.0.0.1:3900?S3region›?S3region›g?S3region›ga?S3region›gar?S3region›gara?S3region›garag?S3region›garage?Keyprefixinthebucket(blank=thewholebucket)›?S3accesskeyid(blanktoskip;fillintool-secrets.tomllater)›?S3secretaccesskey›?Channelname(blankleavesthewrong-bucketguardoff)›?Channelname(blankleavesthewrong-bucketguardoff)›p?Channelname(blankleavesthewrong-bucketguardoff)›pr?Channelname(blankleavesthewrong-bucketguardoff)›pri?Channelname(blankleavesthewrong-bucketguardoff)›prim?Channelname(blankleavesthewrong-bucketguardoff)›prima?Channelname(blankleavesthewrong-bucketguardoff)›primar?Channelname(blankleavesthewrong-bucketguardoff)›primary?Path-styleS3URLs?(yes:RGW/MinIO/Garage;no:virtual-hosted)(y/n)›yes?Two-lettercountrycode(e.g.EE)›?Two-lettercountrycode(e.g.EE)›E?Two-lettercountrycode(e.g.EE)›EE?Instituteabbreviationfordatasetids›?Instituteabbreviationfordatasetids›E?Instituteabbreviationfordatasetids›EX?Instituteabbreviationfordatasetids›EXA?Instituteabbreviationfordatasetids›EXAM?Instituteabbreviationfordatasetids›EXAMP?Instituteabbreviationfordatasetids›EXAMPL?Instituteabbreviationfordatasetids›EXAMPLE?VCFheaderstoshipinpackages›❯minimal:structuralkeysonly,nosampleidentifiers(default)with-identifiers:alsothe#CHROMsamplecolumnsand##SAMPLE/##PEDIGREElinesnone:shipnoVCFheadersatall?VCFfileordirectoryofVCFs(Tabcompletes)›?VCFfileordirectoryofVCFs(Tabcompletes)›d?VCFfileordirectoryofVCFs(Tabcompletes)›da?VCFfileordirectoryofVCFs(Tabcompletes)›dat?VCFfileordirectoryofVCFs(Tabcompletes)›data?VCFfileordirectoryofVCFs(Tabcompletes)›data/?VCFfileordirectoryofVCFs(Tabcompletes)›data/g?VCFfileordirectoryofVCFs(Tabcompletes)›data/gd?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-s?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sa?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sam?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-samp?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sampl?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sample?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sample.?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sample.G?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sample.GRCh38.vcf.gz?AddanotherVCFfileordirectory?(y/n)›no?Assembly›GRCh37❯GRCh38?DatasetIDprefix›GOE❯GDI?Catalog›❯gdi-aggregatedsynthetic-dataRefreshthelistfromthenode...?Datasettitle›?Datasettitle›S?Datasettitle›Sy?Datasettitle›Syn?Datasettitle›Synt?Datasettitle›Synth?Datasettitle›Synthe?Datasettitle›Synthet?Datasettitle›Syntheti?Datasettitle›Synthetica?Datasettitle›Synthetical?Datasettitle›Syntheticall?Datasettitle›Syntheticalle?Datasettitle›Syntheticallel?Datasettitle›Syntheticallelef?Datasettitle›Syntheticallelefr?Datasettitle›Syntheticallelefre?Datasettitle›Syntheticallelefreq?Datasettitle›Syntheticallelefrequ?Datasettitle›Syntheticallelefreque?Datasettitle›Syntheticallelefrequen?Datasettitle›Syntheticallelefrequenc?Datasettitle›Syntheticallelefrequenci?Datasettitle›Syntheticallelefrequencie?Datasettitle›Syntheticallelefrequencies?Datasettitle›Syntheticallelefrequencies,t?Datasettitle›Syntheticallelefrequencies,tw?Datasettitle›Syntheticallelefrequencies,twe?Datasettitle›Syntheticallelefrequencies,twel?Datasettitle›Syntheticallelefrequencies,twelv?Datasettitle›Syntheticallelefrequencies,twelvep?Datasettitle›Syntheticallelefrequencies,twelvepo?Datasettitle›Syntheticallelefrequencies,twelvepop?Datasettitle›Syntheticallelefrequencies,twelvepopu?Datasettitle›Syntheticallelefrequencies,twelvepopul?Datasettitle›Syntheticallelefrequencies,twelvepopula?Datasettitle›Syntheticallelefrequencies,twelvepopulat?Datasettitle›Syntheticallelefrequencies,twelvepopulati?Datasettitle›Syntheticallelefrequencies,twelvepopulatio?Datasettitle›Syntheticallelefrequencies,twelvepopulation?Datasettitle›Syntheticallelefrequencies,twelvepopulations?Description›?Description›S?Description›Sy?Description›Syn?Description›Synt?Description›Synth?Description›Synthe?Description›Synthet?Description›Syntheti?Description›Synthetica?Description›Syntheticag?Description›Syntheticagg?Description›Syntheticaggr?Description›Syntheticaggre?Description›Syntheticaggreg?Description›Syntheticaggrega?Description›Syntheticaggregat?Description›Syntheticaggregate?Description›Syntheticaggregateda?Description›Syntheticaggregatedal?Description›Syntheticaggregatedall?Description›Syntheticaggregatedalle?Description›Syntheticaggregatedallel?Description›Syntheticaggregatedallelef?Description›Syntheticaggregatedallelefr?Description›Syntheticaggregatedallelefre?Description›Syntheticaggregatedallelefreq?Description›Syntheticaggregatedallelefrequ?Description›Syntheticaggregatedallelefreque?Description›Syntheticaggregatedallelefrequen?Description›Syntheticaggregatedallelefrequenc?Description›Syntheticaggregatedallelefrequenci?Description›Syntheticaggregatedallelefrequencie?Description›Syntheticaggregatedallelefrequenciesf?Description›Syntheticaggregatedallelefrequenciesfo?Description›Syntheticaggregatedallelefrequenciesforan?Description›Syntheticaggregatedallelefrequenciesforano?Description›Syntheticaggregatedallelefrequenciesforanod?Description›Syntheticaggregatedallelefrequenciesforanoded?Description›Syntheticaggregatedallelefrequenciesforanodede?Description›Syntheticaggregatedallelefrequenciesforanodedem?Description›Syntheticaggregatedallelefrequenciesforanodedemo?Description›Syntheticaggregatedallelefrequenciesforanodedemo.?Provenance(blanktoskip)›?Adddiscoverykeywords?(y/n)›yes?Keywords(comma-separated)(allele-frequency,genomics)›?Recordcohortsize?(y/n)›yes?Distinctsequencedsubjects(blanktoskip)›?Distinctsequencedsubjects(blanktoskip)›5?Distinctsequencedsubjects(blanktoskip)›50?Distinctsequencedsubjects(blanktoskip)›500?Typicalagerangeinyears,e.g.18-90or18+(blanktoskip)›?Isthissyntheticdata?(y/n)›no?Creatingorganisation›?Creatingorganisation›E?Creatingorganisation›Ex?Creatingorganisation›Exa?Creatingorganisation›Exam?Creatingorganisation›Examp?Creatingorganisation›Exampl?Creatingorganisation›ExampleI?Creatingorganisation›ExampleIn?Creatingorganisation›ExampleIns?Creatingorganisation›ExampleInst?Creatingorganisation›ExampleInsti?Creatingorganisation›ExampleInstit?Creatingorganisation›ExampleInstitu?Creatingorganisation›ExampleInstitut?Creatingorganisation›ExampleInstitute?Contactname(e.g.Dataaccessteam)›?Contactname(e.g.Dataaccessteam)›D?Contactname(e.g.Dataaccessteam)›Da?Contactname(e.g.Dataaccessteam)›Dat?Contactname(e.g.Dataaccessteam)›Dataa?Contactname(e.g.Dataaccessteam)›Dataac?Contactname(e.g.Dataaccessteam)›Dataacc?Contactname(e.g.Dataaccessteam)›Dataacce?Contactname(e.g.Dataaccessteam)›Dataacces?Contactname(e.g.Dataaccessteam)›Dataaccesst?Contactname(e.g.Dataaccessteam)›Dataaccesste?Contactname(e.g.Dataaccessteam)›Dataaccesstea?Contactname(e.g.Dataaccessteam)›Dataaccessteam?Contacte-mail›?Contacte-mail›d?Contacte-mail›da?Contacte-mail›dat?Contacte-mail›data?Contacte-mail›data@?Contacte-mail›data@e?Contacte-mail›data@ex?Contacte-mail›data@exa?Contacte-mail›data@exam?Contacte-mail›data@examp?Contacte-mail›data@exampl?Contacte-mail›data@example?Contacte-mail›data@example.?Contacte-mail›data@example.o?Contacte-mail›data@example.or?Contacte-mail›data@example.org?Contactwebpage(blanktoskip)›?Rememberthiscontactpointintheprofileforfuturedatasets?(y/n)›yes?Healthcategories(EHDSArt.51;Spacetoggles,Enterconfirms)›⬚Humangenetic⬚Humanepigenomic✔Humangenomic?Healththemes(Spacetoggles,Enterconfirms)›⬚Antimicrobialresistance&infectioncontrol⬚Blood-borne&sexuallytransmittedinfections⬚Cancer⬚Climate&planetaryhealth⬚Emergencies,disasters,travel&humanitariansettings⬚Enteric,water-&food-borneinfections⬚Environmental,occupational&radiationhealth(incl.WASH&urban)✔Healthproducts,technologies,data&research⬚Healthsystems,quality,caremodels&determinants⬚Immunization&vaccine-preventablediseases⬚Injuries,envenoming&drowning⬚Life-coursehealth:maternal,newborn,child,adolescent&ageing⬚Mental,neurological&substanceuse⬚Noncommunicablediseases–metabolic&cardiopulmonary⬚Nutrition&foodsecurity⬚Sexual&reproductivehealthandrights⬚Respiratoryinfectiousdiseases⬚Oral,eye&sensoryhealth⬚Neglectedtropical,parasitic&fungalskindiseases⬚Vector-borne&zoonoticviraldiseases?Conformsto(GDIstandards);Spacetoggles,Enterconfirms›⬚Externallygoverned⬚1+MGcompliant⬚1+MGcohort?Publicationaboutthedataset,asaDOI(blanktoskip)›PUBLIC❯RESTRICTED❯PUBLICRESTRICTED❯CCBY4.0:reusewithattribution(typicalforpublicaggregateddata)CC01.0:publicdomain(typicalforsyntheticdata)CCBY4.0:reusewithattribution(typicalforpublicaggregateddata)❯CC01.0:publicdomain(typicalforsyntheticdata)?Applicablelegislation(Spacetoggles,Enterconfirms)›✔EHDS:Regulation(EU)2025/327⬚GDPR:Regulation(EU)2016/679?AddanotherlegislationELIorIRI?(y/n)›no?UsethestandardGenomeofEuropeAFprovenance?(y/n)›yes?Withholdrowswithallelecountbelow(0=publisheverything)(0)›?Withholdrowswithallelecountbelow(0=publisheverything)(0)›1?Withholdrowswithallelecountbelow(0=publisheverything)(0)›10gdi-sample.GRCh38.vcf.gz[>]2.50KiB/490.81KiB(1%)5.50MiB/sETA0sgdi-sample.GRCh38.vcf.gz[>]10.88KiB/490.81KiB(2%)9.69MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=>]20.82KiB/490.81KiB(4%)10.32MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=>]31.17KiB/490.81KiB(6%)10.93MiB/sETA0sgdi-sample.GRCh38.vcf.gz[==>]40.98KiB/490.81KiB(8%)11.45MiB/sETA0sgdi-sample.GRCh38.vcf.gz[==>]41.22KiB/490.81KiB(8%)11.83MiB/sETA0sgdi-sample.GRCh38.vcf.gz[===>]61.25KiB/490.81KiB(12%)12.38MiB/sETA0sgdi-sample.GRCh38.vcf.gz[===>]72.44KiB/490.81KiB(15%)12.60MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=====>]92.13KiB/490.81KiB(19%)12.92MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=====>]102.43KiB/490.81KiB(21%)13.04MiB/sETA0sgdi-sample.GRCh38.vcf.gz[======>]121.22KiB/490.81KiB(25%)13.23MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=======>]140.05KiB/490.81KiB(29%)13.37MiB/sETA0s--Review:package.yamlasitwillbewritten-----------------------------------------------------metadata:prefix:"GDI"org:"EXAMPLE"catalog:"gdi-aggregated"title:"Syntheticallelefrequencies,twelvepopulations"description:"Syntheticaggregatedallelefrequenciesforanodedemo."type:-"https://publications.europa.eu/resource/authority/dataset-type/SYNTHETIC_DATA"?Writepackage.yaml?›❯WriteitEdititin$EDITORfirstAbort(theanswersarediscarded)?Publishthesepopulations?(y/n)›nogdi-sample.GRCh38.vcf.gz[>]2.50KiB/490.81KiB(1%)487.15KiB/sETA1sgdi-sample.GRCh38.vcf.gz[>]10.88KiB/490.81KiB(2%)2.16MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=>]20.82KiB/490.81KiB(4%)6.39MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=>]31.17KiB/490.81KiB(6%)8.75MiB/sETA0sgdi-sample.GRCh38.vcf.gz[==>]40.98KiB/490.81KiB(8%)10.45MiB/sETA0sgdi-sample.GRCh38.vcf.gz[==>]41.20KiB/490.81KiB(8%)11.68MiB/sETA0sgdi-sample.GRCh38.vcf.gz[===>]61.25KiB/490.81KiB(12%)13.68MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=====>]92.13KiB/490.81KiB(19%)15.78MiB/sETA0sgdi-sample.GRCh38.vcf.gz[======>]121.22KiB/490.81KiB(25%)17.11MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=======>]140.05KiB/490.81KiB(29%)17.77MiB/sETA0sgdi-sample.GRCh38.vcf.gz[========>]166.86KiB/490.81KiB(34%)18.53MiB/sETA0sgdi-sample.GRCh38.vcf.gz[==========>]196.32KiB/490.81KiB(40%)19.13MiB/sETA0sgdi-sample.GRCh38.vcf.gz[===========>]215.42KiB/490.81KiB(44%)19.46MiB/sETA0spacking[]0B/128.57KiB(0%)0B/sETA0spacking[>]512B/128.57KiB(0%)3.33MiB/sETA0spacking[=====>]17.00KiB/128.57KiB(13%)18.65MiB/sETA0spacking[================>]48.50KiB/128.57KiB(38%)32.62MiB/sETA0spacking[====================>]60.50KiB/128.57KiB(47%)34.89MiB/sETA0spacking[====================>]60.50KiB/128.57KiB(47%)35.34MiB/sETA0spacking[===========================>]79.50KiB/128.57KiB(62%)38.14MiB/sETA0spacking[=============================>]87.50KiB/128.57KiB(68%)38.74MiB/sETA0spacking[=================================>]97.00KiB/128.57KiB(75%)39.20MiB/sETA0spacking[=================================>]101.50KiB/128.57KiB(79%)47.49MiB/sETA0spacking[===================================>]107.00KiB/128.57KiB(83%)48.70MiB/sETA0spacking[=====================================>]112.50KiB/128.57KiB(87%)49.44MiB/sETA0spacking[=======================================>]117.50KiB/128.57KiB(91%)50.32MiB/sETA0spacking[========================================>]122.50KiB/128.57KiB(95%)50.92MiB/sETA0spacking[==========================================]132.00KiB/128.57KiB(100%)51.74MiB/sETA0spacking[==========================================]140.00KiB/128.57KiB(100%)52.45MiB/sETA0s?Removethestagingdir?(y/n)›yes?Sendthepackagetothenodenow?›❯UploadtoS3(S3bucketgdi-datasets@http://127.0.0.1:3900)Skip:publishelsewhereuploadingGDI-EE-…5653596.tar.c4gh[]0B/149.31KiB(0%)0B/sETA0suploadingGDI-EE-…5653596.tar.c4gh[==============]149.31KiB/149.31KiB(100%)124.71MiB/sETA0s \ No newline at end of file +provider@laptop:~/work$gdi-dataset-toolprovider@laptop:~/work$gdi-dataset-toolwizard==[1/5]Setup:profile&keys====================================================================✔Profilename·defaultthenode'spublicbaseURL.Blankifthereisnonodeyet;youwillhandthepackageoverinstead.✔NodeserviceURL·http://127.0.0.1:8080blankunlessthenodeisco-locatedandyoucanreachitsmanagementplane(typicallyhttp://127.0.0.1:9090).✔NodemanagementURL·http://127.0.0.1:9090recipientfingerprint:sha256:ff2aac24ce8be19bbcf604fa9d703778a9b636ef0475e468a29f1b78acec5b39✔Trustthisrecipient?·yes✔Synccatalogsfromthenode?·yes✔ConfigureS3upload?·yes✔S3bucketname·gdi-datasets✔S3endpointURL·http://127.0.0.1:3900thenode'sregion:garageforGarage,us-east-1forMinIO/Ceph,thebucket'sownforAWS.✔S3region·garagemustmatchthenode'skeyprefixforthisbucketexactly;askthenode'soperator.Aprefixononesideonlyisasilentdesync.✔Keyprefixinthebucket(blank=thewholebucket)·✔S3accesskeyid(blanktoskip;fillintool-secrets.tomllater)·********✔S3secretaccesskey·********thenode'snameforthisbucket'schannel;askthenode'soperator.✔Channelname(blankleavesthewrong-bucketguardoff)·primary✔Path-styleS3URLs?(yes:RGW/MinIO/Garage;no:virtual-hosted)·yescreatedyourproviderkeyat/home/provider/.config/gdi/keys/provider.c4gh(sha256:10a9978f5b814d4c22f02c9c25278eec4babb6c951cc202ffb2f842db6efc43a).Everypackageyoubuildcarriesitasitswriter;ifthenodeacceptspackagesonlyfromlistedkeys,giveitsoperatorthisfingerprint.✔Two-lettercountrycode(e.g.EE)·EEtheORGinGDI-EE-<ORG>-...,e.g.EXAMPLE.✔Instituteabbreviationfordatasetids·EXAMPLEthenodedropstheseatingest;`--header-policy`onbuild/packagealwaysoverridestheprofile.✔VCFheaderstoshipinpackages·minimal:structuralkeysonly,nosampleidentifiers(default)ok:profile'default'writtento/home/provider/.config/gdi/tool.tomlstoredtheS3credentialsin/home/provider/.config/gdi/tool-secrets.toml(owner-only),whereeverylaterrunreadsthem;verifythebucketwith`gdi-dataset-tooldoctor`(itdoesaprobePUT/DELETE)==[2/5]Author:describethedataset(package.yaml)==============================================--Sourcedata------------------------------------------------------------------------------------plain.vcfor.vcf.gz;adirectoryoffersitsVCFstopickfrom.✔VCFfileordirectoryofVCFs(Tabcompletes)·data/gdi-sample.GRCh38.vcf.gz✔AddanotherVCFfileordirectory?·nopreview:populationsinthe1sourceVCF(s),fromtheheaders:[1/1]gdi-sample.GRCh38.vcf.gz:EE,EE_F,EE_M,F,FI,FI_F,FI_M,LV,LV_F,LV_M,M,TotalassemblyGRCh38readfromtheVCFheader;confirmit,orpicktheother?Assembly›GRCh37✔Assembly·GRCh38--Catalogentry:publishedviathenode'sFAIRDataPoint----------------------------------------✔DatasetIDprefix·GDIorg:EXAMPLE(fromtheprofile)✔Catalog·gdi-aggregated?Datasettitle›Synthetic?Datasettitle›Syntheticallele?Datasettitle›Syntheticallelefrequencies,?Datasettitle›Syntheticallelefrequencies,twelve✔Datasettitle·Syntheticallelefrequencies,twelvepopulations?Description›Synthetic?Description›Syntheticaggregated?Description›Syntheticaggregatedallele?Description›Syntheticaggregatedallelefrequencies?Description›Syntheticaggregatedallelefrequenciesfor?Description›Syntheticaggregatedallelefrequenciesfora?Description›Syntheticaggregatedallelefrequenciesforanode✔Description·Syntheticaggregatedallelefrequenciesforanodedemo.howthedatawasproduced:e.g.sequencing,variantcallingandhowthefrequencieswerecomputed.✔Provenance(blanktoskip)·✔Adddiscoverykeywords?·yes✔Keywords(comma-separated)·allele-frequency,genomicsnumberOfUniqueIndividuals:recommended;buildwarnswhenitisabsent.✔Recordcohortsize?·yes✔Distinctsequencedsubjects(blanktoskip)·500✔Typicalagerangeinyears,e.g.18-90or18+(blanktoskip)·✔Isthissyntheticdata?·yesthefullpublicnameshowninthecatalogentry:nottheIDabbreviationfromsetup.?Creatingorganisation›Example✔Creatingorganisation·ExampleInstitutewhotowritetoaboutthedataset,shownonitscataloguepage:ateamorservicemailboxratherthanaperson's.?Contactname(e.g.Dataaccessteam)›Data?Contactname(e.g.Dataaccessteam)›Dataaccess✔Contactname(e.g.Dataaccessteam)·Dataaccessteam✔Contacte-mail·data@example.org✔Contactwebpage(blanktoskip)·✔Rememberthiscontactpointintheprofileforfuturedatasets?·yes?Healthcategories(EHDSArt.51;Spacetoggles,Enterconfirms)›✔Healthcategories(EHDSArt.51;Spacetoggles,Enterconfirms)·Humangenomicgenomicsbelongsunder"Healthproducts,technologies,data&research";foradiseasecohort,alsotickitsdiseasearea.?Healththemes(Spacetoggles,Enterconfirms)›⬚Antimicrobialresistance&infectioncontrol⬚Blood-borne&sexuallytransmittedinfections⬚Cancer⬚Climate&planetaryhealth⬚Emergencies,disasters,travel&humanitariansettings✔Healththemes(Spacetoggles,Enterconfirms)·Healthproducts,technologies,data&researchoptional:acomplianceclaimaboutTHISdataset;leaveeverythinguntickedtoomitit.✔Conformsto(GDIstandards);Spacetoggles,Enterconfirms·✔Publicationaboutthedataset,asaDOI(blanktoskip)·--Access&legal---------------------------------------------------------------------------------?Accessrights›NON_PUBLIC✔Accessrights·PUBLIC?License›Other(enterIRI)✔License·CC01.0:publicdomain(typicalforsyntheticdata)EUELIIRIs,e.g.http://data.europa.eu/eli/reg/2025/327/oj.TheEHDSrowmaybeunticked;buildthenwarns,and`--strict`failsonthatwarning.✔Applicablelegislation(Spacetoggles,Enterconfirms)·EHDS:Regulation(EU)2025/327✔AddanotherlegislationELIorIRI?·no--Beaconprovenance:citedineveryBeaconanswer------------------------------------------------setsbothafSourceandafSourceReference.✔UsethestandardGenomeofEuropeAFprovenance?·yes--Disclosurecontrols----------------------------------------------------------------------------Smallallelecountscanbewithheldatbuildtime(minAlleleCount).TheunitisALLELES,notpeople:ahomozygouscarriercounts2,so5~threepeople.✔Withholdrowswithallelecountbelow(0=publisheverything)·10applicableLegislation:-"http://data.europa.eu/eli/reg/2025/327/oj"license:"http://publications.europa.eu/resource/authority/licence/CC0"creator:-name:"ExampleInstitute"contactPoint:fn:"Dataaccessteam"hasEmail:"mailto:data@example.org"healthCategory:-"http://data.gdi.eu/core/p2/HealthCategoryHumanGenomic"healthTheme:-"https://hdeu-dcat.data.health.europa.eu/resource/authority/health-theme/HEALTH_PRODUCTS"files:-category:"VCF"reference:"GRCh38"files:-"/home/provider/work/data/gdi-sample.GRCh38.vcf.gz"internal:{}config:mode:aggregatedblockRange:10000000minAlleleCount:10afSource:"TheGenomeofEurope"afSourceReference:"https://genomeofeurope.eu/"---------------------------------------------------------------------------------------------------✔Writepackage.yaml?·Writeitwrotepackage.yamlrememberedthecontactpointin/home/provider/.config/gdi/tool.toml:thewizardwillofferitnexttime==[3/5]Build:convert&validate================================================================disclosurepreview:whatthisdatasetwillpublish(1sourceVCF(s)):[1/1]/home/provider/work/data/gdi-sample.GRCh38.vcf.gz:EE,EE_F,EE_M,F,FI,FI_F,FI_M,LV,LV_F,LV_M,M,TotalVCFheaders:minimal:structuralkeysonly,nosampleidentifiers✔Publishthesepopulations?·yesnote:recommendedsub-field"hasURL"isabsentonthecontactPointgdi-sample.GRCh38.vcf.gz[]0B/490.81KiB(0%)0B/sETA0sconvertingVCF1/1:/home/provider/work/data/gdi-sample.GRCh38.vcf.gznote:themin_allele_countfloorsuppressed6411populationrow(s)whoseACwasbelowitnote:k-anonymitycoherencecollapsed1447variant(s)totheirTotalrowonly,removing10687furtherpopulationrow(s)regardlessoftheirownAC:awithheldpopulationforcesitssiblingstobewithheldtoonote:11of413emittedvariant(s)haveTotalAF=0:nocopyofthealternatealleleinthewholecohort,andarestoredandservedlikeanyotherrow,asavariantpresentwithfrequency0;removemonomorphicsitesbeforebuilding(`bcftoolsview-c1`)ifthatisnotintendednote:dropped1224of1637inputrecords(0non-primarycontig,0nosupportedALT;symbolic/SV/gVCF/missing,0noallelefrequencyintheinput,1224everypopulationrowwithheldbythek-anonymityfloor)/home/provider/work/data/gdi-sample.GRCh38.vcf.gz:populationsemitted(12):EE,EE_F,EE_M,F,FI,FI_F,FI_M,LV,LV_F,LV_M,M,TotalbuiltdatasetGDI-EE-EXAMPLE-20261009110110222->./build/GDI-EE-EXAMPLE-20261009110110222==[4/5]Pack:encryptintoonepackage===========================================================packingparquet1/23:allele-freq.chr21.0.br10000000.6e44adfd808b30ac.parquetpackingparquet2/23:allele-freq.chrM.0.br10000000.6e44adfd808b30ac.parquetpackingparquet3/23:allele-freq.chrX.0.br10000000.6e44adfd808b30ac.parquetpackingparquet4/23:allele-freq.chrX.1.br10000000.6e44adfd808b30ac.parquetpackingparquet5/23:allele-freq.chrX.10.br10000000.6e44adfd808b30ac.parquetpackingparquet6/23:allele-freq.chrX.11.br10000000.6e44adfd808b30ac.parquetpackingparquet7/23:allele-freq.chrX.12.br10000000.6e44adfd808b30ac.parquetpackingparquet8/23:allele-freq.chrX.13.br10000000.6e44adfd808b30ac.parquetpackingparquet9/23:allele-freq.chrX.14.br10000000.6e44adfd808b30ac.parquetpackingparquet10/23:allele-freq.chrX.15.br10000000.6e44adfd808b30ac.parquetpackingparquet11/23:allele-freq.chrX.2.br10000000.6e44adfd808b30ac.parquetpackingparquet12/23:allele-freq.chrX.3.br10000000.6e44adfd808b30ac.parquetpackingparquet13/23:allele-freq.chrX.4.br10000000.6e44adfd808b30ac.parquetpackingparquet14/23:allele-freq.chrX.5.br10000000.6e44adfd808b30ac.parquetpackingparquet15/23:allele-freq.chrX.6.br10000000.6e44adfd808b30ac.parquetpackingparquet16/23:allele-freq.chrX.7.br10000000.6e44adfd808b30ac.parquetpackingparquet17/23:allele-freq.chrX.8.br10000000.6e44adfd808b30ac.parquetpackingparquet18/23:allele-freq.chrX.9.br10000000.6e44adfd808b30ac.parquetpackingparquet19/23:allele-freq.chrY.1.br10000000.6e44adfd808b30ac.parquetpackingparquet20/23:allele-freq.chrY.2.br10000000.6e44adfd808b30ac.parquetpackingparquet21/23:allele-freq.chrY.3.br10000000.6e44adfd808b30ac.parquetpackingparquet22/23:allele-freq.chrY.4.br10000000.6e44adfd808b30ac.parquetpackingparquet23/23:allele-freq.chrY.5.br10000000.6e44adfd808b30ac.parquetpackedGDI-EE-EXAMPLE-20261009110110222->./GDI-EE-EXAMPLE-20261009110110222.tar.c4gh./build/GDI-EE-EXAMPLE-20261009110110222;plaintextbuildoutput;the.tar.c4ghholdsthesamecontentencrypted,andarebuildrecreatesit.✔Removethestagingdir?·yesremovedthestagingdir./build/GDI-EE-EXAMPLE-20261009110110222==[5/5]Publish:sendittothenode=============================================================✔Sendthepackagetothenodenow?·UploadtoS3(S3bucketgdi-datasets@http://127.0.0.1:3900)uploadedGDI-EE-EXAMPLE-20261009110110222(hidden)toS3bucketgdi-datasets@http://127.0.0.1:3900note:thenodepollsitsbucket,soGDI-EE-EXAMPLE-20261009110110222takesuptoafewminutestoappear(thatgapisexpected).Run`statusGDI-EE-EXAMPLE-20261009110110222`toconfirm,then`publishGDI-EE-EXAMPLE-20261009110110222`tomakeitvisible.Orre-runwith`--wait`toblockuntilthenodehasingestedit.ok:wizardfinisheddatasetGDI-EE-EXAMPLE-20261009110110222package./GDI-EE-EXAMPLE-20261009110110222.tar.c4ghmanifestpackage.yaml(re-runthewizardheretorebuildoredit)shippeduploadedtotheS3bucket;thedatasetlandshiddenandthenodepolls(allow~30sbeforeitevenlooks)nextrun`gdi-dataset-toolstatusGDI-EE-EXAMPLE-20261009110110222`toconfirmingest,then`gdi-dataset-toolpublishGDI-EE-EXAMPLE-20261009110110222`tomakeitvisibleprovider@laptop:~/work$provider@laptop:~/work$gprovider@laptop:~/work$gdprovider@laptop:~/work$gdiprovider@laptop:~/work$gdi-provider@laptop:~/work$gdi-dprovider@laptop:~/work$gdi-daprovider@laptop:~/work$gdi-datprovider@laptop:~/work$gdi-dataprovider@laptop:~/work$gdi-datasprovider@laptop:~/work$gdi-dataseprovider@laptop:~/work$gdi-datasetprovider@laptop:~/work$gdi-dataset-provider@laptop:~/work$gdi-dataset-tprovider@laptop:~/work$gdi-dataset-toprovider@laptop:~/work$gdi-dataset-tooprovider@laptop:~/work$gdi-dataset-toolwprovider@laptop:~/work$gdi-dataset-toolwiprovider@laptop:~/work$gdi-dataset-toolwizprovider@laptop:~/work$gdi-dataset-toolwizaprovider@laptop:~/work$gdi-dataset-toolwizar?Profilename(default)›?NodeserviceURL›?NodeserviceURL›h?NodeserviceURL›ht?NodeserviceURL›htt?NodeserviceURL›http?NodeserviceURL›http:?NodeserviceURL›http:/?NodeserviceURL›http://?NodeserviceURL›http://1?NodeserviceURL›http://12?NodeserviceURL›http://127?NodeserviceURL›http://127.?NodeserviceURL›http://127.0?NodeserviceURL›http://127.0.?NodeserviceURL›http://127.0.0?NodeserviceURL›http://127.0.0.?NodeserviceURL›http://127.0.0.1?NodeserviceURL›http://127.0.0.1:?NodeserviceURL›http://127.0.0.1:8?NodeserviceURL›http://127.0.0.1:80?NodeserviceURL›http://127.0.0.1:808?NodeserviceURL›http://127.0.0.1:8080?NodemanagementURL›?NodemanagementURL›h?NodemanagementURL›ht?NodemanagementURL›htt?NodemanagementURL›http?NodemanagementURL›http:?NodemanagementURL›http:/?NodemanagementURL›http://?NodemanagementURL›http://1?NodemanagementURL›http://12?NodemanagementURL›http://127?NodemanagementURL›http://127.?NodemanagementURL›http://127.0?NodemanagementURL›http://127.0.?NodemanagementURL›http://127.0.0?NodemanagementURL›http://127.0.0.?NodemanagementURL›http://127.0.0.1?NodemanagementURL›http://127.0.0.1:?NodemanagementURL›http://127.0.0.1:9?NodemanagementURL›http://127.0.0.1:90?NodemanagementURL›http://127.0.0.1:909?NodemanagementURL›http://127.0.0.1:9090?Trustthisrecipient?(y/n)›yes?Synccatalogsfromthenode?(y/n)›yes?ConfigureS3upload?(y/n)›no?S3bucketname›?S3bucketname›g?S3bucketname›gd?S3bucketname›gdi?S3bucketname›gdi-?S3bucketname›gdi-d?S3bucketname›gdi-da?S3bucketname›gdi-dat?S3bucketname›gdi-data?S3bucketname›gdi-datas?S3bucketname›gdi-datase?S3bucketname›gdi-dataset?S3bucketname›gdi-datasets?S3endpointURL›?S3endpointURL›h?S3endpointURL›ht?S3endpointURL›htt?S3endpointURL›http?S3endpointURL›http:?S3endpointURL›http:/?S3endpointURL›http://?S3endpointURL›http://1?S3endpointURL›http://12?S3endpointURL›http://127?S3endpointURL›http://127.?S3endpointURL›http://127.0?S3endpointURL›http://127.0.?S3endpointURL›http://127.0.0?S3endpointURL›http://127.0.0.?S3endpointURL›http://127.0.0.1?S3endpointURL›http://127.0.0.1:?S3endpointURL›http://127.0.0.1:3?S3endpointURL›http://127.0.0.1:39?S3endpointURL›http://127.0.0.1:390?S3endpointURL›http://127.0.0.1:3900?S3region›?S3region›g?S3region›ga?S3region›gar?S3region›gara?S3region›garag?S3region›garage?Keyprefixinthebucket(blank=thewholebucket)›?S3accesskeyid(blanktoskip;fillintool-secrets.tomllater)›?S3secretaccesskey›?Channelname(blankleavesthewrong-bucketguardoff)›?Channelname(blankleavesthewrong-bucketguardoff)›p?Channelname(blankleavesthewrong-bucketguardoff)›pr?Channelname(blankleavesthewrong-bucketguardoff)›pri?Channelname(blankleavesthewrong-bucketguardoff)›prim?Channelname(blankleavesthewrong-bucketguardoff)›prima?Channelname(blankleavesthewrong-bucketguardoff)›primar?Channelname(blankleavesthewrong-bucketguardoff)›primary?Path-styleS3URLs?(yes:RGW/MinIO/Garage;no:virtual-hosted)(y/n)›yes?Two-lettercountrycode(e.g.EE)›?Two-lettercountrycode(e.g.EE)›E?Two-lettercountrycode(e.g.EE)›EE?Instituteabbreviationfordatasetids›?Instituteabbreviationfordatasetids›E?Instituteabbreviationfordatasetids›EX?Instituteabbreviationfordatasetids›EXA?Instituteabbreviationfordatasetids›EXAM?Instituteabbreviationfordatasetids›EXAMP?Instituteabbreviationfordatasetids›EXAMPL?Instituteabbreviationfordatasetids›EXAMPLE?VCFheaderstoshipinpackages›❯minimal:structuralkeysonly,nosampleidentifiers(default)with-identifiers:alsothe#CHROMsamplecolumnsand##SAMPLE/##PEDIGREElinesnone:shipnoVCFheadersatall?VCFfileordirectoryofVCFs(Tabcompletes)›?VCFfileordirectoryofVCFs(Tabcompletes)›d?VCFfileordirectoryofVCFs(Tabcompletes)›da?VCFfileordirectoryofVCFs(Tabcompletes)›dat?VCFfileordirectoryofVCFs(Tabcompletes)›data?VCFfileordirectoryofVCFs(Tabcompletes)›data/?VCFfileordirectoryofVCFs(Tabcompletes)›data/g?VCFfileordirectoryofVCFs(Tabcompletes)›data/gd?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-s?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sa?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sam?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-samp?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sampl?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sample?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sample.?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sample.G?VCFfileordirectoryofVCFs(Tabcompletes)›data/gdi-sample.GRCh38.vcf.gz?AddanotherVCFfileordirectory?(y/n)›no❯GRCh38?DatasetIDprefix›GOE❯GDI?Catalog›❯gdi-aggregatedsynthetic-dataRefreshthelistfromthenode...?Datasettitle›?Datasettitle›S?Datasettitle›Sy?Datasettitle›Syn?Datasettitle›Synt?Datasettitle›Synth?Datasettitle›Synthe?Datasettitle›Synthet?Datasettitle›Syntheti?Datasettitle›Synthetica?Datasettitle›Synthetical?Datasettitle›Syntheticall?Datasettitle›Syntheticalle?Datasettitle›Syntheticallel?Datasettitle›Syntheticallelef?Datasettitle›Syntheticallelefr?Datasettitle›Syntheticallelefre?Datasettitle›Syntheticallelefreq?Datasettitle›Syntheticallelefrequ?Datasettitle›Syntheticallelefreque?Datasettitle›Syntheticallelefrequen?Datasettitle›Syntheticallelefrequenc?Datasettitle›Syntheticallelefrequenci?Datasettitle›Syntheticallelefrequencie?Datasettitle›Syntheticallelefrequencies?Datasettitle›Syntheticallelefrequencies,t?Datasettitle›Syntheticallelefrequencies,tw?Datasettitle›Syntheticallelefrequencies,twe?Datasettitle›Syntheticallelefrequencies,twel?Datasettitle›Syntheticallelefrequencies,twelv?Datasettitle›Syntheticallelefrequencies,twelvep?Datasettitle›Syntheticallelefrequencies,twelvepo?Datasettitle›Syntheticallelefrequencies,twelvepop?Datasettitle›Syntheticallelefrequencies,twelvepopu?Datasettitle›Syntheticallelefrequencies,twelvepopul?Datasettitle›Syntheticallelefrequencies,twelvepopula?Datasettitle›Syntheticallelefrequencies,twelvepopulat?Datasettitle›Syntheticallelefrequencies,twelvepopulati?Datasettitle›Syntheticallelefrequencies,twelvepopulatio?Datasettitle›Syntheticallelefrequencies,twelvepopulation?Datasettitle›Syntheticallelefrequencies,twelvepopulations?Description›?Description›S?Description›Sy?Description›Syn?Description›Synt?Description›Synth?Description›Synthe?Description›Synthet?Description›Syntheti?Description›Synthetica?Description›Syntheticag?Description›Syntheticagg?Description›Syntheticaggr?Description›Syntheticaggre?Description›Syntheticaggreg?Description›Syntheticaggrega?Description›Syntheticaggregat?Description›Syntheticaggregate?Description›Syntheticaggregateda?Description›Syntheticaggregatedal?Description›Syntheticaggregatedall?Description›Syntheticaggregatedalle?Description›Syntheticaggregatedallel?Description›Syntheticaggregatedallelef?Description›Syntheticaggregatedallelefr?Description›Syntheticaggregatedallelefre?Description›Syntheticaggregatedallelefreq?Description›Syntheticaggregatedallelefrequ?Description›Syntheticaggregatedallelefreque?Description›Syntheticaggregatedallelefrequen?Description›Syntheticaggregatedallelefrequenc?Description›Syntheticaggregatedallelefrequenci?Description›Syntheticaggregatedallelefrequencie?Description›Syntheticaggregatedallelefrequenciesf?Description›Syntheticaggregatedallelefrequenciesfo?Description›Syntheticaggregatedallelefrequenciesforan?Description›Syntheticaggregatedallelefrequenciesforano?Description›Syntheticaggregatedallelefrequenciesforanod?Description›Syntheticaggregatedallelefrequenciesforanoded?Description›Syntheticaggregatedallelefrequenciesforanodede?Description›Syntheticaggregatedallelefrequenciesforanodedem?Description›Syntheticaggregatedallelefrequenciesforanodedemo?Description›Syntheticaggregatedallelefrequenciesforanodedemo.?Provenance(blanktoskip)›?Adddiscoverykeywords?(y/n)›yes?Keywords(comma-separated)(allele-frequency,genomics)›?Recordcohortsize?(y/n)›yes?Distinctsequencedsubjects(blanktoskip)›?Distinctsequencedsubjects(blanktoskip)›5?Distinctsequencedsubjects(blanktoskip)›50?Distinctsequencedsubjects(blanktoskip)›500?Typicalagerangeinyears,e.g.18-90or18+(blanktoskip)›?Isthissyntheticdata?(y/n)›no?Creatingorganisation›?Creatingorganisation›E?Creatingorganisation›Ex?Creatingorganisation›Exa?Creatingorganisation›Exam?Creatingorganisation›Examp?Creatingorganisation›Exampl?Creatingorganisation›ExampleI?Creatingorganisation›ExampleIn?Creatingorganisation›ExampleIns?Creatingorganisation›ExampleInst?Creatingorganisation›ExampleInsti?Creatingorganisation›ExampleInstit?Creatingorganisation›ExampleInstitu?Creatingorganisation›ExampleInstitut?Creatingorganisation›ExampleInstitute?Contactname(e.g.Dataaccessteam)›?Contactname(e.g.Dataaccessteam)›D?Contactname(e.g.Dataaccessteam)›Da?Contactname(e.g.Dataaccessteam)›Dat?Contactname(e.g.Dataaccessteam)›Dataa?Contactname(e.g.Dataaccessteam)›Dataac?Contactname(e.g.Dataaccessteam)›Dataacc?Contactname(e.g.Dataaccessteam)›Dataacce?Contactname(e.g.Dataaccessteam)›Dataacces?Contactname(e.g.Dataaccessteam)›Dataaccesst?Contactname(e.g.Dataaccessteam)›Dataaccesste?Contactname(e.g.Dataaccessteam)›Dataaccesstea?Contactname(e.g.Dataaccessteam)›Dataaccessteam?Contacte-mail›?Contacte-mail›d?Contacte-mail›da?Contacte-mail›dat?Contacte-mail›data?Contacte-mail›data@?Contacte-mail›data@e?Contacte-mail›data@ex?Contacte-mail›data@exa?Contacte-mail›data@exam?Contacte-mail›data@examp?Contacte-mail›data@exampl?Contacte-mail›data@example?Contacte-mail›data@example.?Contacte-mail›data@example.o?Contacte-mail›data@example.or?Contacte-mail›data@example.org?Contactwebpage(blanktoskip)›?Rememberthiscontactpointintheprofileforfuturedatasets?(y/n)›yes⬚Humangenetic⬚Humanepigenomic✔Humangenomic⬚Enteric,water-&food-borneinfections⬚Environmental,occupational&radiationhealth(incl.WASH&urban)✔Healthproducts,technologies,data&research⬚Healthsystems,quality,caremodels&determinants⬚Immunization&vaccine-preventablediseases⬚Injuries,envenoming&drowning⬚Life-coursehealth:maternal,newborn,child,adolescent&ageing⬚Mental,neurological&substanceuse⬚Noncommunicablediseases–metabolic&cardiopulmonary⬚Nutrition&foodsecurity⬚Sexual&reproductivehealthandrights⬚Respiratoryinfectiousdiseases⬚Oral,eye&sensoryhealth⬚Neglectedtropical,parasitic&fungalskindiseases⬚Vector-borne&zoonoticviraldiseases?Conformsto(GDIstandards);Spacetoggles,Enterconfirms›⬚Externallygoverned⬚1+MGcompliant⬚1+MGcohort?Publicationaboutthedataset,asaDOI(blanktoskip)›PUBLIC❯RESTRICTED❯PUBLICRESTRICTED❯CCBY4.0:reusewithattribution(typicalforpublicaggregateddata)CC01.0:publicdomain(typicalforsyntheticdata)CCBY4.0:reusewithattribution(typicalforpublicaggregateddata)❯CC01.0:publicdomain(typicalforsyntheticdata)?Applicablelegislation(Spacetoggles,Enterconfirms)›✔EHDS:Regulation(EU)2025/327⬚GDPR:Regulation(EU)2016/679?AddanotherlegislationELIorIRI?(y/n)›no?UsethestandardGenomeofEuropeAFprovenance?(y/n)›yes?Withholdrowswithallelecountbelow(0=publisheverything)(0)›?Withholdrowswithallelecountbelow(0=publisheverything)(0)›1?Withholdrowswithallelecountbelow(0=publisheverything)(0)›10gdi-sample.GRCh38.vcf.gz[>]2.50KiB/490.81KiB(1%)6.02MiB/sETA0sgdi-sample.GRCh38.vcf.gz[>]10.88KiB/490.81KiB(2%)9.19MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=>]20.82KiB/490.81KiB(4%)8.72MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=>]31.17KiB/490.81KiB(6%)9.14MiB/sETA0sgdi-sample.GRCh38.vcf.gz[==>]40.98KiB/490.81KiB(8%)9.54MiB/sETA0sgdi-sample.GRCh38.vcf.gz[==>]41.22KiB/490.81KiB(8%)9.83MiB/sETA0sgdi-sample.GRCh38.vcf.gz[==>]50.99KiB/490.81KiB(10%)10.04MiB/sETA0sgdi-sample.GRCh38.vcf.gz[===>]61.25KiB/490.81KiB(12%)10.21MiB/sETA0sgdi-sample.GRCh38.vcf.gz[====>]72.42KiB/490.81KiB(15%)7.66MiB/sETA0sgdi-sample.GRCh38.vcf.gz[====>]72.44KiB/490.81KiB(15%)7.52MiB/sETA0sgdi-sample.GRCh38.vcf.gz[====>]81.26KiB/490.81KiB(17%)7.51MiB/sETA0sgdi-sample.GRCh38.vcf.gz[====>]81.28KiB/490.81KiB(17%)7.40MiB/sETA0satminAlleleCount10:6411row(s)belowthefloor,10687moreremovedbycollapsing1447variant(s)toTotal;populationsthatsurvive:EE,EE_F,EE_M,F,FI,FI_F,FI_M,LV,LV_F,LV_M,M,Total-"allele-frequency"-"genomics"numberOfUniqueIndividuals:500accessRights:"http://publications.europa.eu/resource/authority/access-right/PUBLIC"?Writepackage.yaml?›❯WriteitEdititin$EDITORfirstAbort(theanswersarediscarded)?Publishthesepopulations?(y/n)›nogdi-sample.GRCh38.vcf.gz[>]2.50KiB/490.81KiB(1%)318.17KiB/sETA2sgdi-sample.GRCh38.vcf.gz[>]10.88KiB/490.81KiB(2%)1.56MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=>]20.82KiB/490.81KiB(4%)4.81MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=>]31.17KiB/490.81KiB(6%)6.70MiB/sETA0sgdi-sample.GRCh38.vcf.gz[==>]40.98KiB/490.81KiB(8%)8.10MiB/sETA0sgdi-sample.GRCh38.vcf.gz[==>]41.20KiB/490.81KiB(8%)9.14MiB/sETA0sgdi-sample.GRCh38.vcf.gz[==>]50.99KiB/490.81KiB(10%)10.00MiB/sETA0sgdi-sample.GRCh38.vcf.gz[===>]72.44KiB/490.81KiB(15%)11.45MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=====>]92.13KiB/490.81KiB(19%)12.49MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=====>]111.45KiB/490.81KiB(23%)13.27MiB/sETA0sgdi-sample.GRCh38.vcf.gz[======>]131.30KiB/490.81KiB(27%)13.90MiB/sETA0sgdi-sample.GRCh38.vcf.gz[=======>]148.63KiB/490.81KiB(30%)14.37MiB/sETA0sgdi-sample.GRCh38.vcf.gz[========>]166.86KiB/490.81KiB(34%)14.77MiB/sETA0spacking[=====>]17.00KiB/128.57KiB(13%)17.52MiB/sETA0spacking[================>]48.50KiB/128.57KiB(38%)29.54MiB/sETA0spacking[===================>]56.00KiB/128.57KiB(44%)31.16MiB/sETA0spacking[=========================>]74.50KiB/128.57KiB(58%)35.31MiB/sETA0spacking[=============================>]87.50KiB/128.57KiB(68%)36.41MiB/sETA0spacking[===============================>]92.50KiB/128.57KiB(72%)36.69MiB/sETA0spacking[=================================>]101.50KiB/128.57KiB(79%)37.05MiB/sETA0spacking[=====================================>]112.50KiB/128.57KiB(87%)37.19MiB/sETA0spacking[========================================>]122.50KiB/128.57KiB(95%)37.17MiB/sETA0spacking[==========================================>]127.50KiB/128.57KiB(99%)37.09MiB/sETA0spacking[==========================================]132.00KiB/128.57KiB(100%)36.69MiB/sETA0spacking[==========================================]132.00KiB/128.57KiB(100%)36.59MiB/sETA0spacking[==========================================]140.00KiB/128.57KiB(100%)36.46MiB/sETA0s?Removethestagingdir?(y/n)›yes?Sendthepackagetothenodenow?›❯UploadtoS3(S3bucketgdi-datasets@http://127.0.0.1:3900)Skip:publishelsewhereuploadingGDI-EE-…0110222.tar.c4gh[]0B/149.31KiB(0%)0B/sETA0suploadingGDI-EE-…0110222.tar.c4gh[===============]149.31KiB/149.31KiB(100%)14.78MiB/sETA0s \ No newline at end of file diff --git a/docs/operating.md b/docs/operating.md index e6f11d6..eb0a5cd 100644 --- a/docs/operating.md +++ b/docs/operating.md @@ -2758,7 +2758,7 @@ operational invariant covered above under [Where things live](#where-things-live ## 20. Verifying release artifacts + the container image -> **`v1.0.0-rc.2` is the current release.** Being a candidate, it has no `:latest` image +> **`v1.0.0-rc.3` is the current release.** Being a candidate, it has no `:latest` image > tag, so use the exact tag in the commands below. Each release publishes, alongside the per-platform binaries: one `SHA256SUMS`, a keyless diff --git a/scripts/demo/record-wizard.sh b/scripts/demo/record-wizard.sh index 298ab57..6bf119a 100755 --- a/scripts/demo/record-wizard.sh +++ b/scripts/demo/record-wizard.sh @@ -14,13 +14,17 @@ # # DEMO_NODE_URL / DEMO_MGMT_URL / DEMO_S3_ENDPOINT / DEMO_S3_BUCKET / DEMO_S3_REGION / # DEMO_S3_ACCESS_KEY / DEMO_S3_SECRET_KEY point at another stack (shifted host ports, a -# bucket of your own). DEMO_KEEP=1 keeps the scratch dir with the .cast; DEMO_DUMP=1 also +# bucket of your own). The URLs are typed into the recording, so a shifted stack shows +# shifted ports; to record the defaults on a host whose :8080 is taken, put the stack behind +# a container that forwards 127.0.0.1:8080/9090/3900 and set DEMO_NETWORK=container:, +# the docker network the wizard joins (default: host). The readiness probe runs in that +# network too. DEMO_KEEP=1 keeps the scratch dir with the .cast; DEMO_DUMP=1 also # writes the ANSI-stripped transcript there, which is what to read when a prompt changed and # drive-wizard.py's SCRIPT table needs the new wording. # # The wizard runs in a throwaway container with a clean home directory, so every path in the -# recording is a provider's (`/home/provider/...`), not this machine's. `--network host` is -# what lets it reach the stack's loopback-published ports. The image is pinned by digest like +# recording is a provider's (`/home/provider/...`), not this machine's. `--network host` (the +# default) is what lets it reach the stack's loopback-published ports. The image is pinned by digest like # every other image in the tree; Debian trixie's glibc is newer than the tool's floor. set -euo pipefail REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" @@ -34,6 +38,7 @@ OUT="${1:-docs/images/wizard.svg}" : "${DEMO_S3_REGION:=garage}" : "${DEMO_S3_ACCESS_KEY:=GK0123456789abcdef01234567}" : "${DEMO_S3_SECRET_KEY:=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef}" +: "${DEMO_NETWORK:=host}" TOOL="${DEMO_TOOL:-target/release/gdi-dataset-tool}" IMAGE="python:3.13-slim-trixie@sha256:9d2e5553305c7c7b0097999bb17187c69b921ccd6bc9d40e4bb5ebe652c00285" @@ -47,8 +52,17 @@ if [ -n "$(find crates/gdi-dataset-tool/src crates/core/src -name '*.rs' -newer echo "record-wizard: $TOOL is older than the tool's sources; rebuild it first (cargo build --release -p gdi-dataset-tool)" >&2 exit 1 fi -curl -fsS "$DEMO_MGMT_URL/health/ready" >/dev/null 2>&1 \ - || { echo "record-wizard: no ready node at $DEMO_MGMT_URL (start the Compose S3 stack first)" >&2; exit 1; } +# Probe where the wizard will run: in a namespaced network the URL means nothing on the host. +node_ready() { + if [ "$DEMO_NETWORK" = host ]; then + curl -fsS "$DEMO_MGMT_URL/health/ready" >/dev/null 2>&1 + else + docker run --rm --network "$DEMO_NETWORK" "$IMAGE" python3 -c \ + "import urllib.request; urllib.request.urlopen('$DEMO_MGMT_URL/health/ready', timeout=5)" >/dev/null 2>&1 + fi +} +node_ready \ + || { echo "record-wizard: no ready node at $DEMO_MGMT_URL in network $DEMO_NETWORK (start the Compose S3 stack first)" >&2; exit 1; } work="$(mktemp -d)" # Named, and removed on exit: when the driver gives up on a prompt it kills the docker client, @@ -67,7 +81,7 @@ python3 scripts/demo/drive-wizard.py --out "$work/wizard.cast" "${dump[@]}" \ --node-url "$DEMO_NODE_URL" --management-url "$DEMO_MGMT_URL" \ --s3-endpoint "$DEMO_S3_ENDPOINT" --s3-bucket "$DEMO_S3_BUCKET" --s3-region "$DEMO_S3_REGION" \ --s3-access-key "$DEMO_S3_ACCESS_KEY" --s3-secret-key "$DEMO_S3_SECRET_KEY" -- \ - docker run --rm -it --name "$container" --network host --user "$(id -u):$(id -g)" \ + docker run --rm -it --name "$container" --network "$DEMO_NETWORK" --user "$(id -u):$(id -g)" \ -e HOME=/home/provider -e TERM=xterm-256color -w /home/provider/work \ -v "$work/home:/home/provider" \ -v "$REPO_ROOT/crates/test-util/tests/fixtures/sample:/home/provider/work/data:ro" \