User Guide

This is the MiniLIMS user manual. This document describes MiniLIMS from the perspective of a user, including the super user or Admin roles.

Concepts

Names, Types, and Properties

The semantic technologies that provide the foundation of MiniLIMS are an antidote to both the sharing and maintenance problems of spreadsheets and the inflexibility of relational Laboratory Information Management Software (LIMS) systems. MiniLIMS simplifies the representation of data into a four column table. In this table, all data elements are treated as Properties, essentially name-value pairs. These Properties are grouped together under an Named instance of a Type.

For example, the category “Sample” would be considered a Type and the sample “J53″ would be a Named instance of the Type. In addition to the sample name, other Properties like the sample type (“genomic DNA”), and the organism from which it came (“Mus musculus”) would be grouped together with the Name to make a data record.

The workbook pictured below might be used in a typical sequencing laboratory where Samples are received from external scientists, processed into appropriate Libraries by lab technicians, and then sequenced.

A typical sequencing laboratory spreadsheet

MiniLIMS types are analogous to workbook sheets.
One of the first things to note is how the Excel workbook is divided into separate sheets for Sample information, Library information, and sequencing Run details. This division is often used because different information (i.e. columns) must be tracked for Samples and Libraries. Also, a single Sample may be processed multiple times into Libraries and Libraries are mixed and matched into different sequencing Runs. This division of the workbook into sheets is analogous to MiniLIMS Types. Samples, Libraries and Runs are common Types in MiniLIMS implementations.

All instances of MiniLIMS Types have a Name.
This allows the set of Property values to be grouped together as a single record and to be accessed by a single Web address (URL). MiniLIMS names must be unique across all Type instances in the system. This is common practice in LIMS systems and is implemented either as a anonymous key (e.g. S00001) or a combination of fields that can ensure uniqueness (e.g. concatenating the user submitted name with the username).

All MiniLIMS records are uniquely named.
Samples, Libraries, and Runs typically have a name associated with them, often the first column in the table. Names provide a short hand for tracking physical things like samples through various stages of lab processing. These are most useful when unique.

MiniLIMS Properties are like column data.
MiniLIMS properties map neatly to the columns of a spreadsheet where the column title corresponds to the Property name and each of the data cells in the column corresponds to a Property value.

Like a relational database column, MiniLIMS can apply type enforcement on a Property. Properties can be numerical, string, boolean, and can be limited to some list of values. Unlike relational columns however, this typing is not enforced in the database table structure, but rather with MiniLIMS code. As a result, a Property can change from, for example, a number to a more flexible string without code refactoring.

MiniLIMS data is like a “tall-skinny” table.
In the image below, you can see how one of the spreadsheet sample records would be represented in the MiniLIMS database. The separate columns of the spreadsheet are collapsed into the name-value pair Properties and are tied together as a single record by the Name and Type fields.

A typical sequencing laboratory spreadsheet

All of these components of a data record are brought together in a MiniLIMS page. As you can see, the page is identified by a combination of Type (Sample) and Name (“J78 mRNA”) and is populated with a tall skinny representation of the column data from the spreadsheet.

Example sample page

All data in MiniLIMS is handled the same way.
MiniLIMS extends the semantic data representation described above to all data within the system. As a result, even things like Users and Groups that could be considered specialized system data are defined as Named Types with Properties. As a result, even some system administration tasks can be as simple as editing a page.

Actions and Navigation

Since MiniLIMS is a Web application it refers to all pages using links, buttons, and menu items using HTTP URLs. For any given page in MiniLIMS there are 3 main locations for navigation: the left hand sidebar, the menu bar, and the page action buttons.

The customizable sidebar
The sidebar on the left hand side of each MiniLIMS page is a grouped list of the most common actions. The first menu, Core Data, provides links to forms and summary pages for the core data types: Samples, Libraries, Species, and Projects. The data from these links are limited to those accessible by the current user, typically her group’s data. The remaining menu groups represent the other plugins available from the system. The Local menu includes links to summary table pages for all user created page types. Other menus may include Illumina, Roche454, and so on, depending on the plugins available from your system.

The sidebar menus are collapsible. If a relatively large number of plugins are available or you have a lot of Local types, it can be difficult to access some of the lower menus. Just click on the menu header and the menu will collapse.

