milaboratory / mixcr

MiXCR is an ultimate software platform for analysis of Next-Generation Sequencing (NGS) data for immune profiling.

Home Page:https://mixcr.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Issue when running mixcr exportPlots shmTrees

laumonstre opened this issue · comments

Hi,

I am using MiXCR 4.6.0 and adapted this tutorial to build lineage trees from bulk BCR-seq data without UMIs (https://mixcr.com/mixcr/guides/ig-trees-reconstruction/). All the commands worked except the last one, which exports lineage trees in a graphical format.

Here is the command I ran to obtain a plot for one of the trees:
mixcr exportPlots shmTrees -m /project/6002257/claumont/tilb/scripts/metadata/metadata.tsv --ids 1 --chains IGH --verbose /project/6002257/claumont/tilb/res/test1_vdj_wtree/trees/2_Om1.shmt /project/6002257/claumont/tilb/res/test1_vdj_wtree/figs/2_Om1_shm_trees.pdf

Here is the error I got (instead of the expected lineage tree plot):

Version: 4.6.0; built=Sat Dec 09 11:48:42 PST 2023; rev=c9fafa41fe; lib=repseqio.v4.0
OS: Linux
Java: 11.0.16
Cmd args: exportPlots shmTrees -m /project/6002257/claumont/tilb/scripts/metadata/metadata.tsv --ids 1 --chains IGH --verbose /project/6002257/claumont/tilb/res/test1_vdj_wtree/trees/2_Om1.shmt /project/6002257/claumont/tilb/res/test1_vdj_wtree/figs/2_Om1_shm_trees.pdf
picocli.CommandLine$ExecutionException: Error while running command shmTrees java.lang.RuntimeException: Duplicate library: repseqio.v4.0_with_found_alleles:9606
        at com.milaboratory.mixcr.cli.Main.registerExceptionHandlers$lambda-12(SourceFile:395)
        at picocli.CommandLine.execute(CommandLine.java:2088)
        at com.milaboratory.mixcr.cli.Main.main(SourceFile:101)
Caused by: java.lang.RuntimeException: Duplicate library: repseqio.v4.0_with_found_alleles:9606
        at com.milaboratory.o.Gk.a(SourceFile:479)
        at com.milaboratory.o.Bb.<init>(SourceFile:126)
        at com.milaboratory.o.Bb.<init>(SourceFile:56)
        at com.milaboratory.o.wg.a(SourceFile:146)
        at com.milaboratory.o.wg.invoke(SourceFile:145)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at com.milaboratory.mixcr.cli.CommandExportShmTreesPlots.run1(SourceFile:1145)
        at com.milaboratory.mixcr.cli.MiXCRCommandWithOutputs.run0(SourceFile:69)
        at com.milaboratory.mixcr.cli.MiXCRCommand.run(SourceFile:37)
        at picocli.CommandLine.executeUserObject(CommandLine.java:1939)
        at picocli.CommandLine.access$1300(CommandLine.java:145)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
        at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
        at com.milaboratory.mixcr.cli.Main.registerLogger$lambda-27(SourceFile:514)
        at picocli.CommandLine.execute(CommandLine.java:2078)
        ... 1 more

I am not sure how to interpret this error nor what to do about it! Any guidance appreciated, thanks!

Hi,
It seems like a known bug that we have already fixed in the develop version. Can you please try and let me know if it helped.

Hi,

Thanks so much for your prompt reply! When using the develop version, I initially got the following error:

App version: 4.6.0-50-develop; built=Tue Jan 30 05:44:49 PST 2024; rev=b5ebb71cb7; lib=repseqio.v4.0
java.awt.AWTError: Can't connect to X11 window server using 'localhost:46.0' as the value of the DISPLAY variable.
        at java.desktop/sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
        at java.desktop/sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:102)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at java.desktop/sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:61)
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:315)
        at java.desktop/java.awt.GraphicsEnvironment$LocalGE.createGE(GraphicsEnvironment.java:101)
        at java.desktop/java.awt.GraphicsEnvironment$LocalGE.<clinit>(GraphicsEnvironment.java:83)
        at java.desktop/java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:129)
        at java.desktop/java.awt.image.BufferedImage.createGraphics(BufferedImage.java:1181)
        at org.apache.fop.svg.PDFGraphics2D.<init>(PDFGraphics2D.java:1724)
        at org.apache.fop.svg.PDFDocumentGraphics2D.<init>(PDFDocumentGraphics2D.java:100)
        at org.apache.fop.svg.PDFTranscoder.transcode(PDFTranscoder.java:112)
        at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
        at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:158)
        at com.milaboratory.miplots.ExportKt.toBytes(Export.kt:165)
        at com.milaboratory.miplots.ExportKt.toPDF(Export.kt:56)
        at com.milaboratory.miplots.ExportKt.toPDF(Export.kt:54)
        at com.milaboratory.miplots.ExportKt.writePDFFigure(Export.kt:198)
        at com.milaboratory.mixcr.cli.CommandExportShmTreesPlots.run1(SourceFile:163)
        at com.milaboratory.mixcr.cli.MiXCRCommandWithOutputs.run0(SourceFile:69)
        at com.milaboratory.mixcr.cli.MiXCRCommand.run(SourceFile:37)
        at picocli.CommandLine.executeUserObject(CommandLine.java:1939)
        at picocli.CommandLine.access$1300(CommandLine.java:145)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
        at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
        at com.milaboratory.mixcr.cli.Main.registerLogger$lambda-27(SourceFile:514)
        at picocli.CommandLine.execute(CommandLine.java:2078)
        at com.milaboratory.mixcr.cli.Main.main(SourceFile:101)

At the beginning of my bash run script, I added the following line:
unset DISPLAY
And, it now seems to be working! I've got trees! Let me know if you have an alternative solution though :)

Thanks again!

You did everything right. The error occurred due to you system configurations, not MiXCR. You did the right thing to fix it with unset DISPLAY. MiXCR uses this systems dependencies for plots generation.