superstreamlabs / save-zakar-hackathon

Apache License 2.0
4 stars 11 forks source link

1660x498 (600x180) (1)

A fictional island nation named Zakar is suffering from wildfires.
Let's help them build an early warning system and save lives and earth!

🔥 Save Zakar Hackathon

In collaboration with Streamlit & Supabase,
we are happy to announce Memphis #1 hackathon #SaveZakar!

The story

Wildfires wreak havoc every year.
They take human and animal lives. They destroy agricultural and industrial crops and cause famines.
They damage the environment, contribute to global warming, and generate smoke that pollutes the air.
Their overall impact runs into billions of dollars and includes incalculable harm to people and animals.

In this hackathon, you are going to build a wildfire early warning system for the fictional island nation of Zakar.

🔑 Hackathon key information

🔥 The challenge

Zakar Island has been struggling with wildfires in the last few years, taking human and animal lives. The fires also destroy homes and agricultural and industrial crops and cause famines.

Zakar's current fire notification system only sends alerts 3 days after a fire has occurred. That's not enough time to intervene to prevent a fire from spreading or evacuate people. To aid the citizens, the government installed temperature sensors and hired you.

Your task is to develop software that uses temperature readings and social media messages to detect wildfires before they spread and generate early-warning alerts.

Read more on the data that you will work with and the scenario here 👈

Getting Started - Step 1 - Setting up the environment

To get started with the hackathon, follow these steps:

  1. Sign up at the hackathon main page.
  2. Create a Memphis Cloud account.
    After account creation head to the user's page and create a new client-type user.
    Make sure to save the credentials, you will need them in step 5.

Group 1000002297 (1)

  1. Fork this repo.
  2. Clone your forked repository from GitHub.
  3. Run the hackathon setup script.
    Three stations (zakar-tweets, zakar-temperature-readings, and zakar-fire-alerts) will be created and populated with data.

    $ python3 -m venv venv
    $ source venv/bin/activate
    $ pip install -r requirements.txt
    $ python3 setup_memphis.py --host <memphis_hostname> --username <client_type_username> --password <client_type_password> --account-id <memphis_account_id>

    If you encounter timeout errors, enable rate limiting:

    $ python3 setup_memphis.py --enable-rate-limiting --host <memphis_hostname> --username <client_type_username> --password <client_type_password> --account-id <memphis_account_id>

    The data set is pre-generated and fixed. Re-running the setup script will upload additional copies of the same messages to Memphis. This is to ensure that everyone is working on the same data set so that no team has an advantage or disadvantage.

For step 2, head here.

The Data

You will get access to messages in real-time from Memphis.dev stations using one of the Memphis.dev client SDKs.

Temperature readings are available from the zakar-temperature-readings station and look like so:

 {
  "geospatial_x": 4,
  "geospatial_y": 5,
  "temperature": 80.2,
  "day": 23
}

Micro-blog posts are available from the zakar-tweets station and look like so:

{
  "day": 728,
  "geospatial_x": 4,
  "geospatial_y": 5,
  "text": "Its gettin hot in here (so hot). I am gettin so hot, I wanna take my clothes off"
}

Notifications of past wildfire events are available from the zakar-fire-alerts station and look like so:

{
  "event_day": 527,
  "notification_day": 530,
  "geospatial_x": 4,
  "geospatial_y": 5
}

😎 Some Project Ideas

Please feel free to approach this problem however you want. We'd love to see your creative solutions!
If you need help getting started, we came up with several ideas 💡:

🏁 Submission

  1. Ensure your project is licensed under one of the following: MIT, Apache Software License v2, BSD-2, BSD-3, or Creative Commons.
  2. If you are creating an early warning system, have your system generate messages of the following form and send them to a station named zakar-fire-predictions:
    {
    "event_day": 527,
    "geospatial_x": 4,
    "geospatial_y": 5
    }
  3. To submit your project please open an issue in this repo and follow the instructions.
  4. Create a pull request against the original repository with your project.
  5. Finally, submit your project via the following form.

🎁 Prizes

Prizes 2 (1)

Each project will be judged by the following categories:

Besides internal glory, the best project will get the perfect gaming package which includes the following:

The 2nd best project will receive -

The top 10 Runner ups will receive an awesome swag pack by Memphis.dev and Streamlit.🌟

Prizes (1)

FAQ ⁉️

Where do I sign up?

You can sign up on the main hackathon page.

Where do I declare my team mates?

Up to 5 teammates. Should be declared in the submission form.

When can I submit the project?

Anytime between July 31st to August 7th opening an issue in this repo and using this form.

When and where will the winners be announced?

Winners will be announced on August 21st in a virtual event.

Where should I go if I have any questions?

Join our dedicated Discord channel.
And follow us on Twitter for more updates.

What are the judging criteria?

The projects will be judged by the following

Is it possible to repeat already sent messages?

You can either use a different consumer name (so a different consumer is created) or delete the consumer and recreate it.

Question about the swag, is the package one per team or one per person of the team?

The Swag is one per person but the gaming pack is per team

Is the dataset used to test our model different than what we've been provided?

We generated 10 years worth of data. We provided you with the first 7 years for training and evaluation of your models. We will evaluate your data on the remaining 3 years, which we haven't shared with you

Will re-running the setup script create new data?

No. Everybody is using the same data so that the competition is fair. Re-running the script will add more copies of same the data to Memphis.

What should be ideal time for running setup_memphis.py file to load new data?

Without rate limiting, it takes about 15 min. With rate limiting, closer to 45 min.

how often should we run the script to get new data?

You only need to run it once. There won't be any new data. It will upload 7 years worth of data to Memphis. If you want to replay the messages, you can create a new consumer with a different name. Each consumer will start from the beginning of the message history.

If I create a model, do I need to send you a file with the model (.h5 or .pkl) and the Jupyter notebook?

Correct. You need to save a serialized copy of the model in your repository with instructions for how to apply it.

🚀 Useful links

Let's go!!!