The Menu bar
While the sidebar is a convenient location for the most common links, all available system actions can be accessed from the menu bar. Adding new instances of any Type can be done from the Add Page menu; changing the Properties associated with any Type can be done from the Configure Page menu; saved reports can be retrieved and new ones created from the Reports menu; creating new Types, as well as other administrative tasks like adding users can be done from the Admin menu; the Data Import menu provides access to Type agnostic data import mechanisms; and the History menu provides access to previous versions of pages.

Page-specific action buttons
For both data display pages and data entry forms, the actions for the page are available from a set of buttons at the top right of the page. If a user has edit rights, a data page will have buttons for editing that instance, adding a new instance of the same Type, deleting the instance and cloning the instance (adding a new instance with the same set of Property values). Data entry forms will have Save changes and Cancel buttons.

List of entries that reference each page
Types within MiniLIMS can have a Property that references an instance of another Type. This sets up a link between two pages, the MiniLIMS equivalent of a join. For example, a Library can have a Sample property that refers to the Sample from which the Library was derived. In addition to a link from the Library page to the Sample page, the MiniLIMS data structure makes it easy to do the reverse, i.e. link from the Sample to the Library page. As result, pages that are the target of a link have a section called List of entries that reference this page at the bottom. This makes navigation between related pages very easy.

Sample records showing references to Libraries

Summary table paging
When a summary table, like those available from the Group Data sidebar menu, must display more rows than the page size (default is 20), links are displayed for additional pages. If a larger page size is desired, simply click on the current page size number to get an edit box for the value, enter the new page size, and hit return.

MiniLIMS tables

Display tables in MiniLIMS are the output of queries against the 4 column database table that return properties from one or more page types. The MiniLIMS interface provides a number of tools for controlling the display of this output.

Paging links are displayed for large tables
Any table that has more rows than the default page size (20) will display a set of paging links at the top of the table. First, Last, and individual pages links are shown. The page size can be changed by clicking on the Page size value. Fill in the box with a new number and the hit enter.

Paging links and the Page size text box

The Filter field selects rows using a regular expression
The Filter field allows you to choose a subset of the rows that are displayed for the table. The Library summary table typically shows all Libraries, but if you’re only interested in those from particular Groups or those with a certain naming convention you can use this function.

The simplest filter is a plain text string. Any row that matches the string in any of the tables cells will be displayed and all others will be hidden. Partial strings will match and the search is case insensitive (e.g. “pRoJ” will match “Project”).

The field also supports JavaScript regular expressions. Quantifiers, line terminators, and character sets can all be used. The dot character (.) is the most general wildcard.

Any of the displayed properties can be used to sort the table
A sort field can be selected along with a direction. MiniLIMS makes assumptions about the datatypes of individual properties. Most are assumed to be strings, but any property that looks like a number is treated like one. Dates are sorted properly as well since their string representation allows a numeric sort.

A Group by column can be selected, optionally with a date range
If a Group by property is chosen, then the table is reduced to a single column for the unique values of the property and a second column for the count of rows that include that property value. The Group by drop down also includes the calculated values Day, Month, and Year which are constructed from a Date field in the result. In the Group by context these fields support the kind of date range summaries that are useful for management reports. If one of the calculated date fields is used, the From and To fields can also set an additional date range filter. Using these three fields, for example, you could return the number of Flowcells run by month for the current calendar year.

Tables can be printed
The print icon at the right end of the control ribbon can be used to print the table.

Tables can be exported to Excel
The disk icon will export the table to an Excel file.

Editing Pages

All pages in MiniLIMS can be edited using forms like the Sample form shown below. This image shows many of the features of editing pages within MiniLIMS.

Sample form

Page names

Because all pages must have a name, the first, required field is the page name. A name can be entered manually, but it is easier to guarantee a unique name if the Get New Name button is used. This button generates a name by combining the Type with an incrementing number (e.g. “Sample_1″). The name field is required on all MiniLIMS pages.

Required Properties

Form fields with a red asterisk before the label are required. Any field that is specified as required must have a value or the page cannot be saved.

If you’re unable to save a page it is probably because a required field was not filled in. Error messages are displayed next to the field so you can easily find the empty, required field.

Properties that are other pages

Fields like Group and Group Member are examples of Properties that refer to other pages. By allowing other pages to be properties, data in MiniLIMS can linked like foreign keys in a database or URLs between web sites. These fields are implemented as auto-complete fields. As you begin to type, a list of matching page names will appear beneath the text field. Any one of the items can be selected. To get a list of all possible values, type a single space in the field.

