BundleAdjustmentModels documentation

Julia repository of bundle adjustment problems from the Bundle Adjustment in the Large repository

How to Cite

If you use BundleAdjustmentModels.jl in your work, please cite using the format given in CITATION.cff.

Tutorial

Check an Introduction to BundleAdjustmentModels and more tutorials on the JSO tutorials page.

Bug reports and discussions

If you think you found a bug, feel free to open an issue. Focused suggestions and requests can also be opened as issues. Before opening a pull request, start an issue or a discussion on the topic, please.

If you want to ask a question not suited for a bug report, feel free to start a discussion here. This forum is for general discussion about this repository and the JuliaSmoothOptimizers, so questions about any of our packages are welcome.

Examples

using BundleAdjustmentModels, DataFrames

problems_df() returns a DataFrame of all the problems, their group and other features.

df = problems_df()

74 rows × 5 columns

namegroupnequnvarnnzj
StringStringInt64Int64Int64
1problem-16-22106-predubrovnik167436664622009232
2problem-88-64298-predubrovnik7678741936869214488
3problem-135-90642-predubrovnik110667227314113280064
4problem-142-93602-predubrovnik113121628208413574592
5problem-150-95821-predubrovnik113623828881313634856
6problem-161-103832-predubrovnik118403831294514208456
7problem-173-111908-predubrovnik126914033728115229680
8problem-182-116770-predubrovnik133741035194816048920
9problem-202-132796-predubrovnik150330440020618039648
10problem-237-154414-predubrovnik171666246537520599944
11problem-253-163691-predubrovnik179831049335021579720
12problem-262-169354-predubrovnik183937651042022072512
13problem-273-176305-predubrovnik188594053137222631280
14problem-287-182023-predubrovnik194258454865223311008
15problem-308-195089-predubrovnik209039458803925084728
16problem-356-226730-predubrovnik251053668339430126432
17problem-21-11315-pretrafalgar7291034134874920
18problem-39-18060-pretrafalgar127102545311525224
19problem-50-20431-pretrafalgar147934617431775208
20problem-126-40037-pretrafalgar2966561212453559872
21problem-138-44033-pretrafalgar3317981333413981576
22problem-161-48126-pretrafalgar3641441458274369728
23problem-170-49267-pretrafalgar3716301493314459560
24problem-174-50489-pretrafalgar3776181530334531416
25problem-193-53101-pretrafalgar3930521610404716624
26problem-201-54427-pretrafalgar3998761650904798512
27problem-206-54562-pretrafalgar4014301655404817160
28problem-215-55910-pretrafalgar4084041696654900848
29problem-225-57665-pretrafalgar4172441750205006928
30problem-257-65132-pretrafalgar4518221977095421864
31problem-49-7776-preladybug6368623769764232
32problem-73-11032-preladybug92244337531106928
33problem-138-19878-preladybug170434608762045208
34problem-318-41628-preladybug3598381277464318056
35problem-372-47423-preladybug4089441456174907328
36problem-412-52215-preladybug4484841603535381808
37problem-460-56811-preladybug4837541745735805048
38problem-539-65220-preladybug5545462005116654552
39problem-598-69218-preladybug6083402130367300080
40problem-646-73584-preladybug6545942265667855128
41problem-707-78455-preladybug6998802417288398560
42problem-783-84444-preladybug7541042603799049248
43problem-810-88814-preladybug7875502737329450600
44problem-856-93344-preladybug8315382877369978456
45problem-885-97473-preladybug86981030038410437720
46problem-931-102699-preladybug91492031647610979040
47problem-969-105826-preladybug94925432619911391048
48problem-1031-110968-preladybug100053034218312006360
49problem-1064-113655-preladybug102042235054112245064
50problem-1118-118384-preladybug105785236521412694224
51problem-1152-122269-preladybug109163837717513099656
52problem-1197-126327-preladybug112746838975413529616
53problem-1235-129634-preladybug115257240001713830864
54problem-1266-132593-preladybug117588440917314110608
55problem-1340-137079-preladybug122518642329714702232
56problem-1469-145199-preladybug128329244881815399504
57problem-1514-147317-preladybug130296045557715635520
58problem-1587-150845-preladybug132657846681815918936
59problem-1642-153820-preladybug134253647623816110432
60problem-1695-155710-preladybug135319048238516238280
61problem-52-64053-prevenice6943461926278332152
62problem-89-110973-prevenice112595233372013511424
63problem-245-198739-prevenice218277259842226193264
64problem-427-310384-prevenice339829093499540779480
65problem-744-543562-prevenice6117726163738273412712
66problem-951-708276-prevenice7497784213338789973408
67problem-1102-780462-prevenice8104680235130497256160
68problem-1158-802917-prevenice8261006241917399132072
69problem-1184-816583-prevenice83580942460405100297128
70problem-1238-843534-prevenice85810062541744102972072
71problem-1288-866452-prevenice87660122610948105192144
72problem-1350-894716-prevenice90342522696298108411024
73problem-1408-912229-prevenice92690602749359111228720
74problem-1778-993923-prevenice100038922997771120046704

