@euphrasiologist/lwphylo 1.1.5 → 1.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +0,0 @@
1
- // https://github.com/Euphrasiologist/lwPhylo#readme v1.1.5 Copyright 2021 Max Brown
2
- !function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n=n||self).lwphylo=n.lwphylo||{})}(this,(function(n){"use strict";const t={circular:()=>{var n,t,r=200,e=2,a=[0,0],i={};function l(e){var l=i.xscale(e.x)-a[0],h=i.yscale(e.y)-a[1],s=Math.sqrt(l*l+h*h);if(!s||s>=r)return{x:i.xscale(e.x),y:i.yscale(e.y),z:s>=r?1:10};var d=n*(1-Math.exp(-s*t))/s*.75+.25;return{x:a[0]+l*d,y:a[1]+h*d,z:Math.min(d,10)}}function h(){return n=(n=Math.exp(e))/(n-1)*r,t=e/r,l}return l.radius=function(n){return arguments.length?(r=+n,h()):r},l.distortion=function(n){return arguments.length?(e=+n,h()):e},l.focus=function(n){return arguments.length?(a=n,l):a},l.scales=function(n,t){return arguments.length?(i={xscale:n,yscale:t},l):i},h()}};function r(n,t,r,e){return{x:n+r*Math.cos(e),y:t+r*Math.sin(e)}}function e(n,t=!0){var r=[];for(const t of function n(t,r=[]){r.push(t);for(var e=0;e<t.children.length;e++)r=n(t.children[e],r);return r}(n))null===t.parent?r.push({parentId:null,parentLabel:null,thisId:t.id,thisLabel:t.label,children:t.children.map(n=>n.id),branchLength:0,isTip:!1,x:t.x,y:t.y,angle:t.angle}):r.push({parentId:t.parent.id,parentLabel:t.parent.label,thisId:t.id,thisLabel:t.label,children:t.children.map(n=>n.id),branchLength:t.branchLength,isTip:0==t.children.length,x:t.x,y:t.y,angle:t.angle});return t&&(r=r.sort((function(n,t){return n.thisId-t.thisId}))),r}function a(n){var t=0;for(const r of function(n){for(var t,r=[n],e=[];r.length>0;){t=r.pop(),e.push(t);for(const n of t.children)r.push(n)}return e}(n))0==r.children.length&&t++;return t}function i(n,t){let r=0,e=0;if(void 0===t)for(let t of n)null!=t&&(t=+t)>=t&&(++r,e+=t);else{let a=-1;for(let i of n)null!=(i=t(i,++a,n))&&(i=+i)>=i&&(++r,e+=i)}if(r)return e/r}function l(n){var t=e(n),r=a(n),l=1;for(let n=0;n<t.length;n++)1==t[n].isTip&&(t[n].angle=l/r*2*Math.PI,l+=1);function h(n,r){for(var e=0;e<t.length;e++){if(t[e].thisId===n)var a=t[e].angle;if(t[e].thisId===r)var l=t[e].angle}return i([a,l])}for(let n=0;n<t.length;n++)!1===t[n].isTip&&(t[n].angle=h(t[n].children[0],t[n].children[1]));var s=t.map(n=>null===n.parentId?n.thisId:null).filter(n=>null!=n)[0];function d(n){for(var r=0;r<t.length;r++)if(t[r].thisId===n)var e=t[r].r;return e}t.sort((n,t)=>t.thisId-n.thisId);for(let n=0;n<t.length;n++)if(t[n].parentId===s)!0===t[n].isTip?(t[n].r=t[n].branchLength,t[n].x=t[n].branchLength,t[n].y=0):(t[n].r=t[n].branchLength,t[n].x=t[n].branchLength*Math.cos(t[n].angle),t[n].y=t[n].branchLength*Math.sin(t[n].angle));else{var o=d(t[n].parentId);t[n].r=o+t[n].branchLength,t[n].x=(o+t[n].branchLength)*Math.cos(t[n].angle),t[n].y=(o+t[n].branchLength)*Math.sin(t[n].angle)}return t[0].r=0,t[0].x=0,t[0].y=0,t}function h(n,t){const r=Math.cos(n),e=Math.sin(n);return(a=Math.atan2(..."X"===t?[e,-r]:[-e,r])).toString().includes("3.1415")&&(a=Math.abs(a)),a;var a}function s(n){var t=e(n);t.map(n=>n.y=null);var r=1;for(let n=0;n<t.length;n++)!0===t[n].isTip&&(t[n].y0=r,t[n].y1=r,r+=1);function a(n,r){for(var e=0;e<t.length;e++){if(t[e].thisId===n)var a=t[e].y0;if(t[e].thisId===r)var l=t[e].y0}return i([a,l])}for(let n=0;n<t.length;n++)!1===t[n].isTip&&(t[n].y0=a(t[n].children[0],t[n].children[1]),t[n].y1=a(t[n].children[0],t[n].children[1]));var l=t.map(n=>null===n.parentId?n.thisId:null).filter(n=>null!=n)[0];function h(n){for(var r=0;r<t.length;r++)if(t[r].thisId===n)var e=t[r].x1;return e}t.sort((n,t)=>t.thisId-n.thisId);for(let n=0;n<t.length;n++)if(t[n].parentId===l)t[n].x0=0,t[n].x1=t[n].branchLength;else{var s=h(t[n].parentId);t[n].x0=s,t[n].x1=s+t[n].branchLength}return t.sort((n,t)=>n.thisId-t.thisId),t.map(({y:n,x:t,angle:r,...e})=>e)}n.describeArc=function(n,t,e,a,i){var l=r(n,t,e,a),h=r(n,t,e,i);return["M",l.x,l.y,"A",e,e,0,0,0,h.x,h.y].join(" ")},n.parentFisheye=function(n,t){for(let r=0;r<t.length;r++)if(n.parentId===t[r].thisId)return{px:t[r].fisheye.x,py:t[r].fisheye.y}},n.phisheye=t,n.radialLayout=function(n){var t={};return t.data=l(n),t.radii=function(n){var t=l(n);function r(n){for(var r=0;r<t.length;r++)if(t[r].thisId===n.parentId)var e=t[r].r;return e}for(var e=[],a=t.map(n=>null===n.parentId?n.thisId:null).filter(n=>null!=n)[0],i=0;i<t.length;i++)t[i].thisId!==a&&e.push({thisId:t[i].thisId,thisLabel:t[i].thisLabel,x0:t[i].x,x1:r(t[i])*Math.cos(t[i].angle),y0:t[i].y,y1:r(t[i])*Math.sin(t[i].angle),isTip:t[i].isTip});return e}(n),t.arcs=function(n){var t=[],r=n.map(n=>null===n.parentId?n.thisId:null).filter(n=>null!=n)[0];function e(t){for(var r=0;r<n.length;r++)if(n[r].parentId===t)var e=n[r].angle;return e}function a(t){for(var r=0;r<n.length;r++)if(n[r].thisId===t)var e=n[r].r;return e}for(let i=0;i<n.length;i++)n[i].thisId!==r&&t.push({start:h(Math.min(n[i].angle,e(n[i].parentId)),"Y"),end:h(Math.max(n[i].angle,e(n[i].parentId)),"Y"),radius:a(n[i].parentId),thisId:n[i].thisId,parentId:n[i].parentId});for(let n=0;n<t.length;n++)Math.sign(t[n].start)!==Math.sign(t[n].end)&&(t[n].end=Math.abs(t[n].end),t[n].start=-Math.abs(t[n].start));return t.filter(n=>n.start!==n.end&0!==n.radius)}(t.data),t},n.readTree=function(n){var t=(n=n.replace(/ \t/g,"")).split(/(;|\(|\)|,)/),r={parent:null,children:[]},e=r,a=0;for(const n of t)if(""!=n&&";"!=n)if("("==n){let n={parent:e,children:[]};e.children.push(n),e=n}else if(","==n){let n={parent:e=e.parent,children:[]};e.children.push(n),e=n}else if(")"==n){if(null===(e=e.parent))break}else{var i=n.split(":");1==i.length?n.startsWith(":")?(e.label="",e.branchLength=parseFloat(i[0])):(e.label=i[0],e.branchLength=null):2==i.length?(e.label=i[0],e.branchLength=parseFloat(i[1])):console.warn(n,"I don't know what to do with two colons!"),e.id=a++}return e.id=a,r},n.rectangleLayout=function(n){var t={};return t.data=s(n),t.vertical_lines=function(n){var t=s(n);function r(n){for(var r=0;r<t.length;r++)if(t[r].parentId===n.parentId)var e=Math.abs(t[r].y0-n.y0);return e}for(var e=[],a=t.map(n=>null===n.parentId?n.thisId:null).filter(n=>null!=n)[0],i=0;i<t.length;i++)t[i].thisId!==a&&e.push({thisId:t[i].thisId,x0:t[i].x0,x1:t[i].x0,y0:t[i].y0,y1:t[i].y0+r(t[i]),heights:r(t[i])});return e}(n),t},n.subTree=function(n,t){let r={};n.data.forEach(n=>{r[n.thisId]={...n}});let e={};const a=function(n){r[n]&&(e[n]=r[n],r[n].children&&r[n].children.forEach(n=>{a(n)}))};a(t);const i=[["data",Object.values(e)]],l=i[0][1].map(n=>n.thisId);var h=[];for(const t in n)"data"!==t&&h.push([t,n[t]]);var s=h.map(n=>[n[0],n[1].filter(n=>l.includes(n.thisId))]);return Object.fromEntries(i.concat(s))},n.unrooted=function(n){var t={},r=e(function n(t){null===t.parent&&(t.start=0,t.end=2,t.angle=0,t.ntips=a(t),t.x=0,t.y=0);for(var r,e,i=t.start,l=0;l<t.children.length;l++)(r=t.children[l]).ntips=a(r),e=(t.end-t.start)*r.ntips/t.ntips,r.start=i,r.end=r.start+e,r.angle=r.start+(r.end-r.start)/2,i=r.end,r.x=t.x+r.branchLength*Math.sin(r.angle*Math.PI),r.y=t.y+r.branchLength*Math.cos(r.angle*Math.PI),n(r);return t}(n));return t.data=r,t.edges=function(n,t=!1){var r,e=[];n.sort((function(n,t){return n.thisId-t.thisId}));for(const h of n)if(null!==h.parentId&&null!=(r=n[h.parentId]))if(t){var a={x1:h.x,y1:h.y,id1:h.thisId,x2:r.x,y2:h.y,id2:void 0};e.push(a);var i={x1:r.x,y1:h.y,id1:void 0,x2:r.x,y2:r.y,id2:h.parentId};e.push(i)}else{var l={x1:h.x,y1:h.y,id1:h.thisId,x2:r.x,y2:r.y,id2:h.parentId};e.push(l)}return e}(r),t},Object.defineProperty(n,"__esModule",{value:!0})}));