{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Overview\n", "\n", "This notebook demonstrates how to scan for TF binding motifs. The base GRN will be generated by combining the ATAC-seq peaks and motif information.\n", "\n", "### Notebook file\n", "Notebook file is available on CellOracle's GitHub page.\n", "https://github.com/morris-lab/CellOracle/blob/master/docs/notebooks/02_motif_scan/02_atac_peaks_to_TFinfo_with_celloracle_20200801.ipynb\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 0. Import libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "\n", "import seaborn as sns\n", "\n", "import os, sys, shutil, importlib, glob\n", "from tqdm.notebook import tqdm" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'0.13.1'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import celloracle as co\n", "from celloracle import motif_analysis as ma\n", "from celloracle.utility import save_as_pickled_object\n", "co.__version__" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "%config InlineBackend.figure_format = 'retina'\n", "%matplotlib inline\n", "\n", "plt.rcParams['figure.figsize'] = (15,7)\n", "plt.rcParams[\"savefig.dpi\"] = 600" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Rerefence genome data preparation\n", "## 1.1. Check reference genome installation\n", "\n", "Before starting the analysis, we need to make sure the reference genome data is installed with `genomepy`. If not, please install the correct reference genome using the instructions below.\n", "\n", "`genomepy` installs reference genome data under home directory. But if you have installed or want to install reference genome to another specific location, please specify the place using `genomes_dir` argument." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mm10 installation: True\n" ] } ], "source": [ "# PLEASE make sure reference genome is correct.\n", "ref_genome = \"mm10\"\n", "\n", "genome_installation = ma.is_genome_installed(ref_genome=ref_genome,\n", " genomes_dir=None)\n", "print(ref_genome, \"installation: \", genome_installation)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1.2. Install reference genome (if refgenome is not installed)\n", "\n", "Before installing the reference genome, please check the refenome is in the celloracle supported reference genome list. \n", "You can check supported reference genome using `ma.SUPPORTED_REF_GENOME`\n", "\n", "If your reference genome is not in the list, please send a request to us through CellOracle GitHub issue page." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
speciesref_genomeprovider
0Humanhg38UCSC
1Humanhg19UCSC
2Mousemm39UCSC
3Mousemm10UCSC
4Mousemm9UCSC
5S.cerevisiaesacCer2UCSC
6S.cerevisiaesacCer3UCSC
7ZebrafishdanRer7UCSC
8ZebrafishdanRer10UCSC
9ZebrafishdanRer11UCSC
10Xenopus tropicalisxenTro2UCSC
11Xenopus tropicalisxenTro3UCSC
12Xenopus laevisXenopus_laevis_v10.1NCBI
13Ratrn4UCSC
14Ratrn5UCSC
15Ratrn6UCSC
16Drosophiladm3UCSC
17Drosophiladm6UCSC
18C.elegansce6UCSC
19C.elegansce10UCSC
20ArabidopsisTAIR10Ensembl
21ChickengalGal4UCSC
22ChickengalGal5UCSC
23ChickengalGal6UCSC
24Guinea_PigCavpor3.0Ensembl
25PigSscrofa11.1Ensembl
26AxolotlAmexG_v6.0-DDAxolotl-omics.org
\n", "
" ], "text/plain": [ " species ref_genome provider\n", "0 Human hg38 UCSC\n", "1 Human hg19 UCSC\n", "2 Mouse mm39 UCSC\n", "3 Mouse mm10 UCSC\n", "4 Mouse mm9 UCSC\n", "5 S.cerevisiae sacCer2 UCSC\n", "6 S.cerevisiae sacCer3 UCSC\n", "7 Zebrafish danRer7 UCSC\n", "8 Zebrafish danRer10 UCSC\n", "9 Zebrafish danRer11 UCSC\n", "10 Xenopus tropicalis xenTro2 UCSC\n", "11 Xenopus tropicalis xenTro3 UCSC\n", "12 Xenopus laevis Xenopus_laevis_v10.1 NCBI\n", "13 Rat rn4 UCSC\n", "14 Rat rn5 UCSC\n", "15 Rat rn6 UCSC\n", "16 Drosophila dm3 UCSC\n", "17 Drosophila dm6 UCSC\n", "18 C.elegans ce6 UCSC\n", "19 C.elegans ce10 UCSC\n", "20 Arabidopsis TAIR10 Ensembl\n", "21 Chicken galGal4 UCSC\n", "22 Chicken galGal5 UCSC\n", "23 Chicken galGal6 UCSC\n", "24 Guinea_Pig Cavpor3.0 Ensembl\n", "25 Pig Sscrofa11.1 Ensembl\n", "26 Axolotl AmexG_v6.0-DD Axolotl-omics.org" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ma.SUPPORTED_REF_GENOME" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mm10 is installed.\n" ] } ], "source": [ "if not genome_installation:\n", " import genomepy\n", " genomepy.install_genome(name=ref_genome, provider=\"UCSC\", genomes_dir=None)\n", "else:\n", " print(ref_genome, \"is installed.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. Load data\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.0. Input data format\n", "\n", "In this notebook, we explain how to make a base GRN.\n", "\n", "Please look at the previous steps for details on preprocessing data for a base GRN\n", "\n", "https://morris-lab.github.io/CellOracle.documentation/tutorials/base_grn.html#step1-scatac-seq-analysis-with-cicero\n", "\n", "\n", "\n", "The scATAC-seq file needs to be converted in a csv file three columns:\n", "- The first column is index.\n", "- The second column is peak_id.\n", "- The third column is gene_short_name.\n", "\n", "\n", "A correctly formatted file will look like this:\n", "\n", "\n", "\n", "\n", "\n", "\n", "We will load the .csv file as a `pandas.DataFrame` using pd.read_csv().\n", "\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.0. Download demo data\n", "\n", "You can download the demo file by running the following command.\n", "\n", "Note: If the file download fails, please manually download and unzip the data.\n", "\n", "https://raw.githubusercontent.com/morris-lab/CellOracle/master/docs/demo_data/processed_peak_file.csv\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--2023-07-08 17:00:17-- https://raw.githubusercontent.com/morris-lab/CellOracle/master/docs/demo_data/processed_peak_file.csv\n", "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", "Length: 569448 (556K) [text/plain]\n", "Saving to: ‘processed_peak_file.csv’\n", "\n", "processed_peak_file 100%[===================>] 556.10K --.-KB/s in 0.01s \n", "\n", "2023-07-08 17:00:17 (38.0 MB/s) - ‘processed_peak_file.csv’ saved [569448/569448]\n", "\n" ] } ], "source": [ "# Download file. \n", "!wget https://raw.githubusercontent.com/morris-lab/CellOracle/master/docs/demo_data/processed_peak_file.csv\n", " \n", "# If you are using macOS, please try the following command.\n", "#!curl -O https://raw.githubusercontent.com/morris-lab/CellOracle/master/docs/demo_data/processed_peak_file.csv\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.1. Load processed peak data " ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
peak_idgene_short_name
0chr10_100015291_100017830Kitl
1chr10_100486534_100488209Tmtc3
2chr10_100588641_1005895564930430F08Rik
3chr10_100741247_100742505Gm35722
4chr10_101681379_101682124Mgat4c
\n", "
" ], "text/plain": [ " peak_id gene_short_name\n", "0 chr10_100015291_100017830 Kitl\n", "1 chr10_100486534_100488209 Tmtc3\n", "2 chr10_100588641_100589556 4930430F08Rik\n", "3 chr10_100741247_100742505 Gm35722\n", "4 chr10_101681379_101682124 Mgat4c" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load annotated peak data.\n", "peaks = pd.read_csv(\"processed_peak_file.csv\", index_col=0)\n", "peaks.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.1. Check data format\n", "\n", "Here, the function below will check peak data format, including chromosome name and peak length." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Peaks before filtering: 15779\n", "Peaks with invalid chr_name: 0\n", "Peaks with invalid length: 2\n", "Peaks after filtering: 15777\n" ] } ], "source": [ "peaks = ma.check_peak_format(peaks, ref_genome, genomes_dir=None)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2.2. [Optional step] Load custom motifs\n", "\n", "You can chose to use either a custom TF binding reference or CellOracle’s default motifs during the motif analysis. If you would like to use our default motifs, you can continue to the next step without loading any additional data.\n", "\n", "\n", "If you would like to use a custom motif dataset, please choose one of the following options.\n", "\n", "- Motifs provided by gimmemotifs\n", " >Gimmemotifs is a python package for motif analysis. It provides many motif dataset. https://gimmemotifs.readthedocs.io/en/master/overview.html#motif-databases\n", " > \n", " > Please use this notebook to learn how to load motif data from gimmemotifs database. \n", " > https://github.com/morris-lab/CellOracle/blob/master/docs/notebooks/02_motif_scan/motif_data_preparation/01_How_to_load_gimmemotifs_motif_data.ipynb\n", "\n", "- Custom motifs provided by CellOracle.\n", " \n", " >CellOracle also provides many motif datasets generated from CisBP. http://cisbp.ccbr.utoronto.ca/\n", " >\n", " >Please look at this notebook to learn how to load the CisBP motifs.https://github.com/morris-lab/CellOracle/blob/master/docs/notebooks/02_motif_scan/motif_data_preparation/02_How_to_load_CisBPv2_motif_data.ipynb\n", "\n", "\n", "- Make your own custom motif data.\n", " >You can create custom motif data by yourself.\n", " >\n", " >Please look at this notebook to learn how to create your custom motif dataset.https://github.com/morris-lab/CellOracle/blob/master/docs/notebooks/02_motif_scan/motif_data_preparation/03_How_to_make_custom_motif.ipynb\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Instantiate TFinfo object and search for TF binding motifs\n", "The motif analysis module has a custom class, `TFinfo`. \n", "The TFinfo objectexecutes the steps below.\n", "\n", "- Converts a peak data into a DNA sequences.\n", "- Scans the DNA sequences searching for TF binding motifs.\n", "- Post-processes the motif scan results.\n", "- Converts data into appropriate format. You can convert data into base-GRN. The base GRN data can be formatted as either a python dictionary or pandas dataframe. This output will be the final base GRN used in the GRN model construction step." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.1. Instantiate TFinfo object\n", "If your reference genome file are installed in non-default location, please speficy the location using `genomes_dir`." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Instantiate TFinfo object\n", "tfi = ma.TFinfo(peak_data_frame=peaks, \n", " ref_genome=ref_genome,\n", " genomes_dir=None) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3.2. Motif scan\n", "\n", "\n", "You can specify the TF binding motif data as follows. \n", "\n", "`tfi.scan(motifs=motifs)`\n", "\n", "If you do not specify the motifs or set motifs to `None`, the default motifs will be loaded automatically.\n", "\n", "- For mouse and human, \"gimme.vertebrate.v5.0.\" will be used as the default motifs. \n", "\n", "- For another species, the species-specific TF binding motif data extracted from CisBP ver2.0 will be used.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**If your jupyter notebook kernel is killed during the motif scan process, please see the link below.**\n", "\n", "https://morris-lab.github.io/CellOracle.documentation/installation/python_step_by_step_installation.html#install-gimmemotifs-with-conda" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "scrolled": false }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6e4a431199cf452599cdddce80462f81", "version_major": 2, "version_minor": 0 }, "text/plain": [ "scanning: 0%| | 0/14085 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
seqnamemotif_idfactors_directfactors_indirectscoreposstrand
0chr10_100015291_100017830GM.5.0.Homeodomain.0001TGIF1TGIF1, ENSG0000023425410.28848710031
1chr10_100015291_100017830GM.5.0.Mixed.0001SRF, EGR17.9047164811
2chr10_100015291_100017830GM.5.0.Mixed.0001SRF, EGR17.301316911-1
3chr10_100015291_100017830GM.5.0.Mixed.0001SRF, EGR17.257605811-1
4chr10_100015291_100017830GM.5.0.Mixed.0001SRF, EGR16.93663712111
\n", "" ], "text/plain": [ " seqname motif_id factors_direct \\\n", "0 chr10_100015291_100017830 GM.5.0.Homeodomain.0001 TGIF1 \n", "1 chr10_100015291_100017830 GM.5.0.Mixed.0001 \n", "2 chr10_100015291_100017830 GM.5.0.Mixed.0001 \n", "3 chr10_100015291_100017830 GM.5.0.Mixed.0001 \n", "4 chr10_100015291_100017830 GM.5.0.Mixed.0001 \n", "\n", " factors_indirect score pos strand \n", "0 TGIF1, ENSG00000234254 10.288487 1003 1 \n", "1 SRF, EGR1 7.904716 481 1 \n", "2 SRF, EGR1 7.301316 911 -1 \n", "3 SRF, EGR1 7.257605 811 -1 \n", "4 SRF, EGR1 6.936637 1211 1 " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Check motif scan results\n", "tfi.scanned_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have the score for each sequence and motif_id pair.\n", "In the next step we will filter the motifs with low scores." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 4. Filtering motifs" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0437d48c90994a98804ddcb9e7511fef", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/14065 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
peak_idgene_short_name9430076c15rikAc002126.6Ac012531.1Ac226150.2AfpAhrAhrrAire...Znf784Znf8Znf816Znf85Zscan10Zscan16Zscan22Zscan26Zscan31Zscan4
0chr10_100015291_100017830Kitl0.00.00.00.00.01.01.00.0...0.00.00.00.00.00.01.00.00.00.0
1chr10_100486534_100488209Tmtc30.00.00.00.00.00.00.00.0...1.00.00.00.00.00.01.00.00.00.0
2chr10_100588641_1005895564930430F08Rik0.00.01.00.00.01.01.00.0...0.00.00.00.00.00.00.00.00.00.0
3chr10_100741247_100742505Gm357220.00.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.00.0
4chr10_101681379_101682124Mgat4c0.01.00.00.00.00.00.00.0...0.00.00.00.00.00.00.00.00.01.0
\n", "

5 rows × 1096 columns

\n", "" ], "text/plain": [ " peak_id gene_short_name 9430076c15rik Ac002126.6 \\\n", "0 chr10_100015291_100017830 Kitl 0.0 0.0 \n", "1 chr10_100486534_100488209 Tmtc3 0.0 0.0 \n", "2 chr10_100588641_100589556 4930430F08Rik 0.0 0.0 \n", "3 chr10_100741247_100742505 Gm35722 0.0 0.0 \n", "4 chr10_101681379_101682124 Mgat4c 0.0 1.0 \n", "\n", " Ac012531.1 Ac226150.2 Afp Ahr Ahrr Aire ... Znf784 Znf8 Znf816 \\\n", "0 0.0 0.0 0.0 1.0 1.0 0.0 ... 0.0 0.0 0.0 \n", "1 0.0 0.0 0.0 0.0 0.0 0.0 ... 1.0 0.0 0.0 \n", "2 1.0 0.0 0.0 1.0 1.0 0.0 ... 0.0 0.0 0.0 \n", "3 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 \n", "4 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 \n", "\n", " Znf85 Zscan10 Zscan16 Zscan22 Zscan26 Zscan31 Zscan4 \n", "0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 \n", "1 0.0 0.0 0.0 1.0 0.0 0.0 0.0 \n", "2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "3 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "4 0.0 0.0 0.0 0.0 0.0 0.0 1.0 \n", "\n", "[5 rows x 1096 columns]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = tfi.to_dataframe()\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 6. Save results\n", "We will use this information when constructing the GRN models later. Save the results." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# Save result as a dataframe\n", "df = tfi.to_dataframe()\n", "df.to_parquet(\"base_GRN_dataframe.parquet\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**We will use this base GRN data in the GRN construction section.**\n", "\n", "https://morris-lab.github.io/CellOracle.documentation/tutorials/networkanalysis.html" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "finalized": { "timestamp": 1688854219207, "trusted": true }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.10" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }