Skill Tracer
Skills › Scientific Agent Skills › gget › database_info.md

database_info.md

117 lines · skills/gget/references/database_info.md at 5f2bc03

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# gget data sources and adapter contracts
2
3Reviewed against [gget 0.30.8 source](https://github.com/scverse/gget/tree/v0.30.8/gget)
4and the [current manual](https://scverse.org/gget/), 2026-09-30. Pin
5`gget==0.30.8` in Python >=3.12. A package pin does not freeze remote databases.
6Record query inputs, species, genome assembly, dataset release, retrieval date,
7software versions, warnings, and raw outputs. Most public queries need no key;
8COSMIC downloads and the deprecated GPT wrapper are exceptions.
9

gget data sources and adapter contracts

Reviewed against gget 0.30.8 source and the current manual, 2026-09-30. Pin gget==0.30.8 in Python >=3.12. A package pin does not freeze remote databases. Record query inputs, species, genome assembly, dataset release, retrieval date, software versions, warnings, and raw outputs. Most public queries need no key; COSMIC downloads and the deprecated GPT wrapper are exceptions.

Raw lines 1 to 9
10## Reference, sequence, and structure services
12| Module | Transport and result contract | Boundaries |
13| --- | --- | --- |
14| `ref` | Reads Ensembl directory listings under `ftp.ensembl.org/pub/` and `ftp.ensemblgenomes.org/pub/`; returns release/file metadata or links. CLI `-d` downloads with curl. | Python has no `download` or `out_dir` parameter. Choose an explicit release; `info`/`seq` do not inherit that release. Non-vertebrate support excludes bacteria. |
15| `search` | Public MySQL (`mysql-eg-publicsql.ebi.ac.uk`, candidate ports 3306/5306/4157/3337/5316), with release discovery via Ensembl listings. Returns `ensembl_id`, `gene_name`, descriptions, `biotype`, `synonym`, `url`. | Matches names/descriptions/synonyms by substring. `limit=1` is not exact symbol resolution; require a unique exact symbol. `limit` is a local result cap, not a cursor. |
16| `info` | Ensembl `POST /lookup/id` (`ids`, `expand`), plus UniProtKB search, NCBI Gene **HTML parsing**, and optional PDBe `GET /pdbe/aggregated-api/mappings/ensembl_to_pdb/{id}`. | Returns a DataFrame indexed by query ID, with `primary_gene_name`/`ensembl_gene_name`, not `gene_name`. `pdb_id` may be a list. Preserve the index. Maximum Ensembl batch is 1000 IDs; versioned IDs are resolved against current data. |
17| `seq` | Ensembl `/sequence/id` for nucleotide sequence; `info` and UniProtKB for protein sequence. Python returns a list of alternating FASTA header/sequence lines or `None`. | Gene nucleotide sequence is genomic, not transcript CDS. Never apply HGVS `c.` positions to that sequence without obtaining the exact versioned transcript CDS. Protein isoforms are distinct records. |
18| `pdb` | Structure text from `files.rcsb.org/download/{id}.pdb` or `.cif`; metadata from `data.rcsb.org/rest/v1/core/{resource}/{id}` with an assembly/entity/chain identifier where required. | Prefer explicit `resource="mmcif"`; default PDB retrieval can fall back to mmCIF. Save with the corresponding extension. No pagination for one object. |
19| `g2p` | Public `GET https://g2p.broadinstitute.org/api/gene/{gene}/protein/{accession}/protein-features`, `/gene-transcript-protein-isoform-structure-map`, or `/{alternative_isoform}/alignment`; TSV parsed to DataFrame. | No pagination. Missing one identifier triggers a UniProt lookup; gene-only resolution picks the first reviewed human match. Supply the exact pair for reproducibility. `residues` filters locally after download. Invalid arguments can raise `ValueError`; network/unknown-pair failures return `None`. |
20| `blast` | NCBI `https://blast.ncbi.nlm.nih.gov/Blast.cgi`, submitting `CMD=Put`, then polling the RID with `CMD=Get`; gget parses the returned hit table. | Search job, not a synchronous database lookup. `limit` controls hit count, not database completeness. Respect [NCBI remote BLAST usage guidance](https://blast.ncbi.nlm.nih.gov/doc/blast-help/developerinfo.html); use local BLAST/DIAMOND for large batches. |
21| `blat` | UCSC `https://genome.ucsc.edu/cgi-bin/hgBlat` with sequence, type, assembly, and JSON output. Returns alignment rows. | Exact assembly matters; UCSC may throttle or return HTML errors. Coordinates/strand must be checked before mapping variants. No gget pagination. |
22| `muscle`, `diamond` | Local bundled/platform binaries; DIAMOND builds a database from supplied reference sequences. | MUSCLE writes `out` or prints alignment and returns `None`; no `save` argument. OpenMP runtime libraries may be required. DIAMOND `diamond_db` names the database to create/save; it does not replace the required `reference`. |
23| `elm` | `gget setup elm` downloads instances/classes/interaction-domain files from `elm.eu.org`; local regex and DIAMOND searches, with UniProt lookup when requested. | Returns `(ortholog_df, regex_df)`; short motif matches alone do not demonstrate function. Setup is a network download, not authentication. |
25The released `info`/`seq` adapter still uses **HTTP** for Ensembl REST. Public
26execution returned HTTP 500 here on 2026-09-30; the equivalent direct HTTPS POST
27also returned 500, so HTTP alone is not established as the cause. Treat this as
28a transport/service failure, not missing biological evidence. Check upstream
29availability and the [Ensembl REST API](https://rest.ensembl.org/) before retrying.
30No SDK transport patch is silently applied by this skill. UniProt search helpers
31prefer reviewed entries and retry without that restriction if none match; they
32do not follow search pagination links. `seq(isoforms=True)` therefore should not
33be treated as an exhaustive, release-frozen protein archive.

Reference, sequence, and structure services

ModuleTransport and result contractBoundaries
refReads Ensembl directory listings under ftp.ensembl.org/pub/ and ftp.ensemblgenomes.org/pub/; returns release/file metadata or links. CLI -d downloads with curl.Python has no download or out_dir parameter. Choose an explicit release; info/seq do not inherit that release. Non-vertebrate support excludes bacteria.
searchPublic MySQL (mysql-eg-publicsql.ebi.ac.uk, candidate ports 3306/5306/4157/3337/5316), with release discovery via Ensembl listings. Returns ensembl_id, gene_name, descriptions, biotype, synonym, url.Matches names/descriptions/synonyms by substring. limit=1 is not exact symbol resolution; require a unique exact symbol. limit is a local result cap, not a cursor.
infoEnsembl POST /lookup/id (ids, expand), plus UniProtKB search, NCBI Gene HTML parsing, and optional PDBe GET /pdbe/aggregated-api/mappings/ensembl_to_pdb/{id}.Returns a DataFrame indexed by query ID, with primary_gene_name/ensembl_gene_name, not gene_name. pdb_id may be a list. Preserve the index. Maximum Ensembl batch is 1000 IDs; versioned IDs are resolved against current data.
seqEnsembl /sequence/id for nucleotide sequence; info and UniProtKB for protein sequence. Python returns a list of alternating FASTA header/sequence lines or None.Gene nucleotide sequence is genomic, not transcript CDS. Never apply HGVS c. positions to that sequence without obtaining the exact versioned transcript CDS. Protein isoforms are distinct records.
pdbStructure text from files.rcsb.org/download/{id}.pdb or .cif; metadata from data.rcsb.org/rest/v1/core/{resource}/{id} with an assembly/entity/chain identifier where required.Prefer explicit resource="mmcif"; default PDB retrieval can fall back to mmCIF. Save with the corresponding extension. No pagination for one object.
g2pPublic GET https://g2p.broadinstitute.org/api/gene/{gene}/protein/{accession}/protein-features, /gene-transcript-protein-isoform-structure-map, or /{alternative_isoform}/alignment; TSV parsed to DataFrame.No pagination. Missing one identifier triggers a UniProt lookup; gene-only resolution picks the first reviewed human match. Supply the exact pair for reproducibility. residues filters locally after download. Invalid arguments can raise ValueError; network/unknown-pair failures return None.
blastNCBI https://blast.ncbi.nlm.nih.gov/Blast.cgi, submitting CMD=Put, then polling the RID with CMD=Get; gget parses the returned hit table.Search job, not a synchronous database lookup. limit controls hit count, not database completeness. Respect NCBI remote BLAST usage guidance; use local BLAST/DIAMOND for large batches.
blatUCSC https://genome.ucsc.edu/cgi-bin/hgBlat with sequence, type, assembly, and JSON output. Returns alignment rows.Exact assembly matters; UCSC may throttle or return HTML errors. Coordinates/strand must be checked before mapping variants. No gget pagination.
muscle, diamondLocal bundled/platform binaries; DIAMOND builds a database from supplied reference sequences.MUSCLE writes out or prints alignment and returns None; no save argument. OpenMP runtime libraries may be required. DIAMOND diamond_db names the database to create/save; it does not replace the required reference.
elmgget setup elm downloads instances/classes/interaction-domain files from elm.eu.org; local regex and DIAMOND searches, with UniProt lookup when requested.Returns (ortholog_df, regex_df); short motif matches alone do not demonstrate function. Setup is a network download, not authentication.

The released info/seq adapter still uses HTTP for Ensembl REST. Public execution returned HTTP 500 here on 2026-09-30; the equivalent direct HTTPS POST also returned 500, so HTTP alone is not established as the cause. Treat this as a transport/service failure, not missing biological evidence. Check upstream availability and the Ensembl REST API before retrying. No SDK transport patch is silently applied by this skill. UniProt search helpers prefer reviewed entries and retry without that restriction if none match; they do not follow search pagination links. seq(isoforms=True) therefore should not be treated as an exhaustive, release-frozen protein archive.

Raw lines 10 to 34
Runs code bin/hgBlat :21
35## Expression, association, and enrichment services
37| Module | Transport and output | Completeness and interpretation |
38| --- | --- | --- |
39| `archs4` correlation | `POST https://maayanlab.cloud/matrixapi/coltop`, JSON `id` and `count`; `rowids`/`values` become `gene_symbol`/`pearson_correlation`. | Human coexpression only; the `species` argument does not select mouse correlations. `gene_count` defaults to 100. No pagination. Correlation is not causation. |
40| `archs4` tissue | `POST https://maayanlab.cloud/archs4/search/loadExpressionTissue.php?search={symbol}&species={human|mouse}&type=tissue`; CSV becomes `id`, `min`, `q1`, `median`, `q3`, `max`. | Tissue labels are hierarchical IDs, not a `tissue` column. Bulk ARCHS4 values and Census counts are different measurements; do not compare their magnitudes as a shared scale. |
41| `cellxgene` | `cellxgene_census.open_soma` + `get_anndata`; `meta_only=True` reads the observation table instead. | Metadata rows are **cells**, not datasets. The gene filter is ignored in metadata-only mode. `is_primary_data=True` by default; use observation filters and a dated Census release. A small gene set can still select millions of cells. Raw-count QC/library normalization needs the full measured feature universe. |
42| `enrichr` human/mouse | Uploads a gene list via multipart `POST https://maayanlab.cloud/speedrichr/api/addList` (`list`, `description`); receives `userListId`. `GET /enrich` uses `userListId`, `backgroundType`. Custom background: multipart `POST /addbackground` -> `backgroundid`; `POST /backgroundenrich` with both IDs and library. | Each call submits the supplied genes to the public service. Response is a library-keyed array, normalized to `rank`, `path_name`, `p_val`, `z_score`, `combined_score`, `overlapping_genes`, `adj_p_val`, `database`. No pagination or automatic significance threshold. |
43| `enrichr` other species | `/{Fly|Yeast|Worm|Fish}Enrichr/addList` and `/enrich` at maayanlab.cloud. | Full species-specific library names required; shortcuts and custom backgrounds are unsupported. Mouse uses the human service; confirm library organism/identifier compatibility. `ensembl=True` and `ensembl_bkg=True` are needed for identifier conversion. |
44| `bgee` | `GET https://bgee.org/api/`, JSON `page=gene, action=general_info` resolves species, `action=homologs` gives orthologs; `page=data, action=expr_calls` returns expression calls. | Orthology accepts one gene; multiple expression IDs must belong to one species. The adapter does not expose pagination. Expression calls describe presence/confidence, not a differential-expression experiment. |
45| `opentargets` | Public `POST https://api.platform.opentargets.org/api/v4/graphql`, JSON `query`/`variables`. Diseases use `associatedDiseases`; drugs use `drugAndClinicalCandidates`; expression uses `baselineExpression`. | All filters are applied **locally after `limit`**. Expression fetches page 0 only, up to 3000 rows. Diseases/drugs/interactions omit explicit pages and therefore use server defaults. No automatic traversal; no claim of exhaustiveness even with `limit=None`. |
46| `cbio_search` | `bravado` client discovers `https://www.cbioportal.org/api/v2/api-docs`, reads `/studies`, then filters keywords locally. | Optional dependency: `gget setup cbio`. Missing dependencies can log an error and return `[]`; this is not proof of no studies. |
47| `cbio_plot` | Downloads public cBioPortal datahub text files and resolves Git LFS objects; caches files locally. Returns a boolean and writes figures. | Does not consume BLAST or AlphaFold output. Pin study IDs/data snapshots and record denominator/missing samples before interpreting heatmaps. |
49Open Targets disease output uses `score`, `disease.id`, `disease.name`; drug
50output uses `drug.name`, `drug.drugType`, `drug.maximumClinicalStage` (strings such
51as `APPROVAL`/`PHASE2`, not numeric phases). `score` is an overall association
52score, not a causal probability. Associated traits include phenotypes and
53measurements. Expression columns are `median/min/q1/q3/max/unit`,
54`tissueBiosample.*`, `celltypeBiosample.*`, `datasourceId`, `datatypeId`.
55Interactions use `intA`, `targetB.id`, `targetB.approvedSymbol`, `score`.
56The released CLI flag is singular `--filter` and has no OR flag, despite stale upstream manual wording.
57Fields that are entirely null are dropped; singleton lists can collapse to a
58scalar/dictionary. Inspect columns and types before joining or filtering.
60Sources: [Open Targets manual](https://scverse.org/gget/en/opentargets.html),
61[released query/normalization code](https://github.com/scverse/gget/blob/v0.30.8/gget/gget_opentargets.py),
62[Enrichr adapter](https://github.com/scverse/gget/blob/v0.30.8/gget/gget_enrichr.py),
63[Census manual](https://scverse.org/gget/en/cellxgene.html).

Expression, association, and enrichment services

ModuleTransport and outputCompleteness and interpretation
archs4 correlationPOST https://maayanlab.cloud/matrixapi/coltop, JSON id and count; rowids/values become gene_symbol/pearson_correlation.Human coexpression only; the species argument does not select mouse correlations. gene_count defaults to 100. No pagination. Correlation is not causation.
archs4 tissue`POST https://maayanlab.cloud/archs4/search/loadExpressionTissue.php?search={symbol}&species={humanmouse}&type=tissue; CSV becomes id, min, q1, median, q3, max`.Tissue labels are hierarchical IDs, not a tissue column. Bulk ARCHS4 values and Census counts are different measurements; do not compare their magnitudes as a shared scale.
cellxgenecellxgene_census.open_soma + get_anndata; meta_only=True reads the observation table instead.Metadata rows are cells, not datasets. The gene filter is ignored in metadata-only mode. is_primary_data=True by default; use observation filters and a dated Census release. A small gene set can still select millions of cells. Raw-count QC/library normalization needs the full measured feature universe.
enrichr human/mouseUploads a gene list via multipart POST https://maayanlab.cloud/speedrichr/api/addList (list, description); receives userListId. GET /enrich uses userListId, backgroundType. Custom background: multipart POST /addbackground -> backgroundid; POST /backgroundenrich with both IDs and library.Each call submits the supplied genes to the public service. Response is a library-keyed array, normalized to rank, path_name, p_val, z_score, combined_score, overlapping_genes, adj_p_val, database. No pagination or automatic significance threshold.
enrichr other species`/{FlyYeastWormFish}Enrichr/addList and /enrich` at maayanlab.cloud.Full species-specific library names required; shortcuts and custom backgrounds are unsupported. Mouse uses the human service; confirm library organism/identifier compatibility. ensembl=True and ensembl_bkg=True are needed for identifier conversion.
bgeeGET https://bgee.org/api/, JSON page=gene, action=general_info resolves species, action=homologs gives orthologs; page=data, action=expr_calls returns expression calls.Orthology accepts one gene; multiple expression IDs must belong to one species. The adapter does not expose pagination. Expression calls describe presence/confidence, not a differential-expression experiment.
opentargetsPublic POST https://api.platform.opentargets.org/api/v4/graphql, JSON query/variables. Diseases use associatedDiseases; drugs use drugAndClinicalCandidates; expression uses baselineExpression.All filters are applied **locally after limit**. Expression fetches page 0 only, up to 3000 rows. Diseases/drugs/interactions omit explicit pages and therefore use server defaults. No automatic traversal; no claim of exhaustiveness even with limit=None.
cbio_searchbravado client discovers https://www.cbioportal.org/api/v2/api-docs, reads /studies, then filters keywords locally.Optional dependency: gget setup cbio. Missing dependencies can log an error and return []; this is not proof of no studies.
cbio_plotDownloads public cBioPortal datahub text files and resolves Git LFS objects; caches files locally. Returns a boolean and writes figures.Does not consume BLAST or AlphaFold output. Pin study IDs/data snapshots and record denominator/missing samples before interpreting heatmaps.

Open Targets disease output uses score, disease.id, disease.name; drug output uses drug.name, drug.drugType, drug.maximumClinicalStage (strings such as APPROVAL/PHASE2, not numeric phases). score is an overall association score, not a causal probability. Associated traits include phenotypes and measurements. Expression columns are median/min/q1/q3/max/unit, tissueBiosample.*, celltypeBiosample.*, datasourceId, datatypeId. Interactions use intA, targetB.id, targetB.approvedSymbol, score. The released CLI flag is singular --filter and has no OR flag, despite stale upstream manual wording. Fields that are entirely null are dropped; singleton lists can collapse to a scalar/dictionary. Inspect columns and types before joining or filtering.

Sources: Open Targets manual, released query/normalization code, Enrichr adapter, Census manual.

Raw lines 35 to 64
65## Downloaded datasets and legacy modules
67- **COSMIC:** local TSV search after a separately licensed download. The adapter
68 authenticates the scripted download URL under
69 `https://cancer.sanger.ac.uk/api/mono/products/v1/downloads/scripted` with COSMIC
70 account credentials; `path` identifies project/release/GRCh version and
71 `bucket=downloads`. The JSON response supplies a signed download URL. Do not
72 log credentials or signed URLs. Use the interactive prompt or explicitly read
73 `COSMIC_EMAIL`/`COSMIC_PASSWORD` in Python; these names are conventions, not
74 automatic SDK environment-variable discovery. `cancer_example` is a public
75 taster exception. Record project, release, assembly, file checksum, and license.
76- **virus:** NCBI Datasets v2 `/virus/{taxon|accession}/{value}/dataset_report`
77 returns `reports` and `next_page_token`; gget iterates using `page_token` and
78 streams metadata. E-utilities `esearch.fcgi`, `epost.fcgi`, `efetch.fcgi` and the
79 NCBI datasets CLI provide discovery/history/sequence and cached-download paths.
80 An optional `api_key` increases applicable NCBI limits; it is not required for
81 public data. Some filters run locally after downloads. Restrict taxa/dates and
82 inspect command summaries, failed downloads, counts, and baseline/merge results.
83 Python uses `baseline_metadata`, `merge_results=True`; CLI uses `--baseline`
84 and `--merge-results`/`--no-merge`.
85- **8cube:** GET `/specificity`, `/psi_block`, `/gene_expression` at
86 `https://eightcubedb.onrender.com/`; CSV response, no exposed pagination or key.
87 Repeat the `gene_list` query parameter for each gene; block/expression additionally use
88 `analysis_level` and `analysis_type`. Python functions are `specificity`,
89 `psi_block`, `gene_expression` and require a list/tuple, not a bare gene string.
90- **mutate:** local sequence transformation. `c.` coordinates assume the supplied
91 sequence is the matching CDS; validate reference bases, transcript versions,
92 strand, and output length. It does not establish clinical/functional impact.
93- **alphafold:** deprecated, unmaintained wrapper since 0.30.7. Setup downloads
94 model/dependency assets; prediction uses local compute and reference sequence
95 resources. `jackhmmer_savedir` selects temporary storage. No prediction was
96 validated in this refresh; increased recycles do not guarantee accuracy.
97- **gpt:** deprecated, unmaintained wrapper using legacy
98 `openai.ChatCompletion.create` and dictionary response access. It is not
99 compatible with the modern OpenAI Python interface. Its model default is a
100 legacy string, not a current recommendation. No paid/authenticated calls were
101 made, and this skill does not recommend reinstalling an obsolete SDK.

Downloaded datasets and legacy modules

  • COSMIC: local TSV search after a separately licensed download. The adapter authenticates the scripted download URL under https://cancer.sanger.ac.uk/api/mono/products/v1/downloads/scripted with COSMIC account credentials; path identifies project/release/GRCh version and bucket=downloads. The JSON response supplies a signed download URL. Do not log credentials or signed URLs. Use the interactive prompt or explicitly read COSMIC_EMAIL/COSMIC_PASSWORD in Python; these names are conventions, not automatic SDK environment-variable discovery. cancer_example is a public taster exception. Record project, release, assembly, file checksum, and license.
  • virus: NCBI Datasets v2 /virus/{taxon|accession}/{value}/dataset_report returns reports and next_page_token; gget iterates using page_token and streams metadata. E-utilities esearch.fcgi, epost.fcgi, efetch.fcgi and the NCBI datasets CLI provide discovery/history/sequence and cached-download paths. An optional api_key increases applicable NCBI limits; it is not required for public data. Some filters run locally after downloads. Restrict taxa/dates and inspect command summaries, failed downloads, counts, and baseline/merge results. Python uses baseline_metadata, merge_results=True; CLI uses --baseline and --merge-results/--no-merge.
  • 8cube: GET /specificity, /psi_block, /gene_expression at https://eightcubedb.onrender.com/; CSV response, no exposed pagination or key. Repeat the gene_list query parameter for each gene; block/expression additionally use analysis_level and analysis_type. Python functions are specificity, psi_block, gene_expression and require a list/tuple, not a bare gene string.
  • mutate: local sequence transformation. c. coordinates assume the supplied sequence is the matching CDS; validate reference bases, transcript versions, strand, and output length. It does not establish clinical/functional impact.
  • alphafold: deprecated, unmaintained wrapper since 0.30.7. Setup downloads model/dependency assets; prediction uses local compute and reference sequence resources. jackhmmer_savedir selects temporary storage. No prediction was validated in this refresh; increased recycles do not guarantee accuracy.
  • gpt: deprecated, unmaintained wrapper using legacy openai.ChatCompletion.create and dictionary response access. It is not compatible with the modern OpenAI Python interface. Its model default is a legacy string, not a current recommendation. No paid/authenticated calls were made, and this skill does not recommend reinstalling an obsolete SDK.
Raw lines 65 to 102
103## Verification boundary
105Public reads in this review succeeded for ARCHS4 tissue/correlation, Open Targets
106all seven resources, RCSB mmCIF, Bgee orthology/expression, all three G2P resources,
107all three 8cube routes, cBioPortal search after installing bravado, UniProt single
108entry, NCBI viral accession metadata, and Ensembl release-110 links/search. Script tests mock service
109responses with released field names; they do not verify live availability.
110Ensembl REST failed as described above. A local MUSCLE smoke failed with
111`Bad CPU type in executable` on this arm64 macOS host: obtain a compatible local
112aligner rather than assuming the bundled binary works. Optional Census, DIAMOND,
113large viral/ELM/cBioPortal downloads, COSMIC authentication, and legacy prediction
114or generation are not covered by those public successes. A service error or
115partial response must stay distinguishable from a biological negative result.
117Cite [gget](https://doi.org/10.1093/bioinformatics/btac836) and the databases used.

Verification boundary

Public reads in this review succeeded for ARCHS4 tissue/correlation, Open Targets all seven resources, RCSB mmCIF, Bgee orthology/expression, all three G2P resources, all three 8cube routes, cBioPortal search after installing bravado, UniProt single entry, NCBI viral accession metadata, and Ensembl release-110 links/search. Script tests mock service responses with released field names; they do not verify live availability. Ensembl REST failed as described above. A local MUSCLE smoke failed with Bad CPU type in executable on this arm64 macOS host: obtain a compatible local aligner rather than assuming the bundled binary works. Optional Census, DIAMOND, large viral/ELM/cBioPortal downloads, COSMIC authentication, and legacy prediction or generation are not covered by those public successes. A service error or partial response must stay distinguishable from a biological negative result.

Cite gget and the databases used.

Raw lines 103 to 117