When editing fields like this, MiniLIMS provides a convenient link () for adding a new instance of the Type. This link launches a dialog version of the input form.

Dialog version of the Project form launched from the Sample form

This Group Member field demonstrates how MiniLIMS handles multiple selection from a related data Type. In a common example, Samples may be associated with a number of users (represented by type Group Member). From the total list of Group Members on the right-hand size, a subset may be selected and assigned to the list of Sample users on the left-hand side. Ctrl-click allows selection of multiple, discontiguous items, and Shift-click will select a contiguous range. The selected items will be shown as a comma-separated list.

Upload file Properties

In many cases it is desirable for files such as images, Excel files, or PDF reports to be associated with data records. This can be accomplished in MiniLIMS using an Upload file type of Property. A BioAnalyzer QC file is a common example in NGS systems. As in other Web forms, clicking the Choose File button will launch a file browser from which the file can be selected. Once the file is selected and the page is saved, a link to the file will be displayed on the updated page.

When an image file is uploaded, MiniLIMS will display a thumbnail of the image in addition to a link to the file.

One problem that can occur is that MiniLIMS will not upload a file, due to the limitation on file upload size. By default PHP limits file uploads to 2 Mb, a fairly safe size for internet Web applications. For LIMS systems, this is often too small. To increase the size limit adjust the upload_max_size and post_max_size parameters in the system php.ini file.

Users, Groups, and Roles

Like many laboratory software systems, MiniLIMS allows administrators to setup data access controls through users, groups, and roles. Many common laboratory scenarios can be supported such as:

  • Sequencing lab personnel must be able to view and edit all sample data, but external scientists should only be able to see their own data.
  • A general audience can login to view published results, but only a limited number of scientists may actually submit sample records for processing.
  • Only the PI (Principle Investigator) of a lab can add new members to the lab group.

MiniLIMS user names become page names

When a user is added to MiniLIMS by an administrator, a user entry is created in a database table. Many users, like Admin and Core users, need no more than this. However when users are assigned to Groups, a Group Member or PI entry (see below) is created, as well as a page. User names must therefore be valid page names. Underbar conversion rules also apply, meaning any space in the user name can be written as an underbar, and vice versa. For example, a user could login as either “Zac_Efron” or “Zac Efron”.

User roles determine the capabilities of a user

When a user is created by an administrator, a role is assigned. There are 5 roles available in MiniLIMS.

  • User
    • Can read Group and site-wide data
    • Can write Samples and site-wide data

    Most users of the site will have this role, and this is intended for people in Groups. They can only view data that is owned by their group or is system wide. They can also add and edit Samples and Species.

  • PI
    • Can read Group and site-wide data
    • Can write Groups, Samples, Projects and site-wide data

    This is the role for each group’s PI. They have the same abilities as the User role but they can also create and edit projects. This can be considered a Group level administrator.

  • Core User
    • Can read all data
    • Can write all data

    There will only be a few of this type of user. They are the people who are running the sequencers and have to have access to sample and run data.

  • Admin
    • Can read all data
    • Can write all data

    This user has full power over the site. They can read and write all of the data as well as performing various Admin actions. These include things like adding users, adding data types, configuration, and removing data instances.

MiniLIMS users can be added to Groups as Group Members

When an Admin creates a user, after assigning a role, the user can be added to a Group as a Group Member. This creates a Group Member page with the same name as the user. A few additional property values with contact information can be filled out, along with an assignment to one or more Groups.

Becoming a Group Member is only important for individuals with the User or PI role, since those roles are restricted to Group-level activity. The Admin and Core user roles have access to data across Group boundaries.

Using MiniLIMS as a User

This chapter will show how an ordinary user interacts with MiniLIMS.

Though there is no requirement for such a separation, laboratories using MiniLIMS often create a distinction between ordinary users and “core” users. Ordinary users are typically external to the laboratory and are limited to the ability to enter sample records and retrieve results. Core users are internal lab personnel that process samples, load instruments and assist in the generation of results. The steps described below are useful for core users as well.

Logging In

Using your assigned username and password (contact your MiniLIMS admin or, if this is a fresh install, go to the Adding Users).

In MiniLIMS spaces and underscores are interchangeable. If your assigned login name is “Jane_Sparks” then you can also use “Jane Sparks” without the underscore.

If your login is accepted you will be taken to your home page. For a general user this will be your Group’s page (you should have been allocated to a group when your username was assigned).

The Group home page

