R-package
R-package copied to clipboard
Some `phy.nex` files have negative branch lengths
This problem is encountered using gen3sis v1.5.11
Here is an example where negative branch length -1 appears.
phy.nex
:
#NEXUS
begin trees;
Tree tree = (((((((((((((((((((((((((((species1:0,species326:0):0,species325:0):0,species324:0):0,species323:0):0,species322:0):2,(species194:1,species312:1):1):0,species193:2):1,((species152:2,species232:2):0,species231:0):1):0,species151:3):2,(species102:0,species398:0):5):0,(species101:0,species397:0):5):1,((species77:1,species278:1):3,(((species145:0,species409:0):0,species408:0):1,species295:1):3):2):1,((species60:4,(((species144:1,(species294:0,species447:0):1):0,species293:1):0,species292:1):3):0,species143:4):3):0,species59:7):1,species53:8):0,(species52:1,(species274:0,species443:0):1):7):8,(((((((species15:0,species341:0):0,species340:0):0,species339:0):1,species257:1):0,species256:1):1,((species206:0,species430:0):1,species313:1):1):7,((species46:4,species141:4):0,(species140:0,species407:0):4):5):7):2,(species14:6,((species86:0,species381:0):5,(species117:1,(species285:0,species445:0):1):4):1):12):12,((((((((((((species10:0,species331:0):0,species330:0):1,species249:1):0,species248:0):1,species202:2):0,species201:2):3,(species105:4,(species149:2,species230:2):2):1):4,species45:9):2,((species35:3,species176:3):2,((species113:0,species402:0):0,species401:0):5):6):1,((((((((species31:0,species352:0):0,species351:0):3,((species174:1,species305:1):0,(species304:0,species448:0):1):2):0,(species173:0,species419:0):3):1,species137:4):1,(species112:0,species400:0):5):1,((species95:0,species396:0):2,(species223:0,species433:0):2):4):1,((species74:0,species374:0):0,species373:0):7):5):1,((((species25:1,species262:1):5,(species89:3,species190:3):3):1,species71:7):1,((species56:3,species182:3):1,species142:4):4):5):1,((((((((species23:0,species347:0):0,species346:0):0,species345:0):1,species260:1):0,species259:1):1,species211:2):3,species110:5):2,species69:7):7):16):0,(((((((((species9:0,species329:0):1,species247:1):1,species200:2):1,species161:3):1,((species130:1,species291:1):1,species229:2):2):0,(species129:1,species290:1):3):2,((species83:5,(species116:0,species404:0):5):0,((species115:0,species403:0):4,(species150:0,species410:0):4):1):1):1,(species66:0,species369:0):7):2,(species44:3,(((((species180:0,species420:0):1,species311:1):0,(species310:0,species449:0):1):1,species239:2):0,species238:2):1):6):21):0,((((((((((species8:1,species246:1):0,species245:1):1,species199:2):1,(((species160:0,species417:0):0,species416:0):1,species299:1):2):0,species159:2):1,species128:4):1,species104:5):5,((((species38:0,species356:0):1,species269:1):2,species177:3):6,((((((species50:0,species363:0):1,species273:0):1,(species220:0,species432:0):2):0,(species219:0,species431:0):2):4,(species99:2,((species225:1,species321:1):0,species320:1):1):4):0,species98:6):3):1):2,(((((species30:0,species350:0):1,species265:1):1,(species215:1,species316:1):1):6,(species57:1,species275:1):7):2,species42:10):2):1,(((((species24:0,species348:0):1,species261:1):3,species135:4):3,species70:7):3,((species41:0,species359:0):2,species216:2):8):3):17):0,(((((((((species7:1,species244:1):2,(species158:0,species415:0):3):0,species157:3):0,species156:3):1,species127:4):3,(species65:3,species183:3):4):0,species64:7):3,(((species37:1,species268:1):0,(species267:0,species442:0):1):0,species266:1):9):2,((((species29:1,species264:1):1,species214:2):4,((species94:1,species282:1):1,species222:2):4):0,(((((species93:0,species395:0):0,species394:0):0,species393:0):0,species392:0):4,species148:4):2):6):18):0,(((((((((species6:0,species328:0):0,species327:0):1,species243:1):3,species126:4):3,species63:7):0,species62:7):0,(species61:1,species277:1):6):3,species36:10):4,(((((species22:1,species258:1):1,(species210:1,species315:1):1):0,species209:2):1,species170:3):3,(((((species88:0,species387:0):0,species386:0):0,species385:0):0,species384:0):0,species383:0):6):8):16):0,(((((((((species5:1,species242:1):0,species241:1):3,species125:4):1,species103:5):1,((species82:0,species378:0):0,species377:0):6):8,((((((species21:3,species169:3):3,(((((((species87:0,species382:0):3,(species189:0,species426:0):3):0,species188:3):0,((((species187:0,species425:0):0,species424:0):0,species423:0):2,species240:2):1):2,(species120:1,species286:1):4):0,species119:0):0,(species118:0,species405:0):5):1):3,(((species49:0,species362:0):0,species361:0):1,species272:1):8):0,species48:9):1,((((species40:0,species358:0):4,(species138:0,species406:0):4):2,((species96:1,(species283:0,species444:0):1):1,(((species224:1,species319:1):0,species318:1):0,species317:1):1):4):3,((species51:0,species364:0):7,(species75:0,species375:0):7):2):1):2,((((species34:0,species355:0):0,species354:0):0,species353:0):8,((species58:0,species368:0):1,species276:1):7):4):2):1,(((((species18:0,species342:0):2,(species207:1,species314:1):1):1,((species168:1,species303:1):0,species302:1):2):0,species167:3):2,((species108:2,species227:2):0,(((species226:0,species436:0):0,species435:0):0,species434:0):2):3):10):0,(((((species17:3,(species166:0,species418:0):3):0,(species165:2,species236:2):1):2,((species107:-1,species399:0):1,species284:1):4):2,((species67:0,species371:0):0,species370:0):7):1,((species54:0,species366:0):0,species365:0):8):7):5,((((((((species13:0,species338:0):1,species255:1):0,species254:1):0,species253:1):2,(((species164:1,species301:1):0,species300:1):1,species235:2):1):1,species133:4):0,species132:4):2,((species85:0,species380:0):4,(species146:3,(species191:0,species427:0):3):1):2):14):10):0,((((((species4:2,species198:2):0,species197:2):0,species196:2):1,(species155:0,species414:0):3):0,(species154:1,species298:1):2):13,((species16:9,(((species47:2,species218:0):0,species217:2):1,species181:3):6):1,(species39:0,species357:0):10):6):14):0,(((((((((species3:3,((((((species153:0,species413:0):0,species412:0):0,species411:0):1,species297:1):0,species296:1):1,species233:2):1):1,species124:4):2,((species81:0,species376:0):3,(species186:0,species422:0):3):3):0,(((species80:1,species280:1):0,species279:1):2,species185:3):3):0,species79:6):0,species78:6):6,(((species28:0,species349:0):2,species213:2):2,species136:4):8):0,((((species27:6,((((species92:0,species391:0):0,species390:0):0,species389:0):0,species388:0):6):0,(species91:4,(species147:3,(species192:0,species428:0):3):1):2):0,(species90:1,species281:1):5):1,species73:7):5):2,(((species20:0,species344:0):0,species343:0):2,species208:2):12):16):0,(((((((species2:2,(species195:0,species429:0):2):2,species123:4):5,(((((((species43:0,species360:0):1,species271:1):0,species270:1):2,species179:0):0,(((((species178:1,species309:1):0,species308:1):0,species307:1):0,species306:1):1,(species237:0,species438:0):2):1):1,species139:4):2,((species97:5,(species122:2,(species228:0,species437:0):2):3):0,(((species121:1,(species289:0,species446:0):1):0,species288:0):0,species287:1):4):1):3):3,((((((species26:1,species263:1):1,species212:2):1,species172:3):0,species171:3):2,species111:5):2,(species72:2,species221:2):5):5):2,((((species19:4,species134:4):1,species109:5):2,(species68:0,species372:0):7):1,((((species55:0,species367:0):5,species114:5):1,species100:6):1,(species76:3,(species184:0,species421:0):3):4):1):6):7,((((((((((((species12:0,species337:0):0,species336:0):0,species335:0):0,species334:0):1,(species252:0,species441:0):1):1,species205:2):0,species204:2):1,species163:3):0,(species162:2,species234:2):1):1,species131:4):1,species106:5):1,(species84:0,species379:0):6):15):3,(((((((species11:0,species333:0):0,species332:0):1,species251:1):0,((species250:0,species440:0):0,species439:0):1):1,species203:2):10,(species33:3,species175:3):9):0,species32:12):12):6):0;
end;
[!Tree generated with the gen3sis R package, following convention of TreeSim and TreeSimGM r-packages]
To reproduce,
git clone https://github.com/mmore500/hstrat-evolutionary-inference
cd hstrat-evolutionary-inference/pipeline-gen3sis/materials
git checkout 05e1b6fe8b3e027694fe49f1c23b50767b668b6e
RNG_SEED=32 TREATMENT=ecology ./run_simulation.sh
The landscape files will auto-build which may take 5 minutes.
The affected phy.nex
file can then be found at data/treatment=ecology+seed=32/ecology/phy.nex
.
Note that you will need singularity (i.e., HPC-friendly Docker) installed. This may installed on Linux via Nix as follows
curl -L https://nixos.org/nix/install | sh -s -- --daemon
nix-env -iA nixpkgs.singularity
Note that this problem is likely affecting all gen3sis users because gen3sis inside the container is installed via CRAN, not a local version of the R package source.
In case it's useful, here's a visualization of the buggy tree above
Hi @mmore500
Thanks for reporting this :wave:
I made an attempt at fixing this in https://github.com/project-gen3sis/R-package/issues/63 back in November last year, though checking the commit it looks like everything made it into the commit but the actual fix :man_facepalming:
I attached the untested patch file (remove the .txt :man_facepalming: ). There is one (breaking) side effect: Species that survive the simulation will have an extinction time of -1 (assuming 0 is the last time step). This actually introduces a direct distinction between species dying in the last time step, and those surviving the simulation without having to check the number of species alive or if a given species lives on more than 0 cells.
fix_extinction_times.patch.txt
Does that work for a quick fix to test or do you need a branch/commit to pull from immediately?
cheers :wave:
Ah! Good to know. Fortunately, this issues isn't a problem for my use case, especially because it seems unlikely there's a larger underlying issue. So feel free to patch when convenient :)
Thanks for the quick follow up!