SourceAFIS » CLI

SourceAFIS CLI is a command-line interface for SourceAFIS libraries (Java, .NET). At the moment, it can benchmark algorithm accuracy, template footprint, and implementation speed. It also includes tools that aid in development of SourceAFIS, specifically transparency data logging and output checksums.


In order to benchmark SourceAFIS on particular hardware, clone the repository on the target machine and execute it.

git clone
cd sourceafis-cli-java
mvn compile exec:java

Give it a few minutes to download data and populate caches. You should then see benchmark report.

Dataset       EER    FMR100  FMR1K  FMR10K
High quality  2.23%  3.66%   5.80%  7.50%
All           8.62%  13.1%   18.3%  22.0%

Dataset       Serialized  Memory   Minutiae
High quality  585 B       16.7 KB  35
All           584 B       16.7 KB  35

Operation        Iterations  Parallel    Thread      Mean     Min      Max      Sample  Median   SD       Geom.mean  GSD
extraction       4,009       103 fp/s    25.8 fp/s   38.8 ms  6.14 ms  215 ms   4,009   35.0 ms  18.4 ms  35.8 ms    1.46x
identification   1,802,642   46.9 Kfp/s  11.7 Kfp/s  85.2 us  60.0 ns  23.8 ms  6,800   81.1 us  163 us   76.6 us    1.88x
verification     666,345     16.9 Kfp/s  4.23 Kfp/s  236 us   60.0 ns  22.7 ms  6,782   168 us   326 us   166 us     2.92x
probe            34,688      1.20 Kfp/s  299 fp/s    3.34 ms  137 ns   76.3 ms  6,828   1.63 ms  5.58 ms  1.75 ms    3.51x
serialization    46,041,553  1.34 Mfp/s  336 Kfp/s   2.98 us  681 ns   27.9 ms  6,696   2.56 us  11.5 us  2.65 us    1.44x
deserialization  1,861,473   48.5 Kfp/s  12.1 Kfp/s  82.5 us  1.05 us  18.8 ms  6,694   58.3 us  274 us   61.5 us    2.10x


SourceAFIS CLI accepts a number of subcommands and options. You can enumerate them by executing the CLI with no arguments.

mvn compile exec:java -Dexec.args=""

SourceAFIS CLI will show information about every subcommand and option.

SourceAFIS CLI for Java

Available subcommands:
        Report version of SourceAFIS library being used.
        Measure algorithm accuracy, template footprint, and implementation speed.
    benchmark accuracy
        Measure algorithm accuracy.
    benchmark speed
        Measure algorithm speed.
    benchmark speed extraction
        Measure speed of feature extraction, i.e. FingerprintTemplate constructor.
    benchmark speed identification
        Measure speed of identification, i.e. calling match() with non-matching candidate.
    benchmark speed verification
        Measure speed of verification, i.e. calling match() with matching candidate.
    benchmark speed probe
        Measure speed of preparing probe template for matching, i.e. FingerprintMatcher constructor.
    benchmark speed serialization
        Measure speed of template serialization.
    benchmark speed deserialization
        Measure speed of template deserialization.
    benchmark footprint
        Measure template footprint.
        Compute consistency checksum of all algorithm outputs.
    checksum templates
        Compute consistency checksum of templates.
    checksum scores
        Compute consistency checksum of similarity scores.
    checksum transparency extractor
        Compute consistency checksum of extractor transparency data.
    checksum transparency probe
        Compute consistency checksum of transparency data generated when preparing probe for matching.
    checksum transparency match
        Compute consistency checksum of transparency data generated during comparison of probe to candidate.
    log extractor <key>
        Log extractor transparency data for given key.
    log probe <key>
        Log transparency data for given key while preparing probe for matching.
    log match <key>
        Log transparency data for given key during comparison of probe to candidate.
    export grayscale
        Convert sample images to grayscale.
        Remove cached data except downloads.

Available options:
    --home <path>
        Location of cache directory.
        Default: /home/rv/.cache/sourceafis
        Log normalized transparency data instead of raw data obtained from the library.
    --baseline <path>
        Compare with output of another SourceAFIS CLI. Path may be relative to cache directory, e.g. 'java/1.2.3'.

Subcommand name is passed to SourceAFIS CLI as part of command-line arguments. The following example will run subcommand "benchmark accuracy".

mvn compile exec:java -Dexec.args="benchmark accuracy"

Library version

You can view version of the currently used SourceAFIS library by executing "version" subcommand.

mvn compile exec:java -Dexec.args="version"

SourceAFIS CLI will identify the underlying SourceAFIS library.


Some SourceAFIS CLI ports allow you to override SourceAFIS library version. Note that this might fail with error if the specified library version is too old to work with latest SourceAFIS CLI.

mvn compile exec:java -Dsourceafis.version="1.2.3"

If given SourceAFIS CLI port does not allow changing version on command line, you will have to edit SourceAFIS dependency version manually in project configuration.