Clinvar Database
Google DeepMindOfficialPublished by Google DeepMind
- Skill
- Tool integration
- Science and research
- Apache-2.0
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
ClinVar is the primary consensus record for clinical classifications of human genomic variations. This skill provides a Python-based interface to interact with the NCBI ClinVar database, allowing users to search for variant interpretations, retrieve clinical evidence, and screen for pathogenicity labels like Pathogenic, Benign, or VUS. It includes robust handling for rate limiting and complex XML parsing, ensuring reliable data retrieval for genomic research and clinical benchmarking.
What it does
- Search for genomic variants using gene symbols, genomic coordinates, or clinical attributes.
- Retrieve clinical significance labels and review status (star ratings) for specific variants.
- Fetch detailed clinical evidence, including clinician rationales and assertion criteria.
- Count matching variants for a given query to gauge result set size.
- Extract precise genomic coordinates (GRCh38) and associated phenotype data.
- Support complex queries using NCBI Entrez search syntax.
When to use it
- When you need to determine the clinical significance of a specific human genomic variant.
- When you need to find 'hard positive' benchmark controls for genomic analysis.
- When you need to access clinician notes and assertion rationales for a variant classification.
- When you need to identify conflicting interpretations for a variant across different laboratories.
- When you need to retrieve HPO terms or condition names associated with a variant.
Advantages
- Automated pagination and rate-limit handling for large-scale data retrieval.
- Standardized JSON output for easy integration into downstream analysis pipelines.
- Robust parsing of complex NCBI XML schemas via a dedicated wrapper script.
- Supports triangulation methods to ensure structural variants are not overlooked.
- Provides clear workflows for both quick screening and deep-dive evidence gathering.
Usage examples
- “Find all pathogenic variants in the BRCA1 gene.”
- The agent uses the search command with the query 'BRCA1[gene] AND pathogenic[clinsig]' to retrieve a list of variant IDs, then fetches summaries for those IDs.
- “Get the clinical evidence and rationale for ClinVar variant 12345.”
- The agent executes the evidence command for the specified ID to return a detailed report including submitter notes, citations, and allele information.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/google-deepmind/clinvar-database/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip clinvar-database.zip -d .agents/skills
Documentation by Google DeepMind
ClinVar Database
Prerequisites
uv: Read theuvskill and follow its Setup instructions to ensureuvis installed and on PATH.User Notification: If .licenses/clinvar_database_LICENSE.txt does not already exist in the workspace root directory then (1) prominently notify the user to check the terms at https://www.ncbi.nlm.nih.gov/clinvar/, then (2) create the file recording the notification text and timestamp.
.envfile: Make sure the.envfile exists in your home directory. Create one if it does not exist.NCBI_API_KEY(optional): Raises the NCBI rate limit from 3 to 10 requests/second. The skill works without it, but a key is recommended if the user plans many queries or encounters a 429 error. You can register for a key for free at https://www.ncbi.nlm.nih.gov/account/settings/. You MUST use the safe credentials protocol in thecredentialsskill to check for and request this key if this skill looks relevant to the user's request.
Overview
ClinVar is the primary consensus record for clinical classifications of human genomic variations. It provides the "clinical ground truth" for pathogenicity labels (Pathogenic, Likely Pathogenic, Benign, VUS) based on assertions from global laboratories.
When to Use
Use when you need to:
Find the current clinical significance and star rating (review status) for a specific variant.
Fetch clinician notes, assertion criteria, or rationales for previous clinical laboratory classifications.
Retrieve the preferred condition name and associated HPO terms for a specific variant.
Find a list of variant controls (e.g., "Find all Pathogenic variants in the HBB gene within 50bp of a signal").
Check for conflicting interpretations for a given variant and identify the organizations submitting each classification.
Do NOT use when you need to:
Find specific allele frequencies in global populations (use gnomAD).
Describe the normal biological role of a protein and typical inheritance patterns (use OMIM).
Predict mechanistic effects of novel mutations, like frameshifts or exon skipping (use AlphaGenome).
Find recommended surveillance schedules for patients with a pathogenic variant (use GeneReviews).
Generate or view 3D structural models of affected proteins (use PDB / AlphaFold).
Quick Start
ClinVar queries are executed via a robust Python wrapper script to handle strict rate limiting and XML/JSON parsing.
Example: Search for BRCA1 variants
uv run scripts/clinvar_api.py search --query "BRCA1[gene]" --output results.jsonCore Rules
Retmax Constraint: The search command defaults to
--retmax 200. For any "List all" or gene-wide request, you MUST explicitly set--retmaxhigher (e.g., 1000) to ensure data completeness.Use the Wrapper: Prefer the wrapper script for standard queries. It handles rate limiting, retries, and the complex XML parsing for you. If the script's parsed output does not contain the specific fields you need, you may modify the script or query the NCBI E-utilities API directly — but be aware that the raw XML schemas are complex and vary between record types.
If the rate limit is hit, the script will throw a clear error. You MUST use the safe credentials protocol in the
credentialsskill to check for and request theNCBI_API_KEYto help the user add it to their.envfile.Notification: If this skill is used, ensure this is mentioned in the output.
Utility Scripts
1. count — Count Matching Variants
Purpose: Check how many variants match a query without fetching IDs. Use to
decide whether a full search is warranted.
Arguments:
--query: (Required) NCBI Entrez search query string.--output: (Required) Output JSON file path.
Example: uv run scripts/clinvar_api.py count \ --query "TP53[gene] AND \"uncertain significance\"[clinsig]" \ --output count.json Output:
{"total_count": <int>}
2. search — Search Variants
Purpose: Identify variants based on genomic location, gene symbols, or clinical attributes using NCBI Entrez search syntax. The search command automatically paginates through all matching results to ensure complete, deterministic retrieval.
# Fetch ALL matching variants (default behavior)
uv run scripts/clinvar_api.py search \
--query "BRCA1[gene]" --output results.json
# Search by Chromosome and Position Range
uv run scripts/clinvar_api.py search \
--query "11[chr] AND 5225000:5226000[chrpos]" --output results.json
# Combine terms using Entrez syntax
uv run scripts/clinvar_api.py search \
--query "HBB[gene] AND pathogenic[clinsig]" --output results.json
# Cap results at 50
uv run scripts/clinvar_api.py search \
--query "TP53[gene]" --retmax 50 --output results.jsonArguments:
--query: (Required) NCBI Entrez search query string.--retmax: Maximum total number of variant IDs to return. Default is 0, which means "fetch all matching results." Set to a positive integer to cap the result set.--page_size: Number of IDs to fetch per API request (default: 500, max: 10000 per NCBI limits).--output: (Required) Output JSON file path.
Output: A JSON object containing:
total_count— Total number of matching variants in ClinVar.fetched_count— Number of IDs actually retrieved.variant_ids— List of ClinVar Variation ID strings.
3. summary — Get Interpretation Summary
Purpose: Retrieve top-line clinical significance labels, star ratings (review status), and basic phenotype data for rapid variant screening.
# Get summary for one or more Variation IDs
uv run scripts/clinvar_api.py summary \
--variant_ids 12345 67890 --output summary.jsonArguments:
--variant_ids: (Required) One or more ClinVar Variation IDs.--output: (Required) Output JSON file path.
Output: A JSON list of summary objects, each containing:
variant_id,title,clinical_significance,review_status,last_evaluated,phenotypesgenes— list of{gene_id, symbol, strand}variation_type— e.g., single nucleotide variant, Deletion, Insertionmolecular_consequences— list of strings (e.g., ["missense variant",
"nonsense"])
4. evidence — Get Clinical Evidence
Purpose: Fetch the full clinical record for a single variant, including free-text clinician rationales, assertion methods, and specific submitter notes.
# Get full evidence for a single Variation ID
uv run scripts/clinvar_api.py evidence \
--variant_id 12345 --output evidence.jsonArguments:
--variant_id: (Required) A single ClinVar Variation ID.--output: (Required) Output JSON file path.
Output: A JSON object containing:
variant_idallele_info—{chromosome, position_start, position_stop, reference_allele, alternate_allele, cytogenetic_band, dbsnp_rsid}(GRCh38 preferred)conditions— list of{name, medgen_cui, omim_id, orphanet_id, hpo_terms}functional_consequences— list of{value, sequence_ontology_id}structural_variant_details—{outer_start, inner_start, inner_stop, outer_stop, copy_number}(present only for CNVs, otherwise null)citation_references— list of PubMed IDs cited in the global "Citations" sectionsubmissions— list of per-submitter records, each containing:submitter_name,classification,curator_notes,assertion_criteriadate_last_evaluated— when the submitter last reviewed the classification
Typical Workflows
Count-First Workflow (Recommended)
For large or unknown result sets, use count first to decide whether to
proceed, then search (which auto-paginates and returns total_count /
fetched_count), then summary to screen.
# Step 1: Gauge size (optional — search also returns total_count)
uv run scripts/clinvar_api.py count \
--query "HBB[gene] AND pathogenic[clinsig]" --output count.json
# Step 2: Fetch all variant IDs (auto-paginates)
uv run scripts/clinvar_api.py search \
--query "HBB[gene] AND pathogenic[clinsig]" --output ids.json
# Step 3: Get summaries (extract variant_ids from search output)
uv run scripts/clinvar_api.py summary \
--variant_ids 12345 67890 --output summary.jsonDeep Dive: search → evidence
When you need the full clinical picture for a specific variant — including
submitter rationales, PubMed citations, ontology-linked conditions, and allele
coordinates — use evidence.
uv run scripts/clinvar_api.py evidence \
--variant_id 12345 --output evidence.jsonWorkflow: Robust Variant Discovery (Triangulation)
ClinVar metadata is inconsistent. To fulfill "List all" requests, do not rely on a single filter. Perform the following in a single turn and merge results:
Search by exact label (e.g.,
"3 prime UTR variant"[molecular_consequence]).Search by HGVS nomenclature pattern (e.g.,
c.*).Search by genomic coordinate range (using
[chrpos]).
This "triangulation" ensures structural variants with missing labels are not overlooked.
Verifying Coding vs. Non-Coding Status via HGVS
molecular_consequences alone can be ambiguous (e.g., splice donor variant
appears in both coding and non-coding contexts). Always cross-check the title
field for HGVS patterns:
c.-…— 5' UTR (non-coding)c.*…— 3' UTR (non-coding)c.123+N/c.123-N— intronic (non-coding)p.Trp146Argetc. — protein effect (coding)
A variant with UTR/intronic HGVS and no p. annotation is non-coding, even with
splicing labels. Conversely, any p. annotation indicates a coding effect.
ClinVar Metadata Reference
3' UTR
Search String:
"3 prime UTR variant"[mol_consequence]HGVS:
c.*
5' UTR
Search String:
"5 prime UTR variant"[mol_consequence]HGVS:
c.-
To find "high-confidence" variants or expert-reviewed consensus, use the
review_statusfilter. This is the most efficient way to distinguish between single-laboratory assertions and panel-reviewed ground truth.
When to Use Which Fields
Quick pathogenicity label — Use
summary→clinical_significanceGene symbol and strand — Use
summary→genesVariant type (SNV, del, etc.) — Use
summary→variation_typeProtein-level effect — Use
summary→molecular_consequencesGenomic coordinates (GRCh38) — Use
evidence→allele_infoLinked conditions (ontology) — Use
evidence→conditionsSO functional consequence — Use
evidence→functional_consequencesCNV breakpoints/copy number — Use
evidence→structural_variant_detailsPubMed references — Use
evidence→citation_referencesDate of last lab review — Use both →
last_evaluatedClinician rationales — Use
evidence→submissions[].curator_notes
Retrieving Genomic Coordinates (Default HG38/GRCh38)
To get precise genomic coordinates in the format <chrom>:<pos>:<ref>><alt>
(e.g., chr5:70951945:G>A), you must use the evidence command, as these
details are not available in the summary output.
You MUST always include genomic coordinates in the format
<chrom>:<pos>:<ref>><alt> when listing or presenting variants, even if not
explicitly requested by the user. If coordinates are missing from the summary,
use the evidence command or dbSNP fallback to retrieve them.
Fetch Evidence: Use
uv run scripts/clinvar_api.py evidence --variant_id <ID> --output evidence.json.Extract VCF Attributes: The
evidencecommand parses the XML. Extract:Chromosome:
ChrPosition:
positionVCF(orstart)Ref:
referenceAlleleVCF(orreferenceAllele)Alt:
alternateAlleleVCF(oralternateAllele) from theSequenceLocationelement withAssembly="GRCh38".
Fallback for Imprecise Coordinates (Gene Range): ClinVar often returns the
full gene range for non-coding variants. If the extracted coordinates correspond
to the gene range instead of a specific position, use the dbsnp-database skill
to resolve the precise coordinates using the dbsnp_rsid or HGVS title: 1.Check
for dbsnp_rsid in the evidence output. 2. Run uv run scripts/dbsnp_cli.py resolve-rsid {rsid} to get precise GRCh38 coordinates. 3. Format as
<chrom>:<pos>:<ref>><alt> using the SPDI or HGVS data from dbSNP.
Structural Variant Note
The structural_variant_details field is only populated for copy number
variants (CNVs). For standard SNVs and small indels this field will be null.
Use the allele_info fields (position_start, position_stop,
reference_allele, alternate_allele) instead.
CNV / Large Deletion Note
Large copy-number variants (CNVs) frequently have empty
molecular_consequences. If a variant title mentions "del" and coordinates
overlap your target region, it is relevant regardless of missing labels.
Obtaining and Using an API Key
You can register for a key for free at
https://www.ncbi.nlm.nih.gov/account/settings/. You MUST use the safe
credentials protocol in the credentials skill to check for and request this
key if this skill looks relevant to the user's request.
Best Practices
Always use
uv runto executepython.If
jqis unavailable pivot immediately to using Python one-liners for processing JSON (e.g.,uv run python3 -c "import json; ...").Use
countbeforesearchto understand the result set size.The
searchcommand fetches all results by default and includestotal_countandfetched_countin the output — always verify these match to confirm complete retrieval.Entrez results are unsorted. To order by date, fetch all results and sort locally by
last_evaluated.
Common Mistakes
Attempting to parse the E-utilities XML yourself — Always use the provided
clinvar_api.pyclient which handles the unpredictable XML schemas robustly.Getting HTTP 429 Too Many Requests — The client throws an exception telling you to pause. You MUST use the safe credentials protocol in the
credentialsskill to check for and request theNCBI_API_KEYto help the user add it to their.envfile, then retry.Sending raw DNA sequences to the API — The API expects HGVS nomenclature, RS IDs, or proper Entrez coordinate syntax (
11[chr] AND 1234[chrpos]), not raw ATCG strings.For synonymous or non-coding variants — HGVS nomenclature (e.g., CAPN3 AND "c.551C>T") is more reliable than coordinate searches ([chrpos]), as many ClinVar records for these types lack precise genomic mappings.
Case sensitivity in molecular consequences — ClinVar returns mixed-case strings. Always use case-insensitive matching (
.lower()) when filtering.Parsing
searchoutput as a bare list —searchreturns a JSON object withtotal_count,fetched_count, andvariant_ids— not a bare list.
Files
- ATTRIBUTION.mdAdded by AutoGineer914 B
- LICENSELicence file added by AutoGineer11.1 KiB
- SKILL.md15.4 KiB
- references/citation.bib1.1 KiB
- scripts/clinvar_api.pyScript23.8 KiB
LICENSE
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an API key, Needs Python
Security
What our scanner noticed· Low risk
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Google DeepMind
- Publisher
- Google DeepMind (Official)
- Source
- google-deepmind/science-skills · skills/clinvar_database · commit 4de6786
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Google DeepMind.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download clinvar-database.zip