Tracking is a precisionFDA feature that allows you to investigate the provenance of an item. Clicking the "Track" button from any page (file, app, job, comparison, note) generates a provenance graph. Each node in the graph denotes an item, and each arrow denotes a relationship between two items. An arrow points from a source item towards a derived item, and it typically means "the source item is used as an ingredient in the derived item". The system keeps track of the following relationships:
|Derived item||Source items / Ingredients|
|App||The app's assets.|
|Comparison||The files that were used as inputs to the comparison.|
|File||The job that the file was generated from.|
|Job||The app that was run for the job, and the files that were used as inputs to the job.|
|Note||The note's attachments.|
When generating the graph, the item currently investigated is on the bottom. Its source items are above it, and their source items above them, etc. Items may contain multiple arrows — for example an app that has been run multiple times — but following arrows will always take you from top to bottom and never lead to any endless cycles. For complex cases, such as a note with many attachments, or a file generated by running a series of consecutive jobs, the graph may get very wide or very deep. In that case, use your browser's zoom feature to see more of the graph in your browser window, or scroll your browser's viewport accordingly.
The precisionFDA system uses the Dagre library to lay out the graph in two dimensions. The library implements a layout algorithm which tries to minimize arrow crossings and other avoidable overlaps, but does not always produce optimal layouts. We consider this rendering to be experimental.
Graph nodes are colored according to the following guide:
|The item is public.|
|The item is private and owned by you.|
|The item is private and owned by someone else.|
When a private item (owned by someone else) is encountered during graph construction, the graph stops there and does not include further provenance for that item. Furthermore, the system renders the item via its unique id, and not its name. In other words, the graph construction takes into account your access. Other users may see a different graph depending on their access (for example, the owner of the private item will be able to see further provenance).