MCPcopy Create free account
hub / github.com/Notgnoshi/generative / main

Function main

tools/traverse.rs:142–210  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

140}
141
142fn main() -> eyre::Result<()> {
143 color_eyre::install()?;
144 let args = CmdlineOptions::parse();
145
146 let filter = tracing_subscriber::EnvFilter::builder()
147 .with_default_directive(args.log_level.into())
148 .from_env_lossy();
149 tracing_subscriber::fmt()
150 .with_env_filter(filter)
151 .with_ansi(true)
152 .with_writer(std::io::stderr)
153 .init();
154
155 let seed = generate_random_seed_if_not_specified(args.seed);
156 tracing::info!("Seeding RNG with: {seed}");
157 let mut rng = StdRng::seed_from_u64(seed);
158
159 let reader = get_input_reader(&args.input)?;
160 let mut graph: GeometryGraph<Undirected> = read_tgf_graph(reader);
161
162 let mut num_traversals = if args.random_traversals {
163 let n = args.traversals * 2; // changes mean
164 let p = 0.5; // changes skew
165 let dist = Binomial::new(n as u64, p)?;
166 dist.sample(&mut rng)
167 } else {
168 args.traversals as u64
169 };
170 if num_traversals == 0 {
171 num_traversals = 1;
172 }
173 tracing::debug!("Making {num_traversals} traversals");
174
175 let traversals = std::iter::repeat_with(|| {
176 let mut length = if args.random_length {
177 let n = args.traversals * 2; // changes mean
178 let p = 0.5; // changes skew
179 let dist = Binomial::new(n as u64, p).unwrap();
180 dist.sample(&mut rng)
181 } else {
182 args.length as u64
183 };
184 if length < 2 {
185 length = 2;
186 }
187 tracing::debug!("Making random traversal with length {length}");
188 random_traversal(
189 length as usize,
190 args.remove_after_traverse,
191 &mut graph,
192 &mut rng,
193 )
194 })
195 .take(num_traversals as usize)
196 .flatten()
197 .map(Geometry::LineString);
198
199 let mut writer = get_output_writer(&args.output)?;

Callers

nothing calls this directly

Calls 7

get_input_readerFunction · 0.85
read_tgf_graphFunction · 0.85
random_traversalFunction · 0.85
get_output_writerFunction · 0.85
write_geometriesFunction · 0.85
PointClass · 0.50

Tested by

no test coverage detected