From f2b5d9e1b7489a6a9bd71d7a95815f8ab9d9614f Mon Sep 17 00:00:00 2001 From: efischer Date: Sun, 20 Feb 2022 11:58:12 -0600 Subject: [PATCH] Rename and update readme --- ...CellSim_jar.xml => BiGpairSEQ_Sim_jar.xml} | 8 ++--- .idea/compiler.xml | 2 +- .../BiGpairSEQ_Sim.jar} | Bin 1578806 -> 1579296 bytes out/artifacts/BiGpairSEQ_Sim_jar/readme.md | 32 ++++++++++++++++++ out/artifacts/TCellSim_jar/readme.md | 7 ---- src/main/java/Plate.java | 1 + src/main/java/UserInterface.java | 17 ++++++++-- 7 files changed, 52 insertions(+), 15 deletions(-) rename .idea/artifacts/{TCellSim_jar.xml => BiGpairSEQ_Sim_jar.xml} (77%) rename out/artifacts/{TCellSim_jar/TCellSim.jar => BiGpairSEQ_Sim_jar/BiGpairSEQ_Sim.jar} (94%) create mode 100644 out/artifacts/BiGpairSEQ_Sim_jar/readme.md delete mode 100644 out/artifacts/TCellSim_jar/readme.md diff --git a/.idea/artifacts/TCellSim_jar.xml b/.idea/artifacts/BiGpairSEQ_Sim_jar.xml similarity index 77% rename from .idea/artifacts/TCellSim_jar.xml rename to .idea/artifacts/BiGpairSEQ_Sim_jar.xml index a083f93..6372f62 100644 --- a/.idea/artifacts/TCellSim_jar.xml +++ b/.idea/artifacts/BiGpairSEQ_Sim_jar.xml @@ -1,11 +1,11 @@ - - $PROJECT_DIR$/out/artifacts/TCellSim_jar - + + $PROJECT_DIR$/out/artifacts/BiGpairSEQ_Sim_jar + - + diff --git a/.idea/compiler.xml b/.idea/compiler.xml index c3728c7..13fb425 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -6,7 +6,7 @@ - + diff --git a/out/artifacts/TCellSim_jar/TCellSim.jar b/out/artifacts/BiGpairSEQ_Sim_jar/BiGpairSEQ_Sim.jar similarity index 94% rename from out/artifacts/TCellSim_jar/TCellSim.jar rename to out/artifacts/BiGpairSEQ_Sim_jar/BiGpairSEQ_Sim.jar index b83a18c84f8e16e98e8a4329049c7ad00ff54fa0..18913c878ab8f81a3aef05da3a0ef8f26eb17060 100644 GIT binary patch delta 28384 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 V#7_GasvUVsvf3&r$B56ue*tKSrcVF> delta 27959 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 diff --git a/out/artifacts/BiGpairSEQ_Sim_jar/readme.md b/out/artifacts/BiGpairSEQ_Sim_jar/readme.md new file mode 100644 index 0000000..31902f5 --- /dev/null +++ b/out/artifacts/BiGpairSEQ_Sim_jar/readme.md @@ -0,0 +1,32 @@ +BiGpairSEQ SIMULATOR + +ABOUT: +This program simulates BiGpairSEQ, a graph theory based adaptation +of the pairSEQ algorithm for pairing T cell receptor sequences. + +Unlike pairSEQ, which calculates p-values for every TCR alpha/beta overlap and compares +against a null distribution, BiGpairSEQ does not do any statistical calculations +directly. Instead, BiGpairSEQ creates a simple bipartite weighted graph representing the sample plate. +The distinct TCRA and TCRB sequences form the two sets of vertices. Every TCRA/TCRB pair that share a well +are connected by an edge, with the edge weight set to the number of wells in which both sequences appear. +(Sequences in all wells are filtered out prior to creating the graph, as there is no signal in their occupancy +The problem of pairing TCRA/TCRB sequences thus reduces to the "assignment problem" of finding a maximum weight +matching on a bipartite graph--the subset of vertex-disjoint edges whose weights sum to the maximum possible value. + +USAGE +Released as an executable .jar file with interactive, command line UI +Usage: java -jar BiGpairSEQ_Sim.jar + +Large cell sample or sample plate files may require large amounts of RAM. +It is often desirable to increase the JVM memory allocation with the -Xmx flag +For example, to run the program with 32 gigabytes of memory, use command: +java -Xmx32G -jar BiGpairSEQ_Sim.jar + +Requires Java11 or higher (Openjdk-17 recommended) + +pairSEQ citation: +Howie, B., Sherwood, A. M., et. al. +"High-throughput pairing of T cell receptor alpha and beta sequences." +Sci. Transl. Med. 7, 301ra131 (2015) + +Simulation by Eugene Fischer, 2021-2022 \ No newline at end of file diff --git a/out/artifacts/TCellSim_jar/readme.md b/out/artifacts/TCellSim_jar/readme.md deleted file mode 100644 index d929fd5..0000000 --- a/out/artifacts/TCellSim_jar/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -Executable .jar file with interactive, command line UI -Usage: java -jar TCellSim.jar -To increase memory allocation, use -Xmx flag. -For example, to give the program 20 gigabytes of memory: -java -Xmx20G -jar TCellSim.jar - -Requires Java11 or higher (Openjdk-17 recommended) \ No newline at end of file diff --git a/src/main/java/Plate.java b/src/main/java/Plate.java index 3588f33..f33d84d 100644 --- a/src/main/java/Plate.java +++ b/src/main/java/Plate.java @@ -55,6 +55,7 @@ public class Plate { List well = new ArrayList<>(); for (int j = 0; j < concentrations[section]; j++) { do { + //inverse transform sampling: for random number u in [0,1), x = log(1-u) / (-lambda) m = (Math.log10((1 - rand.nextDouble()))/(-lambda)) * Math.sqrt(cells.size()); } while (m >= cells.size() || m < 0); n = (int) Math.floor(m); diff --git a/src/main/java/UserInterface.java b/src/main/java/UserInterface.java index 0c54472..3a67326 100644 --- a/src/main/java/UserInterface.java +++ b/src/main/java/UserInterface.java @@ -269,7 +269,7 @@ public class UserInterface { //Need to re-do the CDR3/CDR1 matching to correspond to new pattern //System.out.println("5) Generate CDR3/CDR1 occupancy graph"); //System.out.println("6) Simulate CDR3/CDR1 T cell matching"); - System.out.println("9) Acknowledgements"); + System.out.println("9) About/Acknowledgments"); System.out.println("0) Exit"); try { input = sc.nextInt(); @@ -384,8 +384,8 @@ public class UserInterface { System.out.println("1) Poisson"); System.out.println("2) Gaussian"); System.out.println("3) Exponential"); - System.out.println("(Note: approximate distribution in original paper is exponential, lambda = 0.6.)"); - System.out.println("(approximated from slope of log-log graph in figure 4c)"); + System.out.println("(Note: approximate distribution in original paper is exponential, lambda = 0.6)"); + System.out.println("(lambda value approximated from slope of log-log graph in figure 4c)"); System.out.println("(Note: wider distributions are more memory intensive to match)"); System.out.print("Enter selection value: "); input = sc.nextInt(); @@ -664,6 +664,17 @@ public class UserInterface { System.out.println("This program simulates BiGpairSEQ, a graph theory based adaptation"); System.out.println("of the pairSEQ algorithm for pairing T cell receptor sequences."); System.out.println(""); + System.out.println("Unlike pairSEQ, which calculates p-values for every TCR alpha/beta overlap and compares"); + System.out.println("against a null distribution, BiGpairSEQ does not do any statistical calculations"); + System.out.println("directly. Instead, BiGpairSEQ creates a simple bipartite weighted graph representing"); + System.out.println("the sample plate. The distinct TCRA and TCRB sequences form the two sets of vertices."); + System.out.println("Every TCRA/TCRB pair that share a well are connected by an edge, with the edge weight"); + System.out.println("set to the number of wells in which both sequences appear. (Sequences in all wells are"); + System.out.println("filtered out prior to creating the graph, as there is no signal in their occupancy"); + System.out.println("pattern.) The problem of pairing TCRA/TCRB sequences thus reduces to the \"assignment"); + System.out.println("problem\" of finding a maximum weight matching on a bipartite graph--the subset of"); + System.out.println("vertex-disjoint edges whose weights sum to the maximum possible value."); + System.out.println(""); System.out.println("pairSEQ citation:"); System.out.println("Howie, B., Sherwood, A. M., et. al."); System.out.println("High-throughput pairing of T cell receptor alpha and beta sequences.");