Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Untitled notebook

elixir_lab5.livemd

Untitled notebook

Section

defmodule Pars do
  def parsline(line) do
    [datetime_str, type, val_str, id, name, cords] = String.split(line, ";")
    
    [date, time] = datetime_str |> String.split("T")
    time = time |> String.slice(0, 8)

    date = date
      |> String.split("-")
      |> Enum.map(&String.to_integer/1)
      |> List.to_tuple()

    time = time
      |> String.split(":")
      |> Enum.map(&String.to_integer/1)
      |> List.to_tuple()
    
    val = val_str |> String.to_float()

    cords = cords
      |> String.split(",")
      |> Enum.map(&String.to_float/1)
      |> List.to_tuple()

    

    %{id: String.to_integer(id), value: val, type: type, datet: {date, time}, name: name, cords: cords}
  end
end
map = File.read!("D:\\nauka\\Programowanie-Erlang\\data\\AirlyData-ALL-50k.csv")
# map = File.read!("C:\\Users\\Admin\\studia\\Programowanie-Erlang\\data\\AirlyData-ALL-50k.csv")
|> String.trim()
|> String.split("\n")
|> Enum.map(&Pars.parsline/1)

map_uniq = map |> Enum.uniq_by(& &1.id)
Code.append_path("D:\\nauka\\Programowanie-Erlang\\pollution_app\\_build\\default\\lib\\pollution_app\\ebin")
# Code.append_path("C:\\Users\\Admin\\studia\\Programowanie-Erlang\\pollution_app\\_build\\default\\lib\\pollution_app\\ebin")


# Application.stop(:pollution_app)
Application.start(:pollution_app)
fn -> 
map_uniq
|> Enum.map(fn x -> :pollution_gen_server.add_station(x.name <> " " <> Integer.to_string(x.id), x.cords) end)
end
|> :timer.tc
|> elem(0)
:pollution_gen_server.get_monitor()
fn -> 
map
|> Enum.map(fn x -> :pollution_gen_server.add_value(x.name <> " " <> Integer.to_string(x.id), x.datet, x.type, x.value) end)
end
|> :timer.tc
|> elem(0)
:pollution_gen_server.get_monitor()
:pollution_gen_server.get_closest_stations("Polska, Kraków, Kielecka 9919")
:pollution_gen_server.get_daily_mean("PM1", {2024, 2, 10})
:pollution_gen_server.get_closest_stations("Polska, Kraków, Kielecka 9919")
:pollution_gen_server.get_closest_stations("Polska, Kraków, Generała Józefa Bema 11239")
fn -> :pollution_gen_server.get_station_min("Polska, Kraków, Studencka 9910", "PM10") end |> :timer.tc
fn -> :pollution_gen_server.get_daily_mean("PM25", {2024, 2, 10}) end |> :timer.tc