UNPKG

iham-parsers

Version:

orthoxml, phyloxml and newick parsers for the iHam widget

44 lines (40 loc) 2.11 kB
const hogvis = require("../index.js"); const chai = require('chai'), expect = chai.expect; const fs = require('fs'); const parse_orthoxml = hogvis.parse_orthoxml, tree_utils = hogvis.tree_tool; const get_hogs_at_level_from_per_species = function (per_species, lev) { var hogs = undefined; Object.keys(per_species).forEach(function (species) { if (per_species[species][lev] !== undefined) { if (!hogs) hogs = Array.from({length: per_species[species][lev].length}, () => []); for (let i = 0; i < per_species[species][lev].length; i++) { hogs[i].push.apply(hogs[i], per_species[species][lev][i]); } } }); for (let i=0; i<hogs.length; i++){ hogs[i].sort();} hogs.sort((x, y) => { let diff = x.length - y.length; if (diff !== 0) return diff; return Math.min(x) - Math.min(y); }); return hogs; }; describe('consistencey of per_species if loaded via augmented or spec conform orthoxml', () => { it('family p53 Aug 2020 release', () => { var sptree = fs.readFileSync(__dirname + "/augmented_vs_specconform/speciestree.phyloxml").toString(); var spec_xml = fs.readFileSync(__dirname + '/augmented_vs_specconform/spec_p53.orthoxml'); var spec_data = parse_orthoxml(sptree, spec_xml); var augm_xml = fs.readFileSync(__dirname + '/augmented_vs_specconform/augmented_p53.orthoxml'); var augm_data = parse_orthoxml(sptree, augm_xml, {augmented: true}); expect(spec_data.tree).to.eql(augm_data.tree); var levels = Object.keys(tree_utils.extractParentRelations(spec_data.tree)); levels.forEach(function(lev){ let spec_ = get_hogs_at_level_from_per_species(spec_data.per_species, lev); let augm_ = get_hogs_at_level_from_per_species(augm_data.per_species, lev); expect(spec_).to.eql(augm_); console.log("maches for "+lev+": len["+ spec_.map(x=>x.length)+"] vs len["+ augm_.map(x=>x.length)+"]"); }); //expect(spec_data.per_species).to.eql(augm_data.per_species); }) });