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

Some phy.nex files have negative branch lengths #70

Open
mmore500 opened this issue Mar 21, 2024 · 3 comments
Open

Some phy.nex files have negative branch lengths #70

mmore500 opened this issue Mar 21, 2024 · 3 comments

Comments

@mmore500
Copy link
Contributor

mmore500 commented Mar 21, 2024

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.

mmore500 added a commit to mmore500/hstrat-evolutionary-inference that referenced this issue Mar 21, 2024
@mmore500
Copy link
Contributor Author

In case it's useful, here's a visualization of the buggy tree above
tree (1)

@benj919
Copy link
Collaborator

benj919 commented Mar 22, 2024

Hi @mmore500

Thanks for reporting this 👋

I made an attempt at fixing this in #63 back in November last year, though checking the commit it looks like everything made it into the commit but the actual fix 🤦‍♂️

I attached the untested patch file (remove the .txt 🤦‍♂️ ). 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 👋

@mmore500
Copy link
Contributor Author

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!

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

2 participants