After logging in as a User you will be taken to your Group’s home page. This page conveniently lists all of the data visible to your Group. After a summary of the Group, the Group Members and the PI all of the Projects and Libraries visible to the Group are listed in a table.

Group home page

Since Project, Sample, and Library data types all have a Group field, the List of entries that reference this page section contains listings for all pages associated with the current Group. Analysis results may also be visible from here.

Adding a Sample with the Sample Form

One of the main tasks of a MiniLIMS user is to enter Sample data which can then be used by core users to create Libraries and instrument Runs.

Like most MiniLIMS data, Samples can be created using either the Add link on the sidebar or the appropriate menu item under the Add Page menu. This will open the Sample input form. Though Sample forms may be customized in many labs, there are a number of fields that are commonly used.

Name, Group, Group Member, and Project are required fields

The first field on the Sample form (and on most MiniLIMS forms) is the Name field which has a companion button Get New Name. Every page in MiniLIMS must have a unique name or it cannot be properly accessed. Get New Name will create a unique name by combining the type (Sample in this case) with an incremented number, e.g. “Sample_9″. Entering a unique name manually is always an option for labs that have a specific naming convention.

The Group and Group Member fields are required so that you and your group have access to the Sample. For most scientists, only one Group will be available from the drop down list and the Group Member will be you. If you are part of more than one group, you will have the ability to select the assignment for the Sample. By assigning your name to the Sample, that means that you are the only member of your group that has write privileges to the Sample. Users with greater privileges can assign write capabilities to other users.

Project assignment is also important. This allows Samples to be organized within the Group and treated as a batch. PIs can create new Projects when they are needed.

Saving the Sample

Once the Sample form is properly filled out, click the Save button on the top right of the page. If successful, you’ll see a Saved Sample message along with a link to the new Sample page. If the page does not save, it is likely to be due to required fields that are not filled out. Check each of the fields with a red asterisk.

Cloning a Sample

Often a batch of Samples is entered for a project that differ little in their sample meta data. For example, the Group, Project, and Species may all be the same but they differ by name. As soon as one of these Samples is entered, you can use the Clone Sample button on the top right of the page. This will open a new Sample form auto-populated with the values of the entered Sample. Simply add a new name and save the Sample.

Bulk loading Samples via Import File

Large experiments with dozens to hundreds of samples are commonplace and much too large for one-at-a-time form data entry. A bulk import of large sets of sample data from text files can be done with the Import File action from the Import Data menu.

Detailed instructions for using the File Importer for the general case are available.

Prepare the text file

MiniLIMS doesn’t currently take Excel workbooks directly, so sheets should be saved in tab or comma-separated format.

For most situations, the Excel sheets that are used to initially setup large sample sets can be used without modification. As long as samples are setup in rows with one sample per row and a unique sample name column the file should work.

If the file has column headers that match property names of the Sample type you can skip a step in the wizard that assigns properties to columns, described below.

Select the file from the Import File page

After clicking on the Import File menu item, the upload page allows you select the file and the delimiter type. Once the correct selection is made, click the Upload file button. If successful, you should see a parsed table version of the data in your text file.

In the first page, you’re asked to assign a column to page names. For a Sample upload like in the example, this column should be the sample name column. All pages in MiniLIMS must have a name, so this step cannot be skipped. If your samples don’t have names, or your names might not be unique, the an automatic name assignment column can be used (see below).

Import file step 1- Assigning the page name column

After assigning page names, the property columns must be set. The drop down control above each column allows properties to be assigned from the parsed columns. Not all columns need to be mapped to properties. This assignment tells MiniLIMS which columns will be properties, but not which properties they correspond to.

Mapping the columns to particular properties can either be done using the column headers from your original sheet, or by assigning new ones.

Query Builder

The MiniLIMS Query Builder allows you to combine any of the data types into a custom query and displays the results as a table. Ad hoc queries can be performed any time and regularly used queries can be stored and re-used.

The first option for the Query Builder is to select an existing, stored query. To create a new query, just leave the value of this drop down at New. If you intend to store your query, then include a short name in the Description box. If you don’t define a name, but decide to store the query, a default will be generated by concatenating the selected page names.

To build the query, select the first page type that you’d like to include. For example, if you’re interested in the number of Flowcell Lanes run for different groups, you might first select the Library page. Library is the key link between Flowcell Lanes and the other sample meta data and includes Group and Group_Member fields. Once you’ve selected the first page, the Type 1 Properties list box will contain the list of possible Properties from the first Type that can be returned by the query. Use a Ctrl (or Command) Click to select one or more columns that should be part of the output.

