File: write-json.rst

package info (click to toggle)
python-cogent 2024.5.7a1%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 74,600 kB
  • sloc: python: 92,479; makefile: 117; sh: 16
file content (60 lines) | stat: -rw-r--r-- 2,100 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
.. jupyter-execute::
    :hide-code:

    import set_working_directory

.. _write_json:

Writing JSON Serialised Objects
-------------------------------

Using JSON, we can serialise ``cogent3`` objects to a file for easy storage and retrieval.

Create an example object to serialise
"""""""""""""""""""""""""""""""""""""

Let's create a ``LikelihoodFunction`` object to use in this example. It is generated from fitting the General Nucleotide (GN) model to an alignment of BRCA1 in primates. 

.. jupyter-execute::
    :hide-code:

    from tempfile import TemporaryDirectory

    tmpdir = TemporaryDirectory(dir=".")
    path_to_dir = tmpdir.name

.. jupyter-execute::
    :raises:

    from cogent3 import get_app

    # Load the alignment
    load_aligned_app = get_app("load_aligned", moltype="dna", format="fasta")
    aln = load_aligned_app("data/primate_brca1.fasta")

    # Fit the GN model
    gn_model_app = get_app("model", "GN", tree="data/primate_brca1.tree")
    model_result = gn_model_app(aln)
    model_result.lf

``write_json`` -  writing JSON-serialised object to file 
""""""""""""""""""""""""""""""""""""""""""""""""""""""""

Using the ``write_json`` app, we can write out the likelihood function as a JSON-serialised object, making it easy to retrieve the model parameters for future reference if required. 

We need to provide the ``write_json`` app with a data store to which it will write. Optionally when we apply the app we can specify an identifier for the data, which will name the file. 

.. jupyter-execute::
    :raises:

    from cogent3 import get_app, open_data_store

    # Initialise the write_json app with a data store
    out_dstore = open_data_store(path_to_dir, mode="w", suffix="json")
    write_json_app = get_app("write_json", data_store=out_dstore)

    write_json_app(model_result.lf, identifier="gn_params.json")

.. note:: Learn how to load a JSON serialised object in the :ref:`loading JSON serialised objects <load_json>` section!

.. tip:: When running this code on your machine, remember to replace ``path_to_dir`` with an actual directory path.