Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

loadJSON needs to be updated for the new nextstrain json format #18

Open
sidneymbell opened this issue Aug 7, 2020 · 2 comments
Open
Assignees

Comments

@sidneymbell
Copy link
Collaborator

No description provided.

@colejensen
Copy link

I have been using baltic 0.1.1 and if I use bt.loadJSON() as previously used in 0.1.0 I get an error regarding the metadata. For an example of when this happens:
nx_tree = json.load(open(path, 'r')) tree = nx_tree['tree'] # tree data meta = nx_tree['meta'] # metadata json_translation={'absoluteTime':lambda k: k.traits['node_attrs']['num_date']['value'],'name':'name'} json_meta={'file':meta,'traitName':'region'} bt_tree=bt.loadJSON(tree,json_translation,json_meta)
which results in the following error:

Traceback (most recent call last):
File "C:/Users/28Cha/AppData/Roaming/JetBrains/PyCharmCE2020.2/scratches/scratch_7.py", line 39, in
bt_tree=bt.loadJSON(tree,json_translation,json_meta) ## give loadJSON the name of the tree file, the translation dictionary and (optionally) the meta file
File "C:\Users\28Cha\Documents\Python\venv\lib\site-packages\baltic\baltic.py", line 1288, in loadJSON
json_meta=auspice_json['meta']
KeyError: 'meta'

If I run the bt_tree=bt.loadJSON(nx_tree,json_translation,json_meta) it runs, but becomes a tuple, which makes it hard to work with.

@evogytis
Copy link
Owner

evogytis commented Sep 7, 2020

Hi Cole,

I believe the issue you're having has to do with the outdated notebooks on here. Up until a few months ago auspice JSONs came in at least two parts - a meta and a tree file which were then merged into a single JSON file (v2 auspice JSON format). The loadJSON function assumes you're giving it the new v2 auspice JSON that includes both tree and meta parts in a single JSON and after parsing spits them out as separate entities (baltic tree object and meta dictionary, hence the tuple) because there's information in the meta part that wouldn't make sense as part of the baltic tree object. You can simply unpack these in your function call like this:

bt_tree,meta=bt.loadJSON(nx_tree,json_translation,json_meta)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants