Package: seqwalk
seqwalkseqwalkis a package for designing orthogonal DNA sequence libraries.  If you want to design DNA barcodes (for sequencing, multiplexed imaging, molecular programming, etc.)seqwalkis for you! It can efficiently generate libraries of maximal size or maximal predicted orthogonality based on sequence symmetry.seqwalkadditionally includes off-the-shelf orthogonal sequence libraries, as well as tools for analyzing orthogonal sequence libraries.A code-free, interactive version ofseqwalkcan be foundhereFor more details, see our preprint (coming soon!).Installation$pipinstallseqwalkUsageDesigning a set of barcodes with maximum orthogonalityIf you want a certain number of barcodes with maximum orthogonality, you can use themax_orthogonalityfunction from thedesignmodule. You must specify the length of desired sequences (L) and the number of desired sequences (N). Optionally, specify the prevention of reverse complementary sequences, GC content limits, allowable alphabet, and specific prevented patterns. By default, reverse complementary sequences are allowed, there are no GC content constraints, a 3 letter (A/C/T, no G) code is used and any 4N sequence is prevented.For example, if you want 100 barcodes with length 25, with prevented reverse complements, and a 4 letter alphabet, and between 10 and 15 G/C bases, you can use the following code:fromseqwalkimportdesignlibrary=design.max_orthogonality(100,25,alphabet="ACGT",RCfree=True,GClims=(10,15))Designing a set of orthogonal barcodes with maximum sizeIf you have an orthogonality constraint in mind, you can use themax_sizefunction from thedesignmodule to generate a maximally sized library. Orthogonality constraints must be sequence symmetry minimization k values. That is, the shortest k for which no substring of length k appears twice.If you want sequences that satisfy SSM for k=12, and you want barcodes of length 25, without considering reverse complementarity, and using a 4 letter alphabet, with no GC constraints, you can use the following code:fromseqwalkimportdesignlibrary=design.max_size(25,12,alphabet="ACGT")Importing "off-the-shelf" experimentally characterized librariesTheiomodule provides the ability to import libraries that have been previously experimentally characterized, using code of the following format.fromseqwalkimportioPERprimers=io.load_library("kishi2018")We provide the following libraries, accessible with the identifier tag.identifier# of seqsseq lengthoriginal use caserefkishi2018509ntPER primersKishi et al, 2018If you have an orthogonal library you would like to add, please submit a PR!Quality control using pairwise comparisonsOnce you have a library in the form of a list of sequences, you can use theanalysismodule to perform additional quality control. For example, we provide a function to compute pairwise Hamming distances.fromseqwalkimportanalysish_crosstalk=analysis.hamming_matrix(seqs)ContributingInterested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.Licenseseqwalkis licensed under the terms of the MIT license.Creditsseqwalkwas created withcookiecutterand thepy-pkgs-cookiecuttertemplate.