Giter VIP home page Giter VIP logo

lichee's People

Contributors

viq854 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

lichee's Issues

No valid tree found

Hi,

I have WGS with a lot of SNVs called for example, for one patient I have 47000 SNVs called for 4 samples and another patient had 240,000 SNVs called for 12 patients. As the SNVs were already called in my data I am using the form (where S_i=0 if the SNV is not called in this sample and S_i=VAF if it is called)

#chr    position    description    profile        Normal    S1    S2    S3    S4      
1       184306474                   00111          0         0   0.2   0.25  0.15    

Unfortunately after running it with:
./lichee -build -i Lichee_inputs_Patient_J.txt -sampleProfile -n 0 -showTree 1
I got a "no valid tree was found". I am trying to change several of the option to see if I can get something but I was wondering if you had any advice?
My first thoughts would be to increase the error margin -e to 0.2, 0.3 etc., what would be the maximum value you would advise me to take for the error?
The second thought would be to change -maxClusterDist to 0.3, 0.35 etc.?

Other things I could change?

Thank you for your help!

-maxVAFValid?

Hi,

I don't really understand why you put this option. Why are you filtering SSNVs where at least one sample has a VAF>0.6? I cannot find any explanations in the paper and I also looked at the supplementary about the datasets and you didn't put anything about filtering VAF>0.6. Maybe I missed it?

Thank you,
Laurence

Extracting clonal genotypes

Dear Victoria,

Is there a simple way to extract the genotypes of the clones inferred by Lichee?
While the output (*trees.txt) contains which mutations occur at which clone (and the samples at which each clone is present), I was wondering if there's an option to get the actual clonal genotypes (e.g., Clone 1: AGCGGTCAAGGGACG.., etc).

Thank you very much in advance.
Joao

Installation instructions

Hi,

Is there any description of installation instruction or constraints regarding Java environment configuration? I could not find any in the README.

Many thanks.

Carla

color code explaination

Hi,

I understand that color coding in the pdf generated shows relative contribution of clones but what does the white part mean, does it have any relevance or Is it just placeholder for label ?

Cluster size constraint

Hi,

I've been trying to run LiCHeE and have gotten errors relating to cluster size constraint (please see below for example).

**Filtered due to cluster size constraint (0011011 size 1):
7 23509676 IGF2BP3 0 0 0.25806452 0.4 0 0.25 0.71428571
All clusters in group 0011011 have been filtered out. The group is now empty.
**Filtered due to cluster size constraint (0010101 size 1):
7 23508113 IGF2BP3 0 0 0.25 0 0.32758621 0 0.75

Do you have any suggestions on how to fix this? I've also tried changing the minClusterSize to 1, but still didn't get a valid tree.

Any help would appreciated! Thanks so much.

germline filtering?

Hello,

I'm trying lichee with the following command and tab-delimited input file (directory and sample names simplified).

./lichee -build -i ~/LICHeE/input.txt -n 0 -sampleProfile -o ~/LICHeE/S1

chr position description profile Normal S1

1 11855012 C/T 01 0 0.5
1 16362543 C/G 01 0 0.0714285714285714
1 16891149 T/C 01 0 0.2
1 16918605 A/C 01 0 0.115384615384615
1 17200050 G/C 01 0 0.5
1 27105541 G/A 01 0 0.189189189189189
...

I'm getting the following error message:

...
*_Filtered as germline:
21 11059912 C/T 01 0.0 0.1
*_Filtered as germline:
21 35172281 C/T 01 0.0 0.0465116279069767
*_Filtered as germline:
22 20304925 T/C 01 0.0 0.5
*_Filtered as germline:
22 20502333 G/A 01 0.0 0.142857142857143
**Filtered as germline:
22 20502354 C/T 01 0.0 0.131578947368421
...

There are 208 SNVs in the input file.
After pre-processing, the input consists of 0 somatic SNVs.

All SNV groups have been filtered out.

Can you help me resolve this? Thank you.

Best,
Soo

-minPrivateClusterSize error

Hi,
Thanks for your great tool!

When I set -minPrivateClusterSize 120 -minClusterSize 20 -cp, only minClusterSize works and all the clusters are larger than 20. Howerver, the -minPrivateClusterSize seems fails, and some private clusters are smaller than 120 such as node1 cluster.