Selecting the first Type for the query

Having selected the first Type for your query, the Page Type 2 drop down allows you to select another page to include in the query, but only those that have a join property with the first Type. Since Library was selected for the first Type, Illumina Lane can be used as the second Type, but Machine cannot since there is no Library property for Machine and no Machine property for Library. Properties to be displayed can then be selected from the second Type.

A second page type is selected. Only those linked to the first type are available.

After choosing the types and output properties, sort and group by options can be selected. The sort field can be any of the properties selected from the first or second types. Additionally, Day, Month, and Year fields can be chosen. These will be parsed from a date field that is in the output properties list. A property can also be selected for grouping rows. If, for example, the Project property is chosen, then for each unique Project value, the count of rows in the query will be summarized. Day, Month, and Year calculated fields are also available. These can be particularly useful for management summary reports of usage over time.

Sort property selection in the Query Builder

Once the query is defined, you can either save it (Save Query) or run it (Execute Query). If you execute the query, the table will appear in the Results tab. The table will have the same control ribbon as other tables in MiniLIMS, including the print and CSV export options.

Query builder results tab

Access controls (defined by Users, Groups, and Roles) apply to the query results; though users can share different queries, the results will always be limited to the accessible data.

Using MiniLIMS as a PI

The Principle Investigator (PI) role allows a designated user to create and edit projects. This may be the PI of a laboratory, but need not be. Aside from the control over projects, PI users can do anything that regular Users may do (e.g. Add Samples).

PI Login and Home Page

The PI Login and Home Page are the same as for regular users. Since the Group Home Page displays all the data readable by the Group, it is no different for PIs and regular users.

Adding a Project

A Project can be created by a PI using the Add Project link in the Sidebar or via the Project menu item under the Add Page menu.

After giving the Project a unique name (or having MiniLIMS assign a unique name with the Get New Name button), the Project must be assigned to a Group so that access to the Project can be controlled. The PI’s group should be the only one available from the list.

The Group Member assignment determines who can edit the Project. This can be any subset of the members of the group.

Finally, the Project Status can be assigned.

Using MiniLIMS as a Core User

The Core User role is designed for sequencing laboratory technicians. These users have permission to create Illumina Flowcells or instrument Run pages, for example. As such they are also able to see data across all of the groups and projects via their role and so need no particular group assignment. The only activities Core Users can not do are administrative activities such as creating new Users.

Checking instrument Runs

Each sequencing instrument plugin has a Run loader (e.g. the Illumina Run Loader) that parses information from the instrument output. The Run pages created can then be used to determine the quality or completeness of the Run.

Illumina Run page example

Creating a Flowcell

Another activity for Core Users is creating Flowcell pages. A special link is available from the Sidebar (Create Flowcell) that can be used. This form allows the lab scientist to create both the Flowcell record and the Flowcell lanes.

Selection of the Flowcell name can either be done manually, or MiniLIMS can generate a name using the Get New Name button. Either way the selection of the Flowcell name is important since it is the key link between the Illumina Runs and the Sample and Library information in MiniLIMS. If the name assigned in MiniLIMS is not the same name used for the instrument run, it will be difficult to associate run and sample data later on.

After the Flowcell details are entered, Flowcell lanes can be defined. For each lane, a Library can be assigned from the set of available Libraries. For multiplexed preparations, the Add Library to Lane button can be used to add as many new entries as needed.

Using MiniLIMS as an Administrator

MiniLIMS Admins are a form of super user. They can perform all actions available to other users in addition to a number of specific system-wide activities.

Adding new users

Selecting the Manage Users option from the Admin menu brings up the user management page. This page lists all of the existing users and their properties, including role and Group assignments and password. To add a new user, click the Add user button and fill in the username, role and password boxes. Group membership can be assigned as well.

Group assignment is valuable for PI and User roles. For Core Users and Admins, this step is unnecessary.

When adding a new PI, it is important to remember to create the PI page for the user as well. Like all other data types, the PI menu item from the Add Page menu can be selected to get the appropriate form.

Manage users form

Configuring tables

Query result tables are found on many pages within MiniLIMS summary pages. Project pages and the Group home pages also include query result tables. These summary tables can be configured by administrators using the configuration dialog available the top of the table.

The configuration dialog alters the query for the table