When you get this dataframe you can sort through it to get the problems that you want. For example, if you want to filter problems based on their size you can apply this filter:

filter_df = df[ ( df.nequ .≥ 50000 ) .& ( df.nvar .≤ 34000 ), :]

2 rows × 5 columns

namegroupnequnvarnnzj
StringStringInt64Int64Int64
1problem-49-7776-preladybug6368623769764232
2problem-73-11032-preladybug92244337531106928

You can get the problem name directly from the dataframe:

name = filter_df[1, :name]
"problem-49-7776-pre"

fetch_ba_name returns the path to the problem artifact. The artifact will download automatically:

path = fetch_ba_name(name)
"/juliateam/.julia/artifacts/dd2da5f94014b5f9086a2b38a87f8c1bc171b9c2"

You can also get an array of the paths to an entire group of problems

path = fetch_ba_group("ladybug")
30-element Vector{String}:
 "/juliateam/.julia/artifacts/dd2da5f94014b5f9086a2b38a87f8c1bc171b9c2"
 "/juliateam/.julia/artifacts/3d0853a3ca8e585814697fea9cd4d6956692e103"
 "/juliateam/.julia/artifacts/5c5c938c998d6c083f549bc584cfeb07bd296d89"
 "/juliateam/.julia/artifacts/e8ebdcec7cd5dc3ec4825dcb6642064e541fa625"
 "/juliateam/.julia/artifacts/111ebd1dcdf5670eac8a12f4e2ce5a3b79b4f7f6"
 "/juliateam/.julia/artifacts/3e8acd1ef4cb13d93a7140be1c3702b5eb165978"
 "/juliateam/.julia/artifacts/69595726ce3990604ef56b80c273fe7f95506f2e"
 "/juliateam/.julia/artifacts/1eab751f4850b1e22302a7f97894d4b769c7350e"
 "/juliateam/.julia/artifacts/90ce1588d82c76a81c2b07d9e6abcc984e0e4586"
 "/juliateam/.julia/artifacts/05e4248f24d897a97e9be1f386e18d1de7e511e5"
 ⋮
 "/juliateam/.julia/artifacts/72cdf832cd3eedb4cc4c589127e7ab5b91a60f00"
 "/juliateam/.julia/artifacts/1e01d6927d4d4e0acd3086d9c75d2ee783ab1220"
 "/juliateam/.julia/artifacts/b92a8dfd520e7440769c4a72685e817632f9ea43"
 "/juliateam/.julia/artifacts/366a8368c091027a23a190b1ed498158eef947a5"
 "/juliateam/.julia/artifacts/ee08f4f6898cc26471d3a63502fe908cfa9a5dcc"
 "/juliateam/.julia/artifacts/1a0ebf23b35d784ad3d39f4987bc7d785f5976b6"
 "/juliateam/.julia/artifacts/00be55410c27068ec73261e122a39258100a1a11"
 "/juliateam/.julia/artifacts/0303e7ae8256c494c9da052d977277f21265899b"
 "/juliateam/.julia/artifacts/389ecea5c2f2e2b637a2b4439af0bd4ca98e6d84"

You can directly construct a nonlinear least-squares model based on NLPModels:

model = BundleAdjustmentModel("problem-49-7776")
BundleAdjustmentModel{Float64, Vector{Float64}}
  Problem name: problem-49-7776
   All variables: ████████████████████ 23769  All constraints: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0        All residuals: ████████████████████ 63686 
            free: ████████████████████ 23769             free: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0               linear: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
           lower: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0                lower: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0            nonlinear: ████████████████████ 63686 
           upper: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0                upper: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0                 nnzj: ( 99.95% sparsity)   764232
         low/upp: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0              low/upp: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0                 nnzh: (100.00% sparsity)   0     
           fixed: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0                fixed: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
          infeas: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0               infeas: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
            nnzh: (  0.00% sparsity)   282494565          linear: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
                                                    nonlinear: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
                                                         nnzj: (------% sparsity)         

  Counters:
             obj: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0                 grad: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0                 cons: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
        cons_lin: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0             cons_nln: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0                 jcon: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
           jgrad: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0                  jac: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0              jac_lin: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
         jac_nln: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0                jprod: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0            jprod_lin: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
       jprod_nln: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0               jtprod: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0           jtprod_lin: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
      jtprod_nln: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0                 hess: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0                hprod: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
           jhess: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0               jhprod: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0             residual: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
    jac_residual: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0       jprod_residual: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0      jtprod_residual: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     
   hess_residual: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0       jhess_residual: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0       hprod_residual: ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 0     

You can then evaluate the residual and jacobian (or their in-place version) from NLPModels:

using NLPModels
residual(model, model.meta.x0)
63686-element Vector{Float64}:
 -9.020226301243213
 11.263958304987227
 -1.8332297149469525
  5.304698960898122
 -4.332321480806684
  7.117305031392988
 -0.5632751791501462
 -1.062178017695885
 -3.9692059546843836
 -2.2850712830954194
  ⋮
 -0.43775747920221164
 -0.024461522651677114
 -0.1961281328666189
  0.008375315306523134
  0.23044496991071384
  0.04927878647407624
  0.47289578243411867
 -0.01443314653496941
 -0.4486499211288866
