Animl docs
  • Welcome to Animl
  • Getting started
    • Intro to AI for processing camera trap data
    • How AI works in Animl
    • Structure, concepts, and terminology
  • Fundamentals
    • Uploading images
    • Image review
    • Camera and Deployment management
    • Filtering images
    • Views
    • Automation Rules
    • Export Data
    • User management
    • Deleting images
  • Resources
    • Guide to real-time wireless camera trapping
    • Terms of Service
Powered by GitBook
On this page
  • Filter by Deployment
  • Custom filters
  • Useful queries
  1. Fundamentals

Filtering images

Sort, filter, and query your data

PreviousCamera and Deployment managementNextViews

Last updated 2 months ago

Filter by Deployment

In the Deployment section of the Filter Panel, you can filter you images by and .

The structure of the Deployment filter is a bit unintuitive, so it's worth first understanding the relationship between Cameras and Deployments. Cameras can have multiple Deployments (to represent when a camera is moved to a new location, for example), and all Cameras are given an un-editable "default" Deployment with the naming pattern <camera_serial_number> (default) (e.g. HLPXMS03225269 (default) ).

Every Image that gets uploaded needs to be associated with a Deployment, and the default Deployment serves as a catch-all in case (a) you choose not to create Deployments for your Cameras, or (b) you upload images belonging to that Camera that were taken before the Start Date of the Camera's oldest Deployment.

The default deployment is where images will land if you have (perhaps mistakenly) set the Start Date for a Deployment later than it actually was. If you find that you have images in your default Deployments that should be associated with a Deployment you've already created, simply adjust that Deployment's Start Date to be inclusive of those images that landed in default. More information on how to edit existing Deployments can be found .

What's up with the nested checkboxes?

To save space in the user interface we decided that instead of creating a long, flat list of checkboxes to filter each Deployment, we should nest individual Deployment checkboxes under a parent checkbox. The parent (top-level) checkbox represents all of the individual Deployments belonging to a particular Camera. So by toggling the top-level checkbox on and off, you can show or hide all images taken by that Camera.

If you want to show/hide images from individual Deployments, you can expand the top-level checkbox by clicking the caret icon to the right and toggling on/off the nested checkboxes that appear below. Each nested checkbox represents an single Deployment.

Custom filters

Known limitation

Custom Filters can NOT be saved in Views

Timestamps in queries

For example, if you lived in California and want to get all images validated between 2023-01-01 and 2023-01-20 in your timezone, your start date would be"2023-01-01T08:00:00.000Z" and your end date would be "2023-01-21T07:59:59.999Z". It's worth pointing out here that to include all images validated on the last day of the date range (1/20), the end date will be in 1/21 in UTC.

Useful queries

Query all images with labels validated by a specific user:

{ 'objects.labels.validation.userId': <users_email_address> }

Query all images labeled by anyone between two dates:

// NOTE: all date strings are interpreted in UTC+0
// be sure to adjust them accordingly if you'd like to query relative
// to a different timezone (see note above for more info)

{
    'objects.labels.validation.validationDate': {
        $gt: ISODate("2022-04-01"),
        $lt: ISODate("2022-04-30")
    }
}

Query all images with labels validated by a specific user between a range of dates:

// NOTE: all date strings are interpreted in UTC+0
// be sure to adjust them accordingly if you'd like to query relative
// to a different timezone (see note above for more info)

{
    'objects.labels': {
        $elemMatch: {
            $and: [{
	        'validation.userId': <users_email_address>
            }, {
                'validation.validationDate': {
                    $gt: ISODate("2022-04-01"),
                    $lt: ISODate("2022-04-30")
                }
            }]
        }
    }
}

Most of the filters are self-explanatory, but users who have “Project Manager” permissions will also have the ability to apply “Custom Filters” (i.e., submit directly to the database and see the results). Feel free to copy, modify, and paste the custom filters below, but be sure to replace all text in <angle_brackets> with real values.

If you include timestamps in your custom queries, be mindful that those timestamps are interpreted by the database as being in , NOT your local timezone. So, if you live in California and are including a timestamp of "2023-01-01", be aware that in your timezone, that same moment in time is actually 4:00 PM on December 31st, 2022.

If you're interested in submitting time-constrained queries relative to your timezone (or any timezone that's not UTC+0), be sure to calculate what that time would actually be in UTC+0 and include that in your in your query.

MongoDB queries
UTC+0
ISO 8601 Date string
here
Camera
Deployment
Deployment filters are nested. Each top-level checkbox represents all of the Deployments for a particular Camera.