- Course overview
- Search within this course
- Overview of key IMPC concepts and tools
- Introduction to the Solr API: accessing IMPC data programmatically
- What is Apache Solr?
- Important definitions: query, field, core, document, parameter
- Quiz 2: get yourself familiar with Solr terminology
- What is the difference between an IMPC parameter and a Solr parameter?
- Using simple Solr syntax in your browser
- Output of the simplest request in your browser
- A Python module to access IMPC data: installation and available functions
- Quiz 3: explain Solr request
- Solr query syntax: simplified explanation
- How to use the solr_request function from the impc-api python package
- How to perform a query: q parameter
- Exercise 1: getting familiar with the core
- How to request a limited number of documents: rows parameter
- Exercise 2: requesting three documents
- How to get specific fields: fl parameter
- Exercise 3: selecting specific fields
- Quiz 4: basic Solr parameters
- Downloading data: getting large results efficiently
- How to download large dataset effectively: pagination
- How to download the data: batch_solr_request function
- What formats are available for downloading: wt parameter
- Exercise 8: download the data
- What is the difference: JSON vs CSV
- What you need to keep in mind: query responsibly
- Quiz 6: request only necessary data
- Advanced Solr query techniques: faceting and iterating over entities
- Understanding IMPC data: resources and assistance
- Your feedback
Why parentheses are important: combine multiple Boolean operators
When you combine multiple filters, it’s best to use parentheses to ensure the operators are applied as you intend.
Let’s say we are interested in two genes, Prkdc and Wrn, with a p-value less than 0.0001. The query without parentheses for this example is:
p_value:[* TO 1e-4] AND marker_symbol:Prkdc OR marker_symbol:Wrn.
It returns seven documents. The output includes only the Prkdc gene hits because of the order of operations.
First, the p-value less than 1e-4 and the Prkdc marker_symbol are filtered out, and then the second boolean operation is applied. However, by this point, everything that is not Prkdc has already been omitted. Query with parentheses:
num_found, df = solr_request(
core='statistical-result',
params={
'q': 'p_value:[* TO 1e-4] AND (marker_symbol:Prkdc OR marker_symbol:Wrn)',
'fl': 'marker_symbol,top_level_mp_term_name,effect_size,p_value',
'rows': 10
}
)
We found 15 documents instead of 7 because the order of operations has changed. First, we filtered out genes with the marker_symbol Prkdc or Wrn, then applied the p-value filter.
It is important to specify the order of operations to avoid unexpected behaviour of the function. Use parentheses, when multiple boolean operators are applied.