meta_nls = nls_meta(model)
Fx = similar(model.meta.x0, meta_nls.nequ)
residual!(model, model.meta.x0, Fx)
63686-element Vector{Float64}:
 -9.020226301243213
 11.263958304987227
 -1.8332297149469525
  5.304698960898122
 -4.332321480806684
  7.117305031392988
 -0.5632751791501462
 -1.062178017695885
 -3.9692059546843836
 -2.2850712830954194
  ⋮
 -0.43775747920221164
 -0.024461522651677114
 -0.1961281328666189
  0.008375315306523134
  0.23044496991071384
  0.04927878647407624
  0.47289578243411867
 -0.01443314653496941
 -0.4486499211288866

You need to call jac_structure_residual! at least once before calling jac_op_residual!.

meta_nls = nls_meta(model)
rows = Vector{Int}(undef, meta_nls.nnzj)
cols = Vector{Int}(undef, meta_nls.nnzj)
jac_structure_residual!(model, rows, cols)
([1, 1, 1, 1, 1, 1, 1, 1, 1, 1  …  63686, 63686, 63686, 63686, 63686, 63686, 63686, 63686, 63686, 63686], [1, 2, 3, 23329, 23330, 23331, 23332, 23333, 23334, 23335  …  23328, 23761, 23762, 23763, 23764, 23765, 23766, 23767, 23768, 23769])

You need to call jac_coord_residual! everytime before calling jac_op_residual!.

vals = similar(model.meta.x0, meta_nls.nnzj)
jac_coord_residual!(model, model.meta.x0, vals)
764232-element Vector{Float64}:
   545.1179297695714
    -5.058282392703829
  -478.0666614182794
  -283.5120110272222
 -1296.3388697208218
  -320.60334752077165
   551.1773498438256
     0.00020469082949125088
  -471.09490058346296
  -409.36200783910084
     ⋮
  1246.0491342213195
   -96.64898276178089
   622.4628407807937
     2.852854717671426e-7
   305.00859581263086
    19.561762292226746
     6.5984133899730155
     1.680958440896614
     0.06413511779846102
Jv = similar(model.meta.x0, meta_nls.nequ)
Jtv = similar(model.meta.x0, meta_nls.nvar)
Jx = jac_op_residual!(model, rows, cols, vals, Jv, Jtv)
Linear operator
  nrow: 63686
  ncol: 23769
  eltype: Float64
  symmetric: false
  hermitian: false
  nprod:   0
  ntprod:  0
  nctprod: 0

There is no second order information available for problems in this module.

Delete unneeded artifacts and free up disk space with delete_ba_artifact!:

delete_ba_artifact!("problem-49-7776-pre")
[ Info: The artifact ladybug/problem-49-7776-pre.txt.bz2 has been deleted

Use delete_all_ba_artifacts! to delete all artifacts:

delete_all_ba_artifacts!()
[ Info: The artifact dubrovnik/problem-16-22106-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-88-64298-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-135-90642-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-142-93602-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-150-95821-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-161-103832-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-173-111908-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-182-116770-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-202-132796-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-237-154414-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-253-163691-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-262-169354-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-273-176305-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-287-182023-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-308-195089-pre.txt.bz2 was not found
[ Info: The artifact dubrovnik/problem-356-226730-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-21-11315-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-39-18060-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-50-20431-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-126-40037-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-138-44033-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-161-48126-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-170-49267-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-174-50489-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-193-53101-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-201-54427-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-206-54562-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-215-55910-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-225-57665-pre.txt.bz2 was not found
[ Info: The artifact trafalgar/problem-257-65132-pre.txt.bz2 was not found
[ Info: The artifact ladybug/problem-49-7776-pre.txt.bz2 was not found
[ Info: The artifact ladybug/problem-73-11032-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-138-19878-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-318-41628-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-372-47423-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-412-52215-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-460-56811-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-539-65220-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-598-69218-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-646-73584-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-707-78455-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-783-84444-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-810-88814-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-856-93344-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-885-97473-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-931-102699-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-969-105826-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1031-110968-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1064-113655-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1118-118384-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1152-122269-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1197-126327-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1235-129634-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1266-132593-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1340-137079-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1469-145199-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1514-147317-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1587-150845-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1642-153820-pre.txt.bz2 has been deleted
[ Info: The artifact ladybug/problem-1695-155710-pre.txt.bz2 has been deleted
[ Info: The artifact venice/problem-52-64053-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-89-110973-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-245-198739-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-427-310384-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-744-543562-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-951-708276-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-1102-780462-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-1158-802917-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-1184-816583-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-1238-843534-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-1288-866452-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-1350-894716-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-1408-912229-pre.txt.bz2 was not found
[ Info: The artifact venice/problem-1778-993923-pre.txt.bz2 was not found

Licensed under the MPL-2.0 License