尝试创建一套完全使用 Swift 编写的,可自由使用的生物计算工具
Protein
)这个库是全新的,缺少很多功能,但并非完全无用
.Package(url: "https://github.com/valdirunars/BioSwift.git", from: "0.0.1")
var genome: DNAGenome = "AGCTGCTTTGGCGCAATGATCGAGCTGCTTTGGCGCAATGATCGAGCTGCTTTGGCGCAATGATCGAGCTGCTTTGGCGCAATGATCG"
!genome
// "TCGACGAAACCGCGTTACTAGCTCGACGAAACCGCGTTACTAGCTCGACGAAACCGCGTTACTAGCTCGACGAAACCGCGTTACTAGC"
genome.reverseComplement()
// "CGATCATTGCGCCAAAGCAGCTCGATCATTGCGCCAAAGCAGCTCGATCATTGCGCCAAAGCAGCTCGATCATTGCGCCAAAGCAGCT"
genome.indicesOfMinimalSkew(increment: .a, decrement: .t)
// [ 74, 75, 76, 77, 78, 79 ]
genome.mostFrequentPattern(length: 2)
// "GC"
genome = "ACGTTGCATGTCGCATGATGCATGAGAGCT"
genome.mostFrequentPatterns(length: 4, maxDistance: 1)
// [ "GATG", "ATGC", "ATGT" ]
genome = "AGT"
genome.neighbors(maxDistance: 1)
// [ "AGT", "CGT", "TGT", "GGT", "ACT", "AAT", "ATT", "AGA", "AGC", "AGG" ]
let genomes: [DNAGenome] = [
"CTTTTAGTGGTATTAAGGGTGCCCA",
"ATTCTAGCCCTATAAGCAATCACTC",
"GAATGAATATACTCTGACAATATCA",
"GCTTGCCGGGATTCACACACTATGA",
"CTGTGTATTAGACGAACTTAAGTCC",
"CAATATGAGCGTTAGGGAGCTATAA",
"CGTAGTATGAAAGCGCTCCCTTCCT",
"ACATTTATAAGGAGTATGGCAGTAG",
"ATGAGACTCGCACTCTATGATGGCC",
"ATGGATGCAATATTAGCGGCTAAAT"
]
genomes.motifs(length: 5, maxDistance: 1)
// [ "ATTAT", "TATAA", "TATCA", "TATGA", "TATTA" ]
genome = "AGCATGGGCCCAAACTTTCATAAGCCGGAGCAATGCC"
genome.transcribe()
// RNAGenome("AGCAUGGGCCCAAACUUUCAUAAGCCGGAGCAAUGCC")
genome.transcribe()
// DNAGenome("AGCATGGGCCCAAACTTTCATAAGCCGGAGCAATGCC")
let protein: Protein = genome.translate()
// "MGPNFHKPEQ"
let fastaURL = URL(string: "../genome.fasta")!
var fastaFileData: Data! = Data(contentsOf: fastaURL)
let genomes: [DNAGenome]? = try! DNAGenome.decode(fastaFileData, type: .fasta)
let proteinFastaURL = URL(string: "../protein.fasta")!
fastaFileData = Data(contentsOf: proteinFastaURL, type: .fasta)
let proteins: [Protein]? = try! Protein.decode(fastaFileData)
let genome: DNAGenome = "ACGT"
let data: Data? = genome.encode(.fasta)
let genome: DNAGenome = "ACGT"
let compressed: Data! = genome.compress(.bigIntCompress)
let decompressed: DNAGenome = DNAGenome.decompress(data: compressed, type: .bigIntCompress)