Pedserve is a powerful pedigree database system for the web.
It has many advanced features, such as full-text and similarity searching, rapid online computation of inbreeding and relationship coefficients (for trial pedigrees), highlighting of common/repeat ancestors, rapid navigation between related records e.g. to list an individuals offspring, grandchildren, litters, common ancestors, ancestors blood%, etc. For the site administrator the system provides a full complement of admin tools including online management of user logins and viewing + searching of history logs.
Pedserve can run as an 'open system', where there are no user access controls, or it can implement access controls on a user by user basis, with full recording of all activity. Individual user access can be restricted by expiry date, login IP address, and by the number of accesses over any given period, including any combination of these. The system also includes security measures to attempt to detect automated 'harvesting' of pedigree data and can automatically suspend 'users' who do this.
Pedserve runs as part of your Linux-hosted web site. It is written mainly in Perl and uses the well respected MySQL database system. It is easy to integrate it into your existing website, as long as it is hosted on a web host supporting the LAMP platform (as most are these days).
Want to try it? Check out our Demo Database Web Site where you can test out the product in all of its various editions, both as an end-user and administrator.
The system is very configurable. It can be customized in various ways ranging from simply adding user defined fields (fully searchable, of course), or user defined records (also fully searchable), or changing the visual appearance using the stylesheet, through to advanced customizations such as adding custom record and/or field highlighting and customizing Perl code through predefined hooks in the scripts.
Pedserve is not free software. We are offering a professional product, with professional support. For the terms of the Pedserve license, please see the EULA. It is available in several different editions to suit different needs and budgets. In addition to selling software licenses we offer consultancy - to help you install and customize the system to suit your own specific needs. For product pricing details please click here.
One of the first sites using Pedserve is the Standfast Data Golden Retriever Database. This fabulous database contains almost 500,000 Golden Retriever pedigrees going right back to the origins of the breed. Launched at the end of 2006, and now with some 1000 members, this site is growing rapidly.
Pedserve continues to be actively developed, and more features will be added. We welcome your suggestions!
Now, on to some of the features in greater detail.
IMPORTANT NOTE: the Standard and Professional editions of Pedserve do not include all the features listed. For full details of the differences between the editions please click here.
- Pedserve uses the MySQL database system to store and manage your pedigree data. As such searches are often incredibly fast, and there is, effectively, no significant limit to the size of your database. The system scales easily to handle databases with millions of pedigrees.
- It is simple to host multiple pedigree databases (e.g. for separate breeds).
- The system is not specific to dogs, cats, horses, or any single animal type. You can customize the terminology used to tailor it to your animal type. I.e. 'Animals' may be 'Dogs'. 'Children' may be 'Puppies', etc.
- In its simplest form each pedigree database comprises a single table containing one record per animal. By default each animal record include name, sex, date of birth, sire & dam, and, optionally, photo, thumbnail, front and after title fields. There may be additional tables containing litter, family and inbreeding information.
- It is very easy to add user-defined fields to any of these tables.
- The system directly supports text, date, numeric and boolean fields, all of which can be made searchable, and all can be used for ordering records, and (of course) displayed. This applies to both the pre-defined fields, and any user-defined fields you add.
- You can also add user-defined records - tables containing information related to the animals - such as show records, or health records. As you would expect, all these tables are fully searchable, just like the animals table.
- We provide a conversion program for preparing your data for loading into the database. This takes your data, in the form of comma or tab separated text files (.CSV or .TXT) and generates files suitable for direct loading into the database. It also handles user defined fields and user defined tables. It can also automatically generate data for the optional litter and family tables, and can pre-compute inbreeding coefficients, relationship coefficients, and related data for the inbreeding tables. Inbreeding and related data may be generated for varying (i.e., multiple) depths of ancestry (#generations). The inbreeding coefficient computation is very fast, and is multi-threaded in order to take full advantage of todays advanced multi-core processors. Currently, this program is supplied as an executable for Windows. Click here for further information about data preparation.
- Search on any field, not just by name. This includes non-text fields - such as numeric, date and boolean fields.
- Text field searches can be against the whole field (exact matching), or can use wildcards to match any single character (?) or group of characters (*).
- Text fields can also provide full text searching. This lets you search by whole words - to search for records where a given field contains any one or more of a given list or words, or all words, or a phrase. E.g. you might want to search for all animals whose name include the word 'Bonzo'.
- Two types of similarity search for text fields are also provided. The 'Double Metaphone' search provides phonetic, or 'sounds like' searches - to search for records where a given field 'sounds like' something. Separately, we provide a 'Levenshtein distance' search to search for similar spellings, which can be used to find misspellings of a name.
- Text fields can be searched using regular expressions - a powerful pattern matching 'language'.
- Date fields can be searched for dates relative to the current date. E.g. this lets you search for animals born, say, within the past 12 months.
- Numeric fields can be searched in the obvious way - e.g. to search for animals with more than 20 offspring, or, say, to search for animals with a 16G inbreeding coefficient greater than 20%.
- The system can provide both a basic and an advanced search screen, separately for each record type.
- With the basic search screen, the user is presented with a single search box ('google' like) where he/she enters text that is matched against one or more specific fields. E.g. you might configure this to search against name and registration number. Sample
- With the advanced search screen, the user can enter multiple searches against specific fields, using specific search methods. When multiple searches are entered he/she can choose whether all conditions must apply or just any one ('AND' or 'OR'). Sample
- With the advanced search screen users can search on criteria applied to records given by 'foreign' fields. A 'foreign field' means a field in a record that is indirectly referenced by the records you want to locate. E.g. to search for all animals born to sires whose name starts with 'Arripay'. The 'foreign field' in this case is the name field - the system is searching for records where the name field starts with 'Arripay'. But, instead of returning those records, what it then does is locate animals whose sire is one of the matching records. In database pseudo-code, this is like saying
'select ... from animal ... where animal.sireid = sire.id and sire.name=...'. A more complex example might be 'search for animals that are less than 10 years old, have 1 or more offspring, and where either grandsire has a given genetic fault'. Or, search for animals where either grandsire is a carrier for a given genetic fault. This is a very powerful technique and can be used to make complex, specific queries
of the database.
- You can customize the query screens by adding 'shortcut query' buttons. These allow common searches to be done by a single click of a button. E.g. to view all animals, or to view all champions, or to view all animals born in the last 6 months, etc. Sample
- Search results are, by default, displayed in the way you'd expect - as a table with one row per record and separate columns for the hits. Search results are 'paged', with a max. number of records shown per page. You can customize the page size, or disable it, and this can be done separately for each different record type. Above the hit list the #pages of results is displayed along with links to the first, last, next, previous etc page. Sample.
- Search results are ordered in a completely customizable way. They can be left unordered, or they can be ordered by any number of different fields at a time - you can have secondary and tertiary ordering if you want. E.g. animals can be ordered by name, or by DOB & name, by inbreeding coefficient, by the number of offspring they have had, etc. The different orderings available for each record type are selected through a pull-down menu above the record list. You may also add custom orderings.
- The columns (fields) that are displayed are user selectable via a pull-down menu. Each entry in the list is the name of a preconfigured set of fields, typically ranging from the most basic fields to all available fields. You can customize the entries in this list by adding custom display fields definitions.
- Records can be highlighted according to various criteria. There are inbuilt highlighting methods that will 'heat code' animals according to their inbreeding or relationship coefficients. Within the ancestors report (where ancestors of a given animal are tabulated), you can highlight according to blood% of each ancestor. Within pedigrees you can also highlight repeated and common ancestors. You can also extend the system to add your own highlighting methods. E.g. if you have a user-defined field that gives the carrier status for a given genetic defect, it would be a simple step to add a highlighting method to emphasize animals with the carrier status. This highlighting would then be available in animal reports such as animal search results, pedigrees, etc. Several
different visual forms of highlighting are provided - background coloring, addition of coloured tiles (icons), emphasized text, inclusion of custom HTML, etc. For more details about highlighting click here. Sample
- Each search result can also be combined with records related to that search result. E.g., in a search for animal records, the matings for each located animal can be listed along with the animal itself. Or, when viewing litter records, the offspring for each litter can be included. If you add user-defined record types, these can also be merged in. E.g., if you extend the system to include show records, or health records etc, users can then display these alongside animal search results by selecting from a pull-down menu above the search results. Sample
- Search results can also be displayed in a grid with one cell per hit, rather than 1 row per hit. This can be more useful when there you're many fields that would otherwise make the normal results table too wide for the screen. It's also useful for displaying photos. Sample
- Clicking an animal's name (e.g. directly from search results, or as an ancestor in a pedigree), displays the animal details page for that animal. This contains a menu of options along the top of the screen and, typically, the animal's pedigree displayed below. Options that are unavailable are greyed out e.g. the 'Photo' option if no photo is stored. Sample
- The animal details page is highly configurable. E.g. it is easy to remove any of the display options you do not want, and customize many aspects of the individual options. E.g. the #'s of generations of ancestors that are available in the pedigree / ancestors display, the depth to which inbreeding is computed in trial matings, etc. Customization is achieved by altering settings in the system configuration file, and possibly also by reimplementing special hook functions.
- Pedigree option: this displays the animals pedigree, with configurable #generations, typically from 2 to 7.
- Users can use a pull-down list to select one of any number of pre-set combination of 'display fields' that are to be shown, ranging from the bare minimum (name only) to all possible fields. You can add new 'display fields' combinations.
- Users can choose between different layouts of the fields within each ancestor box in the pedigree. E.g. there is a 'Compact' layout that is best suited to fitting as many generations on the screen as possible. And then there is a 'Larger Photo' layout that includes a reasonably sized photo for each ancestor. It is possible to add custom cell layouts.
- Users can highlight individual ancestors in a pedigree in various ways, again through a pull-down selection. E.g. the repeated ancestors can be highlighted. Or, the common ancestors (those appearing on both the sire and dam sides of the pedigree). Ancestors may also be color highlighted according to their inbreeding coefficient, or relationship coefficient, or their %blood contribution to the subject animal, etc. Custom highlighting methods may be added.
- Sample 1, Sample 2, Sample 3, Sample 4, Sample 5, Sample 6, Sample 7
- Details option: displays the bare record details for the animal in a simple table. Sample
- Photo option: if the animal has a photo stored, this will display the photo at full size. Sample
- Inbreeding Data option: displays all inbreeding data that has been stored for the animal. Pedserve allows such data to be stored for varying depths of ancestry - so you can have the data for 4G, 8G, 12G, etc. For each ancestry depth this can include:
You can customize the system to remove any of the columns you dont want. Inbreeding data is typically generated during the data preparation phase; our pdsmakedata tool provides rapid bulk computation of all inbreeding data. Sample
- the inbreeding coefficient (Wright's)
- the relationship coefficient of the animal's parents
- the depth of the deepest ancestor found
- the number of generations of ancestors that were full i.e. no holes in the pedigree
- the pedigree 'completeness' - the proportion of the pedigree that is full i.e. ancestors given
- the total number of ancestors found with duplicates counted as many times as they occur
- the number of unique ancestors found
- the number of common ancestors found (i.e. present on both sides of the pedigree); and the number of duplicate ancestors found.
- Trial Mating option: this lets the user first search for a mate for the displayed animal, and then shows the trial pedigree, with all the same options as normal pedigrees. Note that, with Pedserve Advanced Edition, Trial mating pedigrees can include inbreeding and relationship coefficients, calculated by the server 'on-the-fly', and incredibly quickly. It many cases it is virtually instantaneous, even at 16G. Sample 1, Sample 2, Sample 3
- Ancestors option: lists the ancestors of the select animal in various ways. There are pull-down menus to choose the depth (#generations) and type of ancestors shown (All, or Repeat Ancestors only, or Common Ancestors only). For each ancestor, its %blood contribution to the subject animal is given (both separately its sire and dam side components, and in total), and various other statistics such as the #occurrences and the closest/furthest generation numbers in which the ancestor was seen. The list can be ordered by any of these columns (in addition to orderings available for normal search results, and any custom orderings). The ancestors are displayed using the same user interface as the main search results - so there are also paging controls, highlighting (including %blood), display field selector, etc. Sample 1, Sample 2, Sample 3
- Tail option: displays the sire or dam tail - e.g. the sire, the sire of the sire etc. This can be capped at a set depth of ancestry, or can go as far back as you have the data for. Again this has similar display, ordering and highlighting options as the search results. Sample
- Sire Sibs, Dam Sibs, All Sibs, Full Sibs, and Litter Mates options: these are quick links to rapidly display different categories of siblings of the subject animal. Pedserve can also display the sibling counts as part of the menu - so it is immediately obvious from the animal's record how many relations of the various types it has. Sample 1, Sample 2
- Children and Grandchildren options: use these to list the 1st and 2nd generation descendants of the subject animal. Sample
- Families option: this will tabulate the families for which this animal is one of the parents. The listing can include the offspring in the family. A 'family' is defined as all those animals that share the same 2 parents. Sample
- Litters option: this will tabulate the litters for which this animal is one of the parents. The listing can include the litter mates - i.e. the system will produce a detailed listing of the animal's breeding at a single click. A 'litter' is defined as all those animals that share the same 2 parents AND date of birth. Sample
- User-Defined Records options: for each user-defined record type you add, a link is automatically included in the animal details page to tabulate those user-defined records that are associated with the subject animal. Sample
- Family option: this is a link to the family record for the subject animal - i.e. the family of which the subject animal is one of the offspring.
- Litter option: this is a link to the litter record for the subject animal - i.e. the litter of which the subject animal is one of the litter mates.
- Entire Record option: this is a 'merging' of most of the various display options for the animal. So it includes the pedigree, record details, inbreeding data, etc. It can be useful to enable this if you want your users to be able to print out a 'record' of an animal with all reports merged into a single page.
- Each animal can have a photo (image) 'stored' with it. The photo is 'stored' as a filename within the database; typically the actual image files themselves are stored on the same web server as the Pedserve system itself, but they need not be; they can be mounted anywhere on the web.
- Photos can be displayed in pedigrees and as a thumbnail image in search results. Sample 1, Sample 2, Sample 3
- Pedserve has inbuilt support for thumbnail images, which it will display in preference when only a small image is required. E.g. when displaying images as part of the search results. You can store a separate thumbnail image for each animal as part of its record. Or, you can use the same image filename but have the thumbnails served from a separate directory on the server (or remote server). You can also have the system automatically test for the existence of the either image file (full or thumbnail) in the local filesystem, and have it return the one that is most suited to the display purpose but only if it exists, otherwise defaulting to the other.
- Thumbnail photos are automatically linked to their full sized equivalent. E.g. clicking a thumbnail in the search results, or a photo pedigree, will take the user to the Photo option of the animal details page.
- Pedserve can optionally organize the animals into 'families' and 'litters'. A 'family' is defined as all those animals that share the same 2 parents. A 'litter' is defined as all those animals that share the same 2 parents AND date of birth. So families comprise 1 or more litters.
- When family and/or litter records are present they can be searched in similar ways to the animals themselves. E.g. you can search for families based on attributes of either parent, or on the inbreeding coefficient of the family.
- Family and litter records have similar display options to animals. For any family/litter, the Pedigree, Inbreeding Data, Ancestors, Tail, Offspring, etc can be displayed.
- Our pdsmakedata tool can optionally create the data for the family and/or litter tables.
- Sample 1, Sample 2, Sample 3
- Pedserve is best thought of as a 'read only' database. It is not intended to be a system where records are continually updated, added and deleted in an interactive way. So it is, in effect, a very smart 'viewer' of a set of pedigree data, with the whole data set updated from time to time.
- That being said, we know that some Pedserve customers like to offer their user the means to 'add a pedigree'. To support this, we include a 'Submit Animal' form that users can fill in, giving all the details for new animals to be added. These details are then emailed to the site administrator (you), and its then up to you to decide whether to add it to your master database. This way you get to moderate the additions to your database. Sample
- We may extend the system to allow real online pedigree submission - direct to the database - at some point. Please contact us us if you need this.
Security and Access Control
- Pedserve can operate as either an open system, or as a strictly access controlled system based on user logins.
- When running as an open system, there is no access control, or monitoring, of user activity. This is suited to situations where it does not matter who can access the data, or it has no value, or where the website is running on a private network (intranet).
- When running as an access controlled system, users have individual password controlled logins, and the system can only be accessed by password. All user activity is tracked, and you, the site administrator, can view and search the history records to monitor how the system is being used, including on a per-user basis. You can control individual user's access to the system in various ways. You can assign an expiry date to a user, so their access is automatically suspended on a given date; this is suited if you wish to run a system where you charge for database access e.g. an annual subscription (though please note that the EULA does not permit commercial use; if you wish to make commercial use of Pedserve, please contact us for further details). You can also limit individual users access by setting a limits on the number of 'data pages' they may display per day/week/month etc. Each user can be assigned 2 separate limits, to operate over given
periods. Thus you might limit a user to, say, 1000 accesses per day, but with an additional monthly limit of 5000/month. This is designed to let genuine users use the system in a 'bursty' way, whilst at the same time retaining reasonable controls to reduce the risk of 'harvesting' of your database. You can also restrict individual user accounts so they can only login from a specific IP address. E.g. you might use this to restrict the administrator login to a specific IP, further protecting the administrative access to the system.
- The system includes a page for new users to request a login account, and a separate page for existing users to update their existing account e.g. to change their password or their registered email address.
- The system uses various techniques to detect suspicious access to the system, such as might be used by a 'web harvesting robot', and will automatically suspend user logins where such activity is detected.
- Sample 1, Sample 2, Sample 3
- You, the site administrator, have password controlled access to many administrative facilities.
- When logged in as administrator, the web pages can be set to have a different background color, to remind you that you are logged in with administrator rights. This is a pink colour by default, but of course you can change that through the stylesheet.
- You can search and list user logins, in various ways. E.g. search by the number of suspicious accesses detected, or search by the total number of accesses, etc. You can also order the user logins in many ways. Sample
- Each user login account is marked as 'pending', 'member' or 'banned'. When a new user first requests an account, it is added to the user login table, marked as pending, and an email is sent to the administrator. The user cannot login at this stage. It is up to the administrator to approve or deny the login request. To do this the administrator logs in (using the special administrator account), and sets a daily/weekly/monthly usage limit, as appropriate, or, he/she denies the request. He/she can also optionally set an expiry date for the account, and/or restrict the IP address from which this account may be accessed. At this point the Pedserve system emails back the user with the outcome. Assuming he/she has been approved, they can then log in with their password.
- The administrator has access to a system summary page, that gives overall statistics about the databases and users of the system. These statistics support 'drill down' so it it easy to navigate from here to the lists of users, the history records, etc. Sample
- The administrator can search and list the history records - to view and track the activity of users both as a whole, and individually. Sample
- Create and change user login accounts online using user friendly screens. Sample 1, Sample 2
- The History Analysis screen summarises the system usage all users by giving a count for the number of each different type of access by each user. This can be ordered by any of the stat counts, and you can 'drill down' to view the summarized activity by clicking the summary counts. Sample
- The administrator can email users, both individually and as a group. E.g. if you update the database you might want to email all users in a single operation. All emails sent by the system can be bcc'd to you, the administrator, automatically if you wish. Sample
- The administrator can set and change a 'Message of the Day' - a text message that is shown to every user when he/she logs in. E.g. to give details of database changes. Sample
- The administrator can also suspend all database access to all users (except the administrator) easily using a web page. This is useful during database updates, when the database will be in an inconsistent state for normal usage.
- Well, where do we start? One of the design goals of the Pedserve system was to provide a great deal of customization options - if you want them.
- This does not mean that setting up a Pedserve system requires a lot of work. It doesn't. It does - of course - require you to set up some very basic site configuration details - such as the site URL, email addresses, database login details etc. But there are many other customizable options you can change, all of which have sensible defaults (hundreds, in fact). So, you can tailor the system to your very specific needs, but only if you want to. All the customizable site variables are contained in a single configuration file.
- E.g. Terminology. You can change the terms used for certain common words. E.g. you can set the animal type, both singular and plural, (e.g. 'Dog' and 'Dogs', or 'Cat' and Cats'. Likewise the term for offspring ('Puppies'/'Kittens', etc), and various other terms.
- Web interface - fonts, colors, etc. Pedserve uses consistent CSS styles throughout for control of most aspects of the visual style of the generated HTML pages. This means that you, the site operator, can change much of the the visual appearance of the site by editing your site's stylesheet, and not by having to change the Pedserve scripts. This makes it easier for you to customize the appearance the site, but also means that updating your system when new versions of Pedserve are released will not wipe out your user interface customizations.
- User-defined fields, and user-defined record types.
- Pedserve provides various 'hook functions', which allow you to hook in your own specialist code in various places.
- Pedserve is not, at this time, fully customizable to handle a non-English web interface. We intend to add this shortly.
We can offer you consultancy to:
- Help you install and customize Pedserve to your requirements;
- Add custom extensions e.g. special reports etc.;
- Handle all data management of your Pedserve-driven web site - which means we will periodically upload new data sets to it for you; you just send us your data (e.g. in CSV format) on a regular basis;
For further information, please contact us, explaining in detail how you would like us to help you.
Click on any image to see a larger picture.
Want to set up your own pedigree web site but don't know where to start?
We can help. For a fee we can set up your website for you. We can advise on suitable web hosting, we can customize the site to your needs, we can even handle the data uploading for you. For further information, please contact us, explaining in detail how you would like us to help you.
Want to try it first? Check out our Demo Database Web Site.
Animal Details Page With Page Menu Elements Described
Pedigree With Photos
Pedigree With Blood% Highlighted
Pedigree With Common Ancestors Highlighted
Pedigree With Inbreeding% Highlighting
Pedigree (4G) Showing Basic Details
Pedigree With Repeat Ancestors Highlighted
Pedigree (5G) Showing Basic Details
Record Details Screen
User-Defined Record Search
Ancestors Listing With Blood% Highlighted
Ancestors Report Showing Orderings
Ancestors Report Showing Report Types
Dam Siblings Listing
Full Siblings Listing
Litter Inbreeding Data
Litters Listing Including Offspring
Search Results in Grid Mode with Photos
Search Results With Photos Including Parents and Grandparents
Search Results Showing Mode Selector
Search Results Showing Display Fields Selector
Search Results Showing Ordering Selector
Custom Query Button
User-Defined Records Listing
Trial Pedigree With Inbreeding Coefficient
Trial Mating Search
Trial Mating Search Results
Add User (Administrator only)
Edit User (Administrator only)
Admin Summary Screen (Administrator only)
Email Listed Users (Administrator only)
History Analysis (Administrator only)
History Search Results (Administrator only)
Set Message of the Day Screen (Administrator only)
User Search Results (Administrator only)