-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.jl
70 lines (60 loc) · 2.34 KB
/
main.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using ArgParse
using CSV
using DataFrames
#using Filesystem
function create_output_dir(input_dir::String)
output_dir = input_dir * "-fixed"
mkdir(output_dir)
return output_dir
end
function 📄➡️📄(input_dir::String, output_dir::String)
for file in readdir(input_dir)
cp(joinpath(input_dir, file), joinpath(output_dir, file), force=true)
end
end
function process_files(input_dir::String, output_dir::String)
# read in the files
print("\r2/10 Loading files")
df_stops = CSV.read(joinpath(output_dir, "stops.txt"), DataFrame)
print("\r3/10 Loading files")
df_translations = CSV.read(joinpath(output_dir, "translations.txt"), DataFrame, delim=",", quoted=false)
print("\r4/10 Loading files")
df_fareattributes = CSV.read(joinpath(output_dir, "fare_attributes.txt"), DataFrame)
# Fix for stops.txt
print("\r5/10 Fixing stops ")
df_stops.zone_id = df_stops.stop_code
# Fixes for translations.txt
print("\r6/10 Fixing translations")
rename!(df_translations, :lang => :language)
rename!(df_translations,:trans_id => :field_value)
df_translations[!,:table_name] .= "stops"
df_translations[!,:field_name] .= "stop_name"
# Fixes for fare_attributes.txt
print("\r7/10 Fixing fare attributes")
select!(df_fareattributes, Not(:agency_id))
transform!(df_fareattributes, :price => ByRow(x -> ifelse(x <= 5.5, (90*60), missing)) => :transfer_duration)
transform!(df_fareattributes, :price => ByRow(x -> ifelse(x <= 5.5, missing, 0)) => :transfers)
# export the files
print("\r8/10 Exporting stops ")
CSV.write(joinpath(output_dir, "stops.txt"), df_stops)
print("\r9/10 Exporting stops")
CSV.write(joinpath(output_dir, "translations.txt"), df_translations)
print("\r10/10 Exporting stops")
CSV.write(joinpath(output_dir, "fare_attributes.txt"), df_fareattributes)
end
function main()
s = ArgParseSettings()
@add_arg_table! s begin
"input_dir"
help = "input directory"
arg_type = String
required = true
end
parsed_args = parse_args(ARGS, s)
output_dir = create_output_dir(parsed_args["input_dir"])
print("1/10 Copying files")
📄➡️📄(parsed_args["input_dir"], output_dir)
process_files(parsed_args["input_dir"], output_dir)
print("\rDone! 🎉 ")
end
main()