Would you give me some help? The log is as follows:
--- PHYLOGENETIC CONSTRAINT GRAPH ---
numNodes = 29, numEdges = 50
NODES:
level = 8:
Node 0:
level = 7:
level = 6:
Node 3: group tag = 0111111, Size: 157
VAF Mean: [ 0.75 0.85 0.99 0.99 0.99 0.93 ]
Stdev: [ 0.19 0.14 0 0 0.01 0.02 ]
level = 5:
Node 4: group tag = 0101111, Size: 125
VAF Mean: [ 0.74 0.98 0.98 0.98 0.93 ]
Stdev: [ 0.18 0.07 0.07 0.08 0.05 ]
Node 7: group tag = 0011111, Size: 614
VAF Mean: [ 0.8 0.98 0.98 0.99 0.93 ]
Stdev: [ 0.19 0.02 0.05 0.03 0.02 ]
level = 4:
Node 8: group tag = 0011110, Size: 35
VAF Mean: [ 0.75 0.99 0.98 0.99 ]
Stdev: [ 0.19 0 0.02 0.01 ]
Node 11: group tag = 0001111, Size: 591
VAF Mean: [ 0.98 0.98 0.98 0.93 ]
Stdev: [ 0.07 0.06 0.07 0.03 ]
Node 26: group tag = 0011011, Size: 80
VAF Mean: [ 0.27 0.98 0.99 0.93 ]
Stdev: [ 0.21 0 0.01 0.01 ]
level = 3:
Node 5: group tag = 0011100, Size: 21
VAF Mean: [ 0.78 0.94 0.95 ]
Stdev: [ 0.21 0.17 0.16 ]
Node 6: group tag = 0001110, Size: 66
VAF Mean: [ 0.95 0.97 0.96 ]
Stdev: [ 0.12 0.1 0.1 ]
Node 21: group tag = 0001011, Size: 130
VAF Mean: [ 0.98 0.99 0.93 ]
Stdev: [ 0 0.01 0.01 ]
level = 2:
Node 9: group tag = 0010100, Size: 229
VAF Mean: [ 0.62 0.99 ]
Stdev: [ 0.23 0.01 ]
Node 10: group tag = 0010100, Size: 21
VAF Mean: [ 0.29 0.88 ]
Stdev: [ 0.14 0.16 ]
Node 22: group tag = 0001010, Size: 361
VAF Mean: [ 0.97 0.93 ]
Stdev: [ 0.05 0.14 ]
Node 27: group tag = 0010001, Size: 24
VAF Mean: [ 0.21 0.93 ]
Stdev: [ 0.14 0.02 ]
level = 1:
Node 1: group tag = 0000010, Size: 40
VAF Mean: [ 0.89 ]
Stdev: [ 0.11 ]
Node 2: group tag = 0000010, Size: 56
VAF Mean: [ 0.31 ]
Stdev: [ 0.06 ]
Node 12: group tag = 0000100, Size: 379
VAF Mean: [ 0.98 ]
Stdev: [ 0.02 ]
Node 13: group tag = 0000100, Size: 114
VAF Mean: [ 0.23 ]
Stdev: [ 0.01 ]
Node 14: group tag = 0000100, Size: 38
VAF Mean: [ 0.54 ]
Stdev: [ 0.2 ]
Node 15: group tag = 0001000, Size: 232
VAF Mean: [ 0.18 ]
Stdev: [ 0 ]
Node 16: group tag = 0001000, Size: 84
VAF Mean: [ 0.97 ]
Stdev: [ 0.03 ]
Node 17: group tag = 0100000, Size: 327
VAF Mean: [ 0.41 ]
Stdev: [ 0.06 ]
Node 18: group tag = 0100000, Size: 38
VAF Mean: [ 0.98 ]
Stdev: [ 0.02 ]
Node 19: group tag = 0100000, Size: 6494
VAF Mean: [ 0.16 ]
Stdev: [ 0.04 ]
Node 20: group tag = 0100000, Size: 384
VAF Mean: [ 0.68 ]
Stdev: [ 0.1 ]
Node 23: group tag = 0010000, Size: 6091
VAF Mean: [ 0.14 ]
Stdev: [ 0.03 ]
Node 24: group tag = 0010000, Size: 269
VAF Mean: [ 0.38 ]
Stdev: [ 0.07 ]
Node 25: group tag = 0010000, Size: 147
VAF Mean: [ 0.67 ]
Stdev: [ 0.11 ]
Node 28: group tag = 0000001, Size: 307
VAF Mean: [ 0.93 ]
Stdev: [ 0.01 ]
level = 0:
EDGES:
0 -> 3
0 -> 18
1 -> 2
3 -> 4
3 -> 7
4 -> 11
5 -> 9
5 -> 10
6 -> 22
7 -> 8
7 -> 11
7 -> 26
8 -> 5
8 -> 6
9 -> 10
9 -> 12
9 -> 13
9 -> 14
9 -> 23
9 -> 24
9 -> 25
10 -> 12
10 -> 13
10 -> 14
10 -> 23
10 -> 24
11 -> 6
11 -> 21
12 -> 13
12 -> 14
14 -> 13
16 -> 15
17 -> 19
18 -> 17
18 -> 19
18 -> 20
20 -> 17
20 -> 19
21 -> 22
22 -> 1
22 -> 2
22 -> 15
22 -> 16
24 -> 23
25 -> 23
25 -> 24
26 -> 21
26 -> 27
27 -> 23
27 -> 28

Found 0 valid tree(s)
Adjusting the network...
1000000
2000000
3000000
4000000
5000000
6000000
7000000
8000000
9000000
10000000
Found 0 valid trees after network adjustments

about discarding clusters

Hi, I want to understand more about how lichee discards the clusters while building a tree. In my setup I am using PyCloneVI for clonal deconvolution. I am providing both the cluster profile file and the snv file.

java -jar lichee.jar -build \
            -n 0 \
            -i {input.muts} \
            -clustersFile {input.clusters} \
            -sampleProfile \
            -o {output.out} \
            -v \
            -cp \
            -maxVAFAbsent 0.005 \
            -minVAFPresent 0.005 \
            -s 10

max and min VAF parameters may become irrelevant the way I run lichee but here is how I run it. I've also attached example input files for a sample. The run will have 3 clusters discarded.

According to the paper due to noise error margin being too narrow or misclassified binary profile, there can be cases with no valid lineage trees. And lichee starts discarding non-robust groups starting from the smallest nodes until it can build a tree. In my setup I am providing PyCloneVI clusters with at least 5 SNVs assigned. What is "non-robust" when a setup like I have is used? is there a way to attempt to get trees discarding random non-robust nodes instead of the smallest first? Would you have a suggestion to reduce the amount of trees discareded?

Thanks very much

for_lichee_from_pyclonevi_nomaxcluster_CP_CRUK0018_beta-binomial_snvs_vaf005.input.txt
for_lichee_from_pyclonevi_nomaxcluster_CP_CRUK0018_beta-binomial_clusters_vaf005.input.txt
.

Java class errors when trying to visualise

I'm trying to run the visualisation on a set of variants and get the following java error:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:398)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.ParseException
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 3 more

This doesn't happen when I don't want visualisation as the output is purely a text file.

I have checked that all my java packages and libraries are updated (ubuntu 20.04).

Issue java.lang.ClassNotFoundException: org.apache.commons.cli.ParseException

Using the example, I'm getting a bit of an odd java error that popped up just this morning. I previously had used the program successfully. Here's an example using test data:

bash-4.2$ ./lichee -build -i ../data/ccRCC/RMH008.txt -maxVAFAbsent 0.005 -minVAFPresent 0.005 -n 0 -minPrivateClusterSize 2 -showTree 1 -color -dot
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException
        at java.base/java.lang.Class.forName0(Native Method)
        at java.base/java.lang.Class.forName(Class.java:467)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.ParseException
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
        ... 3 more
bash-4.2$ ls -l ../data/ccRCC/RMH008.txt
-rw-r--r-- 1 dalgleishjl CCRBioinfo 6297 Dec 23 22:24 ../data/ccRCC/RMH008.txt

java.lang.UnsatisfiedLinkError

I'm getting an odd java error. I previously had used the program successfully.

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.UnsatisfiedLinkError: ../jdk1.8.0_321/jre/lib/amd64/libawt_xawt.so: libXtst.so.6: cannot open shared object file: No such file or directory
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1934)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1817)
        at java.lang.Runtime.load0(Runtime.java:810)
        at java.lang.System.load(System.java:1086)
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1934)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1838)
        at java.lang.Runtime.loadLibrary0(Runtime.java:871)
        at java.lang.System.loadLibrary(System.java:1122)
        at java.awt.Toolkit$3.run(Toolkit.java:1636)
        at java.awt.Toolkit$3.run(Toolkit.java:1634)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.awt.Toolkit.loadLibraries(Toolkit.java:1633)
        at java.awt.Toolkit.<clinit>(Toolkit.java:1670)
        at java.awt.Font.<clinit>(Font.java:246)
        at util.LineageDisplayConfig.<clinit>(LineageDisplayConfig.java:90)
        at lineage.LineageEngine.buildLineage(LineageEngine.java:143)
        at lineage.LineageEngine.main(LineageEngine.java:396)
        ... 5 more

Interpret the output figure

Hi,

Could you let me know the meaning of the numbers beside arrows in the output pdf figure? Is that the percentage of sample explained by the linked subclones?

Also, how did you sectioned the sample in the output? How do I interpret the horizontal/vertical lines in the sample boxes? Thanks.

Best,
J.

Output interpretation

Hello,

Can you please help me interpreting the output of LICHeE? I'm seeing the following result, with 0.41 and 0.1 for two subclones, when I gave an input of VAF values of two samples (one normal and one tumor). My VAF histogram for the tumor sample has two peaks, around 0.1 and 0.41 each. I was thinking the second was is probably the clonal and the first one is a subclone. The cellular prevalence would be 20% and 82%, considering that the mutations are heterozygous (the 82% also indicating purity in this case). Would it be correct if I see the 0.1 and 0.41 as mean VAF estimates rather than CP estimates (with the numbers in bracket as standard errors)?

Sample decomposition:
Normal:
GL

Tumor:
GL
01: 0.41 [0.09]
01: 0.1 [0.03]

Thank you in advance..

Best,
Soo

error in visualization

Thank you for your useful tool !
I used CP as input and found 2 valid trees, but I have trouble in visualization.The log is as follows. Can you help me? Thanks!

Found 2 valid tree(s)
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.awt.HeadlessException
at sun.awt.HeadlessToolkit.getScreenResolution(HeadlessToolkit.java:226)
at util.LineageDisplayConfig.node2DOT(LineageDisplayConfig.java:262)
at util.LineageDisplayConfig.toDOT(LineageDisplayConfig.java:286)
at lineage.LineageEngine.buildLineage(LineageEngine.java:149)
at lineage.LineageEngine.main(LineageEngine.java:396)
... 5 more

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.