The configuration dialog access from the small “wrench” icon on the table control ribbon. The Display columns list controls the properties (or columns) returned by the query. Any property from the component types can be selected. Use Ctrl-Click to select or deselect multiple columns.

The Sort by drop down determines the sort order for the table. Select any one of the properties returned by the query. Direction of the sort is controlled by the Sort direction drop down.

A Group by property can also be chosen. This allows a simple form of summary reporting to be done. For example, a table of Libraries that includes the Group assignment can be used to create a count of Libraries by Group if the Group property is selected. If a Date field has been included in the query, the date components are broken out so that Group by can be applied to day, month, and year.

Using the table configuration dialog to group Libraries by month

Returned rows can also be filtered by entering a JavaScript regular expression in the Filter field. The expression can be a simple string of characters like a Project name. Alternatively, wildcards, character classes and quantifiers can be used. The expression is applied to each field, so beginning (^) and end ($) codes work on individual table cells.

Table filter using a regular expression

Changing a Password

Passwords can be changed via the Manage Users form. This form lists all of the users, their roles, and their groups. Passwords can be changed using the two password text boxes. Once the password has been changed, the Save Users button must be clicked to record the new password.

Disabling or Removing a User

Users can be disabled or removed from the system using the Manage Users page (select Manage Users from the Admin menu).

A user can be prevented from logging in to the system by checking the Remove login checkbox and saving the changes to the user list. If Remove login is selected, the user will remain in the MiniLIMS system, along with role and Group information, but the user will be unable to login. This is useful if a login must be temporarily disabled.

To completely remove a user, for example if the wrong name was entered, both Remove login and Delete from database must be checked before saving the changes. This will remove the user from the underlying MySQL database and delete their role and group information.

Data pages (e.g. Samples) owned by a deleted user are not deleted when the user is removed.

Creating Groups

The creation of groups is key to the ability to control data access and so must be performed by a user with the Admin role. Groups in MiniLIMS are like other data types and can be created by selecting the Group item in the Add Page menu.

In this form, existing users can be added using the multi-select box. A PI can be assigned to the Group with the PI select list. Remember, only users with a PI page will be listed here.

A second option is the QuickBuild Group page. In addition to creating the Group and assigning members and PIs to the Group, this page supports the creation of stub records for Projects, Samples, Libraries and other Group data. If a Group had a number of existing Projects that were setup in a legacy system, for example, those Project names could be listed (comma-separated) in the Project text box and stub Project pages with those names would be created.

Creating a New Type

One of the most powerful features of MiniLIMS is the ability to create new data types and configure their properties. This is available to anyone with the Admin role.

Plan your data model before creating a new type

The first, and most crucial, step in constructing a new type is to have a plan for what you want to store and the characteristics of the data. One of the most common places to start is with a spreadsheet version of the data. A number of aspects of a typical spreadsheet will give you clues as to how the type should be designed. For example, many Excel workbooks have multiple sheets. The names of those sheets are often related to the “type” of data on the sheet. Sheet names like “Sample”, “Library”, and “Run” translate well into MiniLIMS types. The data columns of a sheet usually correspond to properties and the rows correspond to individual pages that would be created for the type.

Once you have planned your new data type, the Add New Page Type menu item in the Admin menu can be used to initialize the new type. In this form, enter at least the new name for your type. Additionally, you can enter a comma separated list of names for new properties.

After adding the new type, a link (e.g. Configure new type) will allow you to go to the full property configuration form. In this form, the attributes of each property can be set. To add a new property, click the Add Property button and set the name. The naming convention used within MiniLIMS is initial caps with spaces between words.

Property attributes

After naming the property, the property attributes should be set.

Editable
This attribute determines whether a property can be edited by a user. By default this is checked.
Multiple values
If a property can take multiple values (e.g. “Library 1, Library 2, Library 3″) then this attribute should be checked. Unless the Restrict to type attribute is set (see below), values can be entered as a comma separated list.
Required
If this box is checked, a value must be entered for this property or the new page will not be saved. For properties with the Restricted values attribute set, the drop down list will not include a null value.
Hidden
This attribute determines whether the property is visible to the user or not. Hidden properties can be handled by an Admin or by code.
Restricted values
Checking this attribute allows the Admin user to define a controlled vocabulary for a field that will be rendered as a drop down list (or auto-complete field, or multi-select box). If a type is selected by the Restrict to type attribute, the list will be populated with page names from that type. If a type is not selected, a text box will be presented the next time the type is configured so that a comma-separated list of values can be entered.
Restrict to type
If you would like to restrict the values to pages names of another type, the type can be selected here. This is the mechanism by which pages of different types can be linked. This can be thought of as a MiniLIMS version of a foreign key. If the Multiple values attribute is also checked, a property with Restrict to type will render as a pair of boxes with transfer buttons in between.
Upload file
Check this attribute if the field is to represent an uploaded file. This type of property will render as an file upload button on a form. After a file is uploaded it will render as a link to the file, or, if it is an image, as a thumbnail of the image itself.
Delete
This checkbox is used to remove a property from the type.
Tooltip Text
This input box allows you to specify a tool tip for the field on the form.

