<commit_before>{
 "metadata": {
  "name": ""
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Set up python"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Make sure division of integers does not round to the nearest integer\n",
      "from __future__ import division\n",
      "\n",
      "# Make everything in python's symbolic math package available\n",
      "from sympy import * # Make sure sympy functions are used in preference to numpy\n",
      "import sympy # Make sympy. constructions available\n",
      "from sympy import Rational as frac # Rename for similarity to latex\n",
      "from sympy import log as ln\n",
      "\n",
      "# Print symbolic expressions nicely\n",
      "init_printing()\n",
      "\n",
      "# We'll use the numpy `array` object for vectors\n",
      "from numpy import array, cross, dot\n",
      "\n",
      "# We'll use an orderd dictionary to satisfy dependencies\n",
      "from collections import OrderedDict"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Fundamental variables"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Only the most basic variables should be defined here."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Dimensionful quantities, just in case anybody uses them...\n",
      "G,c = symbols('G,c', real=True)\n",
      "\n",
      "# Unit orbital angular velocity vector (\"Newtonian\" angular momentum)\n",
      "Lhat_Nx, Lhat_Ny, Lhat_Nz = symbols('Lhat_Nx, Lhat_Ny, Lhat_Nz', real=True)\n",
      "\n",
      "# Unit separation vector between the compact objects\n",
      "nhat_x, nhat_y, nhat_z = symbols('nhat_x, nhat_y, nhat_z', real=True)\n",
      "\n",
      "# Mass of object 1.  Note that the total mass is assumed to be 1, so m2 is derived\n",
      "m1 = symbols('m1', real=True)\n",
      "\n",
      "# Spin vectors\n",
      "chi1_x, chi1_y, chi1_z = symbols('chi1_x, chi1_y, chi1_z', real=True)\n",
      "chi2_x, chi2_y, chi2_z = symbols('chi2_x, chi2_x, chi2_z', real=True)\n",
      "\n",
      "# Tidal deformabilities, in units where the total mass is 1\n",
      "lambda1, lambda2 = symbols('lambda1, lambda2', real=True)\n",
      "\n",
      "# v = x**(1/2) = Omega_orb**(1/3)\n",
      "v = symbols('v', real=True)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Derived variables"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Any variable that can be derived from the variables above should be put in this section.\n",
      "\n",
      "These variables should probably be left in arbitrary form, unless a particular simplification is desired.  The `BasicSubstitutions` dictionary should map from the general names and their definitions in terms of basic variables.  In numerical codes, their values can be calculated once per time step and then stored, so that the values do not have to be re-calculated every time they appear in an expression."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "BasicSubstitutions = OrderedDict() # For now, just initialize the dictionary"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 3
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Of course, some variables will only need to be computed once for the entire system, and stored.  Just so that these quantities are not continually recalculated, we make a list of them for future reference."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "VariableConstants = []"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Various common combinations of the two masses:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "m2 = symbols('m2', real=True)\n",
      "BasicSubstitutions[m2] = 1-m1\n",
      "VariableConstants += [m2]\n",
      "\n",
      "m = symbols('m', real=True);\n",
      "BasicSubstitutions[m] = m1+m2\n",
      "VariableConstants += [m]\n",
      "\n",
      "delta = symbols('delta', real=True);\n",
      "BasicSubstitutions[delta] = m1-m2\n",
      "VariableConstants += [delta]\n",
      "\n",
      "nu, nu__2, nu__3 = symbols('nu, nu__2, nu__3', real=True);\n",
      "BasicSubstitutions[nu] = m1*m2\n",
      "BasicSubstitutions[nu__2] = (m1*m2)**2\n",
      "BasicSubstitutions[nu__3] = (m1*m2)**3\n",
      "VariableConstants += [nu, nu__2, nu__3]\n",
      "\n",
      "q = symbols('q', real=True);\n",
      "BasicSubstitutions[q] = m1/m2\n",
      "VariableConstants += [q]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 5
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The system's vector basis is given by $(\\hat{L}_{\\text{N}}, \\hat{n}, \\hat{\\lambda})$.  Here, we define the remaining element, and give the relevant substitutions in terms of Cartesian basis elements."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "Lhat_N, nhat = symbols('Lhat_N, nhat', real=True)\n",
      "\n",
      "lambdahat, lambdahat_x, lambdahat_y, lambdahat_z = symbols('lambdahat, lambdahat_x, lambdahat_y, lambdahat_z', real=True)\n",
      "\n",
      "BasicSubstitutions[Lhat_N] = array([Lhat_Nx, Lhat_Ny, Lhat_Nz])\n",
      "BasicSubstitutions[nhat] = array([nhat_x, nhat_y, nhat_z])\n",
      "BasicSubstitutions[lambdahat] = cross(BasicSubstitutions[Lhat_N], BasicSubstitutions[nhat])\n",
      "\n",
      "BasicSubstitutions[lambdahat_x] = BasicSubstitutions[lambdahat][0]\n",
      "BasicSubstitutions[lambdahat_y] = BasicSubstitutions[lambdahat][1]\n",
      "BasicSubstitutions[lambdahat_z] = BasicSubstitutions[lambdahat][2]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Various spin components and combinations:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "chi1, chi2 = symbols('chi1, chi2', real=True)\n",
      "BasicSubstitutions[chi1] = array([chi1_x, chi1_y, chi1_z])\n",
      "BasicSubstitutions[chi2] = array([chi2_x, chi2_y, chi2_z])\n",
      "\n",
      "chi1chi1, chi1chi2, chi2chi2 = symbols('chi1chi1, chi1chi2, chi2chi2', real=True)\n",
      "BasicSubstitutions[chi1chi1] = dot(BasicSubstitutions[chi1], BasicSubstitutions[chi1])\n",
      "BasicSubstitutions[chi1chi2] = dot(BasicSubstitutions[chi1], BasicSubstitutions[chi2])\n",
      "BasicSubstitutions[chi2chi2] = dot(BasicSubstitutions[chi2], BasicSubstitutions[chi2])\n",
      "\n",
      "chi1_l, chi1_n, chi1_la = symbols('chi1_l, chi1_n, chi1_lambda', real=True)\n",
      "chi2_l, chi2_n, chi2_la = symbols('chi2_l, chi2_n, chi2_lambda', real=True)\n",
      "BasicSubstitutions[chi1_l]  = dot(BasicSubstitutions[chi1], BasicSubstitutions[Lhat_N])\n",
      "BasicSubstitutions[chi1_n]  = dot(BasicSubstitutions[chi1], BasicSubstitutions[nhat])\n",
      "BasicSubstitutions[chi1_la] = dot(BasicSubstitutions[chi1], BasicSubstitutions[lambdahat])\n",
      "BasicSubstitutions[chi2_l]  = dot(BasicSubstitutions[chi2], BasicSubstitutions[Lhat_N])\n",
      "BasicSubstitutions[chi2_n]  = dot(BasicSubstitutions[chi2], BasicSubstitutions[nhat])\n",
      "BasicSubstitutions[chi2_la] = dot(BasicSubstitutions[chi2], BasicSubstitutions[lambdahat])\n",
      "\n",
      "sqrt1Mchi1chi1, sqrt1Mchi2chi2 = symbols('sqrt1Mchi1chi1, sqrt1Mchi2chi2', real=True)\n",
      "BasicSubstitutions[sqrt1Mchi1chi1] = sqrt(1-chi1chi1)\n",
      "BasicSubstitutions[sqrt1Mchi2chi2] = sqrt(1-chi2chi2)\n",
      "\n",
      "S, S_l, S_n, S_la = symbols('S, S_l, S_n, S_lambda', real=True)\n",
      "BasicSubstitutions[S] = chi1*m1**2 + chi2*m2**2\n",
      "BasicSubstitutions[S_l] = chi1_l*m1**2 + chi2_l*m2**2\n",
      "BasicSubstitutions[S_n] = chi1_n*m1**2 + chi2_l*m2**2\n",
      "BasicSubstitutions[S_la] = chi1_la*m1**2 + chi2_la*m2**2\n",
      "\n",
      "Sigma, Sigma_l, Sigma_n, Sigma_la = symbols('Sigma, Sigma_l, Sigma_n, Sigma_lambda', real=True)\n",
      "BasicSubstitutions[Sigma] = chi2*m2 - chi1*m1\n",
      "BasicSubstitutions[Sigma_l] = chi2_l*m2 - chi1_l*m1\n",
      "BasicSubstitutions[Sigma_n] = chi2_n*m2 - chi1_n*m1\n",
      "BasicSubstitutions[Sigma_la] = chi2_la*m2 - chi1_la*m1"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 7
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Other powers of the angular velocity that find frequent use:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x, Omega_orb, logv = symbols('x, Omega_orb, logv', real=True)\n",
      "BasicSubstitutions[x] = v**2\n",
      "BasicSubstitutions[Omega_orb] = v**3\n",
      "BasicSubstitutions[logv] = log(v)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 8
    }
   ],
   "metadata": {}
  }
 ]
}<commit_msg>Fix bug in chi2 and add introduction<commit_after>{
 "metadata": {
  "name": ""
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Introduction"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "This is the central location where all variables should be defined, and any relationships between them should be given.  Having all definitions collected in one file is useful because other files can reference this one, so there is no need for duplication, and less room for mistakes.  In particular, the relationships between variables are defined only here, so we don't need to reimplement those relationships.  And if you do ever find a mistake, you only have to fix it in one place, then just re-run the other notebooks.\n",
      "\n",
      "There are two main classes of variables:\n",
      "\n",
      "  1. Fundamental variables\n",
      "  2. Derived variables\n",
      "\n",
      "The fundamental variables that go into PN equations are things like the mass, spins $\\chi_1$, and $\\chi_2$, orbital angular velocity $\\hat{L}_{\\text{N}}$, and unit separation vector $\\hat{n}$.  We also include the tidal-coupling parameters in this list.  Also, note that only $m_1$ is included.  This is because the total mass is always assumed to be 1, so $m_2 = 1-m_1$.\n",
      "\n",
      "The derived variables are further distinguished by whether they will need to be recalculated at each time step or not.  For example, though we define the spins fundamentally as $\\chi_1$ and $\\chi_2$, we can also define derived spins $S$ and $\\Sigma$, which need to be recalculated if the system is precessing.  On the other hand, the masses are constant and fundamentally defined by $m_1$, so $m_2$ and $\\nu$ only need to be calculated from that information once."
     ]
    },
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Set up python"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Make sure division of integers does not round to the nearest integer\n",
      "from __future__ import division\n",
      "\n",
      "# Make everything in python's symbolic math package available\n",
      "from sympy import * # Make sure sympy functions are used in preference to numpy\n",
      "import sympy # Make sympy. constructions available\n",
      "from sympy import Rational as frac # Rename for similarity to latex\n",
      "from sympy import log as ln\n",
      "\n",
      "# Print symbolic expressions nicely\n",
      "init_printing()\n",
      "\n",
      "# We'll use the numpy `array` object for vectors\n",
      "from numpy import array, cross, dot\n",
      "\n",
      "# We'll use an orderd dictionary to satisfy dependencies\n",
      "from collections import OrderedDict"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Fundamental variables"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Only the most basic variables should be defined here."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# Dimensionful quantities, just in case anybody uses them...\n",
      "G,c = symbols('G,c', real=True)\n",
      "\n",
      "# Unit orbital angular velocity vector (\"Newtonian\" angular momentum)\n",
      "Lhat_Nx, Lhat_Ny, Lhat_Nz = symbols('Lhat_Nx, Lhat_Ny, Lhat_Nz', real=True)\n",
      "\n",
      "# Unit separation vector between the compact objects\n",
      "nhat_x, nhat_y, nhat_z = symbols('nhat_x, nhat_y, nhat_z', real=True)\n",
      "\n",
      "# Mass of object 1.  Note that the total mass is assumed to be 1, so m2 is derived\n",
      "m1 = symbols('m1', real=True)\n",
      "\n",
      "# Spin vectors\n",
      "chi1_x, chi1_y, chi1_z = symbols('chi1_x, chi1_y, chi1_z', real=True)\n",
      "chi2_x, chi2_y, chi2_z = symbols('chi2_x, chi2_y, chi2_z', real=True)\n",
      "\n",
      "# Tidal deformabilities, in units where the total mass is 1\n",
      "lambda1, lambda2 = symbols('lambda1, lambda2', real=True)\n",
      "\n",
      "# v = x**(1/2) = Omega_orb**(1/3)\n",
      "v = symbols('v', real=True)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 2
    },
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Derived variables"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Any variable that can be derived from the variables above should be put in this section.\n",
      "\n",
      "These variables should probably be left in arbitrary form, unless a particular simplification is desired.  The `BasicSubstitutions` dictionary should map from the general names and their definitions in terms of basic variables.  In numerical codes, their values can be calculated once per time step and then stored, so that the values do not have to be re-calculated every time they appear in an expression."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "BasicSubstitutions = OrderedDict() # For now, just initialize the dictionary"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 3
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Of course, some variables will only need to be computed once for the entire system, and stored.  Just so that these quantities are not continually recalculated, we make a list of them for future reference."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "VariableConstants = []"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 4
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Various common combinations of the two masses:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "m2 = symbols('m2', real=True)\n",
      "BasicSubstitutions[m2] = 1-m1\n",
      "VariableConstants += [m2]\n",
      "\n",
      "m = symbols('m', real=True);\n",
      "BasicSubstitutions[m] = m1+m2\n",
      "VariableConstants += [m]\n",
      "\n",
      "delta = symbols('delta', real=True);\n",
      "BasicSubstitutions[delta] = m1-m2\n",
      "VariableConstants += [delta]\n",
      "\n",
      "nu, nu__2, nu__3 = symbols('nu, nu__2, nu__3', real=True);\n",
      "BasicSubstitutions[nu] = m1*m2\n",
      "BasicSubstitutions[nu__2] = (m1*m2)**2\n",
      "BasicSubstitutions[nu__3] = (m1*m2)**3\n",
      "VariableConstants += [nu, nu__2, nu__3]\n",
      "\n",
      "q = symbols('q', real=True);\n",
      "BasicSubstitutions[q] = m1/m2\n",
      "VariableConstants += [q]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 5
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The system's vector basis is given by $(\\hat{L}_{\\text{N}}, \\hat{n}, \\hat{\\lambda})$.  Here, we define the remaining element, and give the relevant substitutions in terms of Cartesian basis elements."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "Lhat_N, nhat = symbols('Lhat_N, nhat', real=True)\n",
      "\n",
      "lambdahat, lambdahat_x, lambdahat_y, lambdahat_z = symbols('lambdahat, lambdahat_x, lambdahat_y, lambdahat_z', real=True)\n",
      "\n",
      "BasicSubstitutions[Lhat_N] = array([Lhat_Nx, Lhat_Ny, Lhat_Nz])\n",
      "BasicSubstitutions[nhat] = array([nhat_x, nhat_y, nhat_z])\n",
      "BasicSubstitutions[lambdahat] = cross(BasicSubstitutions[Lhat_N], BasicSubstitutions[nhat])\n",
      "\n",
      "BasicSubstitutions[lambdahat_x] = BasicSubstitutions[lambdahat][0]\n",
      "BasicSubstitutions[lambdahat_y] = BasicSubstitutions[lambdahat][1]\n",
      "BasicSubstitutions[lambdahat_z] = BasicSubstitutions[lambdahat][2]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 6
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Various spin components and combinations:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "chi1, chi2 = symbols('chi1, chi2', real=True)\n",
      "BasicSubstitutions[chi1] = array([chi1_x, chi1_y, chi1_z])\n",
      "BasicSubstitutions[chi2] = array([chi2_x, chi2_y, chi2_z])\n",
      "\n",
      "chi1chi1, chi1chi2, chi2chi2 = symbols('chi1chi1, chi1chi2, chi2chi2', real=True)\n",
      "BasicSubstitutions[chi1chi1] = dot(BasicSubstitutions[chi1], BasicSubstitutions[chi1])\n",
      "BasicSubstitutions[chi1chi2] = dot(BasicSubstitutions[chi1], BasicSubstitutions[chi2])\n",
      "BasicSubstitutions[chi2chi2] = dot(BasicSubstitutions[chi2], BasicSubstitutions[chi2])\n",
      "\n",
      "chi1_l, chi1_n, chi1_la = symbols('chi1_l, chi1_n, chi1_lambda', real=True)\n",
      "chi2_l, chi2_n, chi2_la = symbols('chi2_l, chi2_n, chi2_lambda', real=True)\n",
      "BasicSubstitutions[chi1_l]  = dot(BasicSubstitutions[chi1], BasicSubstitutions[Lhat_N])\n",
      "BasicSubstitutions[chi1_n]  = dot(BasicSubstitutions[chi1], BasicSubstitutions[nhat])\n",
      "BasicSubstitutions[chi1_la] = dot(BasicSubstitutions[chi1], BasicSubstitutions[lambdahat])\n",
      "BasicSubstitutions[chi2_l]  = dot(BasicSubstitutions[chi2], BasicSubstitutions[Lhat_N])\n",
      "BasicSubstitutions[chi2_n]  = dot(BasicSubstitutions[chi2], BasicSubstitutions[nhat])\n",
      "BasicSubstitutions[chi2_la] = dot(BasicSubstitutions[chi2], BasicSubstitutions[lambdahat])\n",
      "\n",
      "sqrt1Mchi1chi1, sqrt1Mchi2chi2 = symbols('sqrt1Mchi1chi1, sqrt1Mchi2chi2', real=True)\n",
      "BasicSubstitutions[sqrt1Mchi1chi1] = sqrt(1-chi1chi1)\n",
      "BasicSubstitutions[sqrt1Mchi2chi2] = sqrt(1-chi2chi2)\n",
      "\n",
      "S, S_l, S_n, S_la = symbols('S, S_l, S_n, S_lambda', real=True)\n",
      "BasicSubstitutions[S] = chi1*m1**2 + chi2*m2**2\n",
      "BasicSubstitutions[S_l] = chi1_l*m1**2 + chi2_l*m2**2\n",
      "BasicSubstitutions[S_n] = chi1_n*m1**2 + chi2_l*m2**2\n",
      "BasicSubstitutions[S_la] = chi1_la*m1**2 + chi2_la*m2**2\n",
      "\n",
      "Sigma, Sigma_l, Sigma_n, Sigma_la = symbols('Sigma, Sigma_l, Sigma_n, Sigma_lambda', real=True)\n",
      "BasicSubstitutions[Sigma] = chi2*m2 - chi1*m1\n",
      "BasicSubstitutions[Sigma_l] = chi2_l*m2 - chi1_l*m1\n",
      "BasicSubstitutions[Sigma_n] = chi2_n*m2 - chi1_n*m1\n",
      "BasicSubstitutions[Sigma_la] = chi2_la*m2 - chi1_la*m1"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 7
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Other powers of the angular velocity that find frequent use:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x, Omega_orb, logv = symbols('x, Omega_orb, logv', real=True)\n",
      "BasicSubstitutions[x] = v**2\n",
      "BasicSubstitutions[Omega_orb] = v**3\n",
      "BasicSubstitutions[logv] = log(v)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 8
    }
   ],
   "metadata": {}
  }
 ]
}
{'fraction_non_alphanumeric': 0.16353874883286648, 'fraction_numerical': 0.019000933706816058, 'mean_word_length': 2.894727272727273, 'pattern_counts': {'":': 199, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, '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}}
{'dir': 'git-commits-cleaned', 'id': '6367477', 'n_tokens_mistral': 7811, 'n_tokens_neox': 7423, 'n_words': 1748}