v0.7.0
This update features a
- change of Scirpy's data structure to improve interoperability with the AIRR standard
- a complete re-write of the clonotype definition module for improved performance.
This required several backwards-incompatible changes. Please read the release notes below and the updated tutorials.
Backwards-incompatible changes
Improve Interoperability by fully supporting the AIRR standard (#241)
Scirpy stores receptor information in adata.obs. In this release, we updated the column names to match the AIRR Rearrangement standard. Our data model is now much more flexible, allowing to import arbitrary immune-receptor (IR)-chain related information. Use scirpy.io.upgrade_schema() to update existing AnnData objects to the latest format.
Closed issues #240, #253, #258, #255, #242, #215.
This update includes the following changes:
IrCellis now replaced byAirrCellwhich has additional functionalityIrChainhas been removed. Use a plain dictionary instead.- CDR3 information is now read from the
junctionandjunction_aacolumns instead ofcdr3_ntandcdr3, respectively. - Clonotype assignments are now per default stored in the
clone_idcolumn. exprandexpr_raware nowduplicate_countandconsensus_count.{v,d,j,c}_geneis now{v,d,j,c}_call.- There's now an
extra_chainscolumn containing all IR-chains that don't fit into our receptor model. These chains are not used by scirpy, but can be re-exported to different formats. merge_with_iris now split up intomerge_with_ir(to merge IR data with transcriptomics data) andmerge_airr_chains(to merge several adatas with IR information, e.g. BCR and TCR data).- Tutorial and documentation updates, to reflect these changes
- Sequences are not converted to upper case on import. Scirpy tools that consume the sequences convert them to upper case on-the-fly.
{to,from}_ir_objshas been renamed to{to,from}_airr_cells.
Refactor CDR3 network creation (#230)
Previously, pp.ir_neighbors constructed a cell x cell network based on clonotype similarity. This led to performance issues
with highly expanded clonotypes (i.e. thousands of cells with exactly the same receptor configuration). Such cells would
form dense blocks in the sparse adjacency matrix (see issue #217). Another downside was that expensive alignment-distances had
to be recomputed every time the parameters of ir_neighbors was changed.
The new implementation computes distances between all unique receptor configurations, only considering one instance of highly expanded clonotypes.
Closed issues #243, #217, #191, #192, #164.
This update includes the following changes:
pp.ir_neighborshas been replaced bypp.ir_dist.- The options
receptor_armsanddual_irhave been moved frompp.ir_neighborstotl.define_clonotypesandtl.define_clonotype_clusters. - The default key for clonotype clusters is now
cc_{distance}_{metric}instead ofct_cluster_{distance}_{metric}. same_v_genenow fully respects the optionsdual_irandreceptor_arms- v-genes and receptor types were previously simply appended to clonotype ids (when
same_v_gene=True). Now clonotypes with different v-genes get assigned a different numeric id. - Distance metric classes have been moved from
ir_disttoir_dist.metrics. - Distances matrices generated by
ir_distare now square and symmetric instead of triangular. - The default value for
dual_iris nowanyinstead ofprimary_only(Closes #164). - The API of
clonotype_networkhas changed. - Clonotype network now visualizes cells with identical receptor configurations. The number of cells with identical receptor configurations is shown as point size (and optionally, as color). Clonotype network does not support plotting multiple colors at the same time any more.
Drop Support for Python 3.6
- Support Python 3.9, drop support for Python 3.6, following the numpy guidelines. (#229)
Fixes
tl.clonal_expansionandtl.clonotype_convergencenow respect cells with missing receptors and returnnanfor those cells. (#252)
Additions
util.graph.igraph_from_sparse_matrixallows to convert a sparse connectivity or distance matrix to anigraphobject.ir_dist.sequence_distnow also works sequence arrays that contain duplicate entries (#192)from_dandelionandto_dandelionfacilitate interaction with the Dandelion package (#240)write_airrallows to write scirpy'sadata.obsback to the AIRR Rearrangement format.read_airrnow tries to infer the locus from gene names, if no locus column is present.ir.io.upgrade_schemaallows to upgrade an existing scirpy anndata object to be compatible with the latest version of scirpydefine_clonotypesanddefine_clonotype_clustersnow prints a logging message indicating where the results have been stored (#215)
Minor changes
tqdmnow uses IPython widgets to display progress bars, if available- the
process_mapfromtqdmis now used to display progress bars for parallel computations instead the custom implementation used previously f307c2b matplotlibs "grid lines" are now suppressed by default in all plots.- Docs from the
masterbranch are now deployed toicbi-lab.github.io/scirpy/developinstead of the main documentation website. The main website only gets updated on releases. - Refactored the
_is_nafunction that checks if a string evaluates toNone. - Fixed outdated documentation of the
receptor_armsparameter (#264)

