diff --git a/build.gradle.kts b/build.gradle.kts index e51613258..fb7b0b19a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -101,7 +101,7 @@ repositories { val milibVersion = "2.1.0" val repseqioVersion = "1.5.0" val miplotsVersion = "1.1.0" -val mitoolVersion = "1.2.0-15-main" +val mitoolVersion = "1.3.0" val jacksonBomVersion = "2.14.0" val redberryPipeVersion = "1.3.0" diff --git a/changelogs/v4.1.1.md b/changelogs/v4.1.1.md new file mode 100644 index 000000000..ed24c107d --- /dev/null +++ b/changelogs/v4.1.1.md @@ -0,0 +1,24 @@ +With this release we continue extending the set of supported single-cell protocols by adding new ready-to-use presets to our collection. +Additionally to newly supported protocols and features required for their reliable analysis this release comes with many usability optimizations and stability improvements. See details below: + +# Major changes + +- presets for analysis of all types of BD Rhapsody data (see [docs](https://docs.milaboratories.com/mixcr/reference/overview-built-in-presets/#bd-rhapsody) for the list of supported kits) +- analysis of data produced by protocol described in [Han et al. (2014)](https://doi.org/10.1038/nbt.2938) (see [docs](https://docs.milaboratories.com/mixcr/reference/overview-built-in-presets/#han-et-al-2014)) +- special presets for exom data analysis `exom-cdr3` and `exom-full-length` +- initial support for overlap-extension-based chain pairing protocols +- possibility to export groups of similar columns specifying single option (like `-allAAFeatures `) +- more user-friendly alternative for `-uniqueTagsCount` - `-allUniqueTagsCount`; allows to export counts of unique tag combinations (useful for protocols with multiple `CELL` and `UMI` barcodes) +- new "by sequence" filters for all somatic hypermutation trees (SHMT) exports +- new weighted auto-threshold selection and complementary metric histogram aggregation modes (i.e. y-axis on reads-pre-UMI plots now can show number of reads instead of number of UMIs) +- detected allelic variants are now can also be exported in fasta format right from the `findAlleles` command +- better algorithm for seed sequence selection in consensus assembly routine in `assemble`; increases productive consensus count for cases with multi-variant tag groups (i.e. birthday paradoxes in UMI data or single-cell data analysis without UMIs) + +# Minor changes: + +- minor adjustments for existing presets +- many CLI and parameter validation fixes, more human-readable error messages, better protection from common input errors +- support for preset-embedded tag whitelists for protocols with small number of barcode variants +- options `--use-local-temp`, `--threads`, `--not-aligned-R1`(`R2`) and `--not-parsed-R1`(`R2`) are now available in `analyze`, additionally to individual step commands +- bugfix for imputation in export for compound gene features +- other minor fixes and enhancements diff --git a/src/main/kotlin/com/milaboratory/mixcr/Mixins.kt b/src/main/kotlin/com/milaboratory/mixcr/Mixins.kt index f3699f587..521dc509d 100644 --- a/src/main/kotlin/com/milaboratory/mixcr/Mixins.kt +++ b/src/main/kotlin/com/milaboratory/mixcr/Mixins.kt @@ -578,7 +578,7 @@ object ExportMixins { "-aaFeature" -> "-aaFeatureImputed" "-allNFeatures" -> "-allNFeaturesImputed" "-allNFeaturesWithMinQuality" -> "-allNFeaturesImputedWithMinQuality" - "-allAaFeatures" -> "-allAaFeaturesImputed" + "-allAAFeatures" -> "-allAAFeaturesImputed" else -> field } @@ -588,7 +588,7 @@ object ExportMixins { "-aaFeatureImputed" -> "-aaFeature" "-allNFeaturesImputed" -> "-allNFeatures" "-allNFeaturesImputedWithMinQuality" -> "-allNFeaturesWithMinQuality" - "-allAaFeaturesImputed" -> "-allAaFeatures" + "-allAAFeaturesImputed" -> "-allAAFeatures" else -> field } diff --git a/src/main/kotlin/com/milaboratory/mixcr/export/SHMTreeFieldsExtractorsFactory.kt b/src/main/kotlin/com/milaboratory/mixcr/export/SHMTreeFieldsExtractorsFactory.kt index 955f116c7..a0669a783 100644 --- a/src/main/kotlin/com/milaboratory/mixcr/export/SHMTreeFieldsExtractorsFactory.kt +++ b/src/main/kotlin/com/milaboratory/mixcr/export/SHMTreeFieldsExtractorsFactory.kt @@ -138,7 +138,7 @@ object SHMTreeFieldsExtractorsFactory : FieldExtractorsFactoryWithPresets"), referencePointParamOptional(""), @@ -401,9 +401,9 @@ object VDJCObjectFieldExtractors { if (!forTreesExport) { this += FieldsCollection( Order.features + 501, - "-allAaFeaturesImputed", + "-allAAFeaturesImputed", "Export amino acid sequence using letters from germline (marked lowercase) for uncovered regions " + - commonDescriptionForFeatures("-allAaFeaturesImputed", aaFeatureImputedField), + commonDescriptionForFeatures("-allAAFeaturesImputed", aaFeatureImputedField), aaFeatureImputedField, referencePointParamOptional(""), referencePointParamOptional(""), @@ -416,7 +416,7 @@ object VDJCObjectFieldExtractors { } else { this += FieldsCollection( Order.features + 501, - "-allAaFeaturesImputed", + "-allAAFeaturesImputed", "Export amino acid sequence using letters from germline (marked lowercase) for uncovered regions for all covered features", aaFeatureImputedField ) { diff --git a/src/main/resources/mixcr_presets/blocks/03-exportAlignments.yaml b/src/main/resources/mixcr_presets/blocks/03-exportAlignments.yaml index e0b2767b7..586e16a4f 100644 --- a/src/main/resources/mixcr_presets/blocks/03-exportAlignments.yaml +++ b/src/main/resources/mixcr_presets/blocks/03-exportAlignments.yaml @@ -14,5 +14,5 @@ - field: "-jAlignments" - field: "-cAlignments" - field: "-allNFeaturesWithMinQuality" - - field: "-allAaFeatures" + - field: "-allAAFeatures" - field: "-defaultAnchorPoints" diff --git a/src/main/resources/mixcr_presets/blocks/08-exportClones.yaml b/src/main/resources/mixcr_presets/blocks/08-exportClones.yaml index e61cdf3eb..40f2dffc1 100644 --- a/src/main/resources/mixcr_presets/blocks/08-exportClones.yaml +++ b/src/main/resources/mixcr_presets/blocks/08-exportClones.yaml @@ -18,7 +18,7 @@ - field: "-jAlignments" - field: "-cAlignments" - field: "-allNFeaturesWithMinQuality" - - field: "-allAaFeatures" + - field: "-allAAFeatures" - field: "-defaultAnchorPoints" "exportClones-umi-full": @@ -45,7 +45,7 @@ - field: "-jAlignments" - field: "-cAlignments" - field: "-allNFeaturesWithMinQuality" - - field: "-allAaFeatures" + - field: "-allAAFeatures" - field: "-defaultAnchorPoints" "exportClones-single-cell-full": @@ -71,5 +71,5 @@ - field: "-jAlignments" - field: "-cAlignments" - field: "-allNFeaturesWithMinQuality" - - field: "-allAaFeatures" + - field: "-allAAFeatures" - field: "-defaultAnchorPoints" diff --git a/src/main/resources/mixcr_presets/test.yaml b/src/main/resources/mixcr_presets/test.yaml index d4ba4a83e..6610ce88f 100644 --- a/src/main/resources/mixcr_presets/test.yaml +++ b/src/main/resources/mixcr_presets/test.yaml @@ -273,7 +273,7 @@ - field: "-jAlignments" - field: "-cAlignments" - field: "-allNFeaturesWithMinQuality" - - field: "-allAaFeatures" + - field: "-allAAFeatures" - field: "-defaultAnchorPoints" "pereshlop-test": @@ -314,7 +314,7 @@ - field: "-jAlignments" - field: "-cAlignments" - field: "-allNFeaturesWithMinQuality" - - field: "-allAaFeatures" + - field: "-allAAFeatures" - field: "-defaultAnchorPoints" "umi-guided-consensus-test": @@ -408,5 +408,5 @@ - field: "-jAlignments" - field: "-cAlignments" - field: "-allNFeaturesWithMinQuality" - - field: "-allAaFeatures" + - field: "-allAAFeatures" - field: "-defaultAnchorPoints" diff --git a/src/test/kotlin/com/milaboratory/mixcr/cli/CommandExportPresetTest.kt b/src/test/kotlin/com/milaboratory/mixcr/cli/CommandExportPresetTest.kt index 1a4eb7fa3..08f2e6a2d 100644 --- a/src/test/kotlin/com/milaboratory/mixcr/cli/CommandExportPresetTest.kt +++ b/src/test/kotlin/com/milaboratory/mixcr/cli/CommandExportPresetTest.kt @@ -38,11 +38,11 @@ class CommandExportPresetTest { output.delete() TestMain.execute( "exportPreset --species hs --dna " + - "--append-export-clones-field -allAaFeatures " + + "--append-export-clones-field -allAAFeatures " + "--preset-name test-tcr-shotgun ${output.path}" ) val result = K_YAML_OM.readValue(output) - result.exportClones!!.fields shouldContain ExportFieldDescription("-allAaFeatures") + result.exportClones!!.fields shouldContain ExportFieldDescription("-allAAFeatures") } @Test