<jupyter_start><jupyter_text>Расчет распределения давления в нагнетательной скважине. Описание алгоритма 29.03.2017 г. (<NAME>., <NAME>.)Динамическое забойное давление в нагнетательной скважине может быть получено при помощи уравнения Дарси-Вейсбаха$$P_{wf} = P_{wh} + \xi \left [ \rho g L \cos \alpha  - \frac{8}{\pi^2} \frac{ f \rho }{ d^5} q ^ 2 L \right ] $$$P$ - давление $P_{wf}$ - забойное давление$P_{wh}$ - устьевое давление$\rho$ - плотность воды, кг/м3$g$ - ускорение свободного падения, кг/м/с2$\alpha$ - угол отклонения скважины от вертикали, рад$L$ - измеренная длина скважины, м $d$ - диаметр скважины, м$q$ - дебит закачиваемой жидкости, м3/сек$\mu$ - вязкость динамическая, мПа с$T$ - температура, К$\xi$ - размерный коэффициент зависящий от выбора системы единиц. При использовании единиц давления в $МПа$ $\xi = \frac{1}{10^6}$, при использовании единиц давления в $бар$ $\xi = \frac{1}{10^5}$.Градиент давления для произвольного участка скважины можно записать в виде $$ \frac{dP}{dL} = \xi \left [ \rho g  \cos \alpha  - 0.815 \frac{f \rho}{d^5} q ^ 2 \right ] $$Что  Таблица параметров и единиц измерения|Параметр | СИ   | Практические метрические  | Промыслоавые американские    ||------   |:------:|:------: |:------:||Давление |$Па$    | $Атм$ | $psi$  ||Температура |${^\circ\mbox{K}}$    | ${^\circ\mbox{C}}$  | ${^\circ\mbox{F}}$  ||Плотность |$кг / м^3$    | $кг / м^3$ | $кг / м^3$  ||Ускорение свободного падения |$м / с^2$    | $м / с^2$ | $м / с^2$  ||Длина |$м$    | $м$ | $ft $ ||Дебит |$м^3 / с$   | $м^3 / сут$ | $bbl / day$  ||Вязкость |$Па \cdot с$    | $сП$ | $сП$ |  Корреляция для плотности водыПлотность воды существенно зависит от количества растворенных в воде солей. При известной солености воды $w_s$ плотность воды в стандартных условиях может быть определена по корреляции $$\rho_w (P_{sc}, T_{sc} ) = (1,0009 - 0.7114 W_s + 0.2605 * W_s ^2) ^ {-1} $$А изменение плотность воды с изменение температуры может быть рассчитано по выражению$$\rho_w (P, T ) = \frac{\rho_w (P_{sc}, T_{sc} )} {1+ \frac{ T-273}{10000}(0.269 (T-273)^{0.637}-0.8)} $$Влиянием давления на плотность воды (сжимаемостью) можно пренебречь. Сжимаемость воды составляет около $4.5 \cdot 10^{-5} \frac{1}{bar} $. При изменении давления в 100 раз (с 1 до 100) плотность воды изменится примерно на 0.05%.[Соленость](https://en.wikipedia.org/wiki/Salinity) (массовая доля солей) определяется как  $$W_s = \frac{m_s}{m_s+m_w}$$$m_s$ - масса солей, г$m_w$ - масса воды, гЧасто определяется от отношение солей в граммка к массе воды в килограммах (или грамм на литр). Иногда встречаются значения солености в частицах на миллион (ppm) или в процентах.$$1 \% = 0.01 \left [ \frac{г}{г}   \right ] = 10  \left [ \frac{г}{кг} \right ] = 10  \left [ \frac{г}{л} \right ] = 10000  \left [ ppm \right ]$$ Типичные значения солености составляют | Вода | Соленость, г/г   ||------|------||   чистая   | 0.00001-0.001||   морская вода   | 0.035||   вода мертвого моря   | >0.2|Часто на промысле значение солености не известно (не содержится в базе данных), удобнее бывает ориентироваться на плотность нефти в стандартных условиях.При известной плотности нефти в стандартных условиях значение солености можно оценить из выражения (обратного выражению для плотности)$$ W_s = \frac{1}{\rho_w}  \left( 1.36545 \rho_w - (3838.77 \rho_w - 2.009 \rho_w ^2 )^{0.5} \right) $$Для $\rho_w > 992 \frac{кг}{м^3}$  Корреляция для расчета вязкости водыВязкость воды может быть рассчитана по корреляции Matthews and Russel $$ \mu_w= A  (1.8  T - 460) ^ {-B}  (0.9994 + 0.0058  P + 0.6534 \cdot  10 ^ {- 4} \cdot P^2 ) $$где $$A = 109.574 - 0.8406 \cdot 1000  W_s + 3.1331 \cdot 1000  W_s ^2 + 8.7221 \cdot 1000  W_s ^3$$$$B = 1.1217 - 2.6396  W_s + 6.7946  W_s ^2 + 54.7119  W_s ^ 3 - 155.586  W_s ^4$$  Число РейнольдсаЧисло Рейнольдса определяется выражением $$ Re = \frac{\rho V d}{\mu}$$Для нагнетательной скважины диаметром 89 мм зависимость числа Рейнольдса от дебита приведена на рисунке в расчетной части. Видно, что уже при дебитах более 3 м3/сут $Re > 3000$ и поток будет турбулентным  Коэффициент трения Коэффициент трения Муди $f$ расчитывается для ламинарного потока по формуле $$ f= \frac{64}{Re}, Re < 3000 $$При закачке воды поток не бывает ламинарным (для НКТ с внутренним диаметром 89 мм дебит воды при котором нарушается ламинарность потока составляет около 3 м3/сут)Для турбулентного режима течения $ Re > 3000 $ коэффициент трения Муди может быть рассчитан по Джейн (3. <NAME>.; <NAME>. (1976). "Explicit equations for pipe-flow problems". Journal of the Hydraulics Division. 102 (5): 657–664)$$ f = \frac{1} {\left [  1.14 - 2  \log \left ( \frac{ \epsilon} {d } + \frac{ 21.25}  { Re ^ {0.9} } \right ) \right ]  ^ 2} $$или расчет может быть произведен для любых значений числа Рейнольдса $Re$ с использованием корреляции Черчилля (1974)$$ f =  8  \left[ \left( \frac{8}{Re} \right ) ^{12} + \frac{1}{(A+B)^{1.5}} \right ] ^ {\frac{1}{12}} $$где$$ A = \left [- 2.457 \ln \left ( { \left(\frac{7}{Re} \right) ^{0.9} + 0.27 \frac{\epsilon} {d} } \right) \right ] ^{16} $$ $$ B = \left( \frac{37530}{Re} \right) ^{16}  $$$\epsilon$ - шероховатость, м. Для НКТ часто берут $\epsilon = 0.000018 м$. Вообще, диапазон изменения значений шероховатости $\epsilon = [0.000015 - 0.000045] м$  Расчетная часть<jupyter_code># Загрузка библиотек необходимых для отрисовки графиков
import matplotlib
import math
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d
from scipy.integrate import odeint
%matplotlib inline  
# функция расчета плотности воды в зависимости от давления и температуры
def rho_w_kgm3(P_Mpa,T_K, ws = 0):
    rho_w_sc_kgm3 = 1000*(1.0009 - 0.7114 * ws + 0.2605 * ws**2)**(-1)
    return rho_w_sc_kgm3 /(1+(T_K-273)/10000*(0.269*(T_K-273)**(0.637)-0.8))

# функция расчета солености через плотсноть
def salinity_gg(rho_kgm3):
    sal = 1/rho_kgm3*(1.36545*rho_kgm3-(3838.77*rho_kgm3-2.009*rho_kgm3**2)**0.5)
    # если значение отрицательное, значит скорее всего плотность ниже допустимой 992 кг/м3
    if sal>0 :
        return sal
    else:
        return 0
    
# Расчет вязкости воды в зависимости от температуры и давления
def visc_w_cP(P_Mpa,T_K, ws = 0):
    A = 109.574 - 0.8406 * 1000 * ws + 3.1331 * 1000 * ws * ws + 8.7221 * 1000 * ws * ws * ws
    B = 1.1217 - 2.6396 * ws + 6.7946 * ws * ws + 54.7119 * ws * ws * ws - 155.586 * ws * ws * ws * ws
    muw = A * (1.8 * T_K - 460) ** (-B) * (0.9994 + 0.0058 * P_Mpa + 0.6534 * (10) ** (0 - 4) * P_Mpa * P_Mpa)
    return muw

# Расчет числа Рейнольдса 
def Re(q_m3day, d_m, mu_mPas = 0.2, rho_kgm3 = 1000):
    # q_m3day - дебит жидкости, м3/сут
    # rho_kgm3 - плотность воды или жидкости, по умолчанию 1000 кг/м3, чистая вода
    # mu_mPas  - вязкость жидкости по умолчанию 0.2 мПас
    # d_m      - диаметр трубы, м
    v_ms = q_m3day/ 86400 / 3.1415 * 4 / d_m ** 2
    return rho_kgm3 * v_ms * d_m / mu_mPas * 1000

def friction_Jain(q_m3day,d_m = 0.089, mu_mPas = 0.2,rho_kgm3 = 1000,roughness=0.000018):
    Re_val = Re(q_m3day,d_m,mu_mPas,rho_kgm3)
    if Re_val < 3000:
        return 64/Re_val
    else:
        return 1/(1.14-2 * np.log10(roughness/d_m + 21.25 / (Re_val ** 0.9)))**2
    
def friction_Churchill(q_m3day,d_m = 0.089, mu_mPas = 0.2,rho_kgm3 = 1000,roughness=0.000018):
    Re_val = Re(q_m3day,d_m,mu_mPas,rho_kgm3)
    A = (-2.457 * np.log((7/Re_val)**(0.9)+0.27*(roughness/d_m)))**16
    B = (37530/Re_val)**16
    return 8 * ((8/Re_val)**12+1/(A+B)**1.5)**(1/12)

# функция расчета градиента давления в нагнетательной скважин
def pressure_gradient_MPam(q_m3day, P_Mpa, T_C, d_m = 0.089,Ws = 0, cos_alpha =1, roughness_m = 0.000018):
    # q_m3day - дебит жидкости, м3/сут
    # P_Mpa - давление, МПа
    # T_C - температура, С
    # d_m - диаметр 
    # Ws - соленость 
    # cos_alpha - косинус угол отклонения от вертикали 
    # roughness_m - шероховатость
    rho_kgm3 = rho_w_kgm3(P_Mpa, T_C + 273, Ws)
    mu_cP = visc_w_cP(P_Mpa, T_C + 273, Ws)
    f = friction_Churchill(q_m3day,d_m,mu_cP,rho_kgm3 ,roughness_m)
    g = 9.81
    q_m3sec = q_m3day /86400
    return (rho_kgm3 * g * cos_alpha - 0.815 * f * rho_kgm3 /( d_m ** 5) * (q_m3sec )**2) / 1000000<jupyter_output><empty_output><jupyter_text>Графики функций<jupyter_code># построения графика функции зависимости плотности воды от температуры
x = np.linspace(0, 400, 50)                          # задание массива значений для построения графика
plt.plot(x, [rho_w_kgm3(1,t+273,0.001) for t in x])
plt.title('Зависимость плотности от температуры')
plt.show()
r=45456489735434343535436*2153453432543434343^4564354374648634*456465464656^4567894563574354
r
x = np.linspace(992, 1300, 50)                          # задание массива значений для построения графика
plt.plot(x, [salinity_gg(t) for t in x])
plt.title('Зависимость солености от плотности воды')
plt.show()
x = np.linspace(0, 100, 50)
plt.plot(x, [visc_w_cP(10,t+273,0.0001) for t in x], label = "соленость 0.0001")
plt.plot(x, [visc_w_cP(10,t+273,0.001) for t in x], label = "соленость 0.001")
plt.plot(x, [visc_w_cP(10,t+273,0.01) for t in x], label = "соленость 0.01")
plt.plot(x, [visc_w_cP(10,t+273,0.1) for t in x], label = "соленость 0.1")
plt.title('Зависимость вязкости от температуры')
plt.xlabel("Дебит жидкости, м3/сут")
plt.ylabel("Динамическая вязкость, СП")
plt.legend()
plt.show()
x = np.linspace(0, 5, 50)
plt.plot(x, [Re(t,0.089) for t in x])
plt.title('Зависимость числа Рейнольдса от дебита нагнетательной скважины')
plt.show()
x = np.linspace(1, 50, 30)
plt.plot(x, [friction_Jain(t) for t in x], label ="Расчет по Джейн")
plt.plot(x, [friction_Churchill(t) for t in x], label ="Расчет по Черчилю")
plt.title('Зависимость коэффициента трения от дебита нагнетательной скважины')
plt.xlabel("Дебит жидкости, м3/сут")
plt.ylabel("коэффициент трения")
plt.legend()
plt.show()<jupyter_output><empty_output><jupyter_text>На графике зависимости коэффициента трения Муди показаны расчеты выполненные с использованием корреляций Джейна и Черчиля. Видно что корреляции хорошо совпадают друг с другом. Корреляция Черчиля описывает и ламинарный и турбулентный режимы работы<jupyter_code>x = np.linspace(1, 5000, 30)
plt.plot(x, [pressure_gradient_MPam(t,20,20) for t in x])
plt.title('Зависимость градиента давления от дебита')
plt.show()<jupyter_output><empty_output><jupyter_text>Расчет распределения давления Для расчета необходимо задать исходные данные и перезапустить расчет<jupyter_code># Исходные данные для проведения расчета
Q = 800            # дебит скважин м3/сут
Pwh = 20         # давление на устье, бар
Twh = 20          # температура на устье скважины, С
TempGrad = 0.03      # температурный градиент град С на 100 м
H = 2000          # измеренная глубина забоя скважины
dtub_m = 0.089      # диаметр НКТ по которой ведется закачка
Ws = 0            # соленость скважины

# траектория скважины, задается как массив измеренных глубин и значений отклонения от вертикали
Hmes_m = np.array([0,50,100,200,800,1300,1800,2200,2500])
Hvert_m = np.array([0,50,100,200,780,1160,1450,1500,1500])

# Подготовка данных по конструкции скважины
# удлинение от измеренной длины - для отрисовки графика
Uld_m = interp1d(Hmes_m,Hmes_m-Hvert_m, kind='cubic', fill_value = "extrapolate")
# вертикальная глубина от измеренной
Hv_m = interp1d(Hmes_m,Hvert_m, kind='cubic', fill_value = "extrapolate")

# построим массив углов отклонения от вертикали
Ang =np.arccos( np.diff(Hvert_m)/np.diff(Hmes_m))
# угол от измеренной глубины
Ang_rad = interp1d(Hmes_m[:-1],Ang , fill_value = "extrapolate")
CosAng1_rad = lambda h: ((Hv_m(h+1)-Hv_m(h)) ) #if h > 1 else  np.arccos((Hv_m(h+1)-Hv_m(h)) )

# готовим данные для отрисовки графика
h_ = np.linspace(0, H, num=100, endpoint=True)
plt.plot(Uld_m(h_), Hv_m(h_), '-')
plt.xlabel("Отклонение от вертикали, м")
plt.ylabel("Глубина скважины , м")
plt.title("Схема траектории скважины")
ax = plt.gca()
ax.invert_yaxis()
plt.show()
plt.plot(CosAng1_rad(h_), (h_), '-')
plt.xlabel("Косинус угла отклонения")
plt.ylabel("Глубина скважины , м")
plt.title("Косинус угла отклонения")
ax = plt.gca()
ax.invert_yaxis()
plt.show()<jupyter_output><empty_output><jupyter_text>Решение уравнения на распределение давления и температуры в стволе скважины. Решается система двух уравнений вида$$ \frac{dP}{dL} = \frac{1}{10^{-5}} \left [  \rho g  \cos \alpha  - 0.815 \frac{f \rho}{d^5} q ^ 2  \right ]  $$$$ \frac{dT}{dL} = geograd $$Граничные условия задаются на устье скважины<jupyter_code># определим функцию для интергрирования
def dPTdL(PT, h):
    dPdL = pressure_gradient_MPam(Q, PT[0], PT[1], dtub_m ,Ws, CosAng1_rad(h))
    dTdL = TempGrad * CosAng1_rad(h)
    return [dPdL, dTdL]

# задаем граничные условия
PTwh = [Pwh,Twh]
# определяем диапазон и интервалы интегрирования
hs = np.linspace(0, H, 200) # MD
# решаем систему уравнений численно
PTs = odeint(dPTdL, PTwh, hs)
# созраняем результаты расчета
P = PTs[:,0]
T = PTs[:,1]<jupyter_output><empty_output><jupyter_text>Построение графика распределения давления<jupyter_code>plt.plot(P,hs, label ="давление")
plt.plot(T,hs, label = "температура")
plt.xlabel("P, Т")
plt.ylabel("MD, м")
ax = plt.gca()
ax.invert_yaxis()
plt.legend()
plt.title("Распределение давления");
plt.plot(P,Hv_m(hs), label ="давление")
plt.plot(T,Hv_m(hs), label = "температура")
plt.xlabel("P, Т")
plt.ylabel("TVD, м")
ax = plt.gca()
ax.invert_yaxis()
plt.legend()
plt.title("Распределение давления");<jupyter_output><empty_output><jupyter_text>My code  Рассчитайте распределение давления в скважине.<jupyter_code>answer_example = {"ex1": {"h": [0.0, 0.27185765649116866, 2.9904342214028556, 30.176199870519724, 302.0338563616884, 1800.0], "p_wf": [200.0, 199.97280360315975, 199.70085031175566, 196.9823838719932, 169.90419123422646, 24.553165637573954]}, "ex2": {"q_liq": [10.0, 564.4444444444445, 1118.888888888889, 1673.3333333333335, 2227.777777777778, 2782.222222222222, 3336.666666666667, 3891.1111111111113, 4445.555555555556, 5000.0], "p_wf": [327.8467942342095, 309.36808273954455, 256.43262703754124, 168.82806049749118, 46.24541766858354, 2.0298131079387023e-12, 8.027075061519923e-13, 1.0203169358211458e-12, 1.3320928760720276e-12, 1.1693311021537433e-12]}, "ex3": {"t": [10.0, 14.444444444444445, 18.88888888888889, 23.333333333333336, 27.77777777777778, 32.22222222222222, 36.66666666666667, 41.111111111111114, 45.55555555555556, 50.0], "p_wf": [21.46267131607138, 21.818931759074815, 22.179048491307555, 22.544442440112107, 22.91604826463714, 23.294514189033436, 23.680269030595127, 24.073611336116386, 24.47473397104241, 24.88375498386131]}}
init_data = {"gamma_w": 1.09, "h":769, "d_in":148, "q_liq":888, "eps":8.0E-5, "p_wh": 22.9, "MD": [0, 384.5, 769], "TVD": [0, 310.5, 325], "T0": 26.2}
# Исходные данные для проведения расчета
Q =  888           # дебит скважин м3/сут
Pwh =  22.9        # давление на устье, бар                 - -                 ЫЫЫЫыыыыыЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫЫыыыыЫЫЫЫЫЫЫЫЫЫЫы
Twh =    26.2       # температура на устье скважины, С

H =   769        # измеренная глубина забоя скважины MD
dtub_m =    0.148   # диаметр НКТ по которой ведется закачка
Ws =   0          # соленость скважины. No idea why 0 here
Wd = 1.09 # water density
# траектория скважины, задается как массив измеренных глубин и значений отклонения от вертикали
Hmes_m = np.array([0, 384.50, 769]) # MD
Hvert_m = np.array([0, 310.50, 325.00]) # TVD

TempGrad =  50 /  Hvert_m.max()/100    # температурный градиент град С на 100 м
init_data == {"gamma_w": 1.09, "h":769, "d_in":148, "q_liq":888, "eps":8.0E-5, "p_wh": 10, "MD": [0, 384.50, 769], "TVD": [0, 310.50, 325.00], "T0": 26.2}
Hvert_m.max()/100<jupyter_output><empty_output><jupyter_text>json и ответ на вопрос об исходниках не совпадают(писал на форуме)<jupyter_code>def CosAng1_rad(h):
    return ((Hv_m(h+1)-Hv_m(h)) ) 

# Подготовка данных по конструкции скважины
# удлинение от измеренной длины - для отрисовки графика
Uld_m = interp1d(Hmes_m,Hmes_m-Hvert_m, kind='linear', fill_value = "extrapolate")
# вертикальная глубина от измеренной
Hv_m = interp1d(Hmes_m,Hvert_m, kind='linear', fill_value = "extrapolate")

# построим массив углов отклонения от вертикали
Ang =np.arccos( np.diff(Hvert_m)/np.diff(Hmes_m))
# угол от измеренной глубины
Ang_rad = interp1d(Hmes_m[:-1],Ang, fill_value = "extrapolate")
#CosAng1_rad = lambda h: ((Hv_m(h+1)-Hv_m(h)) ) if h < Hmes_m.max() else  0 #np.arccos((Hv_m(h+1)-Hv_m(h)) )

# готовим данные для отрисовки графика
h_ = np.linspace(0, H, num=100, endpoint=True)
plt.plot(Uld_m(h_), Hv_m(h_), '-')
plt.plot()
plt.xlabel("Отклонение от вертикали, м")
plt.ylabel("Глубина скважины , м")
plt.title("Схема траектории скважины")
ax = plt.gca()
ax.invert_yaxis()
plt.show()
plt.plot(CosAng1_rad(h_), h_, '-') # Сделано через костыль для последней точки
plt.xlabel("Косинус угла отклонения")
plt.ylabel("Глубина скважины , м")
plt.title("Косинус угла отклонения")
ax = plt.gca()
ax.invert_yaxis()
plt.show()
# определим функцию для интергрирования
def dPTdL(PT, h):
    dPdL = pressure_gradient_MPam(Q, PT[0], PT[1], dtub_m ,Ws, CosAng1_rad(h))
    dTdL = TempGrad * CosAng1_rad(h)
    return [dPdL, dTdL]

# задаем граничные условия
PTwh = [Pwh,Twh]
# определяем диапазон и интервалы интегрирования
hs = np.linspace(0, H, 200) # MD
# решаем систему уравнений численно
P, T = odeint(dPTdL, PTwh, hs)[:,0], odeint(dPTdL, PTwh, hs)[:,1]
#P, T = dPTdL(PTwh, hs)[0], dPTdL(PTwh, hs)[1]
plt.plot(P,hs, label ="давление")
plt.plot(T,hs, label = "температура")
plt.xlabel("P, Т")
plt.ylabel("MD, м")
ax = plt.gca()
ax.invert_yaxis()
plt.legend()
plt.title("Распределение давления");
plt.plot(P,Hv_m(hs), label ="давление")
plt.plot(T,Hv_m(hs), label = "температура")
plt.xlabel("P, Т")
plt.ylabel("TVD, м")
ax = plt.gca()
ax.invert_yaxis()
plt.legend()
plt.title("Распределение давления");<jupyter_output><empty_output><jupyter_text>Постройте кривую зависимости забойного давления от дебита в диапазоне дебитов от 10 до 500 м3/сут<jupyter_code>#def PzabOfQ(q, PT):
#    return pressure_gradient_MPam(q, Pwh, Twh, dtub_m ,Ws, CosAng1_rad(hs.max()))
QRange = np.linspace(10, 500, 100 , endpoint=True)
PzabOfQ = []
for i in QRange:
    global Q
    Q = i
    PzabOfQ.append( odeint(dPTdL, [22.9, 50], hs)[:,0][-1] )
Q = 888

plt.plot( PzabOfQ, QRange, label ="давление")
plt.xlabel("P")
plt.ylabel("Q")
ax = plt.gca()
plt.legend()
plt.title("Зависимость забойного давления от дебита");<jupyter_output><empty_output><jupyter_text>Постройте кривую зависимости забойоного давления от температуры в диапазоне T0 от 10 до 50 градусов Цельсия.<jupyter_code>TRange = np.linspace(10, 50, 100 , endpoint=True)
PzabOfT = []
for i in TRange:
    PzabOfT.append( odeint(dPTdL,[22.9, i], hs)[:,0][-1] )
Twh = 20

plt.plot( PzabOfT, TRange, label ="давление")
plt.xlabel("P")
plt.ylabel("T")
ax = plt.gca()
plt.legend()
plt.title("Зависимость забойного давления от температуры");

answer_example
list(PzabOfQ)
answer = {'ex1': {'h': list(Hmes_m),
  'p_wf': list(odeint(dPTdL, PTwh, [  0. , 384.5, 769. ])[:,0])},
 'ex2': {'q_liq': list(QRange),
  'p_wf': list(PzabOfQ)},
 'ex3': {'t': list(TRange),
  'p_wf': list(PzabOfT)}}
answer<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.15036770458457205, 'fraction_numerical': 0.10332238043081417, 'mean_word_length': 4.337973273942094, 'pattern_counts': {'":': 27, '<': 48, '<?xml version=': 0, '>': 51, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 18, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '10', 'dir': 'jupyter-structured-clean-dedup', 'id': '120854', 'license': 'MIT', 'n_tokens_mistral': 10180, 'n_tokens_neox': 9674, 'n_words': 1950, 'path': 'task 1/Task 1 Pechko/Raschet_raspredelenia_davlenia_v_nagnetatelnoy_skvazhine_PECHKO.ipynb', 'repo_name': 'kost1kru/course_sppu_2021', 'size': '19193'}