<jupyter_start><jupyter_text>This sage worksheet accompanies my paper  (joint with <NAME> and Kęstutis Česnavičius)  ['The Manin constant and the modular degree'](https://arxiv.org/abs/1911.09446)   Denominators of Fourier expansionsWe calculate, for various levels $N$ and weights $k$, the denominators of Fourier expansions of all newforms at some cusps of $X_0(N)$. Examples from this worksheet were used to generate the tables 4.8.1 and 4.8.2 from the paper.  Requirements: SageMath and the function get_expansions from the python package [products-of-eisenstein-series](https://github.com/michaelneururer/products-of-eisenstein-series) (joint work with <NAME>son) to calculate the Fourier expansions.<jupyter_code>p=2; N=5*p^2;
print 'LEVEL', N
New = Newforms(N,2,names='a');
print 'Number newforms', len(New)
print 'Number of rational newforms', len([n for n in New if n.base_ring()==QQ])
j=0
for n in New: #Loop over all newforms of given level N and weight k
    if not n.base_ring() == QQ: #Skip newforms which don't have rational Fourier coefficients
        continue
    print 'Newform number', j
    print latex(n.qexp(10))
    s2 = get_expansion(n, mat = Matrix(2,2,[1,0,2,1]), prec=10,verbose=False); #Calculate Fourier expansion of the newform
    s4 = get_expansion(n, mat = Matrix(2,2,[1,0,4,1]), prec=10,verbose=False);
    s8 = get_expansion(n, mat = Matrix(2,2,[1,0,8,1]), prec=10,verbose=False);
    s16 = get_expansion(n, mat = Matrix(2,2,[1,0,16,1]), prec=10,verbose=False);
    print 'Cusp 1/2', latex(s2)
    print 'Cusp 1/4', latex(s4)
    print 'Cusp 1/8', latex(s8)
    print 'Cusp 1/16', latex(s16)
    K2 = s2.series.base_ring() #Number field
    P2 = K2.prime_above(p)
    print('Denominators Cusp 1/2')
    print [valuation(s2[i],P2)/P2.ramification_index() for i in range(10)]
    K4 = s4.series.base_ring() #Number field
    P4 = K4.prime_above(p)
    print('Denominators Cusp 1/4')
    print [valuation(s4[i],P4)/P4.ramification_index() for i in range(10)]
    K8 = s8.series.base_ring() #Number field
    P8 = K8.prime_above(p)
    print('Denominators Cusp 1/8')
    print [valuation(s8[i],P8)/P8.ramification_index() for i in range(10)]
    K16 = s16.series.base_ring() #Number field
    P16 = K16.prime_above(p)
    print('Denominators Cusp 1/16')
    print [valuation(s16[i],P16)/P16.ramification_index() for i in range(10)]
    j+=1
p=2; N=3*p^3;
print 'LEVEL', N
New = Newforms(N,2,names='a');
print 'Number newforms', len(New)
print 'Number of rational newforms', len([n for n in New if n.base_ring()==QQ])
j=0
for n in New: #Loop over all newforms of given level N and weight k
    if not n.base_ring() == QQ: #Skip newforms which don't have rational Fourier coefficients
        continue
    print 'Newform number', j
    print latex(n.qexp(10))
    s2 = get_expansion(n, mat = Matrix(2,2,[1,0,2,1]), prec=10,verbose=False); #Calculate Fourier expansion of the newform
    s4 = get_expansion(n, mat = Matrix(2,2,[1,0,4,1]), prec=10,verbose=False);
    s8 = get_expansion(n, mat = Matrix(2,2,[1,0,8,1]), prec=10,verbose=False);
    s16 = get_expansion(n, mat = Matrix(2,2,[1,0,16,1]), prec=10,verbose=False);
    print 'Cusp 1/2', latex(s2)
    print 'Cusp 1/4', latex(s4)
    print 'Cusp 1/8', latex(s8)
    print 'Cusp 1/16', latex(s16)
    K2 = s2.series.base_ring() #Number field
    P2 = K2.prime_above(p)
    print('Denominators Cusp 1/2')
    print [valuation(s2[i],P2)/P2.ramification_index() for i in range(10)]
    K4 = s4.series.base_ring() #Number field
    P4 = K4.prime_above(p)
    print('Denominators Cusp 1/4')
    print [valuation(s4[i],P4)/P4.ramification_index() for i in range(10)]
    K8 = s8.series.base_ring() #Number field
    P8 = K8.prime_above(p)
    print('Denominators Cusp 1/8')
    print [valuation(s8[i],P8)/P8.ramification_index() for i in range(10)]
    K16 = s16.series.base_ring() #Number field
    P16 = K16.prime_above(p)
    print('Denominators Cusp 1/16')
    print [valuation(s16[i],P16)/P16.ramification_index() for i in range(10)]
    j+=1
p=2; N=3*p^4;
print 'LEVEL', N
New = Newforms(N,2,names='a');
print 'Number newforms', len(New)
print 'Number of rational newforms', len([n for n in New if n.base_ring()==QQ])
j=0
for n in New: #Loop over all newforms of given level N and weight k
    if not n.base_ring() == QQ: #Skip newforms which don't have rational Fourier coefficients
        continue
    print 'Newform number', j
    print latex(n.qexp(10))
    s2 = get_expansion(n, mat = Matrix(2,2,[1,0,2,1]), prec=10,verbose=False); #Calculate Fourier expansion of the newform
    s4 = get_expansion(n, mat = Matrix(2,2,[1,0,4,1]), prec=10,verbose=False);
    s8 = get_expansion(n, mat = Matrix(2,2,[1,0,8,1]), prec=10,verbose=False);
    s16 = get_expansion(n, mat = Matrix(2,2,[1,0,16,1]), prec=10,verbose=False);
    print 'Cusp 1/2', latex(s2)
    print 'Cusp 1/4', latex(s4)
    print 'Cusp 1/8', latex(s8)
    print 'Cusp 1/16', latex(s16)
    K2 = s2.series.base_ring() #Number field
    P2 = K2.prime_above(p)
    print('Denominators Cusp 1/2')
    print [valuation(s2[i],P2)/P2.ramification_index() for i in range(10)]
    K4 = s4.series.base_ring() #Number field
    P4 = K4.prime_above(p)
    print('Denominators Cusp 1/4')
    print [valuation(s4[i],P4)/P4.ramification_index() for i in range(10)]
    K8 = s8.series.base_ring() #Number field
    P8 = K8.prime_above(p)
    print('Denominators Cusp 1/8')
    print [valuation(s8[i],P8)/P8.ramification_index() for i in range(10)]
    K16 = s16.series.base_ring() #Number field
    P16 = K16.prime_above(p)
    print('Denominators Cusp 1/16')
    print [valuation(s16[i],P16)/P16.ramification_index() for i in range(10)]
    j+=1
p=2; N=p^5;
print 'LEVEL', N
New = Newforms(N,2,names='a');
print 'Number newforms', len(New)
print 'Number of rational newforms', len([n for n in New if n.base_ring()==QQ])
j=0
for n in New: #Loop over all newforms of given level N and weight k
    if not n.base_ring() == QQ: #Skip newforms which don't have rational Fourier coefficients
        continue
    print 'Newform number', j
    print n.qexp(10)
    s2 = get_expansion(n, mat = Matrix(2,2,[1,0,2,1]), prec=10,verbose=False); #Calculate Fourier expansion of the newform
    s4 = get_expansion(n, mat = Matrix(2,2,[1,0,4,1]), prec=10,verbose=False);
    s8 = get_expansion(n, mat = Matrix(2,2,[1,0,8,1]), prec=10,verbose=False);
    s16 = get_expansion(n, mat = Matrix(2,2,[1,0,16,1]), prec=10,verbose=False);
    print 'Cusp 1/2', latex(s2)
    print 'Cusp 1/4', latex(s4)
    print 'Cusp 1/8', latex(s8)
    print 'Cusp 1/16', latex(s16)
    K2 = s2.series.base_ring() #Number field
    P2 = K2.prime_above(p)
    print('Denominators Cusp 1/2')
    print [valuation(s2[i],P2)/P2.ramification_index() for i in range(10)]
    K4 = s4.series.base_ring() #Number field
    P4 = K4.prime_above(p)
    print('Denominators Cusp 1/4')
    print [valuation(s4[i],P4)/P4.ramification_index() for i in range(10)]
    K8 = s8.series.base_ring() #Number field
    P8 = K8.prime_above(p)
    print('Denominators Cusp 1/8')
    print [valuation(s8[i],P8)/P8.ramification_index() for i in range(10)]
    K16 = s16.series.base_ring() #Number field
    P16 = K16.prime_above(p)
    print('Denominators Cusp 1/16')
    print [valuation(s16[i],P16)/P16.ramification_index() for i in range(10)]
    j+=1
p=2; N=p^6
print 'LEVEL', N
New = Newforms(N,2,names='a');
print 'Number newforms', len(New)
print 'Number of rational newforms', len([n for n in New if n.base_ring()==QQ])
j=0
for n in New: #Loop over all newforms of given level N and weight k
    if not n.base_ring() == QQ: #Skip newforms which don't have rational Fourier coefficients
        continue
    print 'Newform number', j
    print n.qexp(10)
    s2 = get_expansion(n, mat = Matrix(2,2,[1,0,2,1]), prec=10,verbose=False); #Calculate Fourier expansion of the newform
    s4 = get_expansion(n, mat = Matrix(2,2,[1,0,4,1]), prec=10,verbose=False);
    s8 = get_expansion(n, mat = Matrix(2,2,[1,0,8,1]), prec=10,verbose=False);
    s16 = get_expansion(n, mat = Matrix(2,2,[1,0,16,1]), prec=10,verbose=False);
    print 'Cusp 1/2', latex(s2)
    print 'Cusp 1/4', latex(s4)
    print 'Cusp 1/8', latex(s8)
    print 'Cusp 1/16', latex(s16)
    K2 = s2.series.base_ring() #Number field
    P2 = K2.prime_above(p)
    print('Denominators Cusp 1/2')
    print [valuation(s2[i],P2)/P2.ramification_index() for i in range(10)]
    K4 = s4.series.base_ring() #Number field
    P4 = K4.prime_above(p)
    print('Denominators Cusp 1/4')
    print [valuation(s4[i],P4)/P4.ramification_index() for i in range(10)]
    K8 = s8.series.base_ring() #Number field
    P8 = K8.prime_above(p)
    print('Denominators Cusp 1/8')
    print [valuation(s8[i],P8)/P8.ramification_index() for i in range(10)]
    K16 = s16.series.base_ring() #Number field
    P16 = K16.prime_above(p)
    print('Denominators Cusp 1/16')
    print [valuation(s16[i],P16)/P16.ramification_index() for i in range(10)]
    j+=1
p=2; N=p^7
print 'LEVEL', N
New = Newforms(N,2,names='a');
print 'Number newforms', len(New)
print 'Number of rational newforms', len([n for n in New if n.base_ring()==QQ])
j=0
for n in New: #Loop over all newforms of given level N and weight k
    if not n.base_ring() == QQ: #Skip newforms which don't have rational Fourier coefficients
        continue
    print 'Newform number', j
    print n
    if n.atkin_lehner_eigenvalue()==1:
        print 'L-function vanishes at 1, so we provide no expansions here'
        continue
    s2 = get_expansion(n, mat = Matrix(2,2,[1,0,2,1]), prec=10,verbose=False); #Calculate Fourier expansion of the newform
    s4 = get_expansion(n, mat = Matrix(2,2,[1,0,4,1]), prec=10,verbose=False);
    s8 = get_expansion(n, mat = Matrix(2,2,[1,0,8,1]), prec=10,verbose=False);
    s16 = get_expansion(n, mat = Matrix(2,2,[1,0,16,1]), prec=10,verbose=False);
    print 'Cusp 1/2', latex(s2)
    print 'Cusp 1/4', latex(s4)
    print 'Cusp 1/8', latex(s8)
    print 'Cusp 1/16', latex(s16)
    K2 = s2.series.base_ring() #Number field
    P2 = K2.prime_above(p)
    print('Denominators Cusp 1/2')
    print [valuation(s2[i],P2)/P2.ramification_index() for i in range(10)]
    K4 = s4.series.base_ring() #Number field
    P4 = K4.prime_above(p)
    print('Denominators Cusp 1/4')
    print [valuation(s4[i],P4)/P4.ramification_index() for i in range(10)]
    K8 = s8.series.base_ring() #Number field
    P8 = K8.prime_above(p)
    print('Denominators Cusp 1/8')
    print [valuation(s8[i],P8)/P8.ramification_index() for i in range(10)]
    K16 = s16.series.base_ring() #Number field
    P16 = K16.prime_above(p)
    print('Denominators Cusp 1/16')
    print [valuation(s16[i],P16)/P16.ramification_index() for i in range(10)]
    j+=1
n.atkin_lehner_eigenvalue()
p=2; N=p^8
print 'LEVEL', N
New = Newforms(N,2,names='a');
print 'Number newforms', len(New)
print 'Number of rational newforms', len([n for n in New if n.base_ring()==QQ])
j=0
for n in New: #Loop over all newforms of given level N and weight k
    if not n.base_ring() == QQ: #Skip newforms which don't have rational Fourier coefficients
        continue
    print 'Newform number', j
    print n
    if n.atkin_lehner_eigenvalue()==1:
        print 'L-function vanishes at 1, so we provide no expansions here'
        continue
    s2 = get_expansion(n, mat = Matrix(2,2,[1,0,2,1]), prec=10,verbose=False); #Calculate Fourier expansion of the newform
    s4 = get_expansion(n, mat = Matrix(2,2,[1,0,4,1]), prec=10,verbose=False);
    s8 = get_expansion(n, mat = Matrix(2,2,[1,0,8,1]), prec=10,verbose=False);
    s16 = get_expansion(n, mat = Matrix(2,2,[1,0,16,1]), prec=10,verbose=False);
    print 'Cusp 1/2', latex(s2)
    print 'Cusp 1/4', latex(s4)
    print 'Cusp 1/8', latex(s8)
    print 'Cusp 1/16', latex(s16)
    K2 = s2.series.base_ring() #Number field
    P2 = K2.prime_above(p)
    print('Denominators Cusp 1/2')
    print [valuation(s2[i],P2)/P2.ramification_index() for i in range(10)]
    K4 = s4.series.base_ring() #Number field
    P4 = K4.prime_above(p)
    print('Denominators Cusp 1/4')
    print [valuation(s4[i],P4)/P4.ramification_index() for i in range(10)]
    K8 = s8.series.base_ring() #Number field
    P8 = K8.prime_above(p)
    print('Denominators Cusp 1/8')
    print [valuation(s8[i],P8)/P8.ramification_index() for i in range(10)]
    K16 = s16.series.base_ring() #Number field
    P16 = K16.prime_above(p)
    print('Denominators Cusp 1/16')
    print [valuation(s16[i],P16)/P16.ramification_index() for i in range(10)]
    j+=1
p=3; N=5*p^2
print 'LEVEL', N
New = Newforms(N,2,names='a');
print 'Number newforms', len(New)
print 'Number of rational newforms', len([n for n in New if n.base_ring()==QQ])
j=0
for n in New: #Loop over all newforms of given level N and weight k
    if not n.base_ring() == QQ: #Skip newforms which don't have rational Fourier coefficients
        continue
    print 'Newform number', j
    print n
    if n.atkin_lehner_eigenvalue()==1:
        print 'L-function vanishes at 1, so we provide no expansions here'
        continue
    s3 = get_expansion(n, mat = Matrix(2,2,[1,-2,3,-5]), prec=10,verbose=False); #Calculate Fourier expansion of the newform
    s9 = get_expansion(n, mat = Matrix(2,2,[2,1,9,5]), prec=10,verbose=False);
    print 'Cusp 1/3', latex(s3)
    print 'Cusp 1/9', latex(s9)
    K3 = s3.series.base_ring() #Number field
    P3 = K3.prime_above(p)
    print('Denominators Cusp 1/3')
    print [valuation(s3[i],P3)/P3.ramification_index() for i in range(10)]
    K9 = s9.series.base_ring() #Number field
    P9 = K9.prime_above(p)
    print('Denominators Cusp 1/9')
    print [valuation(s9[i],P9)/P9.ramification_index() for i in range(10)]
    j+=1
s9_2 = get_expansion(n, mat = Matrix(2,2,[1,0,9,1]), prec=10,verbose=False);
[valuation(s9_2[i],P9)/P9.ramification_index() for i in range(10)]
p=3; N=p^3
print 'LEVEL', N
New = Newforms(N,2,names='a');
print 'Number newforms', len(New)
print 'Number of rational newforms', len([n for n in New if n.base_ring()==QQ])
j=0
for n in New: #Loop over all newforms of given level N and weight k
    if not n.base_ring() == QQ: #Skip newforms which don't have rational Fourier coefficients
        continue
    print 'Newform number', j
    print n
    if n.atkin_lehner_eigenvalue()==1:
        print 'L-function vanishes at 1, so we provide no expansions here'
        continue
    s3 = get_expansion(n, mat = Matrix(2,2,[1,-2,3,-5]), prec=10,verbose=False); #Calculate Fourier expansion of the newform
    s9 = get_expansion(n, mat = Matrix(2,2,[2,1,9,5]), prec=10,verbose=False);
    print 'Cusp 1/3', latex(s3)
    print 'Cusp 1/9', latex(s9)
    K3 = s3.series.base_ring() #Number field
    P3 = K3.prime_above(p)
    print('Denominators Cusp 1/3')
    print [valuation(s3[i],P3)/P3.ramification_index() for i in range(10)]
    K9 = s9.series.base_ring() #Number field
    P9 = K9.prime_above(p)
    print('Denominators Cusp 1/9')
    print [valuation(s9[i],P9)/P9.ramification_index() for i in range(10)]
    j+=1
p=3; N=2*p^4
print 'LEVEL', N
New = Newforms(N,2,names='a');
print 'Number newforms', len(New)
print 'Number of rational newforms', len([n for n in New if n.base_ring()==QQ])
j=0
for n in New: #Loop over all newforms of given level N and weight k
    if not n.base_ring() == QQ: #Skip newforms which don't have rational Fourier coefficients
        continue
    print 'Newform number', j
    print n
    if n.atkin_lehner_eigenvalue()==1:
        print 'L-function vanishes at 1, so we provide no expansions here'
        continue
    s3 = get_expansion(n, mat = Matrix(2,2,[1,-2,3,-5]), prec=10,verbose=False); #Calculate Fourier expansion of the newform
    s9 = get_expansion(n, mat = Matrix(2,2,[2,1,9,5]), prec=10,verbose=False);
    print 'Cusp 1/3', latex(s3)
    print 'Cusp 1/9', latex(s9)
    K3 = s3.series.base_ring() #Number field
    P3 = K3.prime_above(p)
    print('Denominators Cusp 1/3')
    print [valuation(s3[i],P3)/P3.ramification_index() for i in range(10)]
    K9 = s9.series.base_ring() #Number field
    P9 = K9.prime_above(p)
    print('Denominators Cusp 1/9')
    print [valuation(s9[i],P9)/P9.ramification_index() for i in range(10)]
    j+=1
p=3; N=p^5
print 'LEVEL', N
New = Newforms(N,2,names='a');
print 'Number newforms', len(New)
print 'Number of rational newforms', len([n for n in New if n.base_ring()==QQ])
j=0
for n in New: #Loop over all newforms of given level N and weight k
    if not n.base_ring() == QQ: #Skip newforms which don't have rational Fourier coefficients
        continue
    print 'Newform number', j
    print n
    if n.atkin_lehner_eigenvalue()==1:
        print 'L-function vanishes at 1, so we provide no expansions here'
        continue
    s3 = get_expansion(n, mat = Matrix(2,2,[1,-2,3,-5]), prec=10,verbose=False); #Calculate Fourier expansion of the newform
    s9 = get_expansion(n, mat = Matrix(2,2,[2,1,9,5]), prec=10,verbose=False);
    print 'Cusp 1/3', latex(s3)
    print 'Cusp 1/9', latex(s9)
    K3 = s3.series.base_ring() #Number field
    P3 = K3.prime_above(p)
    print('Denominators Cusp 1/3')
    print [valuation(s3[i],P3)/P3.ramification_index() for i in range(10)]
    K9 = s9.series.base_ring() #Number field
    P9 = K9.prime_above(p)
    print('Denominators Cusp 1/9')
    print [valuation(s9[i],P9)/P9.ramification_index() for i in range(10)]
    j+=1<jupyter_output>LEVEL 243
Number newforms 6
Number of rational newforms 2
Newform number 0
q - 2*q^4 + O(q^6)
L-function vanishes at 1, so we provide no expansions here
Newform number 0
q - 2*q^4 + O(q^6)
Cusp 1/3 -1/27*zeta486^132*q27 + 2/27*zeta486^42*q27^4 + (5/27*zeta486^114 - 5/27*zeta486^33)*q27^7 + 2/27*zeta486^15*q27^13 + (-4/27*zeta486^87 + 4/27*zeta486^6)*q27^16 - 8/27*zeta486^78*q27^19 - 5/27*zeta486^141*q27^25 - 10/27*zeta486^51*q27^28 + (7/27*zeta486^123 - 7/27*zeta486^42)*q27^31 + 1/27*zeta486^24*q27^37 - 13/27*zeta486^87*q27^43 - 2/3*zeta486^150*q27^49 + 4/27*zeta486^60*q27^52 - 1/27*zeta486^33*q27^61 + (8/27*zeta486^105 - 8/27*zeta486^24)*q27^64 - 5/27*zeta486^96*q27^67 - 7/27*zeta486^159*q27^73 - 16/27*zeta486^69*q27^76 + (4/27*zeta486^141 - 4/27*zeta486^60)*q27^79 + 10/27*zeta486^105*q27^91 + (-14/27*zeta486^87 + 14/27*zeta486^6)*q27^97 - 10/27*zeta486^78*q27^100 + (-13/27*zeta486^150 + 13/27*zeta486^69)*q27^103 + 17/27*zeta486^51*q27^109 + (-20/27*zeta486^123 + 20/27*zeta486^42)*q27[...]<jupyter_text>Here we study the case v_2(N)=6<jupyter_code>p=2; N=3*p^6
print 'LEVEL', N
New = Newforms(N,2,names='a');
print 'Number newforms', len(New)
print 'Number of rational newforms', len([n for n in New if n.base_ring()==QQ])
j=0
for n in New: #Loop over all newforms of given level N and weight k
    if not n.base_ring() == QQ: #Skip newforms which don't have rational Fourier coefficients
        continue
    print 'Newform number', j
    print n.qexp(10)
    s2 = get_expansion(n, mat = Matrix(2,2,[1,0,2,1]), prec=10,verbose=False); #Calculate Fourier expansion of the newform
    s4 = get_expansion(n, mat = Matrix(2,2,[1,0,4,1]), prec=10,verbose=False);
    s8 = get_expansion(n, mat = Matrix(2,2,[1,0,8,1]), prec=10,verbose=False);
    s16 = get_expansion(n, mat = Matrix(2,2,[1,0,16,1]), prec=10,verbose=False);
    print 'Cusp 1/2', latex(s2)
    print 'Cusp 1/4', latex(s4)
    print 'Cusp 1/8', latex(s8)
    print 'Cusp 1/16', latex(s16)
    K2 = s2.series.base_ring() #Number field
    P2 = K2.prime_above(p)
    print('Denominators Cusp 1/2')
    print [valuation(s2[i],P2)/P2.ramification_index() for i in range(10)]
    K4 = s4.series.base_ring() #Number field
    P4 = K4.prime_above(p)
    print('Denominators Cusp 1/4')
    print [valuation(s4[i],P4)/P4.ramification_index() for i in range(10)]
    K8 = s8.series.base_ring() #Number field
    P8 = K8.prime_above(p)
    print('Denominators Cusp 1/8')
    print [valuation(s8[i],P8)/P8.ramification_index() for i in range(10)]
    K16 = s16.series.base_ring() #Number field
    P16 = K16.prime_above(p)
    print('Denominators Cusp 1/16')
    print [valuation(s16[i],P16)/P16.ramification_index() for i in range(10)]
    j+=1<jupyter_output>LEVEL 192
Number newforms 4
Number of rational newforms 4
Newform number 0
q - q^3 - 2*q^5 - 4*q^7 + q^9 + O(q^10)
Could not write form as lin. comb. of Eisenstein series and products of Eisenstein series
{'fraction_non_alphanumeric': 0.15599448330213772, 'fraction_numerical': 0.07639641414638952, 'mean_word_length': 4.027984150569589, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '57581', 'license': 'MIT', 'n_tokens_mistral': 8742, 'n_tokens_neox': 7930, 'n_words': 2017, 'path': 'manin_constant/examples_for_global_bounds.ipynb', 'repo_name': 'michaelneururer/notebooks-research', 'size': '20314'}