Example configuration form for type Library Pool

Once properties have been defined and attributes selected, the Save changes button will apply the new type definition. After saving the new type, the Add Page menu will now include an option for creating a new page from the new type. A link to a summary of all instances of the type will be available from the Local menu on the sidebar.

Managing Data

The Manage Data menu item in the Admin menu supports a number of data management functions.

Selecting a type from the Manage Types search

The starting point for the Manage Data functions is the Search form. This form allows you to select types or pages based on property names, values, type names or page names. Once the pages or types are retrieved then one or more may be renamed, deleted, and so on.

There are two options for selecting pages by Name, Type, or Property. You can either choose from a drop down list of values or enter a value into a text box. The former is best suited to limited lists like Type or Property, while the latter is more useful for Names.

Searches may also be done against Property values. For this type of search, the Value textbox must be filled in. To restrict to a particular Property, the Property drop down or text box may be used.

Renaming Pages

Pages can be renamed once they have been selected using the Manage Data search. Pages that match the search criteria are returned with a checkbox and the Name and Type in editable text boxes. To rename pages, simply select the checkbox next to the result and update the page name field. When finished editing the page names, choose the Rename selected option from the Action drop down list and click the Do Action button.

If all of the pages in the search results must be updated, each page need not be checked, the Rename all action can be chosen instead.

Deleting a Type

Deleting a Type will remove all instances (pages) of that Type along with the configuration data. To delete a Type, select the Type name from the drop down list at the bottom of the search page. Then click the special purpose Delete type button.

Selecting a Type for deletion

Bulk Page Deletion

Just like the renaming of pages, large sets of selected pages may be deleted. After selecting with the Manage Data search, pages can be deleted by checking the box next to the search results, selecting the Delete selected action from the action drop down list, and clicking the Do Action button. If the search results are the exact set that needs to be deleted, Delete all may be chosen instead of Delete selected.

Import File Step-by-Step

One of the consequences of the four-column data structure in MiniLIMS is the ease with which data can be imported. The Import File wizard takes advantage of this and adds some real-time editing capability to allow easy import of bulk data.

The Import File wizard is most effective using comma- or tab-separated files that closely match the data organization in MiniLIMS. Specifically, the rows of the file should correspond to named “things” like Samples or Libraries. Each of the columns should correspond to information that describes the “thing” and one column should represent the name of the “thing”.

One of the columns in the spreadsheet must include a name or identifier for the records being imported (e.g. a Sample Name column). If such a column is not available, or the natural name column is likely to contain duplicate values (e.g. sample names provided by one group overlap those provided by another group), an “AUTO” column can be added. In an AUTO column, all values are the word “AUTO”. This indicates to MiniLIMS that it should automatically generate a name for the entry.

A typical sequencing laboratory spreadsheet

Select a properly formatted file or paste in text

After clicking on the Import File (advanced) menu option in the Data Import menu, the first thing you must do is upload the appropriate file. The file should be either comma- or tab-separated fields. Rows can be separated by either Unix/Mac or Windows newline characters.

It is important that the delimiter characters are not part of the field values. For example, if there are tabs in sample description field, then the field will be split incorrectly.

Instead of uploading a file, data can be transferred by copy-and-paste into the text area.

Once the correct file is chosen, click the Upload file button.

Select the page name column

After the Upload file button is clicked, the top few rows of data will be displayed. Data will be parsed based on the delimiter that was chosen into separate columns. Failure in parsing, as would occur with errant delimiters, may result in a blank page.

All records in MiniLIMS must have a page name, so for bulk uploads the first step is to identify the column containing page names. This can be done by selecting Page Name in the drop down list above the column that contains page names.

Select page name column in Import File

