flowtracks 1.6.2.dev6__tar.gz → 1.6.2.dev11__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/.gitignore +3 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/PKG-INFO +1 -1
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/_version.py +3 -3
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/graphics.py +194 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks.egg-info/PKG-INFO +1 -1
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks.egg-info/SOURCES.txt +3 -1
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks.egg-info/scm_file_list.json +3 -1
- flowtracks-1.6.2.dev11/flowtracks.egg-info/scm_version.json +8 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/pyproject.toml +2 -0
- flowtracks-1.6.2.dev11/scripts/make_trajectory_movie.py +213 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_graphics_3d.py +77 -0
- flowtracks-1.6.2.dev11/videos/flowtracks_explainer.py +201 -0
- flowtracks-1.6.2.dev6/flowtracks.egg-info/scm_version.json +0 -8
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/.github/workflows/python-package.yml +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/.github/workflows/python-publish.yml +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/CLAUDE.md +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/LICENSE.txt +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/LICENSES/BSD-3-Clause.txt +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/LICENSES/GPL-3.0-only.txt +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/README.md +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/RELEASE.md +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/REUSE.toml +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/SPEEDUP_PLAN.md +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/WRITERS_PLAN.md +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/benchmarks/BASELINE.md +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/benchmarks/bench_interp.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/benchmarks/bench_io.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/benchmarks/bench_pairs.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10001 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10002 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10003 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10004 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10005 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10006 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10007 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10008 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10009 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10010 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10011 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10012 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10013 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10014 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10015 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10016 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10017 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10018 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10019 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10020 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10021 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10022 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10023 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10024 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10025 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10026 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10027 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10028 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10029 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10030 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10031 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10032 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10033 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10034 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10035 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10036 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10037 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10038 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10039 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10040 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10041 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10042 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10043 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10044 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10045 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10046 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10047 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10048 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10049 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10050 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10051 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10052 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10053 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10054 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10055 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10056 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10057 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10058 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10059 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10060 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10061 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10062 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10063 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10064 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10065 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10066 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10067 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10068 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10069 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10070 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10071 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10072 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10073 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10074 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10075 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10076 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10077 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10078 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10079 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10080 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10081 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10082 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10083 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10084 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10085 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10086 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10087 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10088 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10089 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10090 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10091 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10092 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10093 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10094 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10095 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10096 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10097 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10098 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10099 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10100 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10101 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10102 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10103 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10104 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10105 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10106 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10107 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10108 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10109 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10110 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10111 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10112 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10113 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10114 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10115 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10116 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10117 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10118 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10119 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10120 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10121 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10122 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10123 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10124 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10125 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10126 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10127 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10128 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10129 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10130 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10131 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10132 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10133 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10134 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10135 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10136 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10137 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10138 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10139 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10140 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10141 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10142 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10143 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10144 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10145 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10146 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10147 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10148 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10149 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10150 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10151 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10152 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10153 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10154 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10155 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10156 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10157 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10158 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10159 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10160 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10161 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10162 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10163 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10164 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10165 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10166 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10167 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10168 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10169 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10170 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10171 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10172 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10173 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10174 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10175 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10176 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10177 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10178 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10179 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10180 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10181 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10182 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10183 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10184 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10185 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10186 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10187 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10188 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10189 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10190 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10191 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10192 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10193 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10194 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10195 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10196 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10197 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10198 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10199 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles/xuap.10200 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/particles.h5 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/readme.txt +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/seq_hdf.cfg +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10001 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10002 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10003 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10004 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10005 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10006 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10007 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10008 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10009 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10010 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10011 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10012 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10013 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10014 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10015 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10016 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10017 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10018 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10019 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10020 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10021 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10022 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10023 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10024 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10025 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10026 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10027 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10028 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10029 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10030 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10031 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10032 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10033 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10034 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10035 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10036 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10037 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10038 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10039 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10040 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10041 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10042 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10043 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10044 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10045 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10046 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10047 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10048 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10049 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10050 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10051 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10052 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10053 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10054 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10055 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10056 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10057 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10058 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10059 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10060 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10061 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10062 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10063 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10064 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10065 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10066 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10067 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10068 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10069 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10070 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10071 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10072 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10073 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10074 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10075 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10076 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10077 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10078 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10079 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10080 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10081 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10082 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10083 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10084 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10085 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10086 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10087 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10088 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10089 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10090 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10091 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10092 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10093 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10094 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10095 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10096 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10097 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10098 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10099 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10100 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10101 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10102 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10103 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10104 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10105 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10106 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10107 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10108 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10109 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10110 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10111 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10112 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10113 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10114 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10115 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10116 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10117 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10118 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10119 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10120 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10121 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10122 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10123 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10124 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10125 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10126 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10127 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10128 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10129 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10130 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10131 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10132 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10133 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10134 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10135 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10136 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10137 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10138 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10139 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10140 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10141 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10142 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10143 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10144 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10145 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10146 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10147 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10148 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10149 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10150 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10151 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10152 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10153 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10154 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10155 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10156 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10157 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10158 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10159 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10160 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10161 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10162 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10163 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10164 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10165 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10166 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10167 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10168 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10169 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10170 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10171 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10172 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10173 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10174 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10175 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10176 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10177 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10178 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10179 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10180 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10181 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10182 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10183 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10184 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10185 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10186 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10187 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10188 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10189 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10190 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10191 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10192 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10193 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10194 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10195 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10196 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10197 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10198 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10199 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers/ptv_is.10200 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/accel/c/0/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/accel/c/0/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/accel/c/1/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/accel/c/1/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/accel/c/2/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/accel/c/2/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/accel/c/3/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/accel/c/3/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/pos/c/0/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/pos/c/0/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/pos/c/1/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/pos/c/1/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/pos/c/2/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/pos/c/2/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/pos/c/3/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/pos/c/3/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/time/c/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/time/c/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/time/c/2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/time/c/3 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/trajid/c/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/trajid/c/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/trajid/c/2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/trajid/c/3 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/vel/c/0/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/vel/c/0/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/vel/c/1/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/vel/c/1/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/vel/c/2/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/vel/c/2/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/vel/c/3/0 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/data/tracers.zarr/trajectories/vel/c/3/1 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/_static/hdf5_scene_analysis.html +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/_static/repeated_interpolation.html +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/an_scene.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/analysis.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/conf.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/datastruct.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/graphics.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/index.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/interpolation.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/io.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/pairs.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/particle.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/repair.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/scene.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/sequence.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/doc/smoothing.rst +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/iceberg-COKYXo-A.png +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/postgresql-q8VEBKGg.svg +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/assets/trino-DFsJbQoT.svg +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/cells.css +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/ConnectedDataExplorerComponent-Df7gjh9Z.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/ImageComparisonComponent-wllkxPBW.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/Logger-Tr4QehtW.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/Plot-L9mQ-Gfi.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/_baseMerge-C7juKRWN.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/abnfDiagram-VCTEODGH-DpMq_Mev.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/any-language-editor-c7UPg1JS.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/arc-D4ozSiBZ.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/architecture-7GRP2DOG-BKZVEEjE.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/architectureDiagram-5GKGNRK7-CRJLlWDE.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/arrays-BXKBG-pE.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/blockDiagram-I7D4REHJ-BpY9x_4A.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/button-1_3o6krE.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/c4Diagram-7LVT6UL2-C72iMNhf.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/capabilities-Cc5XzOAx.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/cells-yuDjCSRd.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/channel-C9wJxzmn.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chat-ui-NOh3Hf-n.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/check-DTV8z9rJ.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-2Q5K7J3B-C1jixKkw.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-4HAMMTFA-G67SkurU.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-5VM5RSS4-ZNzvKenW.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-75Z2AOVW-WjhcVElc.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-DU6HZSFF-CVcwzYpu.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-F27PBJKO-B8Lto0_X.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-FOHPRMQF-DHwB1DNv.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-GMAD6QVW-C_qfGjkI.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-GVQU2GXP-qCOo-kUK.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-IMKFNOWR-CkZmmIpz.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-JWPE2WC7-DVXcaiue.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-L3NEJ4N5-o5ldt8tD.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-OSK3NFVY-_49D4nnX.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-P2QGCYS3-gAeev18L.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-POPQ4Y6H-CvnlDPKd.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-PWAF6VOD-uvJPjX8-.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-SHT3W25Y-BqF59dpr.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-SVP7TREG-ZJxzZh6V.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-TICWLB2K-CFEz4tB2.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-XXDRQBXY-Clp7AYzH.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/chunk-Y2CYZVJY-DsF7k-Jl.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/classDiagram-ZZMXUADV-CMAhgUzZ.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/classDiagram-v2-VYDZK3BY-CMAhgUzZ.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/clsx-DB0hHKMi.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/colors-Cg5Vh3br.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/common-keywords-FICkW4yv.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/copy-icon-CPjEwL2P.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/cose-bilkent-JH36ORCC-BrzPteyU.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/cubic-CS0PXv40.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/cynefin-OW5HDTMX-CNswS9TG.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/cynefinDiagram-5FMLGOSQ-BUnw6bDI.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/cytoscape.esm-B-NFISlW.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/dagre-CHmxokpj.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/dagre-GXQ25YYZ-C7GbrnQo.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/data-grid-overlay-editor-IgdKzC0D.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/debounce-BAQmcESH.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/defaultLocale-CNPGWpMu.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/defaultLocale-D5bOh7g6.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/diagram-S7CK7UJ4-EuiVMoIo.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/diagram-UQ7AKVKN-B78Ow0yH.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/diagram-VSXAHHWV-BMR2SfQO.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/diagram-VX7I27RA-CIYjPgUq.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/diagram-Z3DM3KII-BUML0LFI.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/dist-CeoU7cfW.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/dist-sdujFke9.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/duckdb-keywords-iJc26n2t.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/ebnfDiagram-PWID7BFC-CUP4j6XX.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/erDiagram-RLTQ6QDP-DLbw1Jsz.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/error-entries-DqeE0ojA.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/esm-D-owkyO9.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/eventmodeling-NTZA5JFV-DB3kgJGi.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/feedback-button-BV2GCDCf.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/flowDiagram-HODETNUW-VFnr0ml7.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/ganttDiagram-EL5Y4UJY-CmiINSiK.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/gitGraph-4MIJSDKK-dwTOMZR_.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/gitGraphDiagram-WWUBYQGX-CzwhL7Yh.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/glide-data-editor-CIvlOEu6.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/graphlib-38fPdkEy.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/hasIn-DCmcIjZW.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/highlighted-body-KPVGNVTW-Ch3OgJAD.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/info-A6RAGUB7-DBg6QCvG.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/infoDiagram-27XIBGKW-BPJH6oud.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/init-ZlXS9mIS.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/invariant-Ci2dTZ72.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/isArrayLikeObject-CkH5jlRu.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/isEmpty-DlTZBrd-.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/isSymbol-CUfVDqcU.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/ishikawaDiagram-5VMMS53U-D-ZUvrz0.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/journeyDiagram-3NMN7TZE-BXM2Vk3c.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/jsx-runtime-B74pBk57.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/kanban-definition-UXKFOSKX-ChRuBuD-.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/katex-mNPPSsir.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/katex-ukvJUC1e.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/label-CAOHXADx.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/linear-Dk9QshUb.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/marked.esm-C8yoD-KU.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/mermaid-DxU1Y4SV.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/mermaid-HWGCJPDP-B71gK_P3.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/mermaid-parser.core-CWLoWUaB.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/mhchem-DcHTrqjv.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/mindmap-definition-YA3MSWOX-CCh5aiQf.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/mount-DswxuSCu.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/node-sql-parser-gD9ga-kL.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/now--2onfHDM.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/number-overlay-editor-CczDnmt9.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/objects-snlMn4yk.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/once-DS99d_qY.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/ordinal-BdBDtYTt.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/packet-AYTQ26CC-BIVYxFLd.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/pegDiagram-XKGWAZYB-A5uDVkps.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/pie-WAS4IAKB-BFrGf8Po.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/pieDiagram-E7YTZNPT-BOdyxqZE.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/precisionRound-Bq_nmf5u.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/purify.es-CYRiAeUx.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/quadrantDiagram-AXDQQJYC-DNRUJXqx.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/radar-RG4KPBEZ-Bfny-JP1.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/railroad-74A4TZTK-CEnkhXDY.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/railroad-abnf-HS5TGJTU-2tBmCrln.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/railroad-ebnf-LZEXJU2U-Dj05XxxQ.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/railroad-peg-WCYAUIDC-CVVwkbTy.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/railroadDiagram-O6MQD6OU-BXHMiXr1.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/range-EplFIxc7.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/react-CUdNIagt.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/react-dom-CKsE8sC1.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/react-vega-fT8E8o1w.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/requirementDiagram-BXWQKSXE-BcEBdRFN.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/rolldown-runtime-B0Z9INg1.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/rough.esm-Dy-Kn_BL.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/sankeyDiagram-P5KCCOFB-ZOMSnj5y.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/select-BkfVhP3L.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/sequenceDiagram-WJ2MYXX4-DRJIkvJo.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/sizeCapture-INFHLROL-B0uUizjq.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/src-BYixoYsk.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/stateDiagram-D77RDMKH-4PISNrgr.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/stateDiagram-v2-MP3YSRHH-ChD95SLw.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/stex-D8693XPm.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/swimlanes-42K2YHIH-ujER0R6z.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/swimlanesDiagram-VR7AAH4N-D3QMs0iO.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/swiper-component-7NVtQPwQ.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/time-DxpXudsi.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/timeline-definition-24CTP7MA-BdAYWU3s.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/toDate-DRsex6Ki.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/tooltip-BAAK3XmV.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/treeView-Q6P3EWNA-DB7p193w.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/treemap-BfjIY-m6.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/treemap-WGGIJYW6-DbNPDX1J.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/use-restore-focus-STdjgZ-S.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/use-vega-container-remeasure-DgF8gE8Y.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/useAsyncData-4l65pesD.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/useLifecycle-C0jAlU9p.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/useTheme-CXmEzERi.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/vega-component-DMPKGQOo.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/vega-embed-container-zj3rARs5.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/vega-loader.browser-9cBJpS3r.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/vennDiagram-4TSXK5OY-DnPYMANR.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/wardley-WFR3VGLG-CZfXI1dt.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/wardleyDiagram-VM6X3IG4-D06sJLW7.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/chunks/xychartDiagram-S5SC5T6Z-DJIFAfLw.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/glide-data-editor.css +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/mount.css +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/swiper-component.css +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python/zero-python.css +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/assets/zero-python.js +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/views/story/config +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/_marimo-studio/views/story/zero-python/current +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/docs/story/index.html +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/batch_Lagrangian_to_Eulerian.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/hdf5_scene_analysis.ipynb +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/linking_trajectories.ipynb +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/marimo_dual_rig_trajectories.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/marimo_flowtracks.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/marimo_hdf5_vs_zarr_scene_analysis.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/marimo_linking_trajectories_zarr.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/marimo_phase_averaging_demo.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/marimo_phase_metrics.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/marimo_vtk_writers_preview.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/marimo_zarr_dashboard.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/repeated_interpolation.ipynb +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/run_pipeline.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/visualize_marimo.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/examples/visualize_results.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/__init__.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/an_scene.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/analysis.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/combine.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/eulerian.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/flux.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/format_docstrings.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/future_idea_xarray_dask_zarr.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/interpolation.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/io.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/nhist.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/pairs.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/particle.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/phase_average.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/phasing.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/pipeline.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/provenance.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/repair.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/scene.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/sequence.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/smoothing.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/stitching.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/trajectory.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/vortex.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/wall_shear.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/writers.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks/zarr_scene.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks.egg-info/dependency_links.txt +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks.egg-info/entry_points.txt +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks.egg-info/requires.txt +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/flowtracks.egg-info/top_level.txt +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/future_plan.md +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/peek_zarr.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/plotting_trajectories_using_postptv.ipynb +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/requriments.txt +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/scripts/analyse_fhdf.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/scripts/convert_tracers_to_zarr.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/scripts/run_postptv_analysis.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/scripts/view_trajectories_3d.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/setup.cfg +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/setup.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/conftest.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/helpers.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_analysis.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_binning_equivalence.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_derived_fields.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_eulerian_grid.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_eulerian_upgrades.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_flux.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_idw_call.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_interp.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_io.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_nhist.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_phase_align_synthetic_sets.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_phase_average_xr.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_phase_shift_extraction_and_vtr_export.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_phasing.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_post_analysis_edge_cases.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_post_analysis_xr.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_provenance.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_repair.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_scene.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_sequence.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_smoothing.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_speedup_equivalence.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_stitching.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_streamlined_zarr_paraview.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_turbulent_statistics.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_vortex_and_wall_shear.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_writers.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_zarr_io.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_zarr_pipeline_end_to_end.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_zarr_scene.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/test_zarr_trajectories.py +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/testing_fodder/interpolant.cfg +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/testing_fodder/ptvis/ptv_is.10001 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/testing_fodder/ptvis/ptv_is.10002 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/testing_fodder/ptvis/ptv_is.10003 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/testing_fodder/ptvis/ptv_is.10004 +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/testing_fodder/sequence.cfg +0 -0
- {flowtracks-1.6.2.dev6 → flowtracks-1.6.2.dev11}/tests/testing_fodder/three_trajects_simple.h5 +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flowtracks
|
|
3
|
-
Version: 1.6.2.
|
|
3
|
+
Version: 1.6.2.dev11
|
|
4
4
|
Summary: Library for handling 3D PTV trajectory databases and Lagrangian/Eulerian turbulence post-processing.
|
|
5
5
|
Author-email: Yosef Meller <yosefm@gmail.com>
|
|
6
6
|
License-Expression: GPL-3.0-only AND BSD-3-Clause
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.6.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 6, 2, '
|
|
21
|
+
__version__ = version = '1.6.2.dev11'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 6, 2, 'dev11')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g5e011b439'
|
|
@@ -315,3 +315,197 @@ def plot_trajectories_3d(source, trajids=None, scalars="speed", context=0,
|
|
|
315
315
|
if show:
|
|
316
316
|
plotter.show()
|
|
317
317
|
return plotter
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
def _far_walls(bounds, toward_camera, step):
|
|
321
|
+
"""Grey back walls (the three box faces away from the camera) and their
|
|
322
|
+
grid lines every ``step``, as two PolyData."""
|
|
323
|
+
import pyvista as pv
|
|
324
|
+
|
|
325
|
+
lo, hi = np.asarray(bounds[0::2], float), np.asarray(bounds[1::2], float)
|
|
326
|
+
walls, lines = [], []
|
|
327
|
+
for ax in range(3):
|
|
328
|
+
level = lo[ax] if toward_camera[ax] > 0 else hi[ax]
|
|
329
|
+
u, v = [a for a in range(3) if a != ax]
|
|
330
|
+
corners = np.zeros((4, 3))
|
|
331
|
+
corners[:, ax] = level
|
|
332
|
+
corners[:, u] = [lo[u], hi[u], hi[u], lo[u]]
|
|
333
|
+
corners[:, v] = [lo[v], lo[v], hi[v], hi[v]]
|
|
334
|
+
walls.append(pv.PolyData(corners, faces=[4, 0, 1, 2, 3]))
|
|
335
|
+
# grid lines lifted a hair off the wall so they never z-fight it
|
|
336
|
+
lift = 1e-3 * (hi[ax] - lo[ax]) * (1 if level == lo[ax] else -1)
|
|
337
|
+
for a, b in ((u, v), (v, u)):
|
|
338
|
+
ticks = np.arange(np.ceil(lo[a] / step) * step, hi[a] + 1e-9, step)
|
|
339
|
+
for t in ticks:
|
|
340
|
+
seg = np.zeros((2, 3))
|
|
341
|
+
seg[:, ax] = level + lift
|
|
342
|
+
seg[:, a] = t
|
|
343
|
+
seg[:, b] = [lo[b], hi[b]]
|
|
344
|
+
lines.append(pv.Line(seg[0], seg[1]))
|
|
345
|
+
return pv.merge(walls), pv.merge(lines)
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
def _box_axis_labels(pl, bounds, toward_camera, step, titles, font_size):
|
|
349
|
+
"""Tick labels every ``step`` and axis titles along the box edges nearest
|
|
350
|
+
the camera on the floor (x, z) and on the far vertical edge (y), as
|
|
351
|
+
ParaView draws them. (VTK's cube-axes actor caps the label count at its
|
|
352
|
+
own tick spacing, so it cannot label every ``step``.)"""
|
|
353
|
+
lo, hi = np.asarray(bounds[0::2], float), np.asarray(bounds[1::2], float)
|
|
354
|
+
near = np.where(np.asarray(toward_camera) > 0, hi, lo)
|
|
355
|
+
far = np.where(np.asarray(toward_camera) > 0, lo, hi)
|
|
356
|
+
out = np.where(np.asarray(toward_camera) > 0, 1.0, -1.0) # outward, camera side
|
|
357
|
+
off = 0.035 * np.max(hi - lo)
|
|
358
|
+
edges = ( # axis, anchor of the edge, outward offset of its labels
|
|
359
|
+
(0, np.array([0.0, lo[1], near[2]]), np.array([0.0, -off, out[2] * off])),
|
|
360
|
+
(2, np.array([near[0], lo[1], 0.0]), np.array([out[0] * off, -off, 0.0])),
|
|
361
|
+
(1, np.array([far[0], 0.0, near[2]]), np.array([-out[0] * off, 0.0, out[2] * off])),
|
|
362
|
+
)
|
|
363
|
+
for ax, anchor, shift in edges:
|
|
364
|
+
ticks = np.arange(np.ceil(lo[ax] / step) * step, hi[ax] + 1e-9, step)
|
|
365
|
+
pts = np.tile(anchor + shift, (len(ticks), 1))
|
|
366
|
+
pts[:, ax] = ticks
|
|
367
|
+
pl.add_point_labels(pts, [f"{t:.0f}" for t in ticks], font_size=font_size,
|
|
368
|
+
text_color="black", shape=None, show_points=False,
|
|
369
|
+
always_visible=True, name=f"ticks{ax}")
|
|
370
|
+
mid = anchor + 2.6 * shift
|
|
371
|
+
mid[ax] = (lo[ax] + hi[ax]) / 2
|
|
372
|
+
pl.add_point_labels([mid], [titles[ax]], font_size=int(font_size * 1.3),
|
|
373
|
+
text_color="black", shape=None, show_points=False,
|
|
374
|
+
always_visible=True, name=f"title{ax}")
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
def _use_font_file(pl, font_file):
|
|
378
|
+
"""Point every text of the plotter at a TrueType file. (VTK's built-in
|
|
379
|
+
sans font draws '[' and ']' as parentheses.)"""
|
|
380
|
+
props = []
|
|
381
|
+
for actor in pl.actors.values():
|
|
382
|
+
if hasattr(actor, "GetTextProperty"):
|
|
383
|
+
props.append(actor.GetTextProperty())
|
|
384
|
+
mapper = actor.GetMapper() if hasattr(actor, "GetMapper") else None
|
|
385
|
+
if mapper is not None and hasattr(mapper, "GetLabelTextProperty"):
|
|
386
|
+
props.append(mapper.GetLabelTextProperty())
|
|
387
|
+
# add_point_labels: the style sits on the label hierarchy feeding the mapper
|
|
388
|
+
source = mapper.GetInputAlgorithm() if hasattr(mapper, "GetInputAlgorithm") else None
|
|
389
|
+
if source is not None and hasattr(source, "GetTextProperty"):
|
|
390
|
+
props.append(source.GetTextProperty())
|
|
391
|
+
for bar in pl.scalar_bars.values():
|
|
392
|
+
props += [bar.GetTitleTextProperty(), bar.GetLabelTextProperty()]
|
|
393
|
+
for prop in props:
|
|
394
|
+
prop.SetFontFamily(4) # VTK_FONT_FILE
|
|
395
|
+
prop.SetFontFile(str(font_file))
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
def animate_trajectories_3d(source, out_dir, frames=None, *, component=1, tail=20,
|
|
399
|
+
pos_scale=1.0, bounds=None, cmap="coolwarm",
|
|
400
|
+
clim=(-0.5, 0.5), bar_title=None, bar_labels=21,
|
|
401
|
+
bar_fmt="%.2f", view_direction=(-1.0, 1.0, 1.0),
|
|
402
|
+
view_up=(0.0, 1.0, 0.0), zoom=1.0, window_center=(0.0, 0.0),
|
|
403
|
+
window_size=(1920, 1080), point_size=6.0,
|
|
404
|
+
grid_step=500.0, axis_titles=("x", "y", "z"),
|
|
405
|
+
wall_color=(0.54, 0.54, 0.54), background="white",
|
|
406
|
+
font_size=20, font_file=None, outlines=(),
|
|
407
|
+
outline_color="black", outline_width=3.0, movie=None,
|
|
408
|
+
fps=10, label=None):
|
|
409
|
+
"""Off-screen movie frames of trajectories as trailing beads (PyVista).
|
|
410
|
+
|
|
411
|
+
Every frame shows each particle's last ``tail`` positions as shaded
|
|
412
|
+
spheres coloured by one velocity component (``component``: 0, 1, 2), in a
|
|
413
|
+
box with grey back walls, a ``grid_step`` grid and labelled axes, seen
|
|
414
|
+
with a fixed parallel-projection camera -- the usual ParaView look.
|
|
415
|
+
|
|
416
|
+
source - zarr path / ZarrScene / Scene, as :func:`plot_trajectories_3d`.
|
|
417
|
+
out_dir - PNG frames are written as ``frame_0000.png`` ...
|
|
418
|
+
frames - frame numbers to render (default: every frame of the source).
|
|
419
|
+
pos_scale - multiplies positions (e.g. 1000 for m -> mm axes).
|
|
420
|
+
bounds - (x0, x1, y0, y1, z0, z1) of the box, in scaled units (default:
|
|
421
|
+
the data's 0.5-99.5 percentile box).
|
|
422
|
+
view_direction - from the scene towards the camera; ``view_up`` the
|
|
423
|
+
screen's up; ``zoom`` > 1 enlarges; ``window_center`` shifts the
|
|
424
|
+
projection centre in normalized window units (VTK SetWindowCenter).
|
|
425
|
+
movie - if given, the frames are also encoded to this .mp4 with ffmpeg.
|
|
426
|
+
label - optional ``str.format`` text drawn bottom-left, given ``frame``.
|
|
427
|
+
font_file - TrueType file for all text (VTK's built-in font has no
|
|
428
|
+
square brackets).
|
|
429
|
+
outlines - (N, 3) point arrays in scaled units, each drawn as a closed
|
|
430
|
+
line (e.g. the top and bottom rims of a cylindrical vessel).
|
|
431
|
+
|
|
432
|
+
Returns the list of PNG paths.
|
|
433
|
+
"""
|
|
434
|
+
import shutil
|
|
435
|
+
import subprocess
|
|
436
|
+
|
|
437
|
+
import pyvista as pv
|
|
438
|
+
|
|
439
|
+
from flowtracks.writers import _trajectory_arrays
|
|
440
|
+
|
|
441
|
+
pos, vel, time, _ = _trajectory_arrays(source)
|
|
442
|
+
pos = pos * pos_scale
|
|
443
|
+
value = vel[:, component]
|
|
444
|
+
order = np.argsort(time, kind="stable")
|
|
445
|
+
pos, value, time = pos[order], value[order], time[order]
|
|
446
|
+
if frames is None:
|
|
447
|
+
frames = np.unique(time)
|
|
448
|
+
if bounds is None:
|
|
449
|
+
lo, hi = np.percentile(pos, 0.5, axis=0), np.percentile(pos, 99.5, axis=0)
|
|
450
|
+
bounds = (lo[0], hi[0], lo[1], hi[1], lo[2], hi[2])
|
|
451
|
+
out_dir = Path(out_dir)
|
|
452
|
+
out_dir.mkdir(parents=True, exist_ok=True)
|
|
453
|
+
|
|
454
|
+
direction = np.asarray(view_direction, float)
|
|
455
|
+
direction /= np.linalg.norm(direction)
|
|
456
|
+
walls, grid = _far_walls(bounds, direction, grid_step)
|
|
457
|
+
|
|
458
|
+
pl = pv.Plotter(off_screen=True, window_size=list(window_size))
|
|
459
|
+
pl.set_background(background)
|
|
460
|
+
pl.add_mesh(walls, color=wall_color, lighting=False, name="walls")
|
|
461
|
+
pl.add_mesh(grid, color="black", line_width=1.5, name="grid")
|
|
462
|
+
for k, ring in enumerate(outlines):
|
|
463
|
+
ring = np.asarray(ring, float)
|
|
464
|
+
line = pv.lines_from_points(np.vstack([ring, ring[:1]]))
|
|
465
|
+
pl.add_mesh(line, color=outline_color, line_width=outline_width,
|
|
466
|
+
render_lines_as_tubes=True, name=f"outline{k}")
|
|
467
|
+
_box_axis_labels(pl, bounds, direction, grid_step, axis_titles, font_size)
|
|
468
|
+
pl.add_axes(viewport=(0.0, 0.82, 0.12, 1.0))
|
|
469
|
+
centre = np.array([(bounds[0] + bounds[1]) / 2, (bounds[2] + bounds[3]) / 2,
|
|
470
|
+
(bounds[4] + bounds[5]) / 2])
|
|
471
|
+
size = np.linalg.norm(np.subtract(bounds[1::2], bounds[0::2]))
|
|
472
|
+
pl.enable_parallel_projection()
|
|
473
|
+
pl.camera.focal_point = centre
|
|
474
|
+
pl.camera.position = centre + direction * 4 * size
|
|
475
|
+
pl.camera.up = view_up
|
|
476
|
+
pl.reset_camera(bounds=list(bounds))
|
|
477
|
+
pl.camera.parallel_scale /= zoom
|
|
478
|
+
pl.camera.SetWindowCenter(*window_center)
|
|
479
|
+
|
|
480
|
+
bar = dict(title=bar_title or "", vertical=True, position_x=0.93, position_y=0.02,
|
|
481
|
+
height=0.96, width=0.012, n_labels=bar_labels, fmt=bar_fmt,
|
|
482
|
+
color="black", title_font_size=int(font_size * 1.2),
|
|
483
|
+
label_font_size=font_size)
|
|
484
|
+
paths = []
|
|
485
|
+
starts = np.searchsorted(time, np.asarray(frames) - tail + 1, side="left")
|
|
486
|
+
ends = np.searchsorted(time, np.asarray(frames), side="right")
|
|
487
|
+
for i, (frame, s, e) in enumerate(zip(frames, starts, ends)):
|
|
488
|
+
beads = pv.PolyData(pos[s:e] if e > s else np.zeros((0, 3)))
|
|
489
|
+
if e > s:
|
|
490
|
+
beads.point_data["value"] = value[s:e]
|
|
491
|
+
pl.add_mesh(beads, scalars="value", cmap=cmap, clim=clim,
|
|
492
|
+
point_size=point_size, render_points_as_spheres=True,
|
|
493
|
+
style="points", scalar_bar_args=bar, name="beads")
|
|
494
|
+
if label:
|
|
495
|
+
pl.add_text(label.format(frame=frame), position="lower_left",
|
|
496
|
+
font_size=font_size, color="black", name="label")
|
|
497
|
+
if font_file:
|
|
498
|
+
_use_font_file(pl, font_file)
|
|
499
|
+
path = out_dir / f"frame_{i:04d}.png"
|
|
500
|
+
pl.screenshot(str(path))
|
|
501
|
+
paths.append(path)
|
|
502
|
+
pl.close()
|
|
503
|
+
|
|
504
|
+
if movie is not None:
|
|
505
|
+
ffmpeg = shutil.which("ffmpeg")
|
|
506
|
+
if ffmpeg is None:
|
|
507
|
+
raise RuntimeError("ffmpeg not found; the PNG frames are in " + str(out_dir))
|
|
508
|
+
subprocess.run([ffmpeg, "-v", "error", "-y", "-framerate", str(fps),
|
|
509
|
+
"-i", str(out_dir / "frame_%04d.png"), "-c:v", "libx264",
|
|
510
|
+
"-pix_fmt", "yuv420p", "-crf", "18", str(movie)], check=True)
|
|
511
|
+
return paths
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flowtracks
|
|
3
|
-
Version: 1.6.2.
|
|
3
|
+
Version: 1.6.2.dev11
|
|
4
4
|
Summary: Library for handling 3D PTV trajectory databases and Lagrangian/Eulerian turbulence post-processing.
|
|
5
5
|
Author-email: Yosef Meller <yosefm@gmail.com>
|
|
6
6
|
License-Expression: GPL-3.0-only AND BSD-3-Clause
|
|
@@ -753,6 +753,7 @@ flowtracks.egg-info/scm_version.json
|
|
|
753
753
|
flowtracks.egg-info/top_level.txt
|
|
754
754
|
scripts/analyse_fhdf.py
|
|
755
755
|
scripts/convert_tracers_to_zarr.py
|
|
756
|
+
scripts/make_trajectory_movie.py
|
|
756
757
|
scripts/run_postptv_analysis.py
|
|
757
758
|
scripts/view_trajectories_3d.py
|
|
758
759
|
tests/conftest.py
|
|
@@ -795,4 +796,5 @@ tests/testing_fodder/three_trajects_simple.h5
|
|
|
795
796
|
tests/testing_fodder/ptvis/ptv_is.10001
|
|
796
797
|
tests/testing_fodder/ptvis/ptv_is.10002
|
|
797
798
|
tests/testing_fodder/ptvis/ptv_is.10003
|
|
798
|
-
tests/testing_fodder/ptvis/ptv_is.10004
|
|
799
|
+
tests/testing_fodder/ptvis/ptv_is.10004
|
|
800
|
+
videos/flowtracks_explainer.py
|
|
@@ -745,6 +745,7 @@
|
|
|
745
745
|
"requriments.txt",
|
|
746
746
|
"scripts/analyse_fhdf.py",
|
|
747
747
|
"scripts/convert_tracers_to_zarr.py",
|
|
748
|
+
"scripts/make_trajectory_movie.py",
|
|
748
749
|
"scripts/run_postptv_analysis.py",
|
|
749
750
|
"scripts/view_trajectories_3d.py",
|
|
750
751
|
"setup.py",
|
|
@@ -788,6 +789,7 @@
|
|
|
788
789
|
"tests/testing_fodder/ptvis/ptv_is.10003",
|
|
789
790
|
"tests/testing_fodder/ptvis/ptv_is.10004",
|
|
790
791
|
"tests/testing_fodder/sequence.cfg",
|
|
791
|
-
"tests/testing_fodder/three_trajects_simple.h5"
|
|
792
|
+
"tests/testing_fodder/three_trajects_simple.h5",
|
|
793
|
+
"videos/flowtracks_explainer.py"
|
|
792
794
|
]
|
|
793
795
|
}
|
|
@@ -100,6 +100,8 @@ ignore = ["E501", "E701", "E741"]
|
|
|
100
100
|
"scripts/**" = ["E402", "F401", "F841"]
|
|
101
101
|
"benchmarks/**" = ["E402", "F401", "F841"]
|
|
102
102
|
"doc/**" = ["E402", "F401"]
|
|
103
|
+
# manim scenes use manim's documented `from manim import *` idiom
|
|
104
|
+
"videos/**" = ["F403", "F405"]
|
|
103
105
|
# F401: test modules import names to prove they are importable / to be
|
|
104
106
|
# used by other tests via `from test_x import ...`.
|
|
105
107
|
"tests/**" = ["E402", "F401"]
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Trajectory movie from postptv/openptv2 `res/run.zarr/trajectories` stores.
|
|
3
|
+
|
|
4
|
+
Trailing-tail 3D segments colored by vertical velocity (coolwarm, +-0.5 m/s),
|
|
5
|
+
fixed camera angle, wireframe barrel rings, horizontal colorbar — in the
|
|
6
|
+
style of the Ilmenau `movie_up.avi` reference.
|
|
7
|
+
|
|
8
|
+
Defaults below are the Ilmenau 8-camera bubble run (pos in m with PTV
|
|
9
|
+
columns X, Y=height, Z=depth); point BASE/RIGS/OUT at any dataset with the
|
|
10
|
+
same `trajectories/{pos,vel,time,trajid}` schema.
|
|
11
|
+
|
|
12
|
+
Usage:
|
|
13
|
+
python make_trajectory_movie.py --test-frame 10250 # single PNG preview
|
|
14
|
+
python make_trajectory_movie.py --render-all # all PNG frames
|
|
15
|
+
python make_trajectory_movie.py --render-all --mode full --elev 25 --azim -55 \
|
|
16
|
+
--stride 10 --max-tracks 15000 --outdir movie_frames_iso_full # iso pathlines
|
|
17
|
+
Then: ffmpeg -framerate 10 -i frame_%04d.png -c:v mpeg4 movie_up2.avi
|
|
18
|
+
"""
|
|
19
|
+
import argparse
|
|
20
|
+
import sys
|
|
21
|
+
from pathlib import Path
|
|
22
|
+
|
|
23
|
+
import matplotlib
|
|
24
|
+
|
|
25
|
+
matplotlib.use("Agg")
|
|
26
|
+
import matplotlib.pyplot as plt
|
|
27
|
+
import numpy as np
|
|
28
|
+
import zarr
|
|
29
|
+
from mpl_toolkits.mplot3d.art3d import Line3DCollection
|
|
30
|
+
|
|
31
|
+
BASE = Path("/Users/alex/Downloads/Ilmenau")
|
|
32
|
+
RIGS = [BASE / "openptv_illmenau_4cam" / "res" / "run.zarr",
|
|
33
|
+
BASE / "openptv_illmenau_5678" / "res" / "run.zarr"]
|
|
34
|
+
OUT = BASE / "Full_measurement_with_8_cameras" / "movie_frames_up2"
|
|
35
|
+
CYL_R = 3575.0 # mm wall radius
|
|
36
|
+
ELEV, AZIM = 86, -45 # fixed camera angle (movie_up style: top-down)
|
|
37
|
+
TAIL = 5 # trailing frames per streak (tails mode)
|
|
38
|
+
WMIN, WMAX = -0.5, 0.5
|
|
39
|
+
EVERY = 5 # frame stride over 10001..10500 -> 100 movie frames
|
|
40
|
+
SEGLEN_CAP = 250.0 # mm; drop longer single-step jumps (ghosts)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def load():
|
|
44
|
+
xs, ys, hs, ws, ts, ds = [], [], [], [], [], []
|
|
45
|
+
# NOTE: trajid namespaces of the two rigs collide: offset each rig
|
|
46
|
+
# (same convention as generate_ilmenau_davis_results.py).
|
|
47
|
+
for zpath, off in zip(RIGS, [0, 1000000]):
|
|
48
|
+
g = zarr.open(str(zpath / "trajectories"), mode="r")
|
|
49
|
+
pos = g["pos"][:] * 1000.0 # m -> mm; cols X, Yheight, Zdepth
|
|
50
|
+
vel = g["vel"][:]
|
|
51
|
+
tim = g["time"][:].astype(np.int64)
|
|
52
|
+
tra = g["trajid"][:].astype(np.int64) + off
|
|
53
|
+
order = np.lexsort((tim, tra))
|
|
54
|
+
xs.append(pos[order][:, 0])
|
|
55
|
+
ys.append(pos[order][:, 2]) # depth on plot-Y
|
|
56
|
+
hs.append(pos[order][:, 1]) # height on plot-Z
|
|
57
|
+
ws.append(vel[order][:, 1]) # vertical velocity
|
|
58
|
+
ts.append(tim[order])
|
|
59
|
+
ds.append(tra[order])
|
|
60
|
+
return (np.concatenate(xs), np.concatenate(ys), np.concatenate(hs),
|
|
61
|
+
np.concatenate(ws), np.concatenate(ts), np.concatenate(ds))
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def draw_frame(frm, X, Y, H, W, T, out_path, dpi=120):
|
|
65
|
+
sel = (T >= frm - TAIL) & (T <= frm)
|
|
66
|
+
# consecutive-point segments within the window
|
|
67
|
+
idx = np.nonzero(sel)[0]
|
|
68
|
+
if len(idx) < 2:
|
|
69
|
+
return False
|
|
70
|
+
brk = np.nonzero(np.diff(idx) > 1)[0]
|
|
71
|
+
starts = np.r_[idx[0], idx[brk + 1]]
|
|
72
|
+
ends = np.r_[idx[brk], idx[-1]]
|
|
73
|
+
ok = ends > starts
|
|
74
|
+
starts, ends = starts[ok], ends[ok]
|
|
75
|
+
segs = np.stack(
|
|
76
|
+
[np.column_stack([X[starts], Y[starts], H[starts]]),
|
|
77
|
+
np.column_stack([X[ends], Y[ends], H[ends]])],
|
|
78
|
+
axis=1,
|
|
79
|
+
)
|
|
80
|
+
# drop ghost streaks: single steps above the speed cap
|
|
81
|
+
seglen = np.linalg.norm(segs[:, 1] - segs[:, 0], axis=1)
|
|
82
|
+
keep = seglen <= SEGLEN_CAP
|
|
83
|
+
segs, starts, ends = segs[keep], starts[keep], ends[keep]
|
|
84
|
+
if len(segs) < 1:
|
|
85
|
+
return False
|
|
86
|
+
cols = np.clip((W[starts] + W[ends]) / 2, WMIN, WMAX)
|
|
87
|
+
|
|
88
|
+
render_segments(segs, cols, out_path, dpi=dpi)
|
|
89
|
+
return True
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def build_full_trails(X, Y, H, W, T, D, max_tracks):
|
|
93
|
+
"""Precompute full-length trail segments for the longest trajectories.
|
|
94
|
+
|
|
95
|
+
Returns (segs (M,2,3), colors (M,), end_times (M,)) with gap jumps
|
|
96
|
+
(dt > 2 frames) and ghost steps removed. Render loop then only masks
|
|
97
|
+
end_times <= frame. Rig trajid namespaces are pre-offset in load().
|
|
98
|
+
"""
|
|
99
|
+
order = np.lexsort((T, D))
|
|
100
|
+
Xs, Ys, Hs, Ws, Ts, Ds = X[order], Y[order], H[order], W[order], T[order], D[order]
|
|
101
|
+
_, inv, cnt = np.unique(Ds, return_counts=True, return_inverse=True)
|
|
102
|
+
thresh = np.sort(cnt)[-min(max_tracks, len(cnt))]
|
|
103
|
+
m = cnt[inv] >= thresh
|
|
104
|
+
Xs, Ys, Hs, Ws, Ts, Ds = Xs[m], Ys[m], Hs[m], Ws[m], Ts[m], Ds[m]
|
|
105
|
+
link = (Ds[1:] == Ds[:-1]) & (Ts[1:] - Ts[:-1] >= 1) & (Ts[1:] - Ts[:-1] <= 2)
|
|
106
|
+
i0 = np.nonzero(link)[0]
|
|
107
|
+
segs = np.stack(
|
|
108
|
+
[np.column_stack([Xs[i0], Ys[i0], Hs[i0]]),
|
|
109
|
+
np.column_stack([Xs[i0 + 1], Ys[i0 + 1], Hs[i0 + 1]])],
|
|
110
|
+
axis=1,
|
|
111
|
+
)
|
|
112
|
+
seglen = np.linalg.norm(segs[:, 1] - segs[:, 0], axis=1)
|
|
113
|
+
good = seglen <= SEGLEN_CAP
|
|
114
|
+
return (segs[good],
|
|
115
|
+
np.clip((Ws[i0[good]] + Ws[i0[good] + 1]) / 2, WMIN, WMAX),
|
|
116
|
+
Ts[i0[good] + 1])
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def render_segments(segs, cols, out_path, dpi=120):
|
|
120
|
+
fig = plt.figure(figsize=(12, 12), dpi=dpi)
|
|
121
|
+
ax = fig.add_subplot(111, projection="3d")
|
|
122
|
+
th = np.linspace(0, 2 * np.pi, 200)
|
|
123
|
+
for z in (HZMIN, HZMAX):
|
|
124
|
+
ax.plot(CYL_R * np.cos(th), CYL_R * np.sin(th),
|
|
125
|
+
np.full_like(th, z), color="black", lw=1.5)
|
|
126
|
+
for ang in (0, np.pi / 2, np.pi, 3 * np.pi / 2):
|
|
127
|
+
ax.plot([CYL_R * np.cos(ang)] * 2, [CYL_R * np.sin(ang)] * 2,
|
|
128
|
+
[HZMIN, HZMAX], color="black", lw=1.0, alpha=0.6)
|
|
129
|
+
if len(segs) > 0:
|
|
130
|
+
lc = Line3DCollection(segs, cmap="coolwarm",
|
|
131
|
+
norm=matplotlib.colors.Normalize(vmin=WMIN, vmax=WMAX),
|
|
132
|
+
linewidths=0.6, alpha=0.55)
|
|
133
|
+
lc.set_array(cols)
|
|
134
|
+
ax.add_collection3d(lc)
|
|
135
|
+
ax.set_xlim(-4000, 4000)
|
|
136
|
+
ax.set_ylim(-4000, 4000)
|
|
137
|
+
ax.set_zlim(HZMIN - 200, HZMAX + 200)
|
|
138
|
+
ax.set_xlabel("X [mm]")
|
|
139
|
+
ax.set_ylabel("Y [mm]")
|
|
140
|
+
ax.set_zlabel("Z [mm]")
|
|
141
|
+
ax.view_init(elev=ELEV, azim=AZIM)
|
|
142
|
+
sm = plt.cm.ScalarMappable(cmap="coolwarm",
|
|
143
|
+
norm=matplotlib.colors.Normalize(vmin=WMIN, vmax=WMAX))
|
|
144
|
+
sm.set_array([])
|
|
145
|
+
cb = plt.colorbar(sm, ax=ax, fraction=0.035, pad=0.04, orientation="horizontal")
|
|
146
|
+
cb.set_label(r"$w$ [m/s]")
|
|
147
|
+
cb.set_ticks([-0.5, -0.25, 0.0, 0.25, 0.5])
|
|
148
|
+
fig.tight_layout()
|
|
149
|
+
fig.savefig(out_path)
|
|
150
|
+
plt.close(fig)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
if __name__ == "__main__":
|
|
154
|
+
ap = argparse.ArgumentParser()
|
|
155
|
+
ap.add_argument("--test-frame", type=int, default=None)
|
|
156
|
+
ap.add_argument("--render-all", action="store_true")
|
|
157
|
+
ap.add_argument("--dpi", type=int, default=120)
|
|
158
|
+
ap.add_argument("--mode", choices=["tails", "full"], default="tails",
|
|
159
|
+
help="tails: TAIL-frame streaks; full: whole trajectory up to frame")
|
|
160
|
+
ap.add_argument("--elev", type=float, default=None)
|
|
161
|
+
ap.add_argument("--azim", type=float, default=None)
|
|
162
|
+
ap.add_argument("--stride", type=int, default=None)
|
|
163
|
+
ap.add_argument("--max-tracks", type=int, default=15000,
|
|
164
|
+
help="longest-first cap (full mode only)")
|
|
165
|
+
ap.add_argument("--outdir", type=str, default=None)
|
|
166
|
+
args = ap.parse_args()
|
|
167
|
+
|
|
168
|
+
if args.elev is not None:
|
|
169
|
+
ELEV = args.elev
|
|
170
|
+
if args.azim is not None:
|
|
171
|
+
AZIM = args.azim
|
|
172
|
+
if args.stride is not None:
|
|
173
|
+
EVERY = args.stride
|
|
174
|
+
if args.outdir is not None:
|
|
175
|
+
OUT = Path(args.outdir)
|
|
176
|
+
if not OUT.is_absolute():
|
|
177
|
+
OUT = BASE / OUT
|
|
178
|
+
|
|
179
|
+
print("loading trajectories...", flush=True)
|
|
180
|
+
X, Y, H, W, T, D = load()
|
|
181
|
+
HZMIN, HZMAX = float(np.percentile(H, 1)), float(np.percentile(H, 99))
|
|
182
|
+
print(f"points={len(X)} H range 1/99pct=({HZMIN:.0f},{HZMAX:.0f})", flush=True)
|
|
183
|
+
OUT.mkdir(exist_ok=True)
|
|
184
|
+
|
|
185
|
+
if args.mode == "full":
|
|
186
|
+
print("building full-length trails...", flush=True)
|
|
187
|
+
SEGS, COLS, ET = build_full_trails(X, Y, H, W, T, D, args.max_tracks)
|
|
188
|
+
print(f"trail segments: {len(SEGS)}", flush=True)
|
|
189
|
+
frames = list(range(10001, 10501, EVERY))
|
|
190
|
+
for i, f in enumerate(frames):
|
|
191
|
+
m = ET <= f
|
|
192
|
+
if m.sum() < 1:
|
|
193
|
+
continue
|
|
194
|
+
render_segments(SEGS[m], COLS[m], OUT / f"frame_{i:04d}.png", dpi=args.dpi)
|
|
195
|
+
if i % 10 == 0:
|
|
196
|
+
print(f"{i}/{len(frames)} nseg={m.sum()}", flush=True)
|
|
197
|
+
print("done", flush=True)
|
|
198
|
+
sys.exit(0)
|
|
199
|
+
|
|
200
|
+
if args.test_frame is not None:
|
|
201
|
+
ok = draw_frame(args.test_frame, X, Y, H, W, T,
|
|
202
|
+
OUT / f"test_{args.test_frame}.png", dpi=args.dpi)
|
|
203
|
+
print("test frame written:", ok, flush=True)
|
|
204
|
+
elif args.render_all:
|
|
205
|
+
frames = list(range(10001, 10501, EVERY))
|
|
206
|
+
for i, f in enumerate(frames):
|
|
207
|
+
draw_frame(f, X, Y, H, W, T, OUT / f"frame_{i:04d}.png", dpi=args.dpi)
|
|
208
|
+
if i % 10 == 0:
|
|
209
|
+
print(f"{i}/{len(frames)}", flush=True)
|
|
210
|
+
print("done", flush=True)
|
|
211
|
+
else:
|
|
212
|
+
ap.print_help()
|
|
213
|
+
sys.exit(1)
|
|
@@ -148,3 +148,80 @@ def test_plot_titles_show_recorded_units(tmp_path):
|
|
|
148
148
|
plot_trajectories_3d(store, plotter=pl, show=False)
|
|
149
149
|
assert "speed [m s-1]" in dict(pl.scalar_bars)
|
|
150
150
|
pl.close()
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def test_far_walls_are_the_faces_away_from_the_camera():
|
|
154
|
+
from flowtracks.graphics import _far_walls
|
|
155
|
+
|
|
156
|
+
walls, grid = _far_walls((0, 4, 0, 2, 0, 6), (-1.0, 1.0, 1.0), 1.0)
|
|
157
|
+
centres = walls.cell_centers().points
|
|
158
|
+
# camera on -x, +y, +z: back walls at x = 4 (max), floor y = 0 (min), z = 0 (min)
|
|
159
|
+
assert sorted(map(tuple, np.round(centres, 6))) == sorted(
|
|
160
|
+
[(4.0, 1.0, 3.0), (2.0, 0.0, 3.0), (2.0, 1.0, 0.0)])
|
|
161
|
+
# grid lines every 1.0 across each wall: (5+3) + (5+7) + (3+7)
|
|
162
|
+
assert grid.n_lines == 30
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
def _can_render():
|
|
166
|
+
"""Screenshots need an OpenGL context. On a headless CI runner VTK
|
|
167
|
+
segfaults instead of raising (and pyvista.system_supports_plotting()
|
|
168
|
+
still says yes), so probe one tiny render in a child process."""
|
|
169
|
+
import subprocess
|
|
170
|
+
import sys
|
|
171
|
+
|
|
172
|
+
probe = ("import pyvista as pv; pl = pv.Plotter(off_screen=True, window_size=[8, 8]); "
|
|
173
|
+
"pl.add_mesh(pv.Sphere()); pl.screenshot(return_img=True)")
|
|
174
|
+
try:
|
|
175
|
+
return subprocess.run([sys.executable, "-c", probe], capture_output=True,
|
|
176
|
+
timeout=120).returncode == 0
|
|
177
|
+
except subprocess.TimeoutExpired:
|
|
178
|
+
return False
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
needs_render = pytest.mark.skipif(not _can_render(),
|
|
182
|
+
reason="no OpenGL context for off-screen rendering")
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
@needs_render
|
|
186
|
+
def test_animate_writes_frames_with_trailing_beads(tmp_path, monkeypatch):
|
|
187
|
+
from flowtracks import graphics
|
|
188
|
+
|
|
189
|
+
shown = []
|
|
190
|
+
real = pv.Plotter.add_mesh
|
|
191
|
+
|
|
192
|
+
def spy(self, mesh, *args, **kw):
|
|
193
|
+
if kw.get("name") == "beads":
|
|
194
|
+
shown.append(mesh.n_points)
|
|
195
|
+
return real(self, mesh, *args, **kw)
|
|
196
|
+
|
|
197
|
+
monkeypatch.setattr(pv.Plotter, "add_mesh", spy)
|
|
198
|
+
src = Tracks() # times 0..9 (id 7), 0..2 (id 3), 0..4 (id 5)
|
|
199
|
+
paths = graphics.animate_trajectories_3d(
|
|
200
|
+
src, tmp_path, frames=[0, 4, 9], tail=3, window_size=(160, 120),
|
|
201
|
+
bounds=(0, 0.01, -0.01, 0.01, -0.01, 0.01), grid_step=0.005)
|
|
202
|
+
assert [p.name for p in paths] == ["frame_0000.png", "frame_0001.png", "frame_0002.png"]
|
|
203
|
+
assert all(p.stat().st_size > 0 for p in paths)
|
|
204
|
+
# frame 0: 3 tracks at t=0; frame 4: t=2..4 -> id7 3 + id5 3 + id3 1; frame 9: id7 3
|
|
205
|
+
assert shown == [3, 7, 3]
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
@needs_render
|
|
209
|
+
def test_animate_draws_outlines_closed(tmp_path, monkeypatch):
|
|
210
|
+
from flowtracks import graphics
|
|
211
|
+
|
|
212
|
+
seen = {}
|
|
213
|
+
real = pv.Plotter.add_mesh
|
|
214
|
+
|
|
215
|
+
def spy(self, mesh, *args, **kw):
|
|
216
|
+
if str(kw.get("name", "")).startswith("outline"):
|
|
217
|
+
seen[kw["name"]] = mesh.n_points
|
|
218
|
+
return real(self, mesh, *args, **kw)
|
|
219
|
+
|
|
220
|
+
monkeypatch.setattr(pv.Plotter, "add_mesh", spy)
|
|
221
|
+
a = np.linspace(0, 2 * np.pi, 12, endpoint=False)
|
|
222
|
+
ring = np.column_stack([0.005 * np.cos(a), np.zeros_like(a), 0.005 * np.sin(a)])
|
|
223
|
+
graphics.animate_trajectories_3d(
|
|
224
|
+
Tracks(), tmp_path, frames=[0], window_size=(160, 120),
|
|
225
|
+
bounds=(-0.01, 0.01, -0.01, 0.01, -0.01, 0.01), grid_step=0.005,
|
|
226
|
+
outlines=[ring, ring + [0, 0.005, 0]])
|
|
227
|
+
assert seen == {"outline0": 13, "outline1": 13} # closed: first point repeated
|