# FPbase Help

Thank you for using FPbase!  Use the table of contents to the left, or the search bar at the top to find what you're looking for.

{% hint style="info" %}
These docs are still very much a work in progress, and there will be gaps.  If you cannot find the information you were looking for, please [contact us](https://help.fpbase.org/www.fpbase.org/contact).
{% endhint %}

**Here are some quick links that you may be interested in if you are...**&#x20;

### A busy scientist <a href="#busy" id="busy"></a>

If you are just looking to get some information quickly, here are some resources at FPbase that do not require an account

{% content-ref url="/pages/-LWgP8QFg0UuizDcL6\_L" %}
[Searching the Database](/searching)
{% endcontent-ref %}

{% content-ref url="/pages/-LWgymWZ3PV7C2fVd2LT" %}
[Browsing the Database](/browsing)
{% endcontent-ref %}

{% content-ref url="/pages/-LWgyWzAWOEQFQmYTJOY" %}
[Spectra Viewer](/tools/spectra-viewer)
{% endcontent-ref %}

{% content-ref url="/pages/-LWgzCYluGgTGExqQuWb" %}
[Comparison Tool](/tools/comparison-tool)
{% endcontent-ref %}

{% content-ref url="/pages/-LWgy\_RxXzjLEgB7\_TxP" %}
[FRET Calculator](/tools/fret-calculator)
{% endcontent-ref %}

### An avid FP user

If you've got a little more time and are looking to get the most out of the tools at FPbase.  These are some features of FPbase that require creating an account

{% content-ref url="/pages/-LWgzPK0x\_x5mWvBdhmR" %}
[Protein Collections & Favorites](/collections)
{% endcontent-ref %}

{% content-ref url="/pages/-LWgyZ2Ugsm7gJVNAw93" %}
[Microscope Pages](/tools/microscopes)
{% endcontent-ref %}

### An awesome person

If you would like to help improve the database, these pages provide information on adding new information and updating existing information in the database.  Registration is required.

{% content-ref url="/pages/-LWgyzpG4Vp-O84Ixpmx" %}
[Submit a New Protein](/contributing/submit-protein)
{% endcontent-ref %}

{% content-ref url="/pages/-LWgz0RJ09wDbGfUsuPJ" %}
[Update Existing Protein](/contributing/update-protein)
{% endcontent-ref %}

{% content-ref url="/pages/-LWgz2Dz-E-YjJv2LjAT" %}
[Submit a Spectrum](/contributing/submit-spectrum)
{% endcontent-ref %}

{% content-ref url="/pages/-LWhFgzBL1ogSGSJLHDi" %}
[Fixing Gaps and Inconsistencies](/contributing/problems)
{% endcontent-ref %}

### An FP Developer

If you are a scientist that develops fluorescent proteins, we hope you'll look around the site and evaluate the presentation of your FPs.  If your protein is missing from the database, we hope you'll consider [submitting](/contributing/submit-protein) it. If you find any errors, feel free to [submit a correction](/contributing/update-protein), or [contact us](https://help.fpbase.org/www.fpbase.org/contact) if you have any questions or concerns.


# Searching the Database

Here's how to search and browse the information at FPbase.


# Home & Navbar Search

The most visible search function is the search field shown on the homepage and in the navigation header on any internal page.  This is intended to be a relatively “smart” and quick way to access data using a number of unique identifiers. The search logic is as follows:&#x20;

* If the search term returns a unique match for a protein name, alias or “slug” (name without special characters, and whitespace converted to single dashes), or if the search term matches one of the external accession IDs of a given protein, then the user is redirected to the protein page.
* If the search term matches a DOI, or unique family name of one of the authors in the database, then the user is redirected to the corresponding reference or author page, respectively.&#x20;
* If the search term matches the beginning of the scientific name of one of the organisms in the database (e.g. “*Aequorea*”), then the user is redirected to the corresponding organism page (in the case of multiple hits, the user is directed to the organism with more derived proteins in the database… a more specific search term may be used for less common organisms, such as “*Aequorea macrodactyla*” ). &#x20;
* Lastly, if the search query provides no unique hits following the aforementioned logic, then the user is redirected to the [advanced protein search](/searching/advanced-protein-search) page, which is prepopulated with proteins whose names are similar to the search term (based on PostgreSQL “trigram similarity”).


# Advanced Protein Search

The advanced protein search page provides a graphical user interface to assist the user in filtering proteins based on a combination of criteria querying 20 different fields in the database. &#x20;

![the advanced protein search GUI](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LWhIgpxa6VKTBh-YKCM%2F-LWhInobFfzk21oBEtIn%2Fadvanced_protein_search.png?alt=media\&token=24cb4abd-d39c-4e16-82b7-7ad9f4de445b)

When the user submits a search, a URL is constructed with the corresponding parameters and submitted as a GET request. This URL can be reused to keep track of favorite search combinations (the ability to save searches within FPbase is in development, at the time of publication).  For instance, the following search URL would return all monomeric, constitutively fluorescent (non-photochromic) proteins published since 2010 that have an emission maximum between 500-560 and are relatively bright compared to other similarly-colored proteins in the database:

<https://www.fpbase.org/search/?agg=m&switch_type=b&default_state__em_max__range=500%2C560&spectral_brightness__gt=1.5&primary_reference__year__gte=2010>

{% embed url="<https://www.fpbase.org/search/>" %}


# Browsing the Database


# Interactive Chart

The [interactive chart](http://www.fpbase.org/chart) provides a way to plot & compare specific fluorescent protein attributes in a graphical manner, for all FPs in the database.  Users choose an FP property (e.g. ex/em maximum, brightness, lifetime, QY, etc.) for both X and Y axes, and all FPs in the database are plotted as points on the graph, with additional FP characteristics such as color, brightness and oligomerization encoded as attributes of the points on the graph (e.g. color, saturation, shape, etc.).  Hovering (tapping on mobile) over any point reveals a tooltip with additional information about that protein, and clicking on any point brings you to the dedicated page for that protein.

![](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LWh2SDgQeyepCGJc1gG%2F-LWh2dd7QCn89g9gAFjr%2Fimage1.png?alt=media\&token=6281521c-e693-4b56-969d-2f9032e6afd4)

{% embed url="<https://www.fpbase.org/chart>" %}


# Protein Table

The [protein table](http://www.fpbase.org/table) presents the primary attributes of all proteins in the database.  Rows represent protein states, so “basic” (constitutively fluorescent proteins) will only appear once in the table, but multi-state/photochromic proteins will have a row for each state in the database attributed to that protein.  The table can be sorted by column, and searched for keywords using the search field above the table and to the right. It can be filtered to show only proteins of a certain photoswitching type or aggregation type.  Table data (including applied filters) can be copied to the clipboard or downloaded in CSV or Microsoft Excel format using the buttons at the bottom right. Lastly, there is an “add to comparison” button in every row that adds the given protein to the comparison slider tab on the right side of the screen.  This is a convenient way to quickly compare a number of proteins that meet certain criteria using the comparison tool, described below.

{% embed url="<https://www.fpbase.org/table>" %}


# Organisms

Most proteins in the database have a **parental organism**, which is represented with the [NCBI Taxonomy ID](https://www.ncbi.nlm.nih.gov/taxonomy) for the species from which the protein was evolved.  All organisms can be seen in the [Organism Table](http://www.fpbase.org/organisms), along with the number of proteins in the database that were evolved from each organism.  On any given organism page, you can find the basic attributes for all proteins in the database that were evolved from that organism, as well a lineage tree showing the directed evolution of proteins from that organism.

{% embed url="<https://www.fpbase.org/organisms>" %}


# References Table

All articles referenced on at least one page at FPbase can be seen in the [Reference Table](https://help.fpbase.org/browsing/www.fpbase.org/references). Use the search field to search for any text in the table, including protein name, author name, journal name, publication year, or title contents. 1˚ proteins are intended to be proteins that were introduced by that reference, whereas 2˚ proteins were further characterized by that reference. Click on any title, author, or protein, to see more info for that item at FPbase, or click on the "Link"  button to go to the publisher's website.

{% embed url="<https://www.fpbase.org/references>" %}


# Lineage Trees

Lineage trees are shown in three places on the website:

1. All lineage trees are shown at [www.fpbase.org/lineage](http://www.fpbase.org/lineage)
2. Lineages that descend from a particular specifies are shown on organism pages: (for example, Aequorea Victoria: <https://www.fpbase.org/organism/6100/>)
3. Individual protein pages show lineage trees containing direct ancestors and descendents of a given protein.

Lineage trees on FPbase depict the historical, directed evolution of proteins, and are not phylogenies based on sequence similarity (though such phylogenies are straightforward to generate, and could be included as well).  Nodes in the trees represent individual proteins, and hovering on a node (or tapping on mobile) shows the mutations to the parental protein sequence that yield the sequence of the child protein, along with the reference that introduced the protein.  Clicking on a node brings you to the protein page. Node colors represent emission wavelength, and multi-state/photochromic proteins are colored with linear gradients representing each state.

![](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LWh5M9hYacC1lw5yr3T%2F-LWh5coywNz4IColZJeD%2Fimage4.png?alt=media\&token=a2ed1b07-814e-479b-a5b5-d109d518f03b)

On the lineage and organism pages, there is an additional search field with which one can search for specific mutations in the evolutionary tree.  Mutations may be entered in HGVS format (e.g. A206K; [6](https://paperpile.com/c/N27zBR/boxj3)), and any proteins matching the mutation query will be highlighted (Fig. S6).  Note: for the lineage trees, amino acid numbering is always aligned to the root ancestral protein sequence, so “A206K” shows all monomeric avGFP derivatives, even though many of them have an added valine in the second position (making “A206” actually “A207”); this is in keeping with the convention usually followed in the literature.  Partial mutation codes may be entered: for instance “A206” will show all proteins where alanine 206 was mutated, regardless of the resulting amino acid substitution, and “206K” reveals all proteins where the 206th amino acid was mutated to lysine, regardless of the initial amino acid.  Multiple mutations may be entered to find proteins with “all” or “any” of the mutations (using the all/any toggle button). By default, all proteins with the mutation (relative to the root ancestral protein) will be highlighted; however, by selecting “relative to parent”, only proteins that possess the mutation(s) with respect to their direct parental protein will be highlighting.

{% embed url="<https://www.fpbase.org/lineage>" %}


# Contributing

Help with changing existing data in the database, or adding new information


# Creating an account

In order to submit data or make changes to the database you must be a registered user.  Registration requires a valid email address.

You may sign in with your Google or Twitter credentials at [www.fpbase.org/accounts/login/](https://www.fpbase.org/accounts/login/).  Or you can create an account directly at FPbase:  [www.fpbase.org/accounts/signup/](https://www.fpbase.org/accounts/signup/)

{% embed url="<https://www.fpbase.org/accounts/login/>" %}

PS. We have no interest in your personal information and we will not share your email with anyone for any reason... we just want to minimize the likely hood of "spammy" data submissions.  <https://www.fpbase.org/terms/>


# Submit a New Protein

New proteins may be submitted at <https://www.fpbase.org/submit/>

{% hint style="info" %}
You must be a [registered user](/contributing/creating-an-account) in order to submit data.
{% endhint %}

![Submission form (as of Jan 28, 2019)](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LXKFlluqkwytiSNrevO%2F-LXKGYUHhMxV79PEJNdp%2FScreen%20Shot%202019-01-28%20at%2011.23.35%20AM.png?alt=media\&token=2f6a7305-b886-4f22-a6ce-2125f7be1689)


# Update Existing Protein

Existing proteins can be updated using one of many links on each protein page, these are the most notable:

* "Edit States/Attributes" button below the Attributes table
* "Submit a change" button at the bottom of the page.

&#x20;Either of those will bring you to that protein pages update form: [www.fpbase.org/protein/\`protein\_slug\`/update/](http://www.fpbase.org/protein/`protein_slug`/update/)

The form is the same as the [new submission form](/contributing/submit-protein), but pre-populated with the existing data.


# Submit a Spectrum

{% hint style="warning" %}
**Careful:**  At the moment, there is no way for users to *delete* or *update* spectral data (only to add new data).  So please double check your data (for example: graph it in excel or something) and make sure you have selected the right options in the form before submitting.

If an error occurs and you need help correcting it, don't hesitate to [contact us](https://www.fpbase.org/contact).
{% endhint %}

Spectral information can be submitted at [www.fpbase.org/spectra/submit/](https://www.fpbase.org/spectra/submit/).  Alternatively, if you would like to add fluorescent protein spectra on any given protein page, you can click "add spectrum" link or the <img src="https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LXKONNNvh7-VszuZFfJ%2F-LXKOskNaIMdLYwKxKOt%2FScreen%20Shot%202019-01-28%20at%2011.59.36%20AM.png?alt=media&amp;token=b38e3a33-00bf-4b6d-9382-73b71d86b198" alt="" data-size="line"> icon at the top left of the existing spectra.

Please choose the appropriate type of data for the spectra you are uploading (Dye, Protein, Light Source, Filter, Camera).  This will be automatically chosen for you if you came to the form from one of the protein pages.

{% hint style="info" %}
You must be a [registered user](/contributing/creating-an-account) in order to submit data.
{% endhint %}


# Fixing Gaps and Inconsistencies

Learn how to help fix problems in the database

If you would like to help improve the data in the database, thanks! you're awesome!

There are some automated data-validation routines that are run periodically, and potentially-inconsistent or obviously-missing data is tracked at this page:

{% embed url="<https://www.fpbase.org/problems/>" %}


# Tools


# Spectra Viewer

Information on the general spectra viewer at fpbase.org/spectra

{% embed url="<https://www.fpbase.org/spectra>" %}

The [spectra viewer](http://www.fpbase.org/spectra) contains all FP spectra in the database, as well as many organic dyes and spectra for hardware such as fluorescence filters, light source power densities, and camera quantum efficiencies.  The database is non-commercial, brand-agnostic, and user-editable (with moderation) and contains products from a range of filter, dye, and camera vendors.  While simple at first glance, the spectra viewer contains a lot of functionality for evaluating spectra.

![FPbase Spectra Viewer](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiGDz-qXORkVPh9XeyY%2F-LiGE7uy4ECx_jyZE3V1%2FUntitled.png?alt=media\&token=c23871ca-40f0-4318-b68f-4666b379e3e1)

## Interacting with the chart

Hover the mouse over the chart to get precise Y values for every spectrum at the current X position of the mouse:

![](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiIujkvw051Z0Gr9xMc%2F-LiIvNLGjjQkUSM3Ivgh%2FScreen%20Shot%202019-06-26%20at%209.14.00%20AM.png?alt=media\&token=973ee545-1fbd-4533-8503-0dff9d6a7b3f)

The default hover behavior can be changed by unchecking "**Show Y value for all spectra on hover**" in the [options](/tools/spectra-viewer#options), in which case only the values for the spectrum closest to the mouse will be shown in the tooltip.

You can highlight any given item on the chart by hovering over its name in the legend, or hide a single item from the chart (without removing it) by clicking on the item in the legend.

## Quick Entry

The fastest way to get started is by using the Quick Entry tool: either hit the big "+" button at the bottom of the app, or hit the spacebar at any time (provided you are not currently editing an input field).

![Quick Entry Button](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiGDz-qXORkVPh9XeyY%2F-LiGGAoDUXSYCX0DI0Qs%2FUntitled%202.png?alt=media\&token=1f7c033f-10f7-41d7-9ea0-390a124c0fb9)

{% hint style="info" %}
**Tip:** Keep your hands on the keyboard!  Use the **spacebar** for quick spectrum entry, hit **tab** or **shift-tab** to move the focus between different items in the list, press **delete** to remove the focused item, use the **left/right arrow keys** to move between tabs.  See [all keyboard shortcuts below](/tools/spectra-viewer#keyboard-shortcuts).
{% endhint %}

### Spectrum Lookup

Upon pressing spacebar, the quick entry modal will appear and you can begin typing the name of any spectrum in the database, regardless of type.  Hit enter to add the spectrum to the viewer.

![The quick entry tool is flexible and allows partial word completions](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiGDz-qXORkVPh9XeyY%2F-LiGH45uFSA0stfIbVtP%2FScreen%20Shot%202019-06-25%20at%208.53.21%20PM.png?alt=media\&token=a1fb74d0-e69e-4804-9b89-80322d11ba2f)

### Optical Configuration Lookup

In addition to individual spectra, the quick entry modal allows you to quickly recall any optical configuration from *any* [microscope](/tools/microscopes) at FPbase.  So if you have created filter arrangements for multiple microscopes, you can quickly retrieve them in one place.  Selecting a configuration will replace all spectra in the viewer (with the exception of fluorophores, if the **preserve fluorophores** checkbox is checked).

![](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiGDz-qXORkVPh9XeyY%2F-LiGHiiIq7FWdSkCaHKP%2FScreen%20Shot%202019-06-25%20at%208.58.20%20PM.png?alt=media\&token=da99074c-4044-427d-b653-6f97c53b748f)

{% hint style="info" %}
You can also use the optical configuration lookup to **load all of the filters from almost any standard filter set** offered by [Chroma](https://www.chroma.com/products/complete-filter-sets), [Semrock](https://www.semrock.com/sets.aspx), [Omega](https://www.omegafilters.com/fluorescence-sets), or [Zeiss](https://www.micro-shop.zeiss.com/en/us/shop/filterAssistant/filtersets/).  Try typing the name of the vendor, followed by the filter set name, for example: "Chroma 89000"
{% endhint %}

## Spectra Viewer Tabs

### All <a href="#all-tab" id="all-tab"></a>

Selectors for spectra added to the viewer will appear in one or more of the five tabs below the graph.  In each row, you will see an icon on the left representing spectrum type, the main spectrum selector showing the currently selected spectrum, toggle buttons that enable turning spectrum typers on and off, a blue **link** <img src="https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiGU5CWqj5NJ9hPX8Ev%2F-LiGWC3DWVk3I1Umbs01%2FScreen%20Shot%202019-06-25%20at%2010.01.57%20PM.png?alt=media&amp;token=4a16bf04-7263-4aa8-86b1-16e8248b211b" alt="" data-size="original"> button linking to the corresponding page on FPbase or external sites (when available), and a **delete**<img src="https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiGU5CWqj5NJ9hPX8Ev%2F-LiGWO5FKUEMW5xW72Iy%2FScreen%20Shot%202019-06-25%20at%2010.02.35%20PM.png?alt=media&amp;token=36c004ce-ceae-434f-9831-4d52e3244801" alt="" data-size="original">button that will clear the row and remove the item from the viewer.

The **ALL** tab shows all spectra currently added to the viewer (with the exception of custom filters and lasers), separated by spectrum type.  The empty selector at the bottom of the "ALL" tab will search/browse all spectra in the database, whereas the selectors on the other tabs will only search/browse the corresponding spectrum type.

![](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiGHpKx1tXrcYj5oJEf%2F-LiGJoyFyN5l6nRod7lN%2Falltab.png?alt=media\&token=7ed7c84f-f2f2-49fb-8733-562e91e9c21c)

### Fluorescent Proteins and Dyes <a href="#fluorophores-tab" id="fluorophores-tab"></a>

All fluorescent proteins and organic dyes can be found on the **FLUOROPHORES** tab.  When available, the extinction coefficient and quantum yield is shown next to the currently selected fluorophores.  (If available, you have the option of [scaling the excitation or emission spectra](/tools/spectra-viewer#scale-by-qe-or-ec) by their respective values)

### Filters <a href="#filters-tab" id="filters-tab"></a>

All filters, regardless of type (emission, excitation, longpass, etc...) can be browsed/searched in the **FILTERS** tab.

### Custom Filters

If there is a filter missing that you would like to see, you can [submit a new spectrum to the database](/contributing/submit-spectrum). Alternative, you can model a filter by clicking the <img src="https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiIujkvw051Z0Gr9xMc%2F-LiIwbz5y5VIPrLo_d_t%2FScreen%20Shot%202019-06-26%20at%209.20.56%20AM.png?alt=media&amp;token=e0997652-00fc-4ad3-b2fe-e3d55d2b4e21" alt="" data-size="original"> butto&#x6E;**.** A tool will appear enabling you to choose between longpass, shortpass, and bandpass filters, with a few different parameters.

![The custom filter creator](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiGU5CWqj5NJ9hPX8Ev%2F-LiGWkco8kE63uwh_GWl%2FScreen%20Shot%202019-06-25%20at%2010.04.16%20PM.png?alt=media\&token=e6b5741d-99ef-4c0d-bb2c-068d3ec818cf)

### Light Sources <a href="#light-sources-tab" id="light-sources-tab"></a>

Light sources such as LEDs, mercury and metal halide bulbs appear in the **LIGHT SOURCES** tab.  Laser lines don't typically have dedicated in the spectra but can be modeled by clicking the <img src="https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiIujkvw051Z0Gr9xMc%2F-LiIwkC1880lJNLO5pa7%2FScreen%20Shot%202019-06-26%20at%209.21.27%20AM.png?alt=media&amp;token=8c8a6e7f-443d-404e-bacb-b27a58c03a86" alt="" data-size="original"> button.

![The custom Laser line selector](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiGU5CWqj5NJ9hPX8Ev%2F-LiGWsNu8lmyN8HudCF9%2FScreen%20Shot%202019-06-25%20at%2010.04.48%20PM.png?alt=media\&token=b2687905-4c7b-42bf-83b6-9d236acc1ab6)

### Custom Laser Lines and Emission Scaling <a href="#custom-lasers" id="custom-lasers"></a>

In addition being used as a visual aid, custom laser lines can be used to scale the emission spectra of fluorophores to the relative absorbance of their corresponding excitation spectra at a particular (laser) wavelength by clicking on the **"Norm em. to this**" button to the right of any custom laser line.  This can be a useful way to evaluate the relative emission efficacy of a variety of fluorophores for a given laser line on your system

![Fluorophore emission scaled to laser excitation efficiciency](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiG_YCEpUeAHXYk5ocA%2F-LiG_r6-QujtwXot7Svc%2Flaser_Scale.png?alt=media\&token=1292b9e3-3ad0-4ec8-86c3-3c344b0044f2)

This feature obviously requires that a corresponding excitation spectrum be available for the given fluorophore (fluorophores missing that spectrum will either be hidden or appear unscaled).

{% hint style="info" %}
**Note:** Emission spectra scaled by laser excitation may *also* be [scaled by quantum yield](/tools/spectra-viewer#scale-by-qe-or-ec). &#x20;
{% endhint %}

### Detectors & Cameras <a href="#detectors-tab" id="detectors-tab"></a>

Cameras and detectors are found in the **DETECTORS** tab.  Again, if a spectrum is missing that you would like to see included, feel free to [submit a spectrum](/contributing/submit-spectrum).

## Collection Efficiency <a href="#efficiency" id="efficiency"></a>

![](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LislczXJtvVdLRJ3EXm%2F-LislepY62FPK6h-mjjm%2FScreen%20Shot%202019-07-03%20at%2012.58.42%20PM.png?alt=media\&token=cfa344e3-813d-4c4a-8557-f6faf9f520ec)

The **EFFICIENCY** tab is a special tab for calculating the collection efficiency for every pair of fluorophore emission and filter.  (This is sometimes called the "spillover table" in other spectra viewers).  The values in the table represent the percentage of total fluorescence emission of a given fluorophore that is predicted to be collected by a given filter.  It is calculated as follows:

$$
\frac{ \int (filter\_{em}(\lambda)  \times fluor\_{em}(\lambda))}{\int  fluor\_{em}(\lambda)}
$$

where $$filter\_{em}(\lambda)$$ and $$fluor\_{em}(\lambda)$$ are the emission filter and fluorophore emission spectra (respectively) as a function of wavelength.

This tab can be used to evaluate the appropriateness of a given filter for collecting the emission of a given fluorophore (in which case a high collection efficiency is desired), or for evaluating the effectiveness of a given filter for *blocking* emission from a given fluorophore, thereby preventing bleed-through (in which case a low collection efficiency is desired). The table can be sorted by various columns (click on the column header), or exported as CSV.

Each item in the table is actually a button that you can click to reveal the given spectral overlap on the chart.

![](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-Lis99e96hG6fEjjzq1T%2F-Lis9mwcLdiDfWtgG9BE%2FScreen%20Shot%202019-07-03%20at%2010.09.10%20AM.png?alt=media\&token=2b9f9b74-036e-4730-ad27-dfb26131879a)

{% hint style="info" %}
**Note:** High collection efficiency pairs (>50%) are colored in **blue**. Low collection efficiency (<5%) is colored **red**.  Everything else will be colored **gray**.
{% endhint %}

## X-axis range, Zoom, and Panning

The default behavior of the chart is to adjust the X (wavelength) range automatically to fit the data currently presented.  The X axis range can be modified in two ways:

1. Click and drag on the chart (or pinch on mobile) to zoom in to a specific wavelength range.
2. Click directly on the minimum or maximum X values and they become input fields where you can specify a value (you must hit enter for it to be applied).&#x20;

Once zoomed in, the chart can be panned by shift-clicking and dragging (or, by a two-finger drag on mobile).

To return the min or max to the default "autoscale" behavior, click the "reset zoom" button that appears at the top right of the graph after clicking to zoom.  Or, if you have entered values into the min/max inputs, delete the values to return to the default behavior.

## <img src="https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiGHpKx1tXrcYj5oJEf%2F-LiGRYbrApOTiA5exAZQ%2FScreen%20Shot%202019-06-25%20at%209.41.34%20PM.png?alt=media&amp;token=acdeaca8-5d22-41ba-a48f-3e9ebe5fe8ae" alt="" data-size="original"> Display Options  <a href="#options" id="options"></a>

Some of the appearance and behavior of the chart can be modified by clicking on the settings icon at the bottom left.&#x20;

### Show axes or grid

By default, the X axis is shown and Y axes are hidden. The visibility of axes can be toggled.  Additionally, the "show grid" option will overlay a tick-mark grid on the chart to help visualize X and Y values.

### Fill area under curve

Once multiple spectra are added to the viewer, it may become easier to see them without the area under the curve filled in.  This setting can be toggled in the display&#x20;

### Scaling by Quantum Yield or Extinction Coefficient <a href="#scale-by-qe-or-ec" id="scale-by-qe-or-ec"></a>

Excitation spectra can be scaled by the [extinction coefficient](/glossary#extinction-coefficient) (usually measured at the peak excitation wavelength) and emission spectra can be scaled to [quantum yield](/glossary#quantum-yield), when the respective EC or QY values are available in the database for the current FP or dye.  When scaling excitation spectra by extinction coefficient, a second Y axis appears on the right showing the absolute EC values (regardless of the "show Y axis" setting).  Additionally, when you hover over the chart,  spectra that have been scaled to EC or QY will be indicated in the tooltip.

### Excluding spectrum subtypes

When adding a new fluorophore to the chart, you may wish to hide some of the spectra types (e.g. excitation, emission, two-photon absorption) by default.  This be controlled with the **exclude subtypes** toggle buttons in the display options.  By default, two-photon spectra are not added automatically when adding fluorophores.

### <img src="https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiIoHUKufco5nX7jrSP%2F-LiItUk9amAyp3fpnIWZ%2FScreen%20Shot%202019-06-26%20at%209.07.16%20AM.png?alt=media&amp;token=d1598196-29a8-4ed7-934e-20bdc717748d" alt="" data-size="original"> Show Optical Density

Click on the "OD" toggle to change between linear scaling on the Y axis, and the optical density (OD) where OD is the negative log of the transmission:

$$
OD(λ) = -log T(λ)
$$

This setting is usually used to evaluate the attenuation level of filters (though be aware that the negative log scaling is applied to all spectra on the graph).

### **Show Y value for all spectra on hover**

This setting changes the default behavior of the tooltip when [hovering the mouse over the chart](/tools/spectra-viewer#interacting-with-the-chart).

## <img src="https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiIoHUKufco5nX7jrSP%2F-LiIpXG7_djhnJTFT8gN%2FScreen%20Shot%202019-06-26%20at%208.49.56%20AM.png?alt=media&amp;token=021814f0-1122-4b3e-b6e1-45673a641da1" alt="" data-size="original"> Downloading, Exporting & Sharing   <a href="#export" id="export"></a>

It is possible to save and recover the state of the chart in a few different ways, all of which are accessed by clicking the share icon at the bottom right of the app.&#x20;

### Image Download

You can download the image of the chart at any time in SVG, PNG, or PDF format.  SVG vector graphics provide the highest quality scalable image, but may not be compatible with all downstream applications.

### CSV data export

You can download the current data in the chart in CSV format by clicking "download data as CSV".

### Saving the chart as a URL

The full state of the chart can be encoded with a special URL string.  To generate a URL for the current chart, click on the share button at the bottom right then click "**Share chart as URL**"; you will be presented with a window where you can copy the URL (click the icon on the right side of the URL), or click the email or twitter buttons to share the URL directly in the corresponding application.

{% hint style="info" %}
**Note:** Another great way to store any given arrangement of filters, light sources, and detectors is to create an **optical configuration** in an [FPbase microscope](/tools/microscopes).  All optical configurations saved in any FPbase microscope can be quickly recalled in the general spectra viewer using the [optical configuration lookup](/tools/spectra-viewer#optical-configuration-lookup) in the quick entry modal.
{% endhint %}

## Keyboard Shortcuts

{% hint style="warning" %}
Most of these keyboard shortcuts assume that you are **not** currently editing an input (like a spectrum selector).  Press the **escape** key at any time to blur the current input and re-enable the shortcuts.
{% endhint %}

| Key      | Action                                   |
| -------- | ---------------------------------------- |
| Spacebar | Open quick entry window                  |
| →        | Go to next tab                           |
| ←        | Go to previous tab                       |
| 1 - 6    | \[Number keys] - Go to specified tab     |
| Y        | Show/Hide Y axis                         |
| X        | Show/Hide X axis                         |
| G        | Show/Hide gridlines                      |
| F        | Show/Hide area fill                      |
| Q        | Toggle scaling to quantum yield          |
| E        | Toggle scaling to extinction coefficient |
| T        | Toggle chart hover tooltip behavior      |
| Delete   | Remove currently focused spectrum        |
| Escape   | Blur the current input                   |

## Resetting the Chart <a href="#reset" id="reset"></a>

If you would like to restore the chart to its initial, empty state without deleting each spectrum individually, you can do so by clicking on the **REMOVE ALL SPECTRA** button at the bottom right of the [options menu](/tools/spectra-viewer#options): <img src="https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LiGU5CWqj5NJ9hPX8Ev%2F-LiGVNaUZXurVFxijR2W%2FScreen%20Shot%202019-06-25%20at%209.58.15%20PM.png?alt=media&amp;token=36f45b1f-1113-4d31-9ce3-e8110322d945" alt="" data-size="original">&#x20;

## Adding data

To add a data that is not currently in the database, please [submit a spectrum](/contributing/submit-spectrum).


# Microscope Pages

When using an online spectra viewer to decide which fluorophores might work best for their experiment, researchers frequently load a set of fluorescence filter spectra that match the filters on their instrument, and then compare those with a set of fluorophore spectra.  [Microscope pages](http://www.fpbase.org/microscopes) are specifically designed to simplify this process by allowing users to save the components of their microscope at FPbase so that they do not need to re-enter filters every time they use the viewer.  The result is a custom, microscope-specific spectra viewer with a dedicated URL that can be shared or embedded elsewhere (such as a lab or core facility website). Furthermore, “optical configurations” (combinations of excitation, dichroic, and emission filters) can be specified, making it easy to switch between the various filter arrangements that a user might have on their microscope.  With the addition of light source(s) and camera spectra, relatively complete calculations can be made for the excitation and collection efficiency of a given optical configuration/fluorophore combination. Additionally, we find the visual representation of these efficiencies provided by the spectra-viewer to be useful in teaching scenarios. I specifically hope to see multi-user facilities (such as core facilities) benefit from this tool and welcome suggestions for improvement or requests for help in setting up a microscope page. Future embellishments may include cross-database calculations of fluorophore efficiency and dye-pair bleed-through that may help to assist users in choosing a set of probes well matched to their hardware.  Note however, FP maturation and relative expression level are primary determinants of apparent brightness and bleedthrough, and neither can be predicted in any spectra-viewer!

![](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LWh1a3rSayCYbA9lHSI%2F-LWh1cyU16mU2TJt1mvn%2Fimage6.png?alt=media\&token=ff45939d-e577-454b-badf-9b8602500de7)

{% embed url="<https://www.fpbase.org/microscopes>" %}


# Creating a microscope page

A guide to using the microscope page creation tool on FPbase

{% hint style="info" %}
**TL;DR**

If you already know whats on your microscope and you just want to get up and running quickly, format your information as follows and use the [bulk-entry tab](/tools/microscopes/create-microscope#add-bulk-configs):

```
Green, ET470/40x, T495lpxr, ET525/50m
Red, FF01-543/22, FF562-Di03, FF01-593/40
```

{% endhint %}

## Gather information

The first step in creating your customized spectra-viewer ("microscope page") is to gather the information about your instrument that you will need.  This includes:

* **Light source(s)**, such as an LED or metal-halide light engine, or laser wavelengths
* **Excitation, dichroic (beamsplitters) and emission filters**.  You will need the actual brand and model number (for Chroma and Semrock) filters, or you will need to have the spectrum information available.
* **Camera(s)**

If you don't know exactly what [fluorescence filters](https://www.chroma.com/knowledge-resources/about-fluorescence/fluorescence-filters) you have in your instrument, then you've got to do some digging.  Most mounted commercial filters will have the necessary information printed on the side of the filter, though dichroic filters are often unlabeled.&#x20;

{% hint style="danger" %}
**If you are not the person who maintains your microscope, and if you do not know exactly what you're doing,&#x20;*****please*****&#x20;ask for assistance before opening up your microscope!** &#x20;
{% endhint %}

In a conventional microscope, your filters will often be in a filter cube inside the filter turret. Alternatively, your excitation filters and/or emission filters may be mounted in external filter wheels.&#x20;

![filter cube image from Chroma.com](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LYDs7Fm_kqYRetlKeIg%2F-LYDvL-nMC_DhHx-S6mg%2FCubeGIF.gif?alt=media\&token=e4f72ee1-fe6d-4d9c-a0f9-e35aec2d4bb0)

{% hint style="danger" %}
If you must open the cube or the wheels to see which filters you have, make sure to take note of the filter orientation, and replace the filters in the same orientation.  Also, wear gloves to avoid getting finger prints on any of the optical surfaces.
{% endhint %}

Chroma part numbers will often be named something like ET525/50x, whereas Semrock part numbers typically look something like FF03-525/50.  Though in each case, there are many variations. &#x20;

## Optical configurations <a href="#optical-configurations" id="optical-configurations"></a>

Next, you need to assemble a list of the different optical configurations that you use to image different fluorophores on your microscope.  By "optical configuration" here, we are referring to a combination of light source, filters, and camera (these usually correspond to buttons or settings in your microscope software that put the appropriate hardware into the optical path).  Here's an example of how such a table might look:

| Config Name | Light Source | Ex Filter   | Dichroic   | Em Filter   |
| ----------- | ------------ | ----------- | ---------- | ----------- |
| Green       | SOLA 395     | ET470/40x   | T495lpxr   | ET525/50m   |
| Red         | SOLA 395     | FF01-543/22 | FF562-Di03 | FF01-593/40 |

It's possible that a single filter (particularly multi-band dichroic filters) will be used in more than one optical configuration on your microscope.

## Enter information at FPbase

You can create a new microscope at FPbase at <https://www.fpbase.org/microscope/create/>

After providing a name and (optional) description for your microscope, there are two ways to enter optical configuration information:

1. **In Bulk:** This lets you enter everything as text, which can be much faster, particularly for a first-time setup, but it is more error prone, and requires that all the filters are already in the database.  It's worth a try, then fall back to the manual form entry if necessary.
2. **One config at a time:** Here, you select filters in each optical configuration in corresponding selection fields in the form.  Slower, but less error prone.

### Add Configs in Bulk <a href="#add-bulk-configs" id="add-bulk-configs"></a>

I recommend starting here, and resorting to the manual entry if you run into errors that cannot be easily fixed.  To, add configs in bulk, select the middle tab

![The bulk optical config tab on the microscope form](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LYE3h0qGx025MHUeOJz%2F-LYE3qvOtlv1TqTw2hrs%2FScreen%20Shot%202019-02-08%20at%204.46.10%20PM.png?alt=media\&token=b140bf3f-bca2-4d56-8f5b-4802ffb6ee54)

Bulk configs must be entered in the correct format: one config per line on a separate line, using the following 4 or 5 field comma-separated format:

```
Name, Laser OR Ex Filter(s), Dichroic(s), Em Filter(s) [, Dichcroic reflects ex?]
```

Commas are considered delimiters, and are not allowed in names.  Lasers must be entered as integer values.  Any broadband light sources entered in the "Light Source(s)" field, or cameras entered in the "Detector(s)" field will be applied to all of the configs, but leave them out of the text entry.  (If you don't want the light source on all configs, you will have to add it manually later).  For example, the two configs shown in the table above would be entered as follows:

```
Green, ET470/40x, T495lpxr, ET525/50m
Red, FF01-543/22, FF562-Di03, FF01-593/40
```

{% hint style="info" %}
"Dichroics" here are implied to be in *both* the excitation and emission paths.  If you have a dichroic that is *only* in the emission path, such as a beamsplitter used for simultaneous dual-color imaging, place that dichroic in the emission path (and, optionally, invert it... [see below](/tools/microscopes/create-microscope#reflective-emission-filters))
{% endhint %}

#### Inverted dichroic (e.g. Yokogawa orientation) <a href="#invert-dichroic" id="invert-dichroic"></a>

Most microscopes have a dichroic that is oriented such that it reflects excitation light to the sample, and passes emission light to the detector.  Others (most commonly seen on a Yokogawa spinning disc confocal), have the dichroic in the opposite "inverted" arrangement, such that it reflects the emission light.  An optional 5th item ("true" or "false") specifies whether the dichroic reflects excitation light.  For example, a Yokogawa setup might look like this:

```
Yokogawa 488nm, 488, Di01-T405/488/568/647, ET525/50m, false
```

#### Multiple filters of a single type

In some cases, you might have multiple sequential filters in the same "role" (excitation or emission).  For instance, some light sources have excitation filters inside of the light source, and you may also have a filter elsewhere in your light path.  Alternatively, image splitting devices sometimes have a dichroic in the emission path as well as a cleanup-barrier filter.  Multiple filters in a given part of the light path can be indicated by enclosing them in curly braces (`{}`).  For example, a TIRF scope that has a notch filter in addition to a barrier filter in the emission path:

```
TIRF 647nm, 647, ZT405/488/561/647rpc, {ZET405/488/561/647m, ET700/75m}
```

{% hint style="info" %}
If you need to "invert" a filter or beamsplitter in the emission path, you will have to do that in the [manual optical config setup](/tools/microscopes/create-microscope#edit-configs-manually) after you save the form.
{% endhint %}

### Edit Configs Manually

This is the default method (first tab), and allows finer-tuned control over each optical config, and is a bit less error-prone than the bulk method.  It is pretty self-explanatory: just enter the appropriate filter, or laser/light source/camera in the appropriate field in the optical config.  Multiple filters can be entered in each of the fields.  If a filter does not exist, you can try to import it with the "import commercial filter" button, otherwise you will have to [upload it manually](/contributing/submit-spectrum).  To add additional configs, click the "Add Optical Config" button.

![Individual optical config forms](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LYE-_krYTitCLa5ePDr%2F-LYE3Dw2LFtGeodOuJxk%2FScreen%20Shot%202019-02-08%20at%204.43.27%20PM.png?alt=media\&token=187cfecb-44d7-45c1-a6b1-6b74f68e079a)

#### Inverted dichroics

As [described above](/tools/microscopes/create-microscope#invert-dichroic), some dichroic filters are arranged such that they reflect (rather than transmit) emission light.  If that is the case (such as on most Yokogawa systems), click the "reflects em" box above the dichroic filters.

#### Reflective Emission Filters

Often in simultaneous dual-channel (image-splitting) setups, there is a (usually longpass) dichroic filter in the emission path that reflects shorter wavelengths.  In that case, you may add the dichroic filter to the "Advanced: Reflective Emission Filter(s)" field (e.g. for the shorter wavelength in a simultaneous dual-channel setup).

### Add Extra Components <a href="#extra-components" id="extra-components"></a>

The third tab allows you to enter additional components that you would like to have available, but which you don't want to have associated with any particular optical config

![](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LYE3N_7UeAllp1OX8yN%2F-LYE3eAzYonFurVFnLHa%2FScreen%20Shot%202019-02-08%20at%204.44.47%20PM.png?alt=media\&token=1af0980d-81ef-44aa-9903-a9e9a2c6cedc)


# Brightness & Efficiency calculations

An explanation on how FPbase calculates excitation and emission efficiency on microscope page

![The brightness/efficiency readout on an FPbase microscope page](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LXzNhGAWhKbGtTsaESR%2F-LXzQ45ZoZohUsTWLcs2%2FUntitled.png?alt=media\&token=819a2ffc-246f-4e0b-ad2e-a4613b735ed3)

{% hint style="warning" %}
**Caution!**\
These calculations cannot take many critical parameters into account (such as FP expression level, photobleaching, illumination power, filter delamination, etc... )! As such, they are merely intended as theoretical predictions, and may not reflect the actual comparative brightness of two fluorophores on your system.
{% endhint %}

The first number in this field (11.71 below) provides a rough estimate of the apparent [brightness](/tools/microscopes/efficiency#brightness) for a given fluorophore/filter-set combination (when [extinction coefficient](/glossary#extinction-coefficient) and [quantum yield](/glossary#quantum-yield) are available for the fluorophore). The numbers in parentheses give the [excitation efficiency](/tools/microscopes/efficiency#excitation-efficiency) and [collection efficiency](/tools/microscopes/efficiency#emission-efficiency) with the current filter combination.

![](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LXzNhGAWhKbGtTsaESR%2F-LXzOaX0Ic31xa7wsOOf%2Fbrightness%20image.png?alt=media\&token=ee54e115-411e-4d6d-9fc7-c9bff1c7766f)

## Brightness

Brightness is calculated as the product of the excitation and collection efficiencies (described below) and the extinction coefficient and quantum yield of the selected fluorophore, all divided by 1000. If the EC and QY are not available for a given probe, then only excitation and collection efficiencies will be shown. The absolute value of this number is not particularly meaningful, but it can be used to **compare** the relative brightness of different fluorophore/filter arrangements.

## Excitation Efficiency

#### "Standard" Mode: <a href="#standard-excitation-efficiency" id="standard-excitation-efficiency"></a>

In the normal mode, excitation efficiency is interpreted as *the percentage of light incident upon the sample that can be absorbed by the fluorophore*. It is calculated as the area under the curve for the combined light + excitation filters (and dichroics) + fluorophore excitation spectra, divided by the area under the curve of the light + excitation filters alone:

$$
\frac{ \int ( \epsilon\_{ex}  \times fluor\_{ex})}{\int  \epsilon\_{ex} }
$$

where $$\epsilon\_{ex}$$ is the effective excitation spectrum: $$\epsilon\_{ex}  = light  \times  filter\_{ex} \times filter\_{dichroic}$$&#x20;

For example, a (narrow band) laser at the peak absorption wavelength of a fluorophore would have near 100% efficiency; but a very broadband excitation spectrum, even if it overlaps the peak absorption wavelength, can have relatively poor excitation efficiency if it contains excess off-peak energy. Even though the 460/80x filter shown in the first image below covers much of the EGFP excitation spectrum, it has lower excitation efficiency (58%, represented by the area with diagonal lines) than a 488nm laser right at the peak excitation wavelength of EGFP (99.8% efficiency):

!["lower" excitation efficiency in standard mode](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LXzQ6rVZx8ohKvbgPvE%2F-LXzUErV_dk8kSmOWHTh%2Fbad_ex_efficiency.gif?alt=media\&token=c3279551-7eb3-40ff-ac4f-859506234483)

!["higher" excitation efficiency in standard mode](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LXzQ6rVZx8ohKvbgPvE%2F-LXzUHJT_7LGU3o7jDwj%2Fgood_ex_efficiency.gif?alt=media\&token=83baaf0b-d5b9-4d4a-ad99-8830ec57b93e)

{% hint style="danger" %}
This mode really favors light sources that **efficiently** excite the fluorophore, without a lot of off-peak excitation (which would be particularly useful in a live-cell setting, where you want to minimize the energy impinging on the sample).  One downside of this mode is that *broader-band* excitation filters tend to render a **lower** efficiency (and therefore "brightness") score than *narrow-band* filters centered on the peak excitation wavelength... which can be a bit counter-intuitive.  Which is why "[broadband mode](/tools/microscopes/efficiency#broadband-mode)" is also available, below.
{% endhint %}

{% hint style="warning" %}
Another potential confusion here is caused by the fact that we cannot make any assumptions about the **power** of the light source (it is assumed to be "sufficiently high").  As an admittedly "strange" example: a laser at peak absorption wavelength (here, 488nm) will *still* have excellent excitation efficiency even if a poorly matched excitation filter that effectively blocks the laser (eg. 515/20)  is added to the light path (since one could theoretically just turn up the laser infinitely).
{% endhint %}

#### "Broadband" mode <a href="#broadband" id="broadband"></a>

![this setting is available in the settings (gear icon)](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LXzVgv8u6mXRL7rZRm3%2F-LXzVpOKufeDejweg50y%2FScreen%20Shot%202019-02-05%20at%204.14.29%20PM.png?alt=media\&token=8eade2cd-30e6-4670-90da-4a3449cc49cd)

Because the standard mode of excitation efficiency penalizes broadband "off-peak" excitation, it can lead to unexpected results when comparing the expected brightness of two excitation filters.  In "broadband" mode, the light source is assumed to be of constant power, and excitation efficiency is interpreted as *coverage of the excitation spectrum.*  Here, efficiency is calculated as the area under the curve for the combined light + excitation filters (and dichroics) + fluorophore excitation spectra, divided by the area under the curve of fluorophore excitation spectra alone:

$$
\frac{ \int ( \epsilon\_{ex}  \times fluor\_{ex})}{\int  fluor\_{ex}}
$$

where again: $$\epsilon\_{ex}$$ is the effective excitation spectrum: $$\epsilon\_{ex}  = light  \times  filter\_{ex} \times filter\_{dichroic}$$&#x20;

If you've got a broadband light-source (such as a metal-halide or multi-LED light source) and you are trying to determine the expected brightness of a fluorophore given different excitation filters, this mode is more likely to behave as you would expect.

{% hint style="danger" %}
The problem with this mode is that it makes laser illumination look *terrible:* as a monochromatic light-source, will never cover much of the fluorophore excitation spectrum, but rather puts a lot of power into (hopefully) the most effective wavelengths for excitation.  For this reason, the "[standard mode](/tools/microscopes/efficiency#standard-excitation-efficiency)" above is default.
{% endhint %}

## Emission (Collection) Efficiency <a href="#emission-efficiency" id="emission-efficiency"></a>

Excitation efficiency *is the percentage of emission photons that can be collected* given the emission path. It is calculated as the area under the curve for the combined emission filters (and dichroics) + camera QE + fluorophore emission spectra, divided by the area under the full fluorophore emission spectrum.&#x20;

$$
\frac{ \int ( \epsilon\_{em}  \times fluor\_{em})}{\int  fluor\_{em}}
$$

where $$\epsilon\_{em}$$ is the combined emission path spectrum: $$\epsilon\_{em}  =  filter\_{em} \times filter\_{dichroic} \times camera\_{QE}$$

In the image below, the EGFP emission spectrum is relatively well matched to the 525/50m filter, and the collection efficiency, represented by the area with diagonal lines, is about 58% the area of the full fluorophore emission spectrum.

{% hint style="info" %}
As a side-note: don't forget that many additional photons are lost as a result of not being collected by the objective lens in the first place, or by scattering or absorption somewhere in the emission path.  So "100%" collection efficiency here by no means that you collected every photon emitted from the fluorophore.
{% endhint %}


# FRET Calculator

The efficiency of fluorescence resonance energy transfer (FRET) from a donor fluorophore to a nearby acceptor depends on a number of parameters, including the quantum yield of the donor, the extinction coefficient of the acceptor, the spectral overlap of donor emission and acceptor absorbance and the dipole orientation.  The FPbase [FRET calculator](http://www.fpbase.org/fret) predicts the Förster Distance (i.e. the distance between donor and acceptor that will result in 50% FRET; R0) for all monomeric FP pairs in the database for which the required parameters are available. &#x20;

![FRET Calculator showing](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LWh1xLZGDMKY2ty1rjO%2F-LWh20wojwcRwQuG0KqE%2Fimage7.png?alt=media\&token=842b28ff-4a27-43cc-aac2-97a3053ea552)

Förster distance values are calculated using the method presented in Wu & Brand (1994).  Additionally, Förster distance multiplied by the quantum yield of the acceptor is calculated as an indication of dynamic range expected in ratiometric FRET using the sensitized emission method.  Results are presented in a sortable tabular format, with a search field for ease of locating specific proteins. The overlap integral (between donor emission and acceptor absorbance) is highlighted in the spectra image for the currently selected FRET pair, and values for refractive index and orientation factor can be changed by the user.

{% embed url="<https://www.fpbase.org/fret>" %}


# Comparison Tool

The comparison tool facilitates the temporary collection and comparison of multiple fluorescent proteins across the site.  The interface was designed to be similar to the “shopping cart” used by many commercial sites, to provide a familiar experience to the user (note, however, fpbase.org does not sell anything!).  The comparison tab slides out from the right side of the page, and is visible on three main internal pages:

![](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LdstKc-GD7AyEnw3PO2%2F-LdstM4CvuGJzsfzSUEF%2FScreen%20Shot%202019-05-02%20at%2010.14.03%20AM.png?alt=media\&token=e21018bc-1224-4f17-a4c2-38252c9859e1)

1. The main [protein table](/browsing/protein-table)
2. Any individual protein page (pages that begin with `www.fpbase.org/protein/`)
3. The comparison page itself: [www.fpbase.org/compare](http://www.fpbase.org/compare)

Proteins can be added to the comparison tab either by clicking the “Add” button in the comparison tab itself on any given protein page, or by clicking the “+” button in the compare column in any protein row in the protein table at fpbase.org/table.  Proteins can be removed from the comparison set by clicking the “X” button next to any protein within the comparison tab. After two or more proteins have been added to the comparison set, the comparison can be accessed by clicking “show comparison” in the comparison tab, or by directly navigating to [www.fpbase.org/compare/](http://www.fpbase.org/compare/).

The information displayed in the comparison tab currently includes spectra, excitation & emission maxima, extinction coefficient, quantum yield, brightness, pKa, aggregation, maturation, and lifetime.  Furthermore a multiple sequence alignment is performed using MUSCLE ([Edgar 2004](https://www.ncbi.nlm.nih.gov/pubmed/15034147)) and differences between sequences are highlighted.  When only two proteins are being compared, the mutations between the first and second protein are calculated using the [fpseq](/fpseq/fpseq) package, and displayed below the sequence alignment.  Note: the amino acid numbering shown in the mutations is currently based only on the proteins being compared, and is not relative to any ancestral proteins (as is often reported in the literature), nor does it include “lettered” numbering (such as “V1a” in EGFP, often used with amino acid insertions to maintain the position numbering of the ancestral protein).

![](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-Ldstd1Y4RFQfGC8-7ch%2F-LdstivPOlVJvUk0F1vl%2FScreen%20Shot%202019-05-02%20at%2010.15.24%20AM.png?alt=media\&token=14816218-d22a-43f0-b8c6-040c19d4e5ad)

### Directly comparing proteins without using the comparison tab

A set of proteins can also be compared directly by appending a comma separated list of protein “slugs” (the unique protein name identifier found in the URL of each individual protein page) to the comparison URL ([www.fpbase.org/compare](http://www.fpbase.org/compare)/).  This allows comparisons to be shared via URL, without requiring the recipient of the URL to add each protein to their own comparison set.  For instance, to compare the mScarlet proteins in the database: <https://www.fpbase.org/compare/mscarlet,mscarlet-i,mscarlet-h/>For convenience, the URL corresponding to the current protein comparison always appears towards the top of the page at [www.fpbase.org/compare](http://www.fpbase.org/compare).


# Protein Collections & Favorites

Registered users may create **protein collections**.  These might be used to save the set of fluorescent proteins available in plasmids in a lab freezer, or a promising set of proteins that a user is currently considering for her application. Collections can be kept private, or shared publicly with a collection description and a permanent URL – in which case collections may be useful as “curated selections” (such as the list at [www.fpvis.org](http://www.fpvis.org)).  Collections have also been used to report spectra and attributes of FPs in the methods section of a publication.  Collections can be created based on complicated search queries, by manually adding proteins from the respective protein pages, or by duplicating existing collections and modifying as desired. Lastly, the properties or spectra of all proteins in a collection can be easily downloaded in CSV or JSON format.

{% embed url="<https://www.fpbase.org/collections>" %}


# Database Organization


# Database Schema

FPbase is a database designed specifically for fluorescent proteins. The goal is to come up with a database design that can categorize the majority of the many subtle properties that fluorescent proteins can possess. If you have suggestions for ways to extend the database model to incorporate additional properties, feel free to [contact us](http://localhost:8000/contact/).&#x20;

The database schema determines the fields and information that can be stored for any given object in the database, and how the objects relate to each other. The schema changes periodically to accommodate new fields, or to add features to the site. A graphical representation of the current database schema is shown below.  For a definitions of terms: see the [glossary](/glossary).

![a simplified graphic of the database schema (Jan 2019)](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LWgxSJfp52OaYA6ennn%2F-LWh-29eTZjR8h1CAkTl%2Fimage2.png?alt=media\&token=1e97fe68-6359-46e1-ad8f-fc48a338118c)

Items in **`bold code`** correspond to database object&#x73;**:**

**`Proteins`** are represented with a name, common aliases, amino acid sequence, external accession IDs (currently GenBank, UniProt, Protein Data Bank, and NCBI Identical Protein Groups), aggregation type, photochromicity/switch type, and required cofactors (e.g. biliverdin).  Every protein has a **`primary reference`** (that introduced the protein), **`additional references`** ( limited to those that further characterize the protein), and the NCBI taxonomy ID for the **`parental organism`** from which the protein was evolved (e.g. 6100 for Aequorea victoria).  Protein **`lineages`** are stored as recursively as parent-child relationships between two proteins, along with the mutation that generates the child sequence from the parent.  **`Excerpts`** are snippets of text from **`references`** that convey key information about a **`protein`** that is otherwise difficult to capture within the current database schema, and appear on both the corresponding protein and reference pages.

Each **`protein`** can have one or more **`states`** that represent the protein in a certain intrinsic condition (e.g. pre/post photoactivation or photoconversion) or under a certain environmental condition (e.g. pH, calcium, etc.).  **`States`** have typical fluorescence characteristics such as **`excitation maxima`** and **`emission maxima`**, **`extinction coefficient`**, **`quantum yield`**, **`pKa`**, **`fluorescence lifetime`**, and full **`spectra`** data (stored as an array of wavelength/value pairs, along with metadata describing, for instance, the pH or solvent under which the spectra was measured).  **`Transitions`** represent conversions between two **`states`** in response to some stimulus, such as irradiation with a certain wavelength.  **`Bleach measurements`** capture information about the photostability of a given protein **`state`** under one set of experimental conditions (such as microscope modality, light source and filter spectra, illumination power, temperature, fusion protein, cell type, etc.) along with the **`reference`** that made the measurement.  **`OSER measurements`** are quantifications of the monomericity of the protein ([Costantini et al 2012](https://doi.org/10.1111/j.1600-0854.2012.01336.x)), taken from a given **`reference`**.  **`References`** are stored as DOIs, and corresponding metadata (such as title, **`authors`**, date, journal, etc.) is pulled from Crossref.  Every reference and author object has a dedicated page showing the corresponding **`proteins`** or **`references`**, respectively, attributed to that object.

When users register for an account at FPbase (which can be done either directly through FPbase, or using OAuth 2.0 authentication through Google or Twitter), a user object is created.  Registered users can create [**`protein collections`**](/collections) and [**`microscopes`**](/tools/microscopes).  Microscopes are stored as collections of **`optical configurations`**, each of which comprises a set of **filters**, **`light source`**, and **`camera`**, all of which are associated with a **`spectral`** data object.


# Improving the Database Schema

With a subject as complicated and varied as fluorescent proteins, it is inevitable that there will be data presented in the literature that does not easily “fit” into one of the available fields in the current database schema.  The current database schema reflects many of the most commonly-reported attributes (and the way in which they are usually reported) but there is much more information about FPs that one might want to capture in the database; photochromic proteins in particular have a number of quantifiable characteristics that are not currently in the database.  Additionally, many of the fields that do exist are oversimplified: bleach curves and maturation rates are currently stored as a half-lives, which do not fully capture complex non-monoexponential dynamics; state transitions are represented by single wavelength values rather than an absorption spectrum, and non-light-based state transitions (such as “timer” proteins) are not currently easy to represent; aggregation state is reported categorically as “monomeric” or “dimeric” when in reality there may be a continuum of oligomerization tendency.

In some cases, these oversimplifications are merely reflections on the way the data is reported in the literature.  In other cases, detailed datasets have been published that exceed the capacity of the current database schema. While reference “excerpts” were specifically introduced as a partial solution for storing hard-to-categorize information, it is an ongoing goal to modify the database schema to accommodate these valuable datasets, particularly in cases where a similar type of measurement has been made across multiple references.

Conflicting data in the literature presents another challenge, for example: a protein introduced as “monomeric” in the original publication that is later identified as a weak dimer, or extinction coefficient measurements varying between publications.  The ability to store multiple measurements of the same parameter from different references, along with metadata describing the way the measurement was performed, is a high priority and is currently under development.

I strongly encourage site visitors (particularly fluorescent protein developers) to contact me with ideas on how to improve the database schema in order to accurately represent FP measurements.


# Glossary of Terms

## Proteins

Proteins are the main objects in the database, and each protein possesses the following attributes.

### Name <a href="#proteins-name" id="proteins-name"></a>

The name of the fluorescent protein.  No two proteins in the database can have the same name

### Slug

An abbreviated, URL-friendly version of the name (must be unique in the database).  All lowercase, with no spaces or periods  For instance:

* mRFP1.2  →  mrfp12
* PA-CFP2  →  pa-cfp2

Slugs are automatically generated based on the name, and are visible in the URL on any  protein page, for instance, mNeonGreen:  <https://www.fpbase.org/protein/mneongreen/>

### Sequence

Amino acid sequence.  No two proteins in the database can have the same amino acid sequence.  Sequences are specified with single-letter amino acid codes, with no degenerate codes, and no stop codons.  Sequences should start with M (Methionine) and should not contain His tags or other non-FP fusions.

### Molecular Weight

The molecular weight is calculated automatically from the amino acid sequence.

### Cofactor

Some "fluorescent" proteins (for instance, [those derived from bacterial phytochrome photoreceptors](https://www.fpbase.org/organism/1076/)) aren't independently/intrinsically fluorescent; rather, they autocatalytically bind and activate the fluorescence of an extrinsic chromophore (here, referred to as the "cofactor").  Often this is a small molecule, most commonly biliverdin (BV).  This cofactor must be present in the environment in order to observe fluorescence.  Biliverdin, for example, is a product of heme catabolism, and is therefore present to some extent in most mammalian systems.

### Oligomerization

The dimerization tendency of the fluorescent protein (monomer, dimer, etc...).

{% hint style="warning" %}
Many proteins are monomers at low concentrations but dimerize as the concentration increases, so a single classification is unlikely to be a complete characterization of the protein.  Furthermore, some proteins (such as [TagRFP](https://www.fpbase.org/protein/tagrfp/)) are described as monomers in early publications, and later found to be weak dimers.  So a simple, single classification of oligomerization tendency is usually insufficient.

See also: [OSER Measurement](/glossary#oser).
{% endhint %}

### States

The various states that the protein can be in (e.g. "red", "green", "off").  See [States](/glossary#states-1) below.

### Transitions

Proteins can have zero or more (usually light-induced) transitions between different fluorescent or non-fluorescent [states](/glossary#states-1). See [Transitions](/glossary#transitions-1) below.

### Switch Type

Each protein is classified into one of the following photo-switching types, based on the number of states and transitions that the protein displays:

* **Basic**: A single (constitutively) fluorescent state (e.g. [EGFP](https://www.fpbase.org/protein/egfp/)).
* **Photoactivatable:** Two states, one transition, from dark state to fluorescent state (e.g. [PA-GFP](https://www.fpbase.org/protein/pa-gfp/)).
* **Photoconvertible:** Two states, one transition, from one fluorescent state to another (e.g. [EosFP](https://www.fpbase.org/protein/eosfp/)).
* **Photoswitchable**: Two (reversible) transitions between two states (e.g. [Dronpa](https://www.fpbase.org/protein/dronpa/)).
* **Multi-Photochromic**: Usually greater than 2 states, exhibiting both conversion and switching (e.g. [IrisFP](https://www.fpbase.org/protein/irisfp/)).
* **Timer**:  Transitions between 2 or more states over time (e.g. [DsRed-Timer](https://www.fpbase.org/protein/dsred-timer/)).
* **Multistate**: Generic categorization for proteins with more than one state.

{% hint style="info" %}
In reality, all fluorescent proteins have many potential states that they can be in, as they progress through maturation pathways or depending on their environment (pH, etc.).  So classifying any protein as "basic" is an oversimplification.  The intention here is to classify proteins for their intended purpose (or, if it becomes known after development that a particularly&#x20;
{% endhint %}

### Parental Organism

The original [organism](/glossary#organism) from which the protein was cloned and evolved (e.g. *Aequorea Victoria* for all proteins that were evolved from the original [avGFP](https://www.fpbase.org/protein/avgfp/)).  In cases where the protein was computationally designed from a synthetic template, the NCBI [synthetic construct](https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?id=32630) is used as a parental "organism".

## Fluorescence States <a href="#states" id="states"></a>

States represent a collection of attributes related to the fluorescent properties of the protein.  A protein can have multiple states, and [transitions](/glossary#transitions-1).

### Name

The name of the state (e.g. "ON", "Green", "default", etc.).  For single-state proteins, the name "default" is used.

### Excitation Maximum <a href="#ex-max" id="ex-max"></a>

The excitation maximum of the state in nanometers.  This value is stored independently of any [Spectra](/glossary#spectra) (and may be slightly different).

### Emission Maximum <a href="#em-max" id="em-max"></a>

The emission maximum of the state in nanometers. This value is stored independently of any [Spectra](/glossary#spectra) (and may be slightly different).

### Stokes Shift

The difference (in wavelength) between the excitation maximum and the emission maximum is referred to as the Stokes shift.

### Spectra

States can have different [spectra](/glossary#spectra) for absorption, excitation, two-photon excitation, and emission.

### Extinction Coefficient

The molar extinction coefficient *(M-1 cm-1)* of the state is a measure of how strongly the protein absorbs light at a given wavelength.

### Quantum Yield

Quantum yield represents the ratio of photons emitted to photons absorbed. It is the likelihood that, once excited by a photon, the protein (state) will emit a photon.

### Brightness

Molecular brightness is calculated as the product of [Extinction Coefficient](/glossary#extinction-coefficient) and [Quantum Yield](/glossary#quantum-yield). &#x20;

{% hint style="warning" %}
Practical brightness of a fluorescent protein depends on additional protein characteristics such as folding and maturation efficiency and pKa.  Molecular brightness may not reflect the actual brightness of a given protein in a biological experiment.
{% endhint %}

### pKa

pKa is a measure of the acid sensitivity of a fluorescent protein. It is the pH at which fluorescence intensity drops to 50% of its maximum value.

### Hill Coefficient

Whereas pKa shows the pH at which a fluorescence drops to 50% of its maximal value, the Hill coefficient describes the slope of the fluorescence-versus-pH relationship.  Many papers do not report Hill coefficients, so this value is unrecorded for many proteins in the database.

{% hint style="info" %}
The pH robustness is often misinterpreted by only looking at pKa values.  For instance, an FP with a low [pKa](/glossary#pka) and a low [Hill coefficient](/glossary#hill-coefficient) does not show a pH range in which the fluorescence remains constant.  Therefore, these FPs are still pH-sensitive, even with a low pKa.  On the other hand, an FP with a low pKa and a high Hill coefficient is pH-insensitive as this FP has a plateau at pH values above the pKa.  Thus, pH-insensitive FPs are better identified based on these two parameters combined (see figure below).  In addition, pH-sensitivity has always been described *in vitro*, neglecting the effect of cytosolic components on the pH quenching.  How representative *in vitro* pH-sensitivity is for the *in vivo* performance is unknown.

:link: [Botman et al. 2018. *bioRxiv*](https://doi.org/10.1101/431874)&#x20;
{% endhint %}

![figure from Botman et al. 2018. bioRxiv ](https://3628226197-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LWgO4ROSn0Jb5Iyrwqq%2F-LWluZ6KIKocmXc8YiLg%2F-LWludGkjd995zxdWNmw%2FScreen%20Shot%202019-01-21%20at%202.35.52%20PM.png?alt=media\&token=8603697a-9757-41f2-8c02-81124147bae5)

### Maturation

Maturation is the time (in minutes) required (due to protein folding and chromophore maturation) for fluorescence to obtain half-maximal value.

{% hint style="warning" %}
While maturation is currently stored in FPbase a single number (corresponding to the half-life of maturation), maturation does not always follow mono-exponential kinetics, making this value an oversimplification.  For an excellent examination of the complexity of fluorescent protein maturation kinetics in *E coli,* see [Balleza et al (2018)](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5765880/)&#x20;
{% endhint %}

### Fluorescence Lifetime <a href="#lifetime" id="lifetime"></a>

The amount of time (in nanoseconds) after photon absorption that it takes the fluorophore to relax to the ground state is referred to as the fluorescence lifetime.  When a population of fluorophores is excited, the lifetime is the time it takes for the number of excited molecules to decay to 1/e or 36.8% of the original population.

### Bleach Measurements <a href="#state-bleach-measurements" id="state-bleach-measurements"></a>

Each fluorescent protein state can have many [bleach measurements](/glossary#bleach), performed across multiple [references](/glossary#references) and imaging modalities.

### Environmental Requirements

This hidden database field is reserved for proteins that can have multiple states, not necessarily through photoactivation or switching, but through environmental factors such as pH or calcium.

## Transitions

Transition objects in the database capture the (currently only light-induced) transition between two [**states**](/glossary#states-1).&#x20;

## Organisms <a href="#organism" id="organism"></a>

Organisms are stored in the database as an [NCBI Taxonomy ID](https://www.ncbi.nlm.nih.gov/taxonomy).  All corresponding data (such as scientific name, genus, species, rank, etc.) are pulled from NCBI.

## Spectra

## Bleach Measurement <a href="#bleach" id="bleach"></a>

Measurements of photostability and photobleaching are tremendously error-prone, and depend heavily on the specifics of the experiment. We have chosen not to give a single "photostability" metric to each state, but rather allow each state to have one or more bleach measurements, described below

## OSER Measurement <a href="#oser" id="oser"></a>

While FP oligomerization tendency is often measured *in vitro* using methods such as size-exclusion chromatography, these measurements do not always reflect the behavior of the FP in a cellular environment.  The OSER assay is a commonly-used, biologically relevant assay of FP tendencies to oligomerize.  In an OSER assay, the FP in question is fused to the cytoplasmic end of an endoplasmic reticulum (ER) signal anchor membrane protein (CytERM) and expressed in cells. Cells are scored based on the ability of CytERM to homo-oligomerize with proteins on opposing membranes and restructure the ER from a tubular network into organized smooth ER (OSER) whorl structures ([Costantini et al. 2012](https://doi.org/10.1111/j.1600-0854.2012.01336.x)).

{% embed url="<https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3324619/>" %}

## References


# FAQs

## There doesn't seem to be a field for my data, what do I do? <a href="#no-field-available" id="no-field-available"></a>

We are always looking to improve the database schema, [contact us](https://help.fpbase.org/www.fpbase.org/contact).

## I have a *lot* of data to submit... do I have to use the form? <a href="#submit-a-lot" id="submit-a-lot"></a>

Awesome!  We'd be happy to help automate the submission of larger datasets. Just [contact us](https://help.fpbase.org/www.fpbase.org/contact).


# Introduction to the FPbase API

Documentation for the FPbase API (in development)

## GraphQL API <a href="#graphql" id="graphql"></a>

As of June 2019, FPbase is moving to a GraphQL-based API.  [GraphQL](https://graphql.org/) is a modern query language that gives clients the power to ask for exactly what (fields) they need and nothing more, and makes it easier to evolve APIs over time.

The new entrypoint is: <https://www.fpbase.org/graphql/>

If you [visit the entrypoint in a browser](https://www.fpbase.org/graphql/), you will be met with the [GraphiQL IDE](https://github.com/graphql/graphiql) for exploring the FPbase schema. Use the **documentation explorer** on the right to see what queries are available, and test out various queries in the pane on the left.  For instance:  [get the name and sequence of every protein in the database](https://www.fpbase.org/graphql/#query=%7B%0A%09proteins%20%7B%0A%20%20%20%20id%0A%20%20%20%20seq%0A%20%20%20%20name%0A%20%20%7D%0A%7D%0A)

You may POST queries to the entrypoint to retrieve data in JSON format.

For more information on how to query in GraphQL, see the [official documentation](https://graphql.org/learn/).

## REST API

FPbase has a REST API for retrieving data in JSON or CSV format.  It is very basic and still in development (unstable).  Until we know there are people who would like to use it, there are a lot of other things that also need attention.  So [let us know](https://www.fpbase.org/contact) if you'd like to use it!

**NOTE:** FPbase is moving away from the REST API, and all development will use the GraphQL API mentioned above.

{% hint style="danger" %}
These docs are **incomplete** and potentially wrong... In the meantime, there is (slightly) better information at this page:

<https://www.fpbase.org/api/>

If you use or would like to use the API for programmatic retrieval of data from FPbase, we'd love to help out.  Please [get in touch](https://www.fpbase.org/contact) and tell us about your project.
{% endhint %}


# Get Protein Information

## Get Proteins

<mark style="color:blue;">`GET`</mark> `https://www.fpbase.org/api/proteins/:id`

This endpoint allows you to get protein information.\
\
**DEPRECATED:** use the GraphQL entrypoint instead.

#### Path Parameters

| Name | Type   | Description                                |
| ---- | ------ | ------------------------------------------ |
| id   | string | ID of the cake to get, for free of course. |

#### Query Parameters

| Name   | Type    | Description                                                           |
| ------ | ------- | --------------------------------------------------------------------- |
| recipe | string  | The API will do its best to find a cake matching the provided recipe. |
| gluten | boolean | Whether the cake should be gluten-free or not.                        |

#### Headers

| Name           | Type   | Description                                                    |
| -------------- | ------ | -------------------------------------------------------------- |
| Authentication | string | Authentication token to track down who is emptying our stocks. |

{% tabs %}
{% tab title="200 Cake successfully retrieved." %}

```javascript
{
    "name": "Cake's name",
    "recipe": "Cake's recipe name",
    "cake": "Binary cake"
}
```

{% endtab %}

{% tab title="404 Could not find a cake matching this query." %}

```javascript
{
    "message": "Ain't no cake like that."
}
```

{% endtab %}
{% endtabs %}


# Get Spectra Information

## Get Spectra

<mark style="color:blue;">`GET`</mark> `https://www.fpbase.org/api/spectra`

This endpoint allows you to get spectra\
\
**DEPRECATED:** Use the GraphQL entrypoint instead

#### Path Parameters

| Name | Type   | Description                                |
| ---- | ------ | ------------------------------------------ |
| id   | string | ID of the cake to get, for free of course. |

#### Query Parameters

| Name   | Type    | Description                                                           |
| ------ | ------- | --------------------------------------------------------------------- |
| recipe | string  | The API will do its best to find a cake matching the provided recipe. |
| gluten | boolean | Whether the cake should be gluten-free or not.                        |

#### Headers

| Name           | Type   | Description                                                    |
| -------------- | ------ | -------------------------------------------------------------- |
| Authentication | string | Authentication token to track down who is emptying our stocks. |

{% tabs %}
{% tab title="200 Cake successfully retrieved." %}

```javascript
{
    "name": "Cake's name",
    "recipe": "Cake's recipe name",
    "cake": "Binary cake"
}
```

{% endtab %}

{% tab title="404 Could not find a cake matching this query." %}

```javascript
{
    "message": "Ain't no cake like that."
}
```

{% endtab %}
{% endtabs %}


# What is fpseq?

\
The fpseq package provides tools for working with Fluorescent Protein sequences and mutations, and has a simple python function for retrieving FP sequences from fpbase.org.  It forms the basis of sequence analysis on FPbase, but can be used independently (as a basic way to grab and compare/mutate FPsequences using the same [HGVS](http://varnomen.hgvs.org/recommendations/protein/variant/frameshift/) notation that is typically used in papers).

Source code at Github:

{% embed url="<https://github.com/tlambert03/fpseq>" %}

Example usage:

```python
In [1]: from fpseq import from_fpbase

# retrieve sequence from FPbase.org
In [2]: avGFP = from_fpbase('avgfp') 

In [3]: avGFP # sequences from FPbase.org
Out[3]: 
Protein
------------------------------------------------------
MSKGEELFTG VVPILVELDG DVNGHKFSVS GEGEGDATYG KLTLKFICTT
GKLPVPWPTL VTTFSYGVQC FSRYPDHMKQ HDFFKSAMPE GYVQERTIFF
KDDGNYKTRA EVKFEGDTLV NRIELKGIDF KEDGNILGHK LEYNYNSHNV
YIMADKQKNG IKVNFKIRHN IEDGSVQLAD HYQQNTPIGD GPVLLPDNHY
LSTQSALSKD PNEKRDHMVL LEFVTAAGIT HGMDELYK

In [4]: EGFP = from_fpbase('egfp')

# calculate HGVS mutation string
In [6]: avGFP.mutations_to(EGFP) 
Out[6]: <MutationSet: M1_S2insV/F64L/S65T/H231L>

In [7]: mEGFP = from_fpbase('megfp')

In [8]: EGFP.mutations_to(mEGFP)
Out[8]: <MutationSet: A207K>

# A207K does not match the literature, because of V1a...
# use reference parameter to enforce
# position numbering relative to avGFP 
In [9]: EGFP.mutations_to(mEGFP, reference=avGFP)
Out[9]: <MutationSet: A206K>

In [10]: mCherry = from_fpbase('mcherry')

# attempt to apply the ‘mCherry2’ mutation
# reported in Shen et al. (2017) throws an error
# because the positions do not align with mCherry sequence
In [11]: newseq = mCherry.mutate('K92N/K138C/K139R/S147T/N196D/T202L')
---------------------------------------------------------------------
SequenceMismatch: Mutation K138C does not align with the parent seq: PSD>G<PVM...
But a match was found 5 positions away: K97N/K143C/K144R/S152T/N201D/T207L

# use correct_offset to apply a shift to the mutation set, if a match is found
In [12]: newseq, offset = mCherry.mutate('K92N/K138C/K139R/S147T/N196D/T202L', correct_offset=True)
UserWarning: An offset of 5 amino acids was detected between the sequence and the mutation set, and automatically corrected

In [13]: newseq == from_fpbase('mcherry2') # sequence equivalence checks
Out[13]: True
```