In some cases it is desirable to let MiniLIMS determine the name for an entry. For example, if users have a tendency to use overlapping sample names, it may be best to allow MiniLIMS to name the page (and include the user generated name as a property) to prevent conflicts. This can be accomplished by including a column in which all of the values are the word “AUTO”. This AUTO column should then be selected for Page Name.

Import file with automated page name construction

Click the Next button to move forward after choosing the name column

Select property columns and assign to properties

In order to include additional columns as property values, select Page Property from the drop down list above each column.

After clicking the Next button, you will have the opportunity to assign columns to specific properties. If the top row of your spreadsheet has the correct property names, then you can proceed to the next step.

If your spreadsheet has a header row, but the column headers don’t correspond exactly to the property names, you can change them on the fly. Simply click on the table cell and edit the contents. When you edit a table cell on the page, the edit menu will make a number of editing functions available (see below for details).

Example of editing a header row to match the property names in MiniLIMS

If your spreadsheet does not have a header row, one can be added at this time. Click the Add Header button and a new, editable row will be inserted at the top of the sheet.

It’s important at this point to ensure that the column headers used for property names correctly match the properties associated with the type being loaded. Though you will have a chance to validate the upload (which will report property mismatches) a careful check at this point will save some re-work later.

To validate or not to validate?

The penultimate, optional step before loading the data is to validate the data set. If you click the Validate button, a series of checks will be run and a dialog will report the result. The checks include:

  • Does the page type exist? If the header of the column selected for the Page Type does not exist, this will be reported.
  • Does the page exist? If the header of the Page Type column is a match for an existing type, then each of the values in that column are checked against existing page names. A warning will be issued if the pages are found.
  • Do the properties exist? Each of the headers of Page Property columns are checked against the chosen Page Type. If that type does not include one of the properties, it will be reported (along with a list of correct properties for that type).

There are some situations in which validation can be bypassed. For example, when loading legacy data, the File Import can be used to create new properties from the columns of data. In this case, just click the Next button without using the Validate Data option.

Save

The final step in the File Import wizard is to save the data. After clicking the Save Data button on the final page, the data will be used to construct pages and properties. Any problems that occur during saving will be reported by a dialog box.

Data editing options

When a user clicks on a table cell during the File Import wizard, the cell becomes editable. This is important for the setting of column headers, but can also be used to edit data on the fly. To help with this and other data editing, a menu appears to the right of the page. Besides helping edit a cell, this menu can do a number of manipulations on the table columns, rows and cells.

Hide column
Removes the currently selected column from the view. The Show all columns item will return the column to the view.
Hide row
Removes the currently selected row from the view. The Show all rows item will return the row to the view.
Hide cell
Removes the currently selected cell from the view. Data will be shifted from the right. The Show all columns item will return the cell to the view.
Insert cell in row
Creates a new cell and shifts data to the right.
Move cell right
Moves the current cell to the right and inserts a blank cell to the left. This is similar to Insert cell in row, but overwrites the cells to the right.
Insert cell in column
Inserts a blank cell above the selected cell and shifts column data down.
Hide empty cells in column
Collapses any empty cells in the column of the selected cell.
Insert column left
Inserts a new column to the left of the selected cell.
Duplicate column left
Inserts a new column to the left of the selected cell containing a copy of the data in the current column.
Replace in {cell,row,column,all}
This handy option allows you to do a regular expression replace across the current cell, row, column, or across all of the table. This can be particularly useful for removing disallowed characters from page names
Split {cell,row,column,all}
This option is a simple version of Excel’s Text to Columns. For example, a column might contain a sample name composed of separate fields concatenated together with underbars (e.g. sample1_human_cancer-project_efron-lab). This function can be used to separate the individual fields out into distinct columns.
Merge column
This item is the opposite of Split and can be used to combine separate columns. For example, your spreadsheet may have First Name and Last Name as separate columns, but MiniLIMS may be tracking a Scientist property that includes both first and last names.
Show all rows with this value
If this item is clicked while a cell is selected, all rows containing that value will be displayed and all others hidden.
Hide all rows with this value
If this item is clicked while a cell is selected, all rows containing that value will be hidden.
Use current value for all cells in this column.
If this item is clicked while a cell is selected, all of the values in the current column will be changed to match the selected cell.
Show all columns.
If columns or cells have been hidden by another menu item, this will display the hidden columns.
Show all rows.
If rows have been hidden by another menu item, this will display the hidden rows.
Show Current Data.
This button displays a dialog containing the data that will be uploaded in a tab-delimited form.