MFF212 commited on
Commit
cf52350
·
0 Parent(s):

Duplicate from MFF212/gt

Browse files
Files changed (6) hide show
  1. .gitattributes +35 -0
  2. Dockerfile +31 -0
  3. README.md +11 -0
  4. main.py +87 -0
  5. requirements.txt +12 -0
  6. use_api_in_python.png +0 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
Dockerfile ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Use the official Python 3.9 image
2
+ FROM python:3.9
3
+
4
+ RUN apt-get update && apt-get install -y \
5
+ tesseract-ocr-all \
6
+ && rm -rf /var/lib/apt/lists/*
7
+
8
+ # Set the working directory to /code
9
+ WORKDIR /code
10
+
11
+ # Copy the current directory contents into the container at /code
12
+ COPY ./requirements.txt /code/requirements.txt
13
+
14
+ # Install requirements.txt
15
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
16
+
17
+ # Set up a new user named "user" with user ID 1000
18
+ RUN useradd -m -u 1000 user
19
+ # Switch to the "user" user
20
+ USER user
21
+ # Set home to the user's home directory
22
+ ENV HOME=/home/user \
23
+ PATH=/home/user/.local/bin:$PATH
24
+
25
+ # Set the working directory to the user's home directory
26
+ WORKDIR $HOME/app
27
+
28
+ # Copy the current directory contents into the container at $HOME/app setting the owner to the user
29
+ COPY --chown=user . $HOME/app
30
+
31
+ CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "7860"]
README.md ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Gt
3
+ emoji: 📚
4
+ colorFrom: blue
5
+ colorTo: green
6
+ sdk: docker
7
+ pinned: false
8
+ duplicated_from: MFF212/gt
9
+ ---
10
+
11
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
main.py ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, UploadFile, File
2
+ from fastapi.responses import HTMLResponse
3
+ from fastapi.responses import HTMLResponse, FileResponse
4
+ import pandas as pd
5
+ import io
6
+ import requests
7
+ import time
8
+
9
+ app = FastAPI()
10
+
11
+ @app.get("/", response_class=HTMLResponse)
12
+ async def analyze_logs():
13
+ return """
14
+ <html>
15
+ <body>
16
+ <form action="/upload/" enctype="multipart/form-data" method="post">
17
+ <input name="file" type="file">
18
+ <input type="submit">
19
+ </form>
20
+ </body>
21
+ </html>
22
+ """
23
+
24
+ @app.post("/upload/")
25
+ async def upload_file(file: UploadFile = File(...)):
26
+ contents = await file.read()
27
+ logs_df = pd.read_parquet(io.BytesIO(contents))
28
+
29
+ processing_message = "\n\n Processing files...\n\n"
30
+ time.sleep(3) # Simulate processing time (3 seconds)
31
+
32
+ logs_df['datetime'] = pd.to_datetime(logs_df['datetime'], format='%d/%m/%Y:%H:%M:%S')
33
+ logs_df['day'] = logs_df['datetime'].apply(lambda x: x.day)
34
+ logs_df['hour'] = logs_df['datetime'].apply(lambda x: x.hour)
35
+ logs_df['minute'] = logs_df['datetime'].apply(lambda x: x.minute)
36
+
37
+ ip_address_count_df = (
38
+ logs_df.groupby(['method', 'client'], as_index=False)
39
+ .size()
40
+ .rename(columns={'size': 'count'})
41
+ .sort_values('count', ascending=False)
42
+ )
43
+
44
+ ip_address_count_df = ip_address_count_df.assign(
45
+ perc=ip_address_count_df['count'].div(ip_address_count_df['count'].sum()),
46
+ cum_perc=lambda df: df['perc'].cumsum(),
47
+ )
48
+
49
+ result = (
50
+ "<h1>Redundant IP Requests....</h1>"
51
+ "<p>The Total API Requests from the sample logs are : {total_requests}</p>"
52
+ "<p>The Redundant API Requests from the sample logs are : {redundant_requests}</p>"
53
+ "<p>The percentage of Redundant API Requests from the sample logs is : {redundant_percentage:.2f}%</p>"
54
+ "{dataframe_html}"
55
+ ).format(
56
+ total_requests=logs_df.shape[0],
57
+ redundant_requests=ip_address_count_df.shape[0],
58
+ redundant_percentage=(ip_address_count_df.shape[0] / logs_df.shape[0]) * 100,
59
+ dataframe_html=ip_address_count_df.head(1000)
60
+ .style.background_gradient(subset=['count', 'perc', 'cum_perc'], cmap='cividis')
61
+ .format({'count': '{:,}', 'perc': '{:.1%}', 'cum_perc': '{:.1%}'})
62
+ .to_html(), # Corrected here
63
+ )
64
+ # Save the HTML content locally
65
+ file_location = "result.html"
66
+ with open(file_location, "w") as html_file:
67
+ html_file.write(result)
68
+
69
+ # Print the location of the saved file
70
+ print(f"HTML result saved to: {file_location}")
71
+
72
+ return HTMLResponse(content=result)
73
+
74
+ @app.get("/view-result/", response_class=HTMLResponse)
75
+ async def view_result():
76
+ try:
77
+ with open("result.html", "r") as html_file:
78
+ content = html_file.read()
79
+ return HTMLResponse(content=content)
80
+ except FileNotFoundError:
81
+ return HTMLResponse(content="Result HTML not found")
82
+
83
+
84
+
85
+
86
+
87
+
requirements.txt ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ fastapi==0.74.*
2
+ requests==2.27.*
3
+ uvicorn[standard]==0.17.*
4
+ sentencepiece==0.1.*
5
+ torch==1.11.*
6
+ transformers[vision]==4.*
7
+ Jinja2
8
+ python-multipart==0.0.6
9
+ pandas
10
+ pyarrow
11
+ fastparquet
12
+ matplotlib
use_api_in_python.png ADDED