diff --git a/backend/metagenedb/apps/catalog/urls.py b/backend/metagenedb/apps/catalog/urls.py
index 7f65d9dc93bba92c0341ace3215ab7767d7ec51e..7a71ee349f2e7544c8644e1ea77f583adc2ec641 100644
--- a/backend/metagenedb/apps/catalog/urls.py
+++ b/backend/metagenedb/apps/catalog/urls.py
@@ -2,6 +2,7 @@ from django.urls import re_path
 
 from . import views
 
+
 urlpatterns = [
     re_path(r'^api/genes/$', views.gene_list, name='genes'),
     re_path(r'^api/genes/(?P<gene_id>.*)$', views.gene_detail),
diff --git a/backend/metagenedb/apps/catalog/views/statistics.py b/backend/metagenedb/apps/catalog/views/statistics.py
index 36ca58aa858161517b8443a1d32fb82ab4e03278..0152f316ce633b2920bcd55bb6e2e9de4eb7b6f2 100644
--- a/backend/metagenedb/apps/catalog/views/statistics.py
+++ b/backend/metagenedb/apps/catalog/views/statistics.py
@@ -36,8 +36,10 @@ def _count_windows(df, window_col, window_size=10000):
 
 
 @api_view(['GET'])
-def gene_length(request):
+def gene_length(request, window_size=10000):
+    if 'window_size' in request.query_params:
+        window_size = int(request.query_params.get('window_size'))
     df = pd.DataFrame(list(Gene.objects.all().values(GENE_LENGTH_COL)))
     return Response({
-        'data': _count_windows(df, GENE_LENGTH_COL)
+        'data': _count_windows(df, GENE_LENGTH_COL, window_size)
     })
diff --git a/backend/requirements_dev.txt b/backend/requirements_dev.txt
index 1beca5f7cdf8073cc30198081d00cf741efdbf09..fb65183a2ee28baa29ad8c5db388e2c1c0927cfc 100644
--- a/backend/requirements_dev.txt
+++ b/backend/requirements_dev.txt
@@ -15,7 +15,9 @@ importlib-metadata==0.18
 kiwisolver==1.1.0
 mccabe==0.6.1
 more-itertools==7.0.0
+numpy==1.16.4
 packaging==19.0
+pandas==0.24.2
 pluggy==0.12.0
 psycopg2==2.8.2
 py==1.8.0