From c5171decf25f3ff2c3212b5ed5b5138a75787324 Mon Sep 17 00:00:00 2001 From: Bolotin Dmitriy Date: Thu, 12 Sep 2019 00:41:39 +0300 Subject: [PATCH 1/8] Next development cycle v3.0.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c62091222..4db50144e 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ com.milaboratory mixcr - 3.0.10 + 3.0.1-SNAPSHOT jar MiXCR From 74125e9b5a392ba8335ef3239b37592b8b890b92 Mon Sep 17 00:00:00 2001 From: Bolotin Dmitriy Date: Thu, 12 Sep 2019 15:21:57 +0300 Subject: [PATCH 2/8] This fixes #540 --- CHANGELOG_CURRENT | 1 + pom.xml | 2 +- .../milaboratory/mixcr/basictypes/ClonalSequence.java | 9 +++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG_CURRENT b/CHANGELOG_CURRENT index e69de29bb..0b512e57c 100644 --- a/CHANGELOG_CURRENT +++ b/CHANGELOG_CURRENT @@ -0,0 +1 @@ +Fixes exception in `assemble` for multi-assembling-feature cases with zero length sequences \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4db50144e..95f4b3ad1 100644 --- a/pom.xml +++ b/pom.xml @@ -33,7 +33,7 @@ com.milaboratory mixcr - 3.0.1-SNAPSHOT + 3.0.11-SNAPSHOT jar MiXCR diff --git a/src/main/java/com/milaboratory/mixcr/basictypes/ClonalSequence.java b/src/main/java/com/milaboratory/mixcr/basictypes/ClonalSequence.java index 214c6ddaf..b99b2d622 100644 --- a/src/main/java/com/milaboratory/mixcr/basictypes/ClonalSequence.java +++ b/src/main/java/com/milaboratory/mixcr/basictypes/ClonalSequence.java @@ -83,6 +83,15 @@ public Stretch[] getStretches() { for (int i = 1; i < sequences.length; ++i) { NucleotideSequence left = sequences[i - 1].getSequence(), right = sequences[i].getSequence(); + if (left.size() == 0 || right.size() == 0) { + stretches[i - 1] = new Stretch(left.size() != 0 + ? left.codeAt(left.size() - 1) + : right.size() != 0 + ? right.codeAt(0) + : 0 + ); + continue; + } int leftSize = left.size(), rightSize = right.size(); byte code = left.codeAt(leftSize - 1); if (code != right.codeAt(0)) { From 8a0be9187a7ec7f006e6efbac31a40c7e4cb3242 Mon Sep 17 00:00:00 2001 From: Bolotin Dmitriy Date: Fri, 11 Oct 2019 15:46:55 +0200 Subject: [PATCH 3/8] mixcr script optimized for Docker environment --- mixcr | 51 ++++++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/mixcr b/mixcr index b8d02e607..cf89d72fa 100755 --- a/mixcr +++ b/mixcr @@ -38,7 +38,7 @@ function readlinkUniversal() { targetFile=`basename $targetFile` done - # compute the canonicalized name by finding the physical path + # compute the canonicalized name by finding the physical path # for the directory we're in and appending the target file. phys_dir=`pwd -P` result=$phys_dir/$targetFile @@ -63,14 +63,14 @@ case $os in Linux) rFreeMb=$(free -m | grep Mem | awk '{ print $4 }') maxMb=$(($rFreeMb-$delta)) - dir="$(dirname "$(readlink -f "$0")")" + dir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" ;; FreeBSD) freeBlocks=$(vmstat -s | grep -E 'free$' | awk '{ print $1 }') inactiveBlocks=$(vmstat -s | grep inactive | awk '{ print $1 }') freeMb=$(( ($freeBlocks+$inactiveBlocks)*4096/1048576 )) maxMb=$(($freeMb-$delta)) - dir=$(dirname "$(readlinkUniversal "$0")") + dir=$(dirname "$(readlinkUniversal "$0")") ;; *) echo "Unknown OS." @@ -84,6 +84,12 @@ javaArgs=() needXmxXms=true otherJar="" +inDocker=false + +if [[ -f /proc/1/cgroup ]] && grep docker /proc/1/cgroup -qa; then + inDocker=true +fi + while [[ $# > 0 ]] do key="$1" @@ -116,31 +122,28 @@ then mixcr="${mixcr} -V ${otherJar}" fi -if [[ $(echo ${mixcrArgs[0]} | tr '[:upper:]' '[:lower:]') == "importfromimgt" ]]; then - echo "Starting importFromIMGT.sh script" - ${dir}/importFromIMGT.sh -mixcr "${mixcr}" || exit 1 - exit 0 -fi +if [[ ${needXmxXms} == true ]];then + if [[ ${inDocker} == true ]]; then + javaArgs+=("-XX:MaxRAMPercentage=95") + else + targetXmx=12000 -if [[ ${needXmxXms} == true ]] -then - targetXmx=12000 + if [[ $targetXmx -gt $maxMb ]]; + then + targetXmx=$maxMb + fi - if [[ $targetXmx -gt $maxMb ]]; - then - targetXmx=$maxMb - fi + javaArgs+=("-Xmx${targetXmx}m") - javaArgs+=("-Xmx${targetXmx}m") + targetXms=$((${targetXmx}*2/3)) - targetXms=$((${targetXmx}*2/3)) + if [[ $targetXms -lt 2000 ]]; + then + targetXms=$targetXmx + fi - if [[ $targetXms -lt 2000 ]]; - then - targetXms=$targetXmx + javaArgs+=("-Xms${targetXms}m") fi - - javaArgs+=("-Xms${targetXms}m") fi jar="" @@ -172,5 +175,7 @@ then exit 1 fi -$java -Dmixcr.path=$dir -Dmixcr.command=mixcr -XX:+AggressiveOpts "${javaArgs[@]}" -jar $jar "${mixcrArgs[@]}" +$java -Dmixcr.path=$dir -Dmixcr.command=mixcr "${javaArgs[@]}" -jar $jar "${mixcrArgs[@]}" + exit $? + From 0c2d016d54de643b116dd339321a45f78aeca6ae Mon Sep 17 00:00:00 2001 From: Dmitry Bolotin Date: Sun, 13 Oct 2019 17:18:27 +0200 Subject: [PATCH 4/8] CircleCI integration and corrections to MiXCR script (#548) --- .circleci/config.yml | 71 +++++++++++++ .travis.yml | 33 ------ mixcr | 238 +++++++++++++++++++++---------------------- pom.xml | 17 +++- repseqio | 2 +- 5 files changed, 201 insertions(+), 160 deletions(-) create mode 100644 .circleci/config.yml delete mode 100644 .travis.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 000000000..95418127e --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,71 @@ +version: 2.1 +jobs: + build: + docker: + - image: circleci/openjdk:8-jdk + + working_directory: ~/mixcr + + environment: + MAX_MEMORY_OVERRIDE: 3500 + MAVEN_OPTS: -Xmx3g + + steps: + - checkout + + - run: + name: Downloading git submodules + command: git submodule update --init --recursive + + - restore_cache: + keys: + - v1-dependencies-{{ checksum "pom.xml" }}-{{ checksum "milib/pom.xml" }}-{{ checksum "repseqio/pom.xml" }} + - v1-dependencies- + + - run: + name: Building MiLib + working_directory: milib + command: mvn clean install -DskipTests --batch-mode + + - restore_cache: + keys: + - v1-repseqio-cache-{{ checksum "repseqio/.gitmodules" }} + - v1-repseqio-cache- + + - run: + name: Building RepseqIO + working_directory: repseqio + command: mvn clean install -DskipTests --batch-mode + + - save_cache: + paths: + - repseqio/.cache + key: v1-repseqio-cache-{{ checksum "repseqio/.gitmodules" }} + + - restore_cache: + key: v1-test-data-{{ checksum "ensure-test-data.sh" }} + + - run: + name: Downloading test data + command: ./ensure-test-data.sh + + - save_cache: + paths: + - src/test/resources/sequences/big/ + key: v1-test-data-{{ checksum "ensure-test-data.sh" }} + + - run: + name: Building and testing MiXCR + command: mvn clean install + + - store_test_results: + path: target/surefire-reports + + - save_cache: + paths: + - ~/.m2 + key: v1-dependencies-{{ checksum "pom.xml" }}-{{ checksum "milib/pom.xml" }}-{{ checksum "repseqio/pom.xml" }} + + - run: + name: Running MiXCR Integration tests + command: ./itests.sh test diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9790b6aae..000000000 --- a/.travis.yml +++ /dev/null @@ -1,33 +0,0 @@ - -language: java - -sudo: false - -git: - submodules: false - -before_install: - - sed -i 's/git@github.com:/https:\/\/github.com\//' .gitmodules - - git submodule update --init --recursive - - cd milib && mvn clean install -DskipTests -B && cd .. - - rm -rf ./repseqio/.cache - - mv .cache ./repseqio/.cache - - ls -l ./repseqio/.cache - - cd repseqio && mvn clean install -DskipTests -B && cd .. - - mv ./repseqio/.cache .cache - - ./ensure-test-data.sh - -script: - - mvn test -B && ./itests.sh test - -jdk: - - openjdk8 - -before_cache: - - rm -f $HOME/.m2/repository/io/repseqio/ - - rm -f $HOME/.m2/repository/com/milaboratory/ - -cache: - directories: - - $HOME/.m2 - - .cache diff --git a/mixcr b/mixcr index cf89d72fa..d0711d9e9 100755 --- a/mixcr +++ b/mixcr @@ -6,78 +6,85 @@ sedString1="s/\s*\([^.]*\)\..*/\1/" sedString2="s/.*1\.\(.*\)\..*/\1/" jVersion=$($java -version 2>&1 | grep version | awk '{ print $3 }' | sed 's:"::g') jVersion1=$(echo "$jVersion" | sed $sedString1) -if [[ jVersion1 -eq 1 ]]; then - jVersion2=$(echo "$jVersion" | sed $sedString2) - if [[ $jVersion2 -lt 7 ]]; - then - echo "Wrong version of java. Please use Java 7 or higher." - exit 1 - fi - if [[ $jVersion2 -lt 8 ]]; - then - echo "WARNING: Several issues have been detected while using Java 7. Please consider updateing to Java 8 or higher." - fi -elif [[ jVersion1 -lt 9 ]]; then +if [[ jVersion1 -eq 1 ]]; then + jVersion2=$(echo "$jVersion" | sed $sedString2) + if [[ $jVersion2 -lt 7 ]]; then echo "Wrong version of java. Please use Java 7 or higher." exit 1 + fi + + if [[ $jVersion2 -lt 8 ]]; then + echo "WARNING: Several issues have been detected while using Java 7. Please consider updateing to Java 8 or higher." + fi + + jVersion="$jVersion2" + +elif [[ jVersion1 -lt 9 ]]; then + echo "Wrong version of java. Please use Java 7 or higher." + exit 1 +else + jVersion="$jVersion1" fi # Linux readlink -f alternative for Mac OS X function readlinkUniversal() { - targetFile=$1 - - cd `dirname $targetFile` - targetFile=`basename $targetFile` - - # iterate down a (possible) chain of symlinks - while [ -L "$targetFile" ] - do - targetFile=`readlink $targetFile` - cd `dirname $targetFile` - targetFile=`basename $targetFile` - done - - # compute the canonicalized name by finding the physical path - # for the directory we're in and appending the target file. - phys_dir=`pwd -P` - result=$phys_dir/$targetFile - echo $result + targetFile=$1 + + cd $(dirname $targetFile) + targetFile=$(basename $targetFile) + + # iterate down a (possible) chain of symlinks + while [ -L "$targetFile" ]; do + targetFile=$(readlink $targetFile) + cd $(dirname $targetFile) + targetFile=$(basename $targetFile) + done + + # compute the canonicalized name by finding the physical path + # for the directory we're in and appending the target file. + phys_dir=$(pwd -P) + result=$phys_dir/$targetFile + echo $result } -os=`uname` +os=$(uname) delta=100 dir="" case $os in - Darwin) - freeBlocks=$(vm_stat | grep free | awk '{ print $3 }' | sed 's/\.//') - inactiveBlocks=$(vm_stat | grep inactive | awk '{ print $3 }' | sed 's/\.//') - speculativeBlocks=$(vm_stat | grep speculative | awk '{ print $3 }' | sed 's/\.//') - freeMb=$((($freeBlocks+$speculativeBlocks)*4096/1048576)) - inactiveMb=$(($inactiveBlocks*4096/1048576)) - maxMb=$((($freeMb+$inactiveMb-$delta))) - dir=$(dirname "$(readlinkUniversal "$0")") - ;; - Linux) - rFreeMb=$(free -m | grep Mem | awk '{ print $4 }') - maxMb=$(($rFreeMb-$delta)) - dir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" - ;; - FreeBSD) - freeBlocks=$(vmstat -s | grep -E 'free$' | awk '{ print $1 }') - inactiveBlocks=$(vmstat -s | grep inactive | awk '{ print $1 }') - freeMb=$(( ($freeBlocks+$inactiveBlocks)*4096/1048576 )) - maxMb=$(($freeMb-$delta)) - dir=$(dirname "$(readlinkUniversal "$0")") - ;; - *) - echo "Unknown OS." - exit 1 - ;; +Darwin) + freeBlocks=$(vm_stat | grep free | awk '{ print $3 }' | sed 's/\.//') + inactiveBlocks=$(vm_stat | grep inactive | awk '{ print $3 }' | sed 's/\.//') + speculativeBlocks=$(vm_stat | grep speculative | awk '{ print $3 }' | sed 's/\.//') + freeMb=$((($freeBlocks + $speculativeBlocks) * 4096 / 1048576)) + inactiveMb=$(($inactiveBlocks * 4096 / 1048576)) + maxMb=$((($freeMb + $inactiveMb - $delta))) + dir=$(dirname "$(readlinkUniversal "$0")") + ;; +Linux) + rFreeMb=$(free -m | grep Mem | awk '{ print $4 }') + maxMb=$(($rFreeMb - $delta)) + dir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" + ;; +FreeBSD) + freeBlocks=$(vmstat -s | grep -E 'free$' | awk '{ print $1 }') + inactiveBlocks=$(vmstat -s | grep inactive | awk '{ print $1 }') + freeMb=$((($freeBlocks + $inactiveBlocks) * 4096 / 1048576)) + maxMb=$(($freeMb - $delta)) + dir=$(dirname "$(readlinkUniversal "$0")") + ;; +*) + echo "Unknown OS." + exit 1 + ;; esac +if [[ -n ${MAX_MEMORY_OVERRIDE+x} ]]; then + maxMb="${MAX_MEMORY_OVERRIDE}" +fi + mixcrArgs=() javaArgs=() @@ -87,95 +94,84 @@ otherJar="" inDocker=false if [[ -f /proc/1/cgroup ]] && grep docker /proc/1/cgroup -qa; then - inDocker=true + inDocker=true fi -while [[ $# > 0 ]] -do - key="$1" - shift +while [[ $# > 0 ]]; do + key="$1" + shift + case $key in + -D* | -X* | -ea | -agentlib*) + javaArgs+=(${key}) + case $key in - -D*|-X*|-ea|-agentlib*) - javaArgs+=(${key}) - - case $key in - -Xmx*|-Xms*) - needXmxXms=false - ;; - esac - - ;; - -jar|-V) - otherJar="$1" - shift - ;; - *) - mixcrArgs+=("${key}") - ;; + -Xmx* | -Xms*) + needXmxXms=false + ;; esac + + ;; + -jar | -V) + otherJar="$1" + shift + ;; + *) + mixcrArgs+=("${key}") + ;; + esac done mixcr=${dir}/mixcr -if [[ ! -z ${otherJar} ]]; -then - mixcr="${mixcr} -V ${otherJar}" +if [[ ! -z ${otherJar} ]]; then + mixcr="${mixcr} -V ${otherJar}" fi -if [[ ${needXmxXms} == true ]];then - if [[ ${inDocker} == true ]]; then - javaArgs+=("-XX:MaxRAMPercentage=95") - else - targetXmx=12000 +if [[ ${needXmxXms} == true ]]; then + if [[ ${inDocker} == true ]] && [[ jVersion -ge 11 ]]; then + javaArgs+=("-XX:MaxRAMPercentage=85.0") + else + targetXmx=12000 - if [[ $targetXmx -gt $maxMb ]]; - then - targetXmx=$maxMb - fi - - javaArgs+=("-Xmx${targetXmx}m") + if [[ $targetXmx -gt $maxMb ]]; then + targetXmx=$maxMb + fi - targetXms=$((${targetXmx}*2/3)) + javaArgs+=("-Xmx${targetXmx}m") - if [[ $targetXms -lt 2000 ]]; - then - targetXms=$targetXmx - fi + targetXms=$((${targetXmx} * 2 / 3)) - javaArgs+=("-Xms${targetXms}m") + if [[ $targetXms -lt 2000 ]]; then + targetXms=$targetXmx fi + + javaArgs+=("-Xms${targetXms}m") + fi fi jar="" -if [[ -z "$otherJar" ]]; -then - for j in "$dir/../jar/mixcr.jar" "$dir/mixcr.jar" $(ls -d -1 $dir/target/* 2> /dev/null | grep distribution.jar) - do - if [[ -e "$j" ]]; - then - jar=$j - break - fi - done +if [[ -z "$otherJar" ]]; then + for j in "$dir/../jar/mixcr.jar" "$dir/mixcr.jar" $(ls -d -1 $dir/target/* 2>/dev/null | grep distribution.jar); do + if [[ -e "$j" ]]; then + jar=$j + break + fi + done else - for j in $(ls -1 ${dir}/* | grep "mixcr" | grep ".jar" | grep ${otherJar}); - do - if [[ -e "$j" ]]; - then - jar=$j - break - fi - done + for j in $(ls -1 ${dir}/* | grep "mixcr" | grep ".jar" | grep ${otherJar}); do + if [[ -e "$j" ]]; then + jar=$j + break + fi + done fi -if [[ "$jar" == "" ]]; -then - echo "No jar." - exit 1 +if [[ "$jar" == "" ]]; then + echo "No jar." + exit 1 fi $java -Dmixcr.path=$dir -Dmixcr.command=mixcr "${javaArgs[@]}" -jar $jar "${mixcrArgs[@]}" exit $? - diff --git a/pom.xml b/pom.xml index 95f4b3ad1..80c192935 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,8 @@ ~ PARTICULAR PURPOSE, OR THAT THE USE OF THE SOFTWARE WILL NOT INFRINGE ANY ~ PATENT, TRADEMARK OR OTHER RIGHTS. --> - + 4.0.0 com.milaboratory @@ -183,7 +184,10 @@ org.apache.maven.plugins maven-surefire-plugin - 2.22.1 + 2.22.2 + + -Xmx1024m + @@ -264,12 +268,15 @@ - + - + false - + com.milaboratory.mixcr.cli.Main diff --git a/repseqio b/repseqio index 6e897db70..c71b3a4b6 160000 --- a/repseqio +++ b/repseqio @@ -1 +1 @@ -Subproject commit 6e897db703192909b8b7eaa423230b6ce630a0bd +Subproject commit c71b3a4b638aaa780ecce1d24428364d25255404 From 7e774939434c3948680ef0c7ec507943bd8e8049 Mon Sep 17 00:00:00 2001 From: Stanislav Poslavsky Date: Tue, 15 Oct 2019 19:37:37 +0300 Subject: [PATCH 5/8] This fixes #547 --- .../java/com/milaboratory/mixcr/basictypes/VDJCObject.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/milaboratory/mixcr/basictypes/VDJCObject.java b/src/main/java/com/milaboratory/mixcr/basictypes/VDJCObject.java index 6ad1ef52e..78995901a 100644 --- a/src/main/java/com/milaboratory/mixcr/basictypes/VDJCObject.java +++ b/src/main/java/com/milaboratory/mixcr/basictypes/VDJCObject.java @@ -414,6 +414,8 @@ public CaseSensitiveNucleotideSequence getIncompleteFeature(GeneFeature geneFeat if (!lAl.getSequence1Range().contains(positionInRef)) { // add lowercase piece of germline assert lAl.getSequence1Range().getFrom() > positionInRef; + if (leftParts.isEmpty() && lAl.getSequence1Range().getFrom() == rPositionInRef) + break; IncompleteSequencePart part = new IncompleteSequencePart(lHit, true, iLeftTarget, positionInRef, lAl.getSequence1Range().getFrom()); if (part.begin != part.end) leftParts.add(part); @@ -462,6 +464,8 @@ public CaseSensitiveNucleotideSequence getIncompleteFeature(GeneFeature geneFeat if (!rAl.getSequence1Range().contains(positionInRef)) { // add lowercase piece of germline assert rAl.getSequence1Range().getTo() <= positionInRef; + if (rightParts.isEmpty() && rAl.getSequence1Range().getTo() == lPositionInRef) + break; IncompleteSequencePart part = new IncompleteSequencePart(rHit, true, iRightTarget, rAl.getSequence1Range().getTo(), positionInRef); // +1 to include positionInRef if (part.begin != part.end) rightParts.add(part); From 85606d39af8e8f0456ea205ac68a00aba44bab22 Mon Sep 17 00:00:00 2001 From: Bolotin Dmitriy Date: Thu, 24 Oct 2019 18:59:12 +0300 Subject: [PATCH 6/8] Changelog --- CHANGELOG_CURRENT | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG_CURRENT b/CHANGELOG_CURRENT index 0b512e57c..ef76b4b17 100644 --- a/CHANGELOG_CURRENT +++ b/CHANGELOG_CURRENT @@ -1 +1,4 @@ -Fixes exception in `assemble` for multi-assembling-feature cases with zero length sequences \ No newline at end of file +Fixes exception in `assemble` for multi-assembling-feature cases with zero length sequences +Fixes empty `FR3` imputed sequence in cases with zero assembled nucleotides on the 5' side of CDR3 +MiXCR execution script optimized for Docker (Java 11 is recommended for running MiXCR in container environment) +Other fixes for MiXCR script \ No newline at end of file From 3db9db8087d5e5b564af3829d5e5af7b64ff8bef Mon Sep 17 00:00:00 2001 From: Bolotin Dmitriy Date: Thu, 24 Oct 2019 19:11:10 +0300 Subject: [PATCH 7/8] Obsolete code removed. --- .../mixcr/basictypes/VDJCObject.java | 54 ------------------- 1 file changed, 54 deletions(-) diff --git a/src/main/java/com/milaboratory/mixcr/basictypes/VDJCObject.java b/src/main/java/com/milaboratory/mixcr/basictypes/VDJCObject.java index 78995901a..37821433d 100644 --- a/src/main/java/com/milaboratory/mixcr/basictypes/VDJCObject.java +++ b/src/main/java/com/milaboratory/mixcr/basictypes/VDJCObject.java @@ -272,60 +272,6 @@ public NSequenceWithQuality getFeature(GeneFeature geneFeature) { if (tmp != null && (feature == null || feature.getQuality().minValue() < tmp.getQuality().minValue())) feature = tmp; } -// if (feature == null && targets.length == 2) { -// VDJCHit bestVHit = getBestHit(GeneType.Variable); -// if (bestVHit == null) -// return null; -// -// //TODO check for V feature compatibility -// Alignment -// lAlignment = bestVHit.getAlignment(0), -// rAlignment = bestVHit.getAlignment(1); -// -// if (lAlignment == null || rAlignment == null) -// return null; -// -// int lTargetIndex = 0; -// -// int lFrom, rTo, f, t; -// if ((f = getPartitionedTarget(1).getPartitioning().getPosition(geneFeature.getFirstPoint())) >= 0 && -// (t = getPartitionedTarget(0).getPartitioning().getPosition(geneFeature.getLastPoint())) >= 0) { -// lAlignment = bestVHit.getAlignment(1); -// rAlignment = bestVHit.getAlignment(0); -// lFrom = f; -// rTo = t; -// lTargetIndex = 1; -// } else if ((f = getPartitionedTarget(0).getPartitioning().getPosition(geneFeature.getFirstPoint())) < 0 || -// (t = getPartitionedTarget(1).getPartitioning().getPosition(geneFeature.getLastPoint())) < 0) -// return null; -// else { -// lFrom = f; -// rTo = t; -// } -// -// Range intersection = lAlignment.getSequence1Range().intersection(rAlignment.getSequence1Range()); -// if (intersection == null) -// return null; -// -// NSequenceWithQuality intersectionSequence = Merger.merge(intersection, -// new Alignment[]{bestVHit.getAlignment(0), bestVHit.getAlignment(1)}, -// targets); -// -// Range lRange = new Range( -// lFrom, -// aabs(lAlignment.convertToSeq2Position(intersection.getFrom()))); -// Range rRange = new Range( -// aabs(rAlignment.convertToSeq2Position(intersection.getTo())), -// rTo); -// -// feature = -// new NSequenceWithQualityBuilder() -// .ensureCapacity(lRange.length() + rRange.length() + intersectionSequence.size()) -// .append(targets[lTargetIndex].getRange(lRange)) -// .append(intersectionSequence) -// .append(targets[1 - lTargetIndex].getRange(rRange)) -// .createAndDestroy(); -// } return feature; } From b9071ff3834b0b6c075f1382c42f3ab9f1b1cf6d Mon Sep 17 00:00:00 2001 From: Bolotin Dmitriy Date: Thu, 24 Oct 2019 19:25:13 +0300 Subject: [PATCH 8/8] Release v3.0.11 --- CHANGELOG | 11 +++++++++++ CHANGELOG_CURRENT | 4 ---- pom.xml | 14 +++++--------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index a8b236753..9187dedaf 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,15 @@ +MiXCR 3.0.11 (24 Oct 2019) +======================== + +-- Fixes exception in `assemble` for multi-assembling-feature cases with zero length sequences +-- Fixes empty `FR3` imputed sequence in cases with zero assembled nucleotides on the 5' side of + CDR3 +-- MiXCR execution script optimized for Docker (Java 11 is recommended for running MiXCR in + container environment) +-- Other fixes for MiXCR script + + MiXCR 3.0.10 (12 Sep 2019) ======================== diff --git a/CHANGELOG_CURRENT b/CHANGELOG_CURRENT index ef76b4b17..e69de29bb 100644 --- a/CHANGELOG_CURRENT +++ b/CHANGELOG_CURRENT @@ -1,4 +0,0 @@ -Fixes exception in `assemble` for multi-assembling-feature cases with zero length sequences -Fixes empty `FR3` imputed sequence in cases with zero assembled nucleotides on the 5' side of CDR3 -MiXCR execution script optimized for Docker (Java 11 is recommended for running MiXCR in container environment) -Other fixes for MiXCR script \ No newline at end of file diff --git a/pom.xml b/pom.xml index 80c192935..aaa5ee0fd 100644 --- a/pom.xml +++ b/pom.xml @@ -28,13 +28,12 @@ ~ PARTICULAR PURPOSE, OR THAT THE USE OF THE SOFTWARE WILL NOT INFRINGE ANY ~ PATENT, TRADEMARK OR OTHER RIGHTS. --> - + 4.0.0 com.milaboratory mixcr - 3.0.11-SNAPSHOT + 3.0.11 jar MiXCR @@ -268,15 +267,12 @@ - + - + false - + com.milaboratory.mixcr.cli.Main