A SNP-centric database for the investigation of the human genome
© Riva and Kohane 2004
Received: 30 October 2003
Accepted: 26 March 2004
Published: 26 March 2004
Skip to main content
© Riva and Kohane 2004
Received: 30 October 2003
Accepted: 26 March 2004
Published: 26 March 2004
Single Nucleotide Polymorphisms (SNPs) are an increasingly important tool for genetic and biomedical research. Although current genomic databases contain information on several million SNPs and are growing at a very fast rate, the true value of a SNP in this context is a function of the quality of the annotations that characterize it. Retrieving and analyzing such data for a large number of SNPs often represents a major bottleneck in the design of large-scale association studies.
SNPper is a web-based application designed to facilitate the retrieval and use of human SNPs for high-throughput research purposes. It provides a rich local database generated by combining SNP data with the Human Genome sequence and with several other data sources, and offers the user a variety of querying, visualization and data export tools. In this paper we describe the structure and organization of the SNPper database, we review the available data export and visualization options, and we describe how the architecture of SNPper and its specialized data structures support high-volume SNP analysis.
The rich annotation database and the powerful data manipulation and presentation facilities it offers make SNPper a very useful online resource for SNP research. Its success proves the great need for integrated and interoperable resources in the field of computational biology, and shows how such systems may play a critical role in supporting the large-scale computational analysis of our genome.
Single Nucleotide Polymorphisms (SNPs) are an increasingly important tool for the study of the structure and history of our genome . The most common application of SNPs is in association studies, that look for a statistically significant association between SNP alleles and phenotypes (usually diseases), in order to pinpoint candidate causative genes . The power of association studies is a function of the number of SNPs used, and of their quality (defined here as the likelihood of the SNP locus actually being polymorphic in the population under study). For this reason, large databases of well-annotated SNPs have been developed, and are growing at an ever increasing rate.
In order to take advantage of the mass of known SNPs, now numbering almost five millions for the human genome alone, researchers need tools to easily and efficiently locate the desired SNPs, to evaluate their annotations, and to export them in formats suitable for subsequent analysis. This, in turn, requires large amounts of data from different sources to be integrated and analyzed. This is a challenging task even with the automated tools now at our disposal .
SNPper , developed by the Children's Hospital Informatics Program and the Innate Immunity PGA Project , aims at providing an integrated database of SNP-related data and a suite of online, user-friendly tools to query it. Since its initial public release , SNPper has grown from a simple repository of SNP data into a comprehensive resource for SNP analysis, through the integration of more information sources, better visualization tools and more powerful SNP evaluation methods. In this paper we focus on the organization, construction and content of the SNPper database, we describe the data retrieval, export and presentation features it offers, and we discuss how it may be used to support SNP-based research.
SNPper is built upon a relational database whose contents are the result of merging data from several well-established online resources, and of a post-processing step that produces additional annotations. In the following sections we will detail the data items that SNPper acquires from external databases, and we will describe how they are combined to provide an added value for the users.
The main source of data for SNPper is dbSNP , currently the largest public repository of SNP data . Out of the 7.7 million SNPs available in dbSNP build 118, the SNPper database contains the 4.8 million for which exact, unique position information is available in the latest release of the Human Genome assembly. The raw dbSNP data files are parsed to extract, for each SNP, its rs identifier, its alleles, its validation status, and the list of submissions. In dbSNP, a set of independent observations of the same polymorphism is represented by a RefSNP cluster, identified by a unique rs identifier. In turn, each independent submission of that SNP is described by a unique submission identifier (ss), a submitter handle, and a private SNP identifier. Knowing the list of submission for a SNP is especially important, since the number of independent observations of the same SNP is a good indicator of its quality. In particular, a SNP is considered validated by dbSNP if both of its alleles were observed a sufficient number of times by independent investigators using non-computational methods.
Even more important is the knowledge of the frequency of each allele of a SNP in different populations. The SNP Consortium  has recently made available a dataset providing frequency data for about 100,000 SNPs, in at least two different populations . This data, too, is parsed and stored in the SNPper database, and is presented to the user when available.
The second main data source used by SNPper is Goldenpath , the Human Genome browser developed at UCSC . Goldenpath provides the entire contents of its annotation database, in addition to the full human genome sequence, as a collection of plain text files, in easy to parse formats. SNPper takes full advantage of this feature to populate tables containing the absolute chromosomal location of SNPs and known genes. The annotation available for each gene includes the exact position of all its exons and introns, and of its coding sequence. Combined with a local copy of the human genome, this data allows SNPper to retrieve the DNA sequence of any gene or portion of a gene, for example to automatically translate its coding sequence into the corresponding amino acid sequence.
Finally, other sources of information that are parsed to populate the database include LocusLink , to fill in some of the gene annotation fields, GeneOntology , to determine the set of all GeneOntology classes each gene belongs to, and SWISS-PROT  to gather information about protein domains. This data is all exploited to enrich SNP annotation as described in the next paragraph. Pointers to these and other databases (e.g. OMIM, Unigene) are also stored by SNPper to make it easier for the user to retrieve more information about any gene of interest.
Since data on genes and on SNPs is obtained from different sources, a post-processing step is used to integrate them, and to generate some additional annotations. The procedure starts by examining one gene at a time, and collecting all the SNPs that lie on or close to it (up to a maximum distance of 10,000 bp). The number of SNPs thus obtained is stored in the genes table, in order to allow the user to easily evaluate the SNP density of each gene. At the same time, a record is added to a separate table to detail the association between the SNP and the gene. Since a SNP may belong to more than one gene (due to overlapping genes, or more commonly to multiple isoforms of the same gene), there may be multiple records for the same SNP. In addition to the SNP and gene identifiers, this record stores the "role" of the SNP with respect to that gene (e.g. intronic, exonic, coding), its relative position (distance from the starting ATG of the gene) and, for coding SNPs, the amino acid change they cause. This last field is computed by translating the coding sequence for each gene obtained from Goldenpath, and applying the nucleotide change induced by each SNP it contains.
Some basic quality control tests are performed during this phase. For example, we check whether the base found in the Goldenpath genome sequence at the SNP position matches one of its two alleles, or whether the translation of the coding sequence is correct (approximately 10% of the genes in Goldenpath fails this check, due to the inaccurate positioning of their exons). In general, though, the agreement between SNPper's two main data sources (dbSNP and Goldenpath) is very good, which means that the annotations we derive from them are accurate and consistent. Further quality control procedures, including ensuring consistency with other SNP resources, are beyond the scope of this work.
SNPper provides users with the ability to add new, private SNPs to its database. This is accomplished by specifying a gene name and uploading two files: the DNA sequence, in FASTA format, that the SNPs were located in, and a tab-delimited text file containing the alleles of each SNP and its position relative to the start of the reference sequence. SNPper will then determine the absolute position of each SNP, by aligning its flanking sequence with the sequence for the gene in question, and will store the new SNP records into its database. Once there, they will be displayed by SNPper together with the preexisting SNPs. SNPs added in this way are considered private, so that they are only visible to the user who submitted them, but can optionally be made public.
SNPper offers several different ways of retrieving SNPs, reflecting the different purposes the SNPs might be used for. In the simplest case, SNPs can be retrieved by specifying one or more rs or ss identifiers, if known. Another common query retrieves a set of contiguous SNPs belonging to a specific region of a chromosome, specified either through an absolute position range or through the name of a cytogenetic band. To support gene-oriented studies, SNPper can generate the set of SNPs on or around a gene (up to a user-specified maximum distance), or a set of genes. Genes can be specified using their HUGO name, or through their Genbank, Locuslink, OMIM, or Unigene identifiers. A set of genes of interest, in turn, can be specified by position (i.e., all the genes in a chromosome region), or through a GeneOntology class. This last feature makes it possible to study sets of SNPs that are potentially associated with a biological process of interest, rather than being linked by position.
In all cases, the result of a query is a SNPset, a data structure that holds a collection of SNPs. Different types of SNPset exist, according to the type of query that produced them, and different operations are defined on them. For example, for a SNPset containing contiguous SNPs it makes sense to measure the SNP density, and SNPper provides a function to reduce the number of SNPs it contains while maintaining a uniform spacing. For a SNPset generated from a set of genes, this operation would not make sense (since the SNPs may be spread on different chromosomes) and is therefore not available. In general, a SNPset represents a set of SNPs that was produced by a single query, and that can be manipulated and analyzed as a whole. SNPsets are only visible to the user that generated them, and are persistent data structures: they are stored in the server as long as they are used, and are automatically removed after a sufficient amount of time has passed since they were last accessed. The user may also choose to save a SNPset, in which case it will be available in future sessions.
SNPsets are displayed using tables that list the name of each SNP, its position, its alleles, and other information dependent on the specific SNPset type. SNPsets that contain a large number of SNPs are optionally displayed in abbreviated form for performance reasons. The table also contains links to perform the different commands available on a SNPset, such as saving it, exporting it (see next section) and refining it. The SNPset refinement operation, in particular, allows the user to "filter" the SNPs it contains according to several different criteria: general properties (e.g. validation), position relative to a gene (e.g. to select only exonic SNPs, or promoter SNPs), frequency or heterozygosity, submitters (to select only SNPs from specified submitters, or with a minimum number of distinct submitters), or average distance (in order to reduce the number of SNPs while maintaining a uniform spacing). In all cases, the result is to hide those SNPs that don't satisfy the user's criteria: while still part of the SNPset, these SNPs are no longer visible, and will not be considered in any analysis, display or export operation.
SNPper also provides an alternative method for retrieving SNP information in XML format. Our system implements a Remote Procedure Call (RPC) interface, that allows other programs to send ad hoc HTTP requests and receive in response an XML document rather then an HTML page . This feature is meant to increase the value and usefulness of the SNPper database, by allowing alternative systems using different user interfaces to be built on top of the same underlying data
Several other public SNP databases exist, each with its own strengths and limitations. In this section we briefly review the most important ones, pointing out their characteristic features and comparing them with what is offered by SNPper.
The HGVBASE database  is focused on very accurate manual curation and annotation of the available SNP data . Therefore, it is smaller than dbSNP in size, but its data is extremely useful for researchers interested in exploring the genetic component of human phenotypic variation. It provides extensive annotations for its SNPs, and several search options including the ability to look for SNPs in a user-supplied genomic sequence that is automatically aligned to the human genome.
ALFRED  and JSNPs  are two smaller SNP databases that aim at providing accurate frequency information. JSNPs focuses on the Japanese population, while ALFRED provides data on a large number of very diverse populations from the whole world in order to enhance their differences in frequency and to facilitate the study of haplotypes . Both sites offer a relatively small number of SNPs, but the frequency data they provide for them is extremely important. JSNPs offers a useful graphical chromosome browser and the ability to display sequencer traces for its SNPS. On the other hand, data export features are somewhat limited in both systems.
The GeneSNPs  site integrates gene, sequence and SNP data into highly annotated gene models. It provides extensive visualization and data export features, including a way of displaying SNPs within the genomic sequence of the gene they belong to similar to the one available in SNPper. Compared to SNPper, its main limitation is that it only contains SNPs on a small number of genes related with susceptibility to environmental exposure.
EnsMart  is a very comprehensive data mining tool to extract data from the Ensembl database. Ensembl is by far the most exhaustive and sophisticated database of all the ones described here. It provides approximately the same set of data items on SNPs as SNPper, with the main difference being that it uses its own database of genes rather than being linked to Goldenpath. Although its interface is very powerful and effective, it is not specifically tailored for the needs of SNP-based research; for example, it does not provide ways to generate sets of SNPs having a desired average spacing, as is instead possible with SNPper.
Features that are unique to SNPper are mainly related to the management of SNPsets and to its interoperability features. SNPper is the only resource giving users the ability to manipulate, refine, save and export SNPsets as a whole, and to allow creating sets of SNPs through complex queries (such as the one using GeneOntology classes described in section 4.a). Also, to our knowledge, SNPper is the only SNP resource that provides full access to its database as machine-readable XML files through a Remote Procedure Call interface, and that allows the user to upload a set of private SNPs to its database and to analyze or display them through its standard interface.
The main purpose of SNPper is to integrate and make available as a single, consistent resource a large amount of annotation data about Single Nucleotide Polymorphisms in the human genome. This was accomplished by combining the information available in several public online resources, and creating a local database that is accessible through a web-based front-end. The resulting system supports different forms of SNP-based research, providing the required information for each case: from SNP localization (in genes or in arbitrary genomic regions) to SNP roles in genes (e.g. to restrict the analysis to coding SNPs), to population-specific frequency information.
SNPper is an important and widely used SNP resource, receiving several thousand hits per day and counting over 2,000 registered users. It also constitutes an integral component of an entirely automated data pipeline for SNP discovery and analysis developed by the Innate Immunity PGA project. We take its success as proof that there exist a great need for tools that integrate biomedical information from different sources, offering flexible data visualization and export functions, and promoting interoperability with other systems.
Future work on SNPper will proceed in two main directions. On the application side, we will provide a wider range of analysis tools aimed at evaluating and characterizing SNPs in terms of their potential effects on genes and genomic regulatory elements. These tools will be tightly integrated with SNPper, allowing for automated, large-scale SNP analysis.
On the infrastructure side, we will increase the amount of data offered by SNPper by integrating more external databases. Additional information, such as genotypes, allelic frequencies, and the ancestral allele of SNPs, will be added to the database as it becomes available. We will also strive to automate as much as possible the construction and updating of the database, since keeping the local database up to date and synchronized with the multiple data sources it is built on currently requires frequent manual updates and ad-hoc changes to the import procedures, whenever the data formats of the external resources change. Finally, we are planning to extend SNPper to include information about SNPs in other organisms besides human, starting with the mouse.
The SNPper database is implemented using the MySQL relational database management system , while the application, including the web interface, was entirely developed in Common Lisp. The system runs on two GNU/Linux machines (one hosting the application and one for the database), and can be accessed at http://snpper.chip.org/. Its use is free for academic and research purposes.
This work was supported by grant U01-HL66795 from the National Heart, Lung and Blood Institute of NIH. We are grateful to the staff of the Children's Hospital Informatics Program and of the Innate Immunity PGA project for their feedback and constant encouragement.
This article is published under license to BioMed Central Ltd. This is an Open Access article: verbatim copying and redistribution of this article are permitted in all media for any purpose, provided this notice is preserved along with the article's original URL.