[go: up one dir, main page]

BRPI0818507B1 - método de otimização de uma sequência nucleotídica para expressão em um organismo alvo - Google Patents

método de otimização de uma sequência nucleotídica para expressão em um organismo alvo Download PDF

Info

Publication number
BRPI0818507B1
BRPI0818507B1 BRPI0818507A BRPI0818507A BRPI0818507B1 BR PI0818507 B1 BRPI0818507 B1 BR PI0818507B1 BR PI0818507 A BRPI0818507 A BR PI0818507A BR PI0818507 A BRPI0818507 A BR PI0818507A BR PI0818507 B1 BRPI0818507 B1 BR PI0818507B1
Authority
BR
Brazil
Prior art keywords
sequence
self
target
nls
sequences
Prior art date
Application number
BRPI0818507A
Other languages
English (en)
Inventor
J Tomso Daniel
Original Assignee
Athenix Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Athenix Corp filed Critical Athenix Corp
Publication of BRPI0818507A2 publication Critical patent/BRPI0818507A2/pt
Publication of BRPI0818507B1 publication Critical patent/BRPI0818507B1/pt
Publication of BRPI0818507B8 publication Critical patent/BRPI0818507B8/pt

Links

Classifications

    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B30/00ICT specially adapted for sequence analysis involving nucleotides or amino acids
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B40/00ICT specially adapted for biostatistics; ICT specially adapted for bioinformatics-related machine learning or data mining, e.g. knowledge discovery or pattern finding

Landscapes

  • Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Engineering & Computer Science (AREA)
  • Medical Informatics (AREA)
  • Biophysics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Biotechnology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Chemical & Material Sciences (AREA)
  • Public Health (AREA)
  • Evolutionary Computation (AREA)
  • Epidemiology (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Bioethics (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Analytical Chemistry (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Breeding Of Plants And Reproduction By Means Of Culturing (AREA)
  • Agricultural Chemicals And Associated Chemicals (AREA)
  • Saccharide Compounds (AREA)
  • Enzymes And Modification Thereof (AREA)
  • Micro-Organisms Or Cultivation Processes Thereof (AREA)

Abstract

modelos computacionais para desenho de gene sintético a presente invenção é delineada por métodos para desenhar sequências nucleotídicas sintéticas que codificam polipeptídeos de interesse. os métodos envolvem a organização de um banco de dados de sequências como grupo de sequências de oligômero de n-comprimento e a compilação de uma lista de escores de probabilidade para cada sequência de n-comprimento. os escores de probabilidade são usados para substituir uma ou mais sequências de escore mais alto na sequência nucleotídica parenta! para gerar uma sequência otimizada. a sequência nucleotídica de interesse pode ser ainda otimizada pela remoção tanto das regiões de leitura abertas não intencionais como de elementos de dna curtos indesejados, e/ou substituição de sequências de oligômero para alcançar um conteúdo g:c específico. estes métodos podem ser usados para otimizar a expressão de genes heterólogos em qualquer organismo, particularmente em plantas. o método gera sequências sintéticas com uma composição similar àquela de um banco de dados alvo. estas sequências sintéticas podem ser usadas, por exemplo, para regular a atividade pesticida ou a resistência à herbicida em organismos, particularmente plantas ou células vegetais.

Description

Relatório Descritivo da Patente de Invenção para MÉTODO DE OTIMIZAÇÃO DE UMA SEQUÊNCIA NUCLEOTÍDICA PARA EXPRESSÃO EM UM ORGANISMO ALVO.
CAMPO DA INVENÇÃO [001] A presente invenção refere-se a métodos para desenho de genes sintéticos para expressão em um organismo heterólogo, tal como uma planta. Métodos implementados por computador são englobados, bem como sistemas computacionais usados para executar os métodos da invenção.
ANTECEDENTE DA INVENÇÃO [002] A expressão de genes estranhos em hospedeiros heterólogos, tais como células vegetais, tem sido difícil, e muitas vezes a expressão detectável do produto não é obtida (Fischhoff et al. (1987) Bio/Technology 5:807-813; Vaeck et al. (1987) Nature 328:33-37). Explicações para a pobre expressão incluem a presença fortuita de sítios de processamento, levando a transcritos de mRNA não funcionais nas células hospedeiras transgênicas; utilização de códons diferentes em plantas em comparação com o hospedeiro original; e diferenças no conteúdo GC na sequência gênica e no transcrito de RNA primário resultante. A estrutura do DNA é compreendida de pares de bases, ao longo de uma dupla hélice. É bem-conhecido que o DNA total de organismos diferentes tem distribuições diferentes dos quatro nucleotídeos, adenina (A), timidina (T), guanosina (G) e citidina (C). Dentro de uma hélice de DNA, adenina e timidina formam um 'par de bases' pela ligação de hidrogênio (um par de bases AT). Similarmente, guanosina forma par de bases somente com citidina (um par de bases GC). A proporção de tais pares de bases AT a pares de bases GC muitas vezes é referida como 'conteúdo GC', e é uma porcentagem dos pares de bases totais, que são compreendidos de pares de bases GC, ao contrário de pares de bases AT. Similarmente, 'conteúdo AT' referePetição 870190040348, de 29/04/2019, pág. 5/63
2/51 se à porcentagem de pares de bases que são compreendidos de pares de bases AT. O conteúdo GC varia não somente entre organismos diferentes, mas pode variar dentro de regiões diferentes do DNA de um genoma, e até dentro de regiões diferentes de um gene, tal como um gene vegetal. íntrons vegetais têm aproximadamente conteúdo AT de 70% (30% de GC), ao passo que éxons têm aproximadamente conteúdo AT de 50% (50% de GC) (Wiebauer et al (1988) Mol. Cell Biol. 8:20422051).
[003] Devido à dificuldade de expressar proteínas inseticidas de Bacillus thuringiensis (Bt) em plantas, vários genes sintéticos capazes de níveis maiores de expressão em plantas transgênicas foram desenhados. Adang et al. (Patentes Americanas N°s 5.380.831, 6.015.891) descrevem proteínas inseticidas Bt sintéticas desenhadas para ter expressão aumentada em plantas pela modificação do gene para conter códons preferenciais por genes vegetais altamente expressos. Os códons usados são selecionados quanto à frequência de distribuição do uso do códon empregado em genes vegetais altamente expressos. Adang et al. (Patente Americana N° 5.567.600) descrevem ainda métodos similares onde a modificação compreende a redução do número de códons tendo GC em posições de códon II e III em uma região entre os sinais de poliadenilação vegetal. Alternativamente, modificações podem resultar em menos ocorrências da sequência AATGAA(SEQID N°: 1).
[004] Fischhoff et al. (Patente U.S. N° 5.500.365) descrevem genes Bt modificados que têm sequências de poliadenilação e sequências ATTTA vegetais removidas (SEQ ID N°:2). Koziel et al.
(Patente U.S. N° 6.320.100) descrevem proteínas inseticidas Bt sintéticas selecionadas para expressão otimizada em uma planta, produzidas usando códons que ainda mais frequentemente codificam cada aminoácido em milho, e tendo conteúdo GC de 60%.
Petição 870190040348, de 29/04/2019, pág. 6/63
3/51
SUMÁRIO DA INVENÇÃO [005] Métodos para gerar uma sequência nucleotídica sintética que codifica um polipeptídeo de interesse são fornecidos. Estes métodos produzem sequências gênicas sintéticas otimizadas pelo cálculo da probabilidade de ocorrência de segmentos curtos contíguos de nucleotídeos em um banco de dados de sequência de DNA, e então usando estas probabilidades para gerar sequências sintéticas pela substituição de sequências nucleotídicas de baixa probabilidade em um transgene candidato por sequências de alta probabilidade. Isto é preferencialmente realizado sem alterar a sequência de aminoácido da proteína codificada. Significantemente, este método estatístico permite a geração de um transgene que é otimizado para a expressão em um organismo-alvo sem necessidade de se possuir conhecimento específico de sítios de processamento ou outros determinantes de expressão no organismo-alvo.
[006] Estes métodos compreendem (1) desenvolvimento de um banco de dados de sequências; (2) seleção de um comprimento (comprimento N) de nucleotídeos contíguos como uma base de otimização (oligonucleotídeos de comprimento N); (3) organização do banco de dados de sequências como um grupo de sequências de oligômero de comprimento N; (4) seleção de uma sequência de entrada; (5) desenvolvimento de um conjunto de NLSs silenciosas (SNLS)para a sequência de entrada; e, (6) otimização entre as escolhas de SNLS para produzir uma sequência gênica otimizada.
[007] Estes métodos podem, altemativamente ou ainda, compreender remoção de regiões de leitura aberta não desejadas e/ou modificação da sequência nucleotídica de interesse para remover sequências nucleotídicas consenso curtas não desejadas e/ou alcançar um conteúdo GC desejado no gene otimizado resultante, sem consideração de uso de códon.
Petição 870190040348, de 29/04/2019, pág. 7/63
4/51 [008] Os métodos da invenção são úteis para a produção de sequências nucleotídicas ótimas para expressão em um organismo, particularmente plantas e bactérias, para fornecer atividade de resistência a pesticida ou herbicida. Tais organismos são desejáveis para fins agrícolas. Os métodos da invenção são também úteis para gerar proteínas alteradas ou melhoradas que têm atividade de resistência a pesticida ou herbicida, ou para detecção da presença de proteínas ou ácidos nucléicos de resistência à pesticida ou herbicida em produtos ou organismos.
DESCRIÇÃO DAS FIGURAS [009] Afigura 1 mostra uma ilustração da relação entre NLRs, NLS e tabela delta. Nesta ilustração, A, B, C, D e E representam posições hipotéticas dentro de uma região nucleotídica (NLR) de comprimento cinco (N=5). A figura ilustra um subconjunto de NLSs que pode ser gerado para esta NLR. Dessa forma, para todas as NLRs de comprimento 5 há 45 NLSs possíveis (A, T, G ou C na posição A; A, T, G, ou C em posição B; etc.).
[0010] A figura 2 mostra um exemplo diagramático de determinação de NLSs.
DESCRIÇÃO DETALHADA [0011] Métodos prévios para desenho do gene sintético falham geralmente em duas categorias. O primeiro usa conhecimento específico para sinais de processamento, tais como sinais de poliadenilação, para desenhar transgenes com uma probabilidade maior de expressão em um organismo-alvo (por exemplo, Fischhoff et al). Esta estratégia é aplicável somente em situações onde conhecimento experimental específico de tais sinais de processamento está disponível. Adicionalmente, conhecimento incompleto dos determinantes de processamento em genes expressos pode resultar em modificação imprópria de um transgene, resultando em pouca ou
Petição 870190040348, de 29/04/2019, pág. 8/63
5/51 nenhuma expressão no organismo-alvo. A segunda categoria de métodos depende inteiramente do viés de códon e/ou correção do conteúdo GC para melhorar a expressão de transgenes (por exemplo, Koziel et al, Adang et al), apesar de evidência ampla do papel significante de determinantes de sequência de DNA de ordem mais alta (por exemplo ATTTA, AATGAA).
[0012] A presente invenção é delineada por métodos para desenhar sequências nucleotídicas sintéticas que codificam polipeptídeos de interesse. Os métodos envolvem (1) organização de um banco de dados de sequências como um conjunto de sequências de oligômero de comprimento N (NLSs); (2) geração de uma Tabela NLS Stats pela determinação e compilação da probabilidade observada de cada NLS entre a população de todo as NLSs possíveis; (3) desenvolvimento de um conjunto de NLRs para a sequência de interesse; (4) determinação do conjunto de NLSs que não interrompem a região de leitura aberta (NLSs silenciosas, ou SNLS); e, (5) otimização das escolhas entre as montagens de SNLS para produzir uma sequência nucleotídica otimizada.
[0013] Em outro aspecto da invenção, a sequência nucleotídica de interesse é analisada e ajustada para remover um ou ambos de (1) regiões de leitura aberta não desejadas ou (2) elementos de DNA curtos indesejados. Uma ORF inesperada é uma ORF que é diferente da ORF da sequência parental e surge através da modificação da sequência usando os métodos da invenção. Elementos de DNA curtos indesejados incluem estiramentos de DNA que introduzem estruturas não ótimas para expressão em um organismo-alvo. Elementos de DNA curtos exemplares são discutidos em outro lugar neste pedido.
[0014] Estes métodos podem ser usados para otimização da expressão de genes heterólogos em qualquer organismo, particularmente em plantas. O método gera sequências sintéticas com
Petição 870190040348, de 29/04/2019, pág. 9/63
6/51 uma composição similar àquela de um banco de dados-alvo. Estas sequências sintéticas podem ser usadas, por exemplo, para regulação da atividade pesticida ou resistência a herbicida em organismos, particularmente plantas ou células vegetais.
DEFINIÇÕES [0015] A fim de entender claramente a invenção é útil ter as seguintes definições:
[0016] Por sintético entende-se que não ocorre na natureza. Para os objetivos da presente invenção, uma sequência sintética não é destinada a englobar sequências resultantes de mutações de ocorrência natural, ou de mutações que são induzidas por mecanismos químicos ou biológicos, tais como mutagênese sítio-dirigida e similares. Em algumas modalidades, uma sequência nucleotídica sintética é ou é destinada a ser quimicamente sintetizada em sua totalidade ou para a maioria da região de codificação. Métodos para sintetizar quimicamente sequências nucleotídicas são bem-conhecidos na técnica (ver, por exemplo, Ausubel et al, eds. Current Protocols in Molecular Biology (2000) Chapter 8.2B, Vol. 1, John Wiley & Sons, New York; Xiong et al. (2004) Nucleic Acids Res. 32:e98; Ovchinnikov etal. (1984) Gene 31:6578; Khudyakov et al. (1993) Nucleic Acids Res. 21:2747-2754). Uma sequência sintética inclui uma sequência nucleotídica que varia de uma sequência parental de ocorrência natural em pelo menos aproximadamente 1%, pelo menos aproximadamente 5%, pelo menos aproximadamente 10%, pelo menos aproximadamente 15%, pelo menos aproximadamente 20%, pelo menos aproximadamente 25%, pelo menos aproximadamente 30%, pelo menos aproximadamente 35%, pelo menos aproximadamente 40%, pelo menos aproximadamente 45%, pelo menos aproximadamente 50%, pelo menos aproximadamente 55%, pelo menos aproximadamente 60%, pelo menos aproximadamente 65%, pelo menos aproximadamente
Petição 870190040348, de 29/04/2019, pág. 10/63
7/51
70%, pelo menos aproximadamente 75%, pelo menos aproximadamente 80%, pelo menos aproximadamente 85%, pelo menos aproximadamente 90%, pelo menos aproximadamente 95%, ou aproximadamente 100% das posições nucleotídicas correspondentes ao parental. Será apreciado que sequências nucleotídicas possam ser otimizadas dentro de certas regiões da sequência, onde o restante da sequência permanece inalterado em relação à sequência parental. Para os fins da presente invenção, os termos sequência nucleotídica sintética e sequência nucleotídica otimizada são usados intercambiavelmente.
[0017] Por região de comprimento N ou NLR, é entendido que uma sequência nucleotídica contígua de comprimento N que corresponde a uma região da sequência nucleotídica de interesse. Por exemplo, uma NLR pode ter de aproximadamente 1 a aproximadamente 100 nucleotídeos de comprimento, ou de aproximadamente 2 a aproximadamente 50, ou de aproximadamente 3 a aproximadamente 40, ou de aproximadamente 4 a aproximadamente 30, ou de aproximadamente 5 a aproximadamente 20, ou de aproximadamente 6 a aproximadamente 15, ou aproximadamente 10 nucleotídeos de comprimento. Em algumas modalidades, a NLR é maior do que ou menor do que 3 nucleotídeos de comprimento.
[0018] Por sequência de comprimento N ou NLS entende-se qualquer sequência nucleotídica contígua de comprimento N. Para qualquer dada otimização dirigida, o comprimento de cada NLS é igual ao comprimento de cada NLR. Ver, por exemplo, a Figura 1. Neste exemplo, a sequência nucleotídica de interesse é representada por 12 nucleotídeos, e cada NLR tem 5 nucleotídeos de comprimento. Dessa forma, cada NLS de cada NLR tem também 5 nucleotídeos de comprimento.
[0019] É entendido que os métodos descritos neste pedido podem
Petição 870190040348, de 29/04/2019, pág. 11/63
8/51 ser empregados para gerar uma sequência otimizada única de uma sequência nucleotídica única de interesse, bem como múltiplas sequências otimizadas diferentes de uma sequência nucleotídica única de interesse. Onde múltiplas sequências otimizadas diferentes são geradas, um ou mais dos parâmetros de otimização é modificado em cada otimização dirigida tal que uma sequência otimizada diferente seja gerada daquela corrida. Tal parâmetro que pode ser variado é o valor representado porN na NLS e na NLR.
[0020] As etapas do método descrito neste pedido são apresentadas nos seguintes módulos.
MÓDULO A. DESENVOLVERUM BANCO DE DADOS-ALVO [0021] O método da invenção necessita de um banco de dadosalvo de sequências nucleotídicas. O banco de dados-alvo pode ser qualquer banco de dados de uma ou mais sequências nucleotídicas, por exemplo, o banco de dados de nucleotídeo GENBANK®, um banco de dados de sequências específicas para certo gênero ou espécie (por exemplo, um banco de dados específico para milho, um banco de dados específico para soja, um banco de dados específico para animal, tais como um ser humano, ou banco de dados específico para o animal agrícola ou de laboratório, etc.), ou um banco de dados personalizado de sequências nucleotídicas que seria relevante para o usuário particular. Em uma modalidade, o banco de dados-alvo compreende uma coleção de sequências codificantes de um organismo de interesse. O banco de dados de sequências pode ser organizado em qualquer número deformatosoutiposde arquivo, por exemplo, como um arquivo de arquivos em formato FASTA, ou como uma pasta de arquivos de sequência em um formato legível por computador.
MÓDULO B. ORGANIZAR BANCO DE DADOS COMO CONJUNTO DE SEQUÊNCIAS DE OLIGÔMERO DE COMPRIMENTO N [0022] Neste aspecto da invenção, organiza-se os dados do banco
Petição 870190040348, de 29/04/2019, pág. 12/63
9/51 de dados-alvo na forma de uma Tabela de Estatísticas de NLS (ou uma Tabela NLS Stats). A Tabela NLS Stats é gerada pela configuração do comprimento N e determinação da frequência de todos os segmentos de comprimento N possíveis representados naquele banco de dados. O valor de N pode ser arbitrariamente selecionado com base no tamanho do banco de dados-alvo (isto é, através de todas as sequências naquele banco de dados). Geralmente, as sequências NLR mais longas capturam mais informação do que sequências mais curtas de NLR, mas o número de entradas na Tabela NLS Stats é governado pelo comprimento de sequência, e tabelas grandes demais atrasam a execução do algoritmo e reduzem a precisão estatística. Uma Tabela NLS Stats vazia é gerada pela primeira listagem de cada sequência possível de comprimento n. Por exemplo, para n=5, a Tabela NLS Stats teria 1024 entradas (AAAAA, AAAAC, AAAAG...TTTTT (SEQID N°: 3 a 6, respectivamente).
[0023] Uma Tabela NLS Stats pode ser compilada pela contagem do número de vezes que cada NLS é representada no banco de dados, por exemplo, através do uso de um algoritmo janela deslizante que esquadrinha cada sequência no banco de dados. Altemativamente, uma Tabela NLS Stats pode ser compilada pelo uso de qualquer outra estratégia estatisticamente razoável, por exemplo, pela amostragem randômica de sequências curtas de um banco de dados. Algoritmos de janela deslizante são conhecidos na técnica. Em uma modalidade, o algoritmo move-se ao longo de cada sequência no banco de dados-alvo por um ou mais nucleotídeo(s) deslizante de uma vez para compilar a lista de NLSs. Por exemplo, em um banco de dados-alvo hipotético compreendendo uma sequência nucleotídica representada por AGTGCAAGTACGTAA(SEQ ID N°:7), onde N é estabelecido em 5, a primeira NLS é AGTGC, a segunda NLS é GTGCA, a terceira NLS é TGCAA e similares. Um conjunto de NLSs é compilado para cada
Petição 870190040348, de 29/04/2019, pág. 13/63
10/51 sequência no banco de dados-alvo. O algoritmo de janela deslizante conta o número de vezes que cada NLS da tabela de NLS stats vazia é representada no banco de dados. Porexemplo, o algoritmo esquadrinha todas as sequências e conta o número de vezes que a NLS AAAAA aparece no banco de dados, o número de vezes que a NLS AAAAC aparece no banco de dados, o número de vezes que a NLS AAAAG aparece, etc. Esta contagem bruta então é dividida pelo número total de NLSs observadas no banco de dados para fornecer um valor de frequência observado.
[0024] Para cada NLS, um escore de probabilidade é calculado, o qual representa a frequência observada de cada NLS em relação à sua frequência esperada de ocorrência dentro do banco de dados-alvo. Em um exemplo, o escore de probabilidade é convertido em um escore de probabilidade log e é igual ao Iog10 [frequência observada da NLS no banco de dados/frequência esperada da NLS no banco de dados].
[0025] O método de cálculo das frequências esperadas pode variar. Em um aspecto, cada nucleotídeo é considerado igualmente provável. Neste caso, a frequência esperada seria 0,25N, onde N é o comprimento indicado para NLR/NLS acima. Dessa forma, para o exemplo NLS de 5-mer discutido supra (AGTGC), a frequência esperada seria 0,255 = 0,0098.
[0026] Em outras modalidades, uma frequência que é baseada na frequência relativa de cada nucleotídeo no banco de dados-alvo é usada. A frequência relativa de cada nucleotídeo é calculada como a representação fracionária de nucleotídeos G, C, T e A através da totalidade de todas as sequências (coletivamente) no banco de dadosalvo (a 'frequência de banco de dados' para aquele nucleotídeo). Neste caso, a frequência esperada para a NLS é calculada para cada sequência de comprimento N por, (1) para cada posição na NLS, registrando a frequência de banco de dados do nucleotídeo
Petição 870190040348, de 29/04/2019, pág. 14/63
11/51 representado naquela posição (A, G, C ou T); e então (2) cálculo do produto daquelas frequências de banco de dados para gerar uma frequência esperada para a NLS inteira. Por exemplo, se a composição de base do banco de dados inteiro é A=0,20, G=0,30, T=0,20 e C=0,30, a frequência esperada da NLS AGTGCseria 0,2 x 0,3 x 0,2 x 0,3 x 0,2 = 0,00072.
[0027] Em casos onde a frequência observada de uma NLS particular no banco de dados é maior do que a frequência esperada calculada, a razão de observada/esperada é maior do que um e o escore de probabilidade log é um número positivo. Em casos onde a frequência observada é mais baixa do que a frequência esperada, a razão é menor que um e o escore de probabilidade log é um número negativo. Dessa forma, para cada NLS, uma probabilidade log positiva significa que a NLS é observada muito mais vezes do que seria esperado estatisticamente, e uma probabilidade log negativa significa que a NLS é observada muito menos vezes do que seria esperado estatisticamente.
[0028] Em casos onde uma dada NLS não é observada no banco de dados (isto é, onde a frequência observada é zero), uma aproximação é usada. Em um exemplo, a frequência observada é estabelecida [em 1/1 + o número total de NLSs observadas no banco de dados]. Em outro exemplo, um valor arbitrário menor do que a frequência observada mais baixa na Tabela NLS Stats é selecionada. Consequentemente, NLSs não observadas tipicamente têm escores probabilidade muito baixos em relação a NLSs observadas.
MÓDULO DE ESCORE [0029] Em um aspecto da invenção, o Módulo B pode ser usado para avaliar o ajuste de uma sequência particular (ou sequências) a uma
Tabela NLS Stats. Por exemplo, a sequência de interesse pode ser esquadrinhada para procurar regiões de baixo escore, ou um escore
Petição 870190040348, de 29/04/2019, pág. 15/63
12/51 agregado da sequência inteira pode ser calculado. Este escore agregado pode ser usado, por exemplo, para comparar duas sequências nucleotídicas diferentes que codificam o mesmo aminoácido para determinar que sequência seria um melhor ajuste de expressão em um organismo-alvo. Enquanto não ligado por qualquer teoria ou mecanismo particular, é proposto que as sequências, que têm uma preponderância de regiões de baixo escore (ou sequências que têm um escore agregado mais baixo), tenham níveis mais baixos de expressão no organismo-alvo do que sequências, que têm uma preponderância de regiões de escore mais altas (ou sequências com um escore agregado mais alto). Um método para avaliar o ajuste de uma sequência a uma Tabela NLS Stats compreende:
a. Fornecimento de uma Tabela NLS Stats (por exemplo, uma Tabela NLS Stats para um organismo-alvo no qual a sequência de interesse deve ser expressa);
b. Identificação de cada NLR dentro da sequência de interesse, por exemplo, pelo uso de um algoritmo de janela deslizante como descrito acima;
c. Para cada NLR, leitura de NLS naquela posição;
d. Uso de uma Tabela NLS Stats, procurando o escore de probabilidade log de cada NLS identificada nas etapas b e c. Este valor de probabilidade NLS é usado como um valor de probabilidade para cada posição de NLR na sequência de interesse.
e. Soma dos escores de probabilidade log de todas as posições de NLR para desenvolver um escore total da sequência de interesse. Observar que a soma de escores logs é equivalente a valores de probabilidade de base de multiplicação (não log).
f. Este método fornece um escore agregado da sequência inteira.
[0030] Outro método para avaliar o ajuste de uma sequência a uma
Petição 870190040348, de 29/04/2019, pág. 16/63
13/51
Tabela NLS Stats envolve a busca de segmentos de baixo escore dentro de uma sequência de interesse maior. Tais segmentos de baixo escore podem representar barreiras significantes à expressão transgênica, ou podem ser suficientes para interromper expressão. Este método compreende:
a. Subdivisão de uma sequência de interesse em segmentos menores. Tais segmentos podem ser sobrepostos. Por exemplo, uma sequência de 1000 bp pode ser dividida em segmentos de 50 bp,
b. Marcação de cada segmento dessa forma identificado usando um método similar a este descrito acima.
c. Registro dos escores de cada segmento.
d. Determinação de um escore para a sequência inteira que é equivalente ao segmento de escore mais baixo na sequência. MÓDULO C. MÓDULO DE OTIMIZAÇÃO [0031] Quando a sequência nucleotídica de interesse é uma sequência de codificação de uma proteína de interesse, será necessário avaliar a lista de todas as NLSs possíveis em cada dada NLR e identificar aquelas NLSs que não interrompem a região de leitura aberta e/ou a sequência de aminoácido codificada (isto é, são 'silenciosas' com relação à tradução proteica). Os conjuntos de tais NLSs são neste pedido referidos como listas de NLSs silenciosas ou SNLS.
[0032] Em um aspecto da invenção, as listas de SNLS são desenvolvidas pelo uso da sequência inteira de interesse como uma base para tradução e avaliação. Este método compreende:
a. Para cada NLR dentro de uma sequência de interesse, substituição de cada NLS possível na sequência original de interesse naquela posição. Por exemplo, para n=5, há 1024 sequências possíveis (AAAAA, AAAAC, AAAAG... TTTTT).
b. Tradução tanto da sequência original inteira de interesse como da sequência substituída gerada recentemente em sequências de
Petição 870190040348, de 29/04/2019, pág. 17/63
14/51 aminoácidos.
c. Comparação das duas sequências de aminoácidos. Se as duas traduções forem idênticas, a substituição é considerada silenciosa e a NLS usada naquele ciclo é adicionada à lista de SNLS para aquela posição de NLR.
d. Após avaliação de cada NLS possível, a lista de SNLSs para aquela posição é completa.
[0033] Em outro aspecto desta invenção, a lista de SNLS é desenvolvida pela realização de tradução somente limitada e comparação na vizinhança imediata da NLR a ser examinada. Este método é computacionalmente preferencial versus o método descrito acima. Este método compreende:
a. Para cada NLR dentro de uma sequência de interesse, estabelecimento de uma região de janela traduzível em volta da NLR. Isto é realizado pela extensão da NLR nas direções 5' e/ou 3' tal que, i) o comprimento da região se torne um múltiplo de 3 (para acomodar o tripleto natural do código genético), e ii) a posição inicial da região estendida é na região com a região de tradução da sequência original de comprimento total (isto é, parental).
b. Uso da sequência parental que corresponde a esta região estendida como uma sequência de bases, substituindo cada NLS possível na sequência de bases em uma posição que corresponde à NLR inicial na etapa a.
c. Tradução tanto da sequência de bases original como da sequência substituída recentemente gerada em sequências de aminoácidos.
d. Comparação das duas sequências de aminoácidos. Se as duas traduções forem idênticas, a substituição é considerada silenciosa e a NLS usada naquele ciclo é adicionada à lista de SNLS para aquela posição de NLR.
Petição 870190040348, de 29/04/2019, pág. 18/63
15/51
e. Após avaliação de cada NLS possível, a lista de SNLSs daquela posição é completa.
[0034] Em outro aspecto desta invenção, a lista de SNLS é gerada pela criação inicial de um peptideo traduzido de cada NLR, e então seleção de membros de SNLS do conjunto de todas as sequências nucleotídicas degeneradas que podem codificar o peptideo traduzido. Este método compreende:
a. Para cada NLR dentro de uma sequência de interesse, estabelecendo uma janela traduzível na armação em volta do NLR. Isto é realizado estendendo o NLR nas direções 5' e/ou 3' tal que, i) o comprimento da região se torne um múltiplo de 3 (para acomodar a natureza tripla do código genético), e ii) a posição inicial da região estendida é armação com a armação de tradução da sequência original total.
b. Usando a sequência parental que corresponde a esta região estendida como uma sequência de bases, gerar uma sequência de aminoácido-alvo (isto é, traduzir a sequência nucleotídica original daquela região).
c. Gerar o conjunto de todas as sequências nucleotídicas que codificam a sequência de aminoácido-alvo. Este conjunto de sequências é considerado 'degenerado' por causa da redundância do código genético.
d. A partir do conjunto de sequências degeneradas, identificar e registrar a sequência de comprimento N que está na posição que corresponde à NLR original na etapa a.
e. A lista de todas as NLSs identificadas na etapa d, menos quaisquer duplicatas, é a lista de SNLS daquela posição.
[0035] A seguir, o escore de cada SNLS é determinado usando a Tabela NLS Stats, e um escore delta é calculado para cada SNLS. O escore delta ou Δ representa a diferença do escore de probabilidade
Petição 870190040348, de 29/04/2019, pág. 19/63
16/51 entre a sequência original da NRL da sequência nucleotídica de interesse e cada SNLS correspondente (A=silenciosa - original). Consequentemente, um escore delta positivo indica que SNLS é mais similar às sequências no banco de dados-alvo (tem um escore de probabilidade mais alto) do que a sequência original, e a magnitude do escore delta corresponde ao grau do viés observado no banco de dados-alvo. Então, para cada NLR, a lista de SNLSs é classificada pelo escore delta do mais alto ao mais baixo. A lista de SNLSs que é gerada para uma NLR individual é referida neste pedido como a lista de SNLS correspondente daquela NLR particular. Dessa forma, cada NLR terá sua própria lista de SNLS correspondente. Para otimizar uma sequência, a estratégia geral é substituir a NLS original em cada uma NLR com uma SNLS tendo o maior escore delta. O efeito líquido destas substituições é dirigir a composição total da sequência original mais próxima à composição das sequências no banco de dados-alvo. Ao mesmo tempo, os subsegmentos de baixo escore da sequência original são substituídos com segmentos de escore mais alto conservando a tradução original da sequência inteira. Um algoritmo exemplar para realizar as etapas deste módulo pode incluir as seguintes etapas:
1) Para a sequência de manipulação, estabelecer a sequência como sequência de entrada.
2) Desenvolver uma lista de todas as posições NLR na sequência de entrada com base no comprimento N utilizado para a Tabela NLS Stats. Tipicamente há [L-N+1] posições de NLR em uma sequência, onde L é o comprimento da sequência original.
3) Para cada NLR, desenvolver uma lista de SNLSs correspondente.
4) Escolher o SNLS de maior escore (por exemplo, SNLS com o escore delta mais alto) para a sequência inteira pelo exame de cada lista de SNLSs correspondente. No caso de empate de escores
Petição 870190040348, de 29/04/2019, pág. 20/63
17/51 delta, a posição mais a 5' é usada primeiro.
5) Para a NLR tendo o escore de SNLS mais alto, configurar a sequência desta NLR para ser a sequência da SNLS de escore correspondente mais alto.
6) Temporariamente amarrar quaisquer NLRs que sobreponham-se à posição que foi somente modificada, incluindo a própria NLR que foi modificada. Esta etapa deve prevenir 'flip-flopping' ou outros processos cíclicos onde uma área limitada única é modificada para frente e para trás se sobrepondo a substituições. NLRs trancadas não são consideradas para substituições de NLS durante o resto deste ciclo de otimização. Entretanto, são destrancadas em ciclos subsequentes para permitir a otimização total da sequência.
7) Selecionar as SNLS de escore superior para a sequência inteira a partir da lista de NLRs remanescentes destrancadas e listas de SNLS correspondentes.
8) Repetir as etapas 5 a 7 até que cada NLR na sequência 1) seja trancada, ou 2) já contenha SNLS de escore mais alto daquela posição. Neste ponto, um ciclo único de otimização foi concluído.
9) Destrancar a sequência inteira.
10) Gerar um escore para a sequência inteira usando a Tabela NLS Stats como descrito acima.
11) Repetir o procedimento de otimização que começa na etapa 1, usando a sequência do ciclo prévio como sequência de entrada.
12) Continuar a repetir etapas 1 a 11 (isto é, realizar ciclos de otimização sequenciais) até que dois ciclos consecutivos produzam sequências de escore idêntico. Isto indica que nenhuma otimização adicional é possível.
13) Produzir a sequência do último ciclo como a 'sequência totalmente otimizada'.
Petição 870190040348, de 29/04/2019, pág. 21/63
18/51 [0036] Em outro aspecto desta invenção, um ciclo preliminar de otimização é realizado diretamente a partir da sequência de aminoácido da sequência parental traduzida. Este método compreende:
a. Tradução da sequência parental inteira em uma sequência de aminoácido.
b. Divisão do gene traduzido inteiro em segmentos peptídicos contíguos. O comprimento de cada segmento peptídico pode variar de 1 aminoácido ao comprimento inteiro do gene traduzido (com cada segmento tendo o mesmo comprimento). Os comprimentos de aproximadamente 3 a aproximadamente 10 aminoácidos são preferenciais com sistemas computacionais atuais.
c. Para cada segmento peptídico, criação de um conjunto de todas as sequências nucleotídicas que codificam aquele segmento (um grupo de sequências degeneradas).
d. Escore de cada sequência nucleotídica degenerada dessa forma gerada usando uma Tabela NLS Stats gerada para o banco de dados-alvo (ver Módulo B). Este escore é calculado pelos métodos descrevedos no módulo de escore descrito supra para marcar subsegmentos de uma sequência.
e. Seleção da sequência nucleotídica de mais alto escore para cada segmento peptídico, e montando estas sequências em ordem.
f. Passagem da sequência montada preliminarmente por otimização adicional como descrito acima.
[0037] Em processos opcionais subsequentes (Módulos D e E), a sequência otimizada do Módulo C é ainda analisada e ajustada para remover qualquer região de leitura aberta inesperada ou sequências de DNA curtas indesejáveis.
MÓDULO D. REMOÇÃO DE SEQUÊNCIAS DE DNA CURTAS INDESEJÁVEIS
Petição 870190040348, de 29/04/2019, pág. 22/63
19/51 [0038] Em um aspecto da invenção, certas sequências de DNA curtas que representam ou que se acredita serem capazes de representar características indesejáveis são removidas da sequência otimizada. Tais sequências de DNA curtas podem incluir certas sequências de reconhecimento de enzima de restrição, sequências de poliadenilação, sítios de reconhecimento de junção 5' e ou 3' e similares. Estes elementos podem ser definidos pelo usuário particular.
[0039] Em um aspecto da invenção, tais sequências de DNA curtas são removidas da sequência nucleotídica pelo esquadrinhamento da sequência para elementos indesejados e substituição das NLSs de NLRs sobrepondo estas sequências curtas com NLSs diferentes, por meio disso interrompendo a sequência nucleotídica curta. Preferencialmente, a NLS tendo o impacto mais baixo no escore total é substituída por uma NLS sobreposta ao elemento indesejado. Métodos para cálculo do escore total são discutidos em outro lugar neste pedido. No caso de otimização da sequência de DNA codificante, somente substituições de SNLS são permitidas, e substituições que introduzem ORFs espúrias (isto é, inesperadas) são reprovadas. Este ciclo é tipicamente repetido até que nenhum sítio indesejável permaneça, embora possa não ser necessário remover cada sequência indesejável. A remoção de sequências de DNA curtas é tipicamente realizada durante ou após otimização de acordo com os Módulos A, B e C neste pedido, ou pode ser realizada na ausência de qualquer destes módulos. [0040] Em um aspecto desta invenção, sequências indesejáveis específicas, tais como sítios de poliadenilação, podem ser removidas de uma sequência otimizada. Deste modo, este método pode realizar tanto a otimização geral como a correção sítio específica em casos onde tal conhecimento esteja disponível. Exemplos de sítios de poliadenilação incluem, mas não são limitados a, AATAAA, AATATT, AACCAA, ATACTA, AATGAA, GATAAA, ATATAA, ATAAAA, ATTAAT, AATAAT,
Petição 870190040348, de 29/04/2019, pág. 23/63
20/51
A ATA AG, AATCAA, ATGAAA, AAGCAT, ATACAT, AAAATA, ATTAAA, AATTAA, AATACA, e CATAAA (SEQ ID N°:8 a 11, 1, e 12 a 26, respectivamente) (ver, por exemplo, Zhao et al. (1999) Microbiol. Mol. Biol. Rev. 63:405-445). Sítios de poliadenilação vegetal-específicos são descritos em Joshi (1987) Nucleic Acids Res. 15:9627-9640 e Rothnie (1996) Plant Mol. Biol. 32:43-61. Sítios de poliadenilação procarióticos são discutidos em Sarkar (1997) Annu. Rev. Biochem. 66: 173-197. Sinais de terminação de polimerase incluem, mas não são limitados a (CAN)7-9AGTNNAA (ver, por exemplo, Vankan and Filipowicz (1988) EMBOJ. 7:791-799). Sítios de junção consenso incluem, mas não são limitados a, 5'-AAG:GTAAGT e 3'TTTT(Pu)TTT(Pu)T(Pu)T(Pu)T(Pu)TGCAG:C (ver, por exemplo, Brown etal. (1986) EMBOJ. 5:2749-2758; Hanley and Schuler (1988) Nucleic Acids Res. 16:7159-7176). A maioria dos resíduos invariáveis dos sítios de junção são os GT 5'e AG 3'.
[0041] A sequência nucleotídica otimizada também pode ser ainda modificada pela substituição com NLSs tendo uma probabilidade mais baixa de gerar estrutura secundária estável de RNA. Tais estruturas secundárias incluem, mas não são limitadas a alças de grampo (estruturas snapback). Sequências capazes de formar alças de grampo incluem, mas não são limitadas a CUUCGG (SEQ ID N°:27) e UCUUCGG (SEQ ID N°:28) (ver, por exemplo, Tuerk et al. (1988) Proc. Natl. Acad. Sei. U.S.A. 85: 1364-1368).
[0042] Além disso, a sequência otimizada pode ser ainda otimizada pela eliminação da ocorrência de sequências nucleotídicas consenso curtas não desejadas, tais como sítios de reconhecimento de endonucleases de restrição, sequências de poliadenilação, sequências de reconhecimento de junção 5' e 3' e similares.
MÓDULO E. REMOÇÃO DE ORFS ADICIONAIS [0043] Em outro aspecto da invenção, regiões de leitura aberta
Petição 870190040348, de 29/04/2019, pág. 24/63
21/51 (ORFs) que não codificam a proteína de interesse são removidas da sequência otimizada. Esta remoção de ORFs indesejadas ou espúrias é realizada pela substituição de NLSs em posições NLR internas à ORF espúria com NLSs que interrompem a ORF espúria. Uma NLR interna é uma NLR que está incluída nos limites da ORF espúria como identificada por todas traduções de sequência da sequência de interesse. Nesta modalidade, a sequência é esquadrinhada para a ORFs presentes ou espúrias. A seguir, as posições de NLR que são internas às ORFs espúrias são identificadas. Substituições de SNLS nestas posições NLR são avaliadas, e aquelas que interrompem a ORF espúria são selecionadas com base no escore delta como descrito acima. Tipicamente, as SNLS tendo impacto mais baixo no escore total são selecionadas. Como somente SNLSs são consideradas, são selecionadas as substituições que interrompem qualquer ORF espúria não interrompendo a ORF primária. Este ciclo pode ser repetido para gerar sequências otimizadas cada vez mais polidas, ou até ORFs espúrias tendo um comprimento maior do que aproximadamente 1000, aproximadamente 900, aproximadamente 800, aproximadamente 700, aproximadamente 600, aproximadamente 500, aproximadamente 400, aproximadamente 300, aproximadamente 200, aproximadamente 100, ou maior do que aproximadamente 75 nucleotídeos são removidas. MÓDULO F. OTIMIZAÇÃO DO CONTEÚDO GC.
[0044] Ainda em outro aspecto da invenção, as sequências nucleotídicas otimizadas podem ser ainda alteradas para ajustar o conteúdo GC da sequência otimizada. Esta alteração pode ser realizada pela substituição de NLSs em NLRs com NLSs tendo diferentes conteúdos GC. Substituições que introduzem ORFs espúrias ou sequências de DNA curtas indesejáveis devem ser reprovadas. Em um exemplo, todas as SNLSs possíveis em todas as NLRs são examinadas, e aquelas que têm o menor impacto no escore total alterando o
Petição 870190040348, de 29/04/2019, pág. 25/63
22/51 conteúdo GC líquido são identificadas. Substituições são feitas iterativamente com trancamento como descrito acima até que o conteúdo GC total do gene alcance um limiar-alvo; por exemplo um conteúdo GC de aproximadamente 40 a aproximadamente 60%, por exemplo aproximadamente 60%, aproximadamente 59%, aproximadamente 58%, aproximadamente 57%, aproximadamente 56%, aproximadamente 55%, aproximadamente 54%, aproximadamente 53%, aproximadamente 52%, aproximadamente 51%, aproximadamente 50%, aproximadamente 49%, aproximadamente 48%, aproximadamente 47%, aproximadamente 46%, aproximadamente 45%, aproximadamente 44%, aproximadamente 43%, aproximadamente 42%, aproximadamente 41%, aproximadamente 40%, aproximadamente 39% ou aproximadamente 38%.
[0045] Em uma modalidade, o conteúdo GC da sequência nucleotídica otimizada é uniformizado de lado a lado da sequência nucleotídica inteira. Por uniforme de lado a lado da sequência nucleotídica é entendido que o conteúdo GC de qualquer subsegmento definido da sequência otimizada inteira tem um conteúdo GC que é similar ao conteúdo GC de qualquer outro subsegmento definido da sequência otimizada inteira. Por similar ao conteúdo GC, entende-se que o conteúdo GC de um subsegmento de referência está dentro de aproximadamente aproximadamente aproximadamente aproximadamente aproximadamente aproximadamente
20%, dentro de 15%, dentro de 9%, dentro de 7%, dentro de 5%, dentro de 3%, dentro de aproximadamente aproximadamente aproximadamente aproximadamente aproximadamente aproximadamente
19%, dentro de 10%, dentro de 8%, dentro de 6%, dentro de 4%, dentro de 2%, dentro de aproximadamente 1%, ou menos do conteúdo GC da subseção com a qual a seção de referência está sendo comparada.
Petição 870190040348, de 29/04/2019, pág. 26/63
23/51
MÉTODOS IMPLEMENTADOS POR COMPUTADOR [0046] Os métodos descritos acima para gerar uma sequência nucleotídica sintética podem ser realizados, inteiramente ou em parte, com o uso de um programa de computador ou método implementado por computador. Programas de computador e produtos de programa de computador da presente invenção compreendem um meio usável por computador tendo lógica de controle armazenada nele para fazer que um computador gere uma sequência nucleotídica sintética que codifica um polipeptídeo de interesse. Em uma modalidade, o programa de computador compreende um meio usável por computador tendo lógica de controle armazenada nele para fazer que um computador gere uma Tabela NLS Stats, a lógica de controle compreendendo um primeiro código para fazer que o computador aceite informação externa introduzida por um dispositivo de entrada, em que a informação externa compreende um banco de dados de sequências de DNA e uma designação de comprimento N. A lógica de controle também é referida como código legível por computador e/ou executável por computador.
[0047] Em outra modalidade, o programa de computador compreende um meio usável por computador tendo lógica de controle armazenada nele para fazer que um computador gere uma sequência nucleotídica otimizada que codifica um polipeptídeo de interesse, a lógica de controle compreendendo um primeiro código para fazer que o computador aceite a informação externa introduzida por um dispositivo de entrada, em que a informação externa compreende uma Tabela NLS Stats, e uma sequência nucleotídica a ser otimizada. A lógica de controle também é referida como código legível por computador e/ou executável por computador.
[0048] Em outra modalidade, o programa de computador compreende um meio usável por computador tendo lógica de controle armazenada nele para fazer que um computador gere uma sequência
Petição 870190040348, de 29/04/2019, pág. 27/63
24/51 nucleotídica otimizada que codifica um polipeptídeo de interesse, a lógica de controle compreendendo um primeiro código para fazer que o computador aceite a informação externa introduzida por um dispositivo de entrada, em que a informação externa compreende a sequência de DNA de uma sequência nucleotídica otimizada, e um conjunto de sequências de DNA e de proteína que são menos desejadas (por exemplo, sequências de DNA curtas indesejáveis como descrito em outro lugar neste pedido). A lógica de controle também é referida como código legível por computador e/ou executável por computador.
[0049] Em outra modalidade, o programa de computador compreende um meio usável por computador tendo lógica de controle armazenada nele para fazer que um computador gere uma sequência nucleotídica sintética (otimizada) que codifica um polipeptídeo de interesse, a lógica de controle compreendendo um primeiro código para fazer que o computador aceite informação externa introduzida por um dispositivo de entrada, em que a informação externa compreende um banco de dados de sequências de DNA, uma designação do comprimento N e uma sequência de aminoácido para a qual desenvolve-se o(s)gene(s) otimizado(o); um segundo código para fazer que o computador gere uma Tabela NLS Stats de entrada; um terceiro código para desenvolver o conjunto de NLRs, um quarto código para determinar o conjunto de NLSs que não interrompem a região de leitura aberta (NLSs silenciosa, ou SNLS), e um quinto código para otimizar as escolhas entre montagens de SNLS para produzir uma sequência gênica otimizada.
[0050] Sistemas computacionais da presente invenção usados para gerar uma sequência nucleotídica sintética que codifica um polipeptídeo de interesse compreendem um processador operacional para determinar, aceitar, verificar, e expor dados, uma memória para armazenar dados ligados ao dito processador, um dispositivo de
Petição 870190040348, de 29/04/2019, pág. 28/63
25/51 exposição ligado ao dito processador para expor dados, um dispositivo de entrada ligado ao dito processador para introduzir dados externos; e uma escrita legível por computador com pelo menos dois modos de operação executável pelo dito processador. Uma escrita legível por computador pode ser um programa de computador ou lógica de controle de um produto de programa de computador de uma modalidade da presente invenção.
[0051 ] Não é crítico para a invenção que o programa de computador seja escrito em qualquer linguagem particular de computador ou opere em qualquer tipo particular de sistema computacional ou sistema operacional. O programa de computador pode ser escrito, por exemplo, em linguagem de programação C++, Java, Peri, Python, Ruby, Pascal ou Basic. É entendido que cada um pode criar tal programa em uma das muitas linguagens de programação diferentes. Em um aspecto desta invenção, este programa é escrito para operar um computador utilizando um sistema operacional Linux. Em outro aspecto desta invenção, o programa é escrito para operar um computador utilizando um MS Windows ou sistema operacional MacOS.
[0052] Seria entendido por um versado na técnica que os códigos podem ser executados em qualquer ordem, ou simultaneamente, conforme a presente invenção contanto que a ordem siga um fluxo lógico.
[0053] Em uma modalidade, o programa de computador tem um espaço de entrada para o usuário para inserir a sequência de aminoácido desejada e um espaço de saída onde a sequência nucleotídica gerada é exposta. Em uma modalidade, o programa de computador tem um modo de edição, onde a probabilidade para selecionar cada NLS de cada NLR pode ser modificada como desejado pelo usuário.
SEQUÊNCIAS NUCLEOTÍDICAS PARA OTIMIZAÇÃO
Petição 870190040348, de 29/04/2019, pág. 29/63
26/51 [0054] Uma sequência nucleotídica sintética (ou otimizada) pode ser gerada para qualquer sequência nucleotídica que codifica um polipeptídeo de interesse, incluindo mas não limitada a sequências que codificam proteínas pesticidas, proteínas de resistência a herbicida, proteínas de resistência a fungos, enzimas hidrolíticas, incluindo enzimas que alteram a quantidade e/ou natureza de carboidrato, proteína, ou lipídio/óleo em um grão vegetal, traços de qualidade, ou qualquer outra proteína de interesse. Proteínas pesticidas incluem proteínas delta-endotoxina, tais como aquelas de Bacillus thuringiensis. [0055] Por pesticida é entendido a capacidade de ocasionar a morte a pelo menos uma praga, ou reduzir visivelmente o crescimento, alimentação, ou desenvolvimento fisiológico normal da praga. Um composto inseticida é aquele que tem esta atividade contra uma praga da ordem dos insetos. Uma proteína de resistência a herbicida ou proteína que resulta da expressão de uma molécula de ácido nucleico que codifica resistência a herbicida inclui proteínas que conferem a uma célula a capacidade de tolerar uma concentração mais alta de um herbicida do que células que não expressam a proteína, ou tolerar certa concentração de um herbicida por um tempo mais longo do que células que não expressam a proteína.
[0056] Os seguintes exemplos são oferecidos por meio de ilustração e não por meio de limitação.
EXPERIMENTAL
Exemplo 1. Otimização de um gene de delta-endotoxina bacteriano para expressão em Zea mavs usando modelo estatístico de ordem 5.
[0057] Etapa 1: Identificação e coleta de cDNA de sequências de Z.
mays (Módulo A). Sequências de regiões codificantes conhecidas na técnica a serem expressa em Zea mays foram coletadas de fontes públicas (por exemplo, GENBANK®). Estas sequências consistiram em mRNAs, cDNAs, ou fragmentos genômicos representando sequências
Petição 870190040348, de 29/04/2019, pág. 30/63
27/51 codificantes. Como necessário, as sequências foram editadas para remover regiões de não codificantes (preferencialmente pela identificação de regiões de região de leitura aberta (ORF) dentro da população de sequência).
[0058] Etapa 2: Geração de uma Tabela NLS Stats de sequências de cDNA de Zea mays usando um N de 5. As sequências de Z. mays foram analisadas usando uma janela de sequência de deslizamento de 5 bases como descrito no módulo B. Uma tabela consistindo em todas as sequências de 5 bases possíveis foi gerada, e as contagens registradas para cada sequência de 5 bases observada no conjunto de sequência de Z. mays da Etapa 1. As contagens observadas foram divididas pelo número total de sequências de 5 bases observadas para gerar valores de frequência brutos. Os valores de frequência brutos observados foram divididos por valores de frequência esperados para gerar razões observadas/esperadas de todas as sequências de 5 bases (NLSs) na sequência de Z. mays estabelecida. Frequências esperadas neste exemplo foram definidas usando um modelo de distribuição flat (isto é, cada NLS (sequência de 5 bases) foi considerada igualmente provável dentro de 1.024 NLSs possíveis (sequências de DNA de 5 bases)). A tabela resultante é referida como a Tabela NLS Stats. Foi considerado que razões observadas/esperadas aproximam-se da probabilidade de ocorrência de cada uma das sequências de 5 bases observadas.
[0059] Etapa 3. Substituição de sequências de 5 bases de baixa probabilidade (NLSs) no gene de delta-endotoxina bacteriana com sequências de alta probabilidade. Um gene candidato de deltaendotoxina (Axmi004; descrevendo no pedido de patente U.S.
10/739.610 depositado em 18 de março de 2003) foi examinado pela análise de janela deslizante para determinar a probabilidade relativa de cada sequência de 5 bases (NLS onde N=5) dentro do gene. Todas as
Petição 870190040348, de 29/04/2019, pág. 31/63
28/51 posições nucleotídicas da sequência gênica foram colocadas em ordem crescente de acordo com sua probabilidade de ocorrência em Z. mays, neste caso aproximado pelo uso da Tabela NLS Stats da Etapa 2. Começando com as posições de sequência de probabilidade mais baixas, um conjunto de substituições silenciosas foi gerado pela identificação de todas as NLSs possíveis (substituições de 5 bases) naquela posição que não interromperam a região de leitura gênica ou introduziram mutações na sequência de aminoácido gênica (SNLSs). Em cada posição, a substituição silenciosa de 5 bases (SNLS) tendo razão observada/esperada mais alta de Z. mays (mais alto posicionamento na Tabela NLS Stats) foi substituída pela sequência de 5 bases existente. Este ciclo foi repetido como descrito no módulo C, acima, e repetido para vários ciclos até modificações silenciosas adicionais que aumentou a probabilidade líquida da sequência gênica não foram possíveis. A sequência resultante foi considerada o gene otimizado preliminar.
[0060] Etapa 4. Remoção de ORFs espúrias do gene otimizado preliminar. ORFs que não codificam o gene de interesse foram removidas do gene otimizado preliminar pela substituição de NLSs no gene otimizado preliminar (sequências de 5 bases) com SNLSs (sequências de 5 bases) como descrito no módulo D, acima. Foram selecionadas substituições que interromperam qualquer região de leitura aberta espúria identificada não interrompendo a região de aberta (neste caso, a proteína Axmi004). Este ciclo foi repetido até que nenhuma região de leitura aberta espúria, maior do que 75 aminoácidos, permanecesse no gene otimizado produzindo um gene otimizado de ORF limpa.
[0061] Etapa 5. Remoção de sequências de DNA curtas indesejáveis do gene otimizado preliminarde ORF limpa. As sequências de DNA curtas que codificam características indesejáveis, incluindo sequências de
Petição 870190040348, de 29/04/2019, pág. 32/63
29/51 reconhecimento de enzima de restrição, foram removidas do gene otimizado preliminar pela substituição de NLSs no gene otimizado preliminar com SNLSs (sequências de 5 bases) como descrito no módub E, acima. Substituições que introduziram ORFs espúrias foram reprovadas. Este ciclo foi repetido até que nenhum sítio indesejável permanecesse, resultando em um gene totalmente otimizado.
[0062] Etapa 6. Geração de um gene variante totalmente otimizado tendo reduzido conteúdo GC. Uma variante do gene totalmente otimizado foi gerada pela substituição de NLSs no gene totalmente otimizado com SNLSs (sequências de 5 bases) como descrito no módulo F, acima. Substituições que introduziram regiões de leitura abertas espúrias ou sequências de DNA curtas indesejáveis foram reprovadas. Todas as substituições silenciosas possíveis foram avaliadas, e aquelas que tinham o menor impacto na razão observado/esperado enquanto ainda reduzindo conteúdo GC líquido foram identificadas. As substituições foram feitas desta maneira iterativamente até que o conteúdo GC total do gene fosse dirigido abaixo de um limiar-alvo de 50,0%. Esta sequência foi considerada o gene otimizado sub 50% GC.
Exemplo 2. Os seguintes algoritmos fornecem um exemplo de um conjunto funcional de algoritmos para executar métodos da invenção.
# Synthetic gene creation and optimization classes #
# This program is the property of Athenix Corp.
# All rights reserved # Daniel J. Tomso, programmer # Created; 07-Mar-06 #
# Modified: 07-Mar-06, DJT
Modified: OS-Mar-06, DJT
# Modified; Q9~Mar-Q6, DJT
Modified: 10-Apr-ü6f DJT
# Modified: ll-Apr-06, DJT
Petição 870190040348, de 29/04/2019, pág. 33/63
30/51
Modified: 12-Apr-06r DJT
# Modified: 26-Apr-Oê, DJT
Modified: 27-Apr-06, DJT
Modified: 28-Apr-06, DJT
Modified: 01-May-06( DJT
Modified: 17-May-06, DJT
Modified: 01-Jun-06, DJT
Modified: 18-Sep-07, DJT (Beginning of experimental re-write for
protein-dir :ected opt)
Modified: 23-Jan-08, DJT (tweaks for new orf handling requirements
# Modified: 16-Apr-O81 DJT (clean out ncn-CATG seqs in keys)
Modified: 12-Aug-08, DJT (begin major upgrade)
import re import sys import pickle from math import log from seq_handler import SeqHandler from orf_classes import OrfFinder class SeqStats:
Base n-order sequence statistics class. def __init__(self, order = 5):
,l Initialize by passing in an order (oligo length) value. 11,1 self.order = order self.oligo_count = 0 self.oligos = self,build_oligos() self.oligo_stats = (} def build_oligos(self):
Builds an empty dictionary of all n-order oligos. oligo_keys = [''] for i in range(0, self.order):
new_oligos = [] for oligo in oligo_keys:
for base in [Ά', ’C, 'G', 'T’2 :
noligo = oligo + base new_oligos.append(noligo) oligo_keys = new_oligos oligos - {} for oligo in oligo_keys: oligos[oligo] = 0 return oligos def add(self, oligo):
Adds an oligo stats matrix. ......
if re.search(1[ACGT]', oligo):
return self.oligos[oligo] += 1 self.oligo_count += 1 def add_seq(self, sequence):
Adds all oligos from a sequence to the stats matrix. sequence = sequence.upper[) for i in range(0r len(sequence) - self.order + 1):
oligo = sequence[i:i + self.order] self,add (oligo) def update(self):
Calculates the statistics matrix from the current raw count values.
Petição 870190040348, de 29/04/2019, pág. 34/63
31/51 notseen = log(l / float(self.oligo_count + 1)) stats = {} expected = 0.25**self.order for oligo in self.oligos:
if self.oligos[oligo] ==· 0:
stats[oligo] = notseen else;
observed - self.oligos[oligo] / float(self.oligo_count) stats[oligo] = log(observed/expected, 10) self.oligo_stats = stats def sscore(self, sequence):
Returns a log probability score for a given sequence. sequence = sequence.upper [) score = 0 for i in range(0f len(sequence) - self.order + 1):
oligo = sequence[i:i + self.order] score 1= self.oligo_stats[oligo] return score def savefself, filename):
Simple pickle routine to save N-order stat data to file. dataset = [self.order, self.oligo_count, self.oligos, self.oligo_stats] savefile = open(filename, ’»') pickle.dump(dataset, savefile) savefile.closeO print Data saved to %s % (filename) def loadfself, filename):
Simple pickle routine to load N-order stat data from file.
1T II JT loadfile = open(filename, ’r') (self.order, self.oligo_count, self.oligos, self,oligo_stats) = pickle.load(loadfile) loadfile.close() class SiteManager():
Class to manage site detection and preservation operations in DNA.
def __init__(self, tablefile):
self.siteset = self.load(tablefile) def load(self, filename):
Loads a table of sites into grouped sets.
siteset = {) loadfile = open(filename, ’rü’) for line in loadfile:
line = line.rstrip() if re.match('#1, line): # comment line continue group, sequence = iine.split(’\t') if siteset.has_key (group):
siteset[group].append(sequence) else:
siteset[group] = [sequence] return siteset def findsites(self, sequence):
min p£ncjs instançes of the siteset in a sequence, returns a dictionary with paired sites and locaticns. ’MT
Petição 870190040348, de 29/04/2019, pág. 35/63
32/51 sitetable = (} for group in self.siteset.keys():
for siteseq in seif . siteset[group]:
siteiter = re.finditer(siteseq, sequence) for sitematch in siteiter:
if sitetable.has_key(group): sitetable[group].append([siteseq, sitematch.start() ]) else:
sitetable[group] = [[siteseq, sitematch.start() ] ] return sitetable class SeqOptimiser(SeqStats) :
rr,m |jerivec[ class for sequence optiiriization using n-order sequence statistics.
def __init__iself, sequence, statfile, order = 5):
SeqStats.__init__(self, order) self.load(statfile) self.seq = sequence self.length = len (sequence) self.sh = SeqHandlerf) self.opt_table = {] self.changedsites = [] # list of sites changed during optimization rounds def sequence(self, sequence = None):
Returns the current sequence, or updates the sequence. if sequence is None:
return self.seq else:
self.seq = sequence def score(self, sequence = None):
Overrides basic score—returns current sequence score if no parameter specified, otherwise scores passed sequence.
if sequence:
score = self.sscore(sequence) else:
score - self.sscore(self.seq) return score def segments[self, oligo, position):
Returns segments for substitution method. offset = self.order - 1 begin = position - offset begin = begin - (begin % 3) end = position + self.order + offset end = end 4- (3 - end i 3) if begin < 0:
begin = 0 if end > self.length:
end = self.length org^dna = self.seq[begin:end] prefix = self.seq[begin:position] suffix = self.seq[position + self.order:end] newdna = prefix + oligo + suffix return org_dna, new_dna def segment(self, position):
Petição 870190040348, de 29/04/2019, pág. 36/63
33/51
Returns cleanly-translatable sequence segment and offset correction for degeneration method.
offset = self.order - 1 begin = position - offset begin = begin - (begin % 3) end = position + self.order + offset end = end + (3 - end % 3) if begin < 0:
begin = 0 if end > self.length;
end = self.length org_dna = self.seq[begin:end] correction = position - begin return org_dna, correction dei silent(self, org_dna, new_dna): # use with substitution method Returns 1 if a silent mutation, 0 if an aa change is introduced.
org_aa = self.sh.translate(org_dna) new_aa = self.sh.translate(new_dna) if org_aa == new_aa:
return 1 else:
return 0 def delta(self, org_dna, new_dna):
Returns the delta score for two DNA segments. org_score = self.score(org_dna) new_score = self.score(new_dna) return new_score - org_score def subsíseif, position, threshold = -100000.0):
Degeneraticn-based silent substitution routine. org_dna, correction = self.segment(position) org_aa = self.sh.translate(org_dna) org_oligo = self.seq[position:pcsition - self.order] degenerates = self.sh.degenerate(org_aa) nsubs = {} for degenerate in degenerates:
oligo = degenerate[correction:correction + self.order] if self.score(oligo) < threshold: continue if nsubs.has_key(oligo):
continue else:
prefix = org_dnaI:correction] suffix = org^dna[correction ± self.order;] new_dna = prefix + oligo + suffix new_aa = self.sh.translate(new_dna) if new_aa <> org_aa:
continue # some non-silent possibilities depending on position and frame delta = self.delta(org^dna, new_dna) nsubs[oligo] = delta subs = [] for oligo in nsubs.keys():
delta = nsubs[oligo] subs.appendf[delta, oligo]) subs.sort(cmp = lambda x, y: cmp(x[0], y[0])) return subs
Petição 870190040348, de 29/04/2019, pág. 37/63
34/51 def old_subs(self, position, threshold = -100000.0):
Returns a scored list of silent substitutions for the given position and sequence.
subs = [] for oligo in self.oligos: org_dna, new_dna = self.segments(oligo, position) if self.silent(org_dna, new_dna):
delta = self.delta(org_dna, new_dna) if self.score(oligo) < threshold:
continue subs.append([delta, oligo]) if len(subs) == 0:
subs.append([0.0, self.seq[position:positíon + self.order]]) subs.sort(cmp = lambda x, y: cmp(x[0], y[0])) return subs def update_opt_table(self);
Updates the optimization table for every site in the changed site list.
for i in self.changedsites:
oligo = self.seq[i:i + self.order] best_delta, best_oligo = self.subs(i)[-1] # default threshold, accepts all subs self,opt_table[í] = ([best_delta, best_oligo]) def site_collision(self, position):
Tests for overlap between the region surrounding position and the site table.
offset = self.crder - 1 for i in range(position - offset, position + self,order + offset):
if i in self.changedsites:
return True return False def update_site_table(self, position):
Updates the changed site table for all site overlapping the currer.t position.
offset = self.order - 1 begin = positicn - offset end = position + self.order + offset if begin < 0:
begin = 0 if end > (self.length - self.order + 1): end = (self.length - self.order + 1) for i in range(begin, end): self.changedsites.append(i) def opt_round(self) :
Performs a single round of non-overlapping low-position optimization.
self.update_opt_table() self.changedsites = [] skeys = self.opt_table.keys() skeys.sort (cmp = lambda x, y: crrp (self. opt_table [y] [0 ], self,opt_table[x][0])) maxdelta = self,opt_table[skeys[0]][0] # largest observed delta in the opt table if maxdelta <= 0.0:
return False # Not changed, converged for position in skeys:
Petição 870190040348, de 29/04/2019, pág. 38/63
35/51 delta, oligo = self.opt_table[position] if delta > 0.0:
if self.site_collision(position):
continue print \t\tüpdating at position %s, oligo is %s, raw score is %2.3f, delta score is %2.3f. % \ (position, oligo, self.score(oligo), delta) org__aa = self.sh.translate(self.seq) prefix = self.seq[0:position] suffix = self.seqlposition + self.order:] var_seq = prefix + oligo + suffix self.seq = var_seq self.update_site_table(position) return True # Changed def optimize(self, maxtries = 2000):
Low-position-first optxmization routine.
self.changedsites = range (0, self.length - self.order + 1) round = 1 while round <= maxtries:
print \tBeginning round. %s of optimization. £ (round) changed = self,opt_round() print \tRcund %s completed. Sequence score is %4.3f % (round, self.score O) if not changed:
print \tCptimization complete.
return True round += 1 self.changedsites = range(0, self.length - self.order +1) # force rescan now that we have a faster algorithm print XtOptimization incomplete after %s rounds. % (maxtries) return False def trace (self, sequence = None):
Generates a sliding-window traces of the sequence and returns n-order stat scores for every position.
if sequence is None: sequence = self.seq trace = [] for i in range(0, len(sequence) - self.order + 1):
oligo = sequence[i:i + self.order] trace.appendf[i, oligo, self.score(oligo)]) return trace def lowscores(self, number = 10):
rl Returns the lowest-scoring positions in the sequence. trace = self.trace(sequence) trace.sort(cmp = lambda x,y: cmp(x[2], y[2])) lows = [] for i in range(0, number):
lows.appendltrace[i]12]) return lows class PSeqGenerator(SeqStats):
cerived class for sequence optimization using n-order sequence statistics and protein-based operations.
def __init__(self, sequence, statfile, order = 5, segmentsize = 5, stepsize = 3):
SeqStats._init_(self, order) self.load(statfile) self.aseq = sequence # this is now an amino acid sequence
Petição 870190040348, de 29/04/2019, pág. 39/63
36/51 self.length = len(sequence) # amino acid length self.sh = Seqüandler() self.seq = self.generate(segmentsize; # generates starting optimal nucleotide sequence from protein sequence def sequence(self, sequence = None) :
Returns the current sequence, or updates the sequence. if sequence is None:
return self.seq else:
self.seq = sequence def score(self, sequence = None):
Overrides basic score—returns current sequence score if no parameter specified, otherwise scores passed sequence.
if sequence:
score = self.sscore(sequence) else:
score = self.sscore(self.seq) return score def candidate(self, position, segmentsize):
New degeneration-based silent substitution routine, returns candidate silent sequences of a given a.a. length. ......
aa_segment = self.aseq[position:position + segmentsize] print \tDegenerating sequence %s at position %s % (aa_segment, position) degenerates = self.sh.degenerate(aa_segnent) high_degenerate = 1' high_score = -10.0 for degenerate in degenerates:
if self.score(degenerate) > high_score: high_degenerate = degenerate high_score = self.score(degenerate) return high_dègenerate, high_sccre def generate(self, segmentsize):
DNA_seq = 1' for i in range(0, self.length, segmentsize):
best_DNA, best_score = self.candidate(i, segmentsize) DNA_seq = DNA_seq r best_DNA return DMA_seq class SeqScrubber(SeqOptimizer):
Eerived class to handle scrubbing and GC drivedown operations on optimized sequences.
def init(self, sequence, statfile, order = 5, orfmax = 75, threshold = 0.0,\ sitetable = ’/home/python/scrub_sites.table', addtable = 1/home/python/add_sites.table1) :
SeqOptimizer.__init_Jselí, sequence( statfile, order) self.threshold = threshold # minimum acceptable score for a replacement oligo self.orfmax = crfmax # maximum acceptable length for a spurious ORF self.of = OrfFinder(minlength = self.orfmax) self.stable = self.load_scrubtahle(sitetable) self.scrublist = [] # list of sites changed during scrubbing operations self.atable = [J
Petição 870190040348, de 29/04/2019, pág. 40/63
37/51 self.deadorfs = [] self.origsites = {} def orfcount(self, sequence, verbose = False):
Counts the number of qualifying ORFs in a sequence, of_orfs = self.of.get_orfs(sequence, require_atg = False, requíre_stop = False) orfs = [] if verbose:
for orf in of_orfs:
orfs.append([orf['lsngth1], orf['start']]) if verbose:
return orfs ei se:
return len(of_orfs) def get_orf(self, psequence, start, end):
Returns a cleanly-translatable ORF from the current sequence.
if start < end:
subseq = psequence[start:end] else:
subseq = psequence[end:start] subseq = self .sh.revers=_corrplement (subseq) return subseq def scrubintervals(self, lowpos, highpos):
Generates discontinous intervals to attempt ORF scrubbing.
If II It brange = [] fullorfnt = self.orfmax * 3 maxorfnt = int(fullorfnt + 0.8) # use 80% of maximum for scrub target intsize = (fullorfnt - maxorfnt) * 2 # pretty big, but we need some targets lowend = lowpos + maxorfnt highend = highpos - maxorfnt if lowend >= highend: í small orf, need slightly larger interval center = lowpos + (highpos - lowpos) / 2 bmax = center + intsize / 2 bmin = center - intsize / 2 if bmax < lowend:
bmax = lowend if bmin > highend:
bmin = highend brange = range(bmin, bmax) else: # larger orf, these ranges will be too small if there is only one interval!
multiple = (highend - lowend) / maxorfnt + 1 # how many ranges we will be picking fintsize = intsize / multiple # pick the same number of total sites for i in range(lowend, highend):
if not (i - lowpos) % maxorfnt: # at a multiple of maxorfnt for j in range(i + intsize - fintsize, i + intsize): brange,append(j) return brange def possibles(self, prange):
Petição 870190040348, de 29/04/2019, pág. 41/63
38/51
Returns a list of possible silent substitutions in a range of positions.
possibles = [1 for position in prange: if position in self.scrublist: continue # skip positions on the 'do not change' list coligo = self.seq[position:position + self.order] psubs = self.subs(position, threshold = self.threshold) for ípdelta, poligo) in psubs:
if poligo == coligo: continue # skip the existing oligo at this position possibles.append([pdelta, poligo, position]) poSsibles.sort(reverse = Trüe) return possibles dei variant(selí, position, poligo):
Returns the new variant sequence using poligo as a substitute at the current position.
prefix = self.seq[0:position] suffix = self.seq[position + self.order:] psequence = prefix + poligo + suffix return psequence def scrub_orf(self, orf, forcei = False, force2 = False): Breaks up an ORF. Pass ín an ORF instance. if orf[Tend'J > orf['begin']: ü forward strand scrubrange = self.scrubintervals(orf['begin'], orf[’end']) if forcei:
scrubrange = range (orf['begin1] + 30, orf['end'] - 30) # maximum range else: # reverse strand scrubrange = self.scrubintervals(orf['end'], orf['begin']) if forcei:
scrubrange = range(orf['end'] + 30, orf['begin'] - 30) org_threshold = self·threshold if force2:
self.threshold -= 0.5 possibles = self.possibles(scrubrange) self.threshold = org_threshold for (pdelta, poligo, position) in possibles: psequence = self.variant(position, poligo) porfseq = self.get_orf(psequence, orf['begin’], orf['end’]) ptrans = self.sh.translate(porfseq) if in ptrans:
self.sequence(psequence) # update sequence to match the variant offset = self.order - 1 self.scrublist.append(position) # lock down the position to avoid flipflops print \t\t\tSolution fcund: %s at position %s, delta is %2.3f. % (poligo, position, pdelta} return True # successful scrub return False # failed scrub def orfcheck(self, variant):
Compares ORF counts and positions in sequence and variant, returns True if variant has the same ORFs as sequence.
seq_orfs = self.orfcount(self.seqj var_orfs = self.orfcount(variant) if seq_orfs == var_orfs:
return True
Petição 870190040348, de 29/04/2019, pág. 42/63
39/51 else:
return False def sitecheck(self, variant):
Compares scub site counts and positions for the primary sequence and a variant, returns True if they match, False otherwise. seq_sites = self.sitecount(self.seq) var_sites = self.sitecount(variant) if seq_sites == var_sites:
return True else:
return False def scrub_largest_crf(self):
Attempts te remove the largest spurious ORF in the sequence. 1T II IT orfs = self .of.get^orfs(self.seq, require_atg = False, require_stop = False) orfs.sort(cmp = lambda x, y: cmp(x[’length1], y('length’]), reverse = True) # sort ORFs by size orfsjmax = len(orfs) - 1 cur_orf - 1 while cur_orf <= orfs_max:
orf = orfs[cur_orf] # next ORF to work on print \t\tLargest spurious ORF is %s amino acids, from nucleotide %s to %s. % (orf['length'], orf['begin'], orf['end']) orfkey = str(orf['begin']) + + str(orf['end']) if orfkey in self.deadorfs:
print \t\tSkipping—unscrubbable ORF.
cur_orf += 1 continue scrubbed = self,scrub_orf(orf) if scrubbed:
return True else:
print \t\tScrub failed—attempting again with force levei 1 (expanded scrub range).
scrubbed = self,scrub_orf(orf, forcei = True) if scrubbed:
return True else:
\t\tForce failed—attempting again with force levei 2 Ireduced substitution threshold).
scrubbed = self.scrub_orf(orf, forcei = True, force2 = True) if scrubbed:
return True else:
print \t\tForce failed. ORF not scrubbed. self.deadorfs.append(orfkey) return True # a change was made return False # no changes made def scrub_orfs(self):
self.deadorfs = [] scrubround = 0 orfcount = self.orfcount(self.seq) while orfcount > 1:
scrubround += 1 print \tRcund %s, current ORF count is £s % (scrubround, orfcount)
Petição 870190040348, de 29/04/2019, pág. 43/63
40/51 scrubbed = self.scrub_largest_orf() if not scrubbed:
return len(self.deadorfs) orfcount = self.orfcount(self.seq) return 0 # orfcount is now 1, only primary ORF remains def cleanup(self):
Final post-scrubbing cleanup to check for optimizable sites. 1T II 1T prange = range(0, self.length - self.order + 1) changed = True org_threshold = self.threshold self.threshold = -10000.0 # allow all changes that produce a positive delta self.scrublist = [] while changed:
print \tPerforming cleanup scan ... changed = False possibles ° self.possibles(prange) for (pdelta, poligo, position) in possibles:
if pdelta <= 0:
continue seq_gc = self.sh.gc(self.seq) psequence = self.variant(position, poligo) var_gc = self.sh,gc(psequence) if var_gc > seq_gc:
continue if not self.orfcheck(psequence):
continue if not self .sitecheck(psequence):
continue self.sequence(psequence) changed = True print \r\tChange made at position %s, oligo is %s, delta is %2.3f % (position, poligo, pdelta) break self.threshold = org_threshold def drivedown_gc(self, gc_target):
Reduces GC content by making silent changes. prange = range(0, self.length - self.order + 1) print \tScanning sequence for possible changes ... possibles = self.possibles (prange) saa = self.sh.translate(self.sequence()) for (pdelta, poligo, position) in possibles:
seq_gc = self.sh.gc(self.seq) if seq_gc <= gc_target:
return True # threshold reached psequence = self.variant(position, poligo) if self . sh.gc (psequence) >= self.sh.gc(self.seq): continue # no GC decrease if not self.orfcheck(psequence): continue # change creates ORFs if not self.sitecheck(psequence);
continue # change creates sites paa = self-sh.translate(psequence) if paa <> saa: # a mutation, shouldn't happen! continue self.sequence(psequence) self.scrublist.append(position) var_gc = self.sh.gc(psequence)
Petição 870190040348, de 29/04/2019, pág. 44/63
41/51 gcdelta = var_gc - seq_gc print \t\tUpdating at position %s, oligo is %s, delta is %2.3f, new GC percent is %3.2f. % (position, poligo, pdelta, var_gc * 100) return False def sitecount(self, sequence, verbose = False);
Counts the number of unscrubbed sites in the current sequence.
sitecount = 0 sitelist = [] for name in self.stable.keys() :
site, comment - self.stable[name] for match in re.finditer(site, sequence): sitelist.append([name, match.start()]) sitecount += 1 if verbose:
return sitelist else:
return sitecount def load_scrubtable(self, tablefilename):
Loads a table of sequences to scrub. stable = {] tfíle = open(tablefilename, 'r') for line in tfile:
if re.match(r’#', line):
continue items = re.split(r'\s+', line) name, site = items[0:2] comments = items[2:] comment = ' '.join (comments) stable[name] = [site, comment] return stable def asegment(self, begin, end, sequence):
Returns cleanly-translatable sequence segment.
begin = begin - (begin % 3) end = end + (3 - end % 3) if begin < 0:
begin = 0 if end > len(sequence):
end = len(sequence) dna = sequence [begimend] return dna def scrub_site(self, site, position):
,l scubs a single site from a designated position in the sequence.
offset = self.order - 1 scrubstart 11 position - offset if scrubstart < 0:
scrubstart = 0 scrubend = position + len(site) + offset if scrubend > self.length;
scrubend = self.length scrubrange = range(scrubstart, scrubend) possibles = self.possibles(scrubrange) for (pdelta, poligo, position) in possibles:
psequence = self.variant(position, poligo) pregion = psequence[scrubstaro:scrubend]
Petição 870190040348, de 29/04/2019, pág. 45/63
42/51 if re.search(site, pregion): continue # site is still present, skip this soiution else:
if self.orfcheck(psequence):
self.sequence(psequence) # update sequence self.scrublist.append(position) # lock down the position to avoid flipflops print \t\t\t\tSolution found: %s at position %s, delta is %2.3f % (poiigo, position, pdelta) return True # change made else:
print \t\t\t\tRejected soiution %s at %s for extraneous ORF creation. % (poiigo, position) continue return False def scrub_first_site(self, name):
Attempts to scrub an instance of the named site from the site table.
(site, comment) = self.stable[name] print \t\tAttempting to scrub first incidence of site %s, sequence %s. % (name, site) if not re.searchfsite, self.seq):
print \t\tNo matches found for site %s % (site) return nomatch for matcb in re .finditer(site, self.seq):
print \t\t\tSite found at positions %s to %s. % (tnatch. start () , match.end()) scrubbed = self.scrub_site(site, match.start0) if scrubbed:
return scrubbed else:
print \t\t\tUnable to remove site, advancing to next position.
continue print \t\tMatches not fixable with current parameters. return failed def scrub_sites(selfj:
Scrubs DNA sites out of an cptimized sequence. targets = self.sitecount(self.seq) scrubround = 0 failures = 0 while (targets > 0 and failures < 10):
scrubround += 1 print \tRound %s, current site count is %s. % (scrubround, targets) for name in self.stable.keys():
scrubbed = self.scrub_first_site(name) if scrubbed is scrubbed:
targets = self.sitecountfself.seq) break elif scrubbed is nomatch:
continue else:
failures += 1 continue if (targets == 0 and failures == 0) :
return True else:
return False
Petição 870190040348, de 29/04/2019, pág. 46/63
43/51 # Driver for synthetic gene statistics creatron # This program is the property of Athenix Corp.
# All rights reserved # Daniel J. Tomso, programmer # Created: 07-Mar-06 #
# Modified: 07-Mar-06, DJT
# Modified: 09-Mar-06, DJT
# Modified: 12-Apr-06, DJT
# Modified: 13-Aug-08f DJT (refined for new EST data, with complexity
filters) import fasta_classes import syngene_classes import orf_classes import sys import re def complexityscore(seq) :
Calculates a complexity score for an amino acid stretch, typically an ORF, score = 0 for i in range[0, len(seq) - 2):
if seqíi] == seq[i + 1]:
score -= 1 if seq[i - 1:i] :— seq[i + l:í + 2]:
score -= 1 adjscore = score / float (len(seq)) return score, adjscore def leastcomplexwindow (seq, windowsize = 20):
Returns the lowestest score for n-length segments of the sequence.
leastscore = 0 for i in range (0, len(seq) - windowsize):
score, adjscore = complexityscore(seq[i:i + windowsize]) if score < leastscore:
leastscore - score adjleastscore = leastscore / float(windowsize) return leastscore, adjleastscore infile = sys.argvfl] # Input in FASTA format savefile = sys.argv[2] # Filename to save stat data into oorder = int(sys.argv[3]) # Oligo order—length of oligo to use in analysis orfminlength =150 of = orf_classes,OrfFinder(minlength = orfminlength) fp = fasta^classes.FastaParser (infile) ss = syngene_classes.SeqStats(order = ocrder) orfcount = 0 failed = 0 passed = 0 for seq in fp:
orfs = of,get_orfs(seq.sequence, require_atg = False, require_stop = False) for orf in orfs:
Petição 870190040348, de 29/04/2019, pág. 47/63
44/51 if orf['strand'] <> 'forward':
failed. += 1 continue score, adjscore = complexityscore(orf[1aa_sea']) leastscore, adjleastscore = leastcomplexwindow(orf['aa_seq']) if adjleastscore < -0.40 or adjscore < -0.20: failed += 1 continue passed +=1 print %s\t%s\t%3.3f\t%s\t%3.3f\t%s\t%s % (orf['length'], score, adjscore, leastscore, adjleastscore, passed, failed) ss.add_seq(orf['dna_seq']) ss.update{) ss.save(savefile) # Driver for synthetic gene optimization # Thís program is the property of Athenix Corp.
# All rights reserved # Daniel J. Tomso, programmer # Created: 07-Mar-06
Modified: 07-Mar-06, DJT
Modified: 08-Mar-06, DJT
Modified: 09-Mar-06, DJT
Modified: 13~Apr~06, DJT
Modified: 26jApr-06, DJT
Modified: 27-Apr-06, DJT
# Modified: 28-Apr-06, DJT
Modified: 17-May-06, DJT
import fasta_classes import syngene_classes import orf_classes import sys from seq_handler import SeqHandler ####« Globais HHH scrub_orf_size = 75 # maximum acceptable size for alternative ORFs in sequence gc_target = 0.50 # set to 1,00 for no drivedown ####£ Reporting Routines ##### def show_sequence(opt_title, opt_seq, seqfile):
print print 'Optimizgd sequence: %s £ (opt_title) print Initial score: %4.2fXtOptimized score: ?4.2f % (ss.score(org^seq), ss.score(opt^seq)) print Initial GC percent: %3.2f\tOptimized GC percent: %3.2f % (ss.sh.gc(org_seq) * 100, ss.sh.gc(opt_seq) * 100) print fasta_classes.write(opt_title, opt_seq, seqfile) def check_sequence(org^seq, opt_seq, sh):
org_aa = sh.translate(org_seq) opt_aa = sh.translate(opt_seq)
Petição 870190040348, de 29/04/2019, pág. 48/63
45/51 if org_aa <> opt_aa:
print Optimization error! Mutation introduced! sys.exit()
Main Prograra ##### infile = sys.argvtl] # FASTA file of sequences to optimize statfile = sys.argv[2] # Pass in a stats file created by syngene_builder.py seqoutfile = sys.argv[3] # Pass in a file name to write cutput sequences to seqfile = open(seqoutfile, 'a') sh = SeqHandlerf) fp = fasta_classes.FastaParser(infile) for seq in fp:
org_seq = seq.sequence.upper() ss = syngene_classes.SeqScrubber(org_seq, statfile, order = 5) print XnOptimizing sequence %s . . . % (seq.title) ss.optimize 0 check_sequence(org_seq, ss.sequence(), sh) print \nAttempting to scrub spurious CRFs ...
unscrubbed = ss.scrub_orfs() if unscrubbed:
printXnWarni.ng: %s unscrubbable ORF(s) remain. % (unscrubbed) check_sequence(org_seq, ss.sequence(), sh) print \nAttempting to scrub disallcwed sites ...” scrubbed = ss.scrub_sites() check_sequence(org_geq, ss.sequence(), sh) print \nFinal cleanup in progress . . . ss.cleanup() check_sequence(org_seq, ss.sequence(), sh) opt_seq = ss.sequence 0 opt_title = seq.title + ’_opt_full' show_sequence(opt_title, opt_seq, seqfile) print XnAttempting GC drivedown to %2.3f . . .” % (gc_target) ss.drivedown_gc(gc_target) check_sequence(org_seq, ss.sequence(), sh) print \nFinal cleanup in progress . .
ss.cleanup() check_sequence(org_seq, ss.sequence(), sh) opt_seq = ss .sequence () opt_title = seq.title + ’_opt_%s' % (gc_target) show^sequence(optjtitle, opt_seq, seqfile) seqfile.close() i Driver for synthetic gene optimization, v2 (protein-based) # HHfflimmWíWmWíOOHí»» # This program is the property of Athenix Corp.
# All rights reserved # Daniel J. Tomso, programmer # Created: 18-Sep-07, from syngene_optimize.py i Modified: 18~Sep“07, DJT import fasta__classes import syngene_classes import sys from seg_handler import SeqHandler
Petição 870190040348, de 29/04/2019, pág. 49/63
46/51
Globais ###### scrub_orf_size = 75 # iraximum acceptable size for alternative ORFs in sequence gc^target = 0.50 # set to 1.00 for no drivedown ####! Reporting Routines HHI def show_sequence(opt_title, opt_seq, seqfile):
print print Optimized sequence: %s S (opt_title) print Optimized score: %4.2f è (ps.score (opt_seq)) print Optimized GC percent: %3.2f % (ps.sh.gc(opt_seq) * 100) print fasta_classes.write (opt title, optseq, seqfile) def check_sequence(org_seq, opt_seq, sh):
opt_aa = sh.transiste(opt_seq) if org_seq <> opt_aa:
print Optimization error! Mutation introduced!
sys.exit ()
Main Program HH# infile = sys.argv[l] #· FASTA file of sequences to optimize, this is now a protein statfile = sys.argv[2] # Pass in a stats file created by syngene_builder.py seqoutfile = sys,argv[3] # Pass in a file name to write output sequences to seqfile = open(seqoutfile, 'a') sh = SeqHandIer{) fp = fasta_classes.FastaParser (infile) for seq in fp:
org_seq = seq.sequence.upper() print \nGenerating initial optimum nucleotide sequence ... ps = syngene_classes.PSeqGenerator(org_seq, statfile, order = 5, segmer.tsize = 7) check_sequence(org_seq, ps.sequence (), sh) print VnOptimizing junctions and low spots . . .
= syngene_clas5es.SeqScrubber(ps.sequence(), statfile, order - 5) ss.optimize() reopt_seq = ss.sequence {) print \nAttempting to scrub spurious ORFs ...
unscrubbed = ss.scrub_orfs () if unscrubbed:
print\nWarning: %s unscrubbable ORF(s) remain. % (unscrubbed) check_sequence(org^seq, ss.sequence(), sh) print \nAttempting to scrub disallcwed sites ...
scrubbed = ss.scrub_sites() check_sequence(orgseq, ss.sequence(), sh) print \nFinal cleanup m progress . .
ss .cleanup () check_sequence(orgseq, ss.sequence(), sh) opt_seq = ss.sequence () opt_title “ seq.title + '_DNA' show_sequence(opt_title( opt_seq, seqfile) seqfile.close()
Exemplo 3. Geração de uma sequência qênica otimizada usando a
Petição 870190040348, de 29/04/2019, pág. 50/63
47/51 sequência nucleotídica [0063] O seguinte exemplo mostra um arquivo log abreviado gerado pelo uso dos algoritmos do Exemplo 2 para criar uma sequência gênica otimizada. Muitas entradas de log foram deletadas e substituídas com DADOS NÃO MOSTRADOS, que simplesmente indica que as etapas similares que foram realizadas mas não listadas neste exemplo. As sequências mostradas neste exemplo são listadas na Tabela 1.
Optimizing sequence LLxmOfMjjri^LnaJ...
Begi Lini tLg round L of qHimizution.
Updatingat position 1222, ulijju ls TGAGA. raw score is 0.032, delta score íü 4.664.
U|id0ii «ê ar position 403, oligo is TC AG A, raw score is 0,032, delia score is 4.134, (DATA KOTSHOWN)
Updating at position 1138, oligo is ACTTC, nm rscore is 0.127, delia >cütv is 0.]J4,
Rourtd I compldcd. Sequence score is 70.241 (DATA NOTSHOWNj
Bcgjnning tuiijid 6 of ofuimianon,
Updmgar position 1oligo is TGAGG. raw score is 0.041, deito score is 0.058.
RoutuI 6 conopletód. Sequence score ti 233.679
Bcgionitig Tound 7of opdmization.
Rournl 7 Dísiwplcted. Sequence score tq 233.679
Cpl iin Izati on complete.
Ai icji1]t1 ing tu strub spu ri ou s OR Fs
RouihE L eu ment 0 rf comí t is 10
I.urgesi sjuirious OR F is354 amino acids, from miçlcotide 824 to [itóf».
Sc Lution fouLid: TGCTG at posir íoji 1439, delta is -0.204P (DATANOTSHOWN)
Rouitd 31 r Currvn t O RI7 cou π t is 2
Ijtrgesi sp uri uns ÚRF k 75 amino acítk. from niLcleoliiíe 406 to 6.3 L.
Soiurion found: TGAGA A1 position 5KQ, dClta is -0 037.
Atteinpting io semb d isidWcd sites.. „
Round I „ currcnt sitccctunt ls I I.
Attempringtoscmb li™ incidence ofsite Humllll, sequence AAíJCTT,
No matchcs found for site AAGCTT (DATA NOTSHOW
Attemptuigttj sciub first inpidencc üf site Bí»sl_RC, sequence tjTCTTt’.
Site found at pçiSEtknv. 1152 to 1158.
Solution found: GGTGT at posidoti 1151, delta is -0.144
Petição 870190040348, de 29/04/2019, pág. 51/63
48/51
Kinal clcanup inprcgpess,. . .
Pcrforming clcanup scan ...
Chaiigc made ai posllioti 1340. eligjj is CAAAG, delia isO.fi36 fDATA NOT SHOWS )
Ofitimíied sequence: axiniOÜ4_cri«li]al_opt_full
IniliaE scorc: * I27.ÍÍI Optimizcd scorc: 219.3(1 lniiiaE GC pcrc-unt: 34.92 Οριϊπι ized GC púncuni; 55.59
Attcjiiptíng GC di ivcdowTi ti> ü.s(X),,,
Scanjiiug sequence fer pessiblc changcs...
Updaiingitt púsiiiüii 12Λ4. uli^ü is GGATC. delia is -0.(112. new GC perccfit is .5.5.54.
Updmgai pobition 162?, oligc is AAGAT, delis is -0.034, re^QÇ pcrccm is 55.4K «DATA N0TSHCMN1
Lpdatingat pusiticin 155, uligc is ATTTG, delta üs -0263, tiuwGC peruei] t is 49.97.
Finalclcanup in progjíss...
Pcrfunfliiiy dcarUrp ,mMh , ,.
Cliange made at pusitiun 1571, eiigo isTGGGC, delia is 0..1X7 (DATA NOT SHDWN)
Optimised seq ue ncc: axin iOfld_tirigina l_upt_0.5
I n il iat scüfc: -127. f> I OptimiEcd scorc: 2 02.61
I η il ial GC pcflMíii: 34.92 Optim lied GC pe reem: 49.71
Exemplo 4. Geração de uma sequência gênica otimizada usando uma etapa de otimização preliminar com base na sequência de aminoácido [0064] O seguinte exemplo mostra um arquivo log abreviado gerado pelo uso dos algoritmos do Exemplo 2 para criar uma sequência gênica otimizada pela execução de uma etapa de otimização preliminar usando a sequência de aminoácido traduzida. Muitas entradas de log foram deletadas e substituídas com DADOS NÃO MOSTRADOS, que simplesmente indicam que etapas similares foram executadas, mas não listadas neste exemplo. As sequências mostradas neste exemplo são listadas na Tabela 1.
Geneniting iiiitial uptimum nircleútide [.EqüEnce...
DcgEncrdting íicquíTicc MSELKGEí aí püüitkm ü
Lkgcnciating icqucncí; FKKSTNEÍ at pusition 7 Dcgcnci^tíiig seq uence TCCl. í. KI ai pus i tiuπ 14 (DATA NUT ÜEIÜWN)
Deyeneratiny Jieí]ueiice 'ElFIPVÈ nl posirkwi tó?
Petição 870190040348, de 29/04/2019, pág. 52/63
49/51
Optimizing juncricms. a.nd loiv spiitx,,,.
Bcyonmg rüimd I of qkimízarion
Updai i n g at pcs ition 1213, ol i-go is CCTTC, raα· m ore is 0.227, dcl ra scorc is 2.24«,
UpJfiti ei g at position 1048, oligo is ACCOC, mw scorç is 0.027, delta scorc is 2.066.
[jpjating at position 1111, pligu is CCAAC, raw scoro is 0.1 WS, dçlta seque is 1.600.
(DATA NOT SHOWNJ
Updaiing at position ) 1,20, digo is OGGAC, rw score is -0.030, delia sootç is 0,032.
Ruund I coinptçtcti. Scquçncc sconc Ls 235396
Bcy □ nÍTig. roímd 2 of optimization.
Updstingat position 1630, ültgo is ACAGG, raw store is -0.049, delia scorc ís 0.270.
Updaling at position 328, <iligo is TCG AG, raw scorc· is 0.126, delta scote is 0.159,
UpdatiEigat position 1054, ultgu is TCACG, raw scorc is 0..137. delta scüic ÍS 0.042,
Rüurtd 1 compíelcd. Sequence scorc is 235.867
Bey □ iiing jçund 3 of opl ímizat iqn.
Updating at position 1056, oligu is ACCTC, raw senre is 0.106. delta síoic isO.ÍMJ.
Routwl 3 ocmptefed, Sequence scort is 235.911
Bcgj n ni ng touitd A of opl Ímizat ion.
Ruuíh) 4 comptcicd, Sequence xioit is 235.911
Cplim i zati ott complete.
Attcrapting to scnib spurious DRFs..,
Rüutkí I. ourrern ORF cuum is 11
Larges 1 spiiTious ORF is 354 aminoacid*, frum rtucl colide 824 ίο 1S86. Solution found: TOCTü st position 1439, delta is -0.700.
Rtjum! 2. comeiir ORF min is 12
Largesl spurious ORF is 306 amino acids. from Ltucl colide 1653 to 735. Solutiun fuuiul: TCAAÂat positiun 1167., Jcltn L· 4).742.
(DATA NÜT SHOWNJ
Round 25, cyrrçnt ORF eount is 2 Largesi spurii>us ORF is 75 amino acids. from nuoclccficJe 406 to 631.
Solutiem found: TüAGA ai positioii 580, delta is -0.037,
Attcmpting Io semb disallcwcd sites...
RüutHf I, curtem sitecoum is 1L
Anempti ng to sctuò fírsi incidencc of site nindlll, sequence AAGCTT.
No matchcs found for site AAGCTT (daía not shoum) Attcmpting to scml· first incidcncc nf site BstnBI, sequence CGTCTCSLte found at púsrtiortS 194 to 200.
Petição 870190040348, de 29/04/2019, pág. 53/63
50/51
Solution fcmnihTC.AGC at posiritirn 196, delia is 4).439 Round 2, cnnunt sitccuunt ls 10.
AH empí i rig lu scrub flrst iiicidtncc ufsiieHindlll, scqucrice AAGCTT. No marches íbuiid íuFsite AAGCTT (DATA NOTSHQWN) Attempting lu sciub first incidente nfsifà Pstl. sequence CTGCAG.
Site ftiund al pasÊiious 11XK to 1194. Solulion íüund: TCCAG at posirittti I 1X9, delia is -0.344 (DATA NÜTSHOWl
Ríjutuj 11, current site covnl is I, (DATA NOT SHOWN) Attempting to scrub first irreidenet of site BbsIRC, sequence GTCTTC.
Site fouiiíl ar pusiiiuns 243 ui 249. SolutruTi füund: TCGTü at position 241. deLta is -0.493
Final deanup in progress... Perfurming clcanup scan,,.
Cliaugc mude at pusitiun 629, digo is AATC.A, deliu is 0.567 (DATA NOTSHOWN)
Ciangc rrmdc ai p-o&iiiori IK52, ΰ!ί^ΰ isTTTAT, delta, is 0.112 Pcrfcirming clcanifp scan ...
OfitÍmizedseqiiçnce: 3i!Tii0i]4_DMA
Ofitimizcd sconc: 222.40
OptimizedGC pcrccnr: 57,02
TABELA 1. Sequências descritas nos Exemplos 3 e 4.
Seqüência SEQ ID N°: Seqüência SEQ ID N°:
TGAGA 29 ACAGG 45
ACTTC 30 TCGAG 46
TGAGG 31 TCACC 47
TGCTG 32 ACCTC 48
AAGCTT 33 TCAAA 49
GTCTTC 34 CGTCTC 50
GGTGT 35 TCAGC 51
CAAAG 36 CTGCAG 52
GGATC 37 TCCAG 53
AAGAT 38 TCGTG 54
ATTTG 39 AATCA 55
TGGGC 40 TTTAT 56
CCTTC 41 MSELKGK 57
Petição 870190040348, de 29/04/2019, pág. 54/63
51/51
ACCGC 42 FKKSTNR 58
CCAAC 43 TCCLLKI 59
GGGAC 44 EFIPVE 60
[0065] Todas as publicações e pedidos de patentes mencionados relatório descritivo são indicativos do nível de habilidade daqueles versados na técnica à qual esta invenção pertence. Todas as publicações e pedidos de patentes são neste pedido incorporados por referência da mesma forma como se cada publicação ou pedido de patente individual fosse específica e individualmente indicado para ser incorporado por referência.
[0066] Embora a invenção precedente tenha sido descrita em detalhes por meio de ilustração e exemplo, para fins de clareza e entendimento, será óbvio que certas alterações e modificações podem ser praticadas dentro do escopo de acordo com as reivindicações adicionadas.

Claims (11)

    REIVINDICAÇÕES
  1. (1) definição de um conteúdo G:C alvo para a sequência otimizada da etapa (h);
    (1) varredura da sequência otimizada gerada na etapa (h) para identificar qualquer elemento de DNA curto indesejado;
    (1) varredura da sequência otimizada gerada na etapa (f) para identificar qualquer sequência de leitura aberta (ORF)espúria;
    1. Método de otimização de uma sequência nucleotídica para expressão em um organismo alvo, caracterizado pelo fato de que compreende:
    (a) fornecimento de uma sequência nucleotídica de interesse;
    (b) fornecimento de um banco de dados de sequências nucleotídicas alvo, em que o banco de dados é específico para um gênero do organismo alvo;
    (c) compilação de uma lista de todas as sequências nucleotídicas de comprimento N (NLS) possíveis de um comprimento dado de N, em que N tem menos do que o comprimento da sequência nucleotídica mais curta no banco de dados, e em que N é constante para cada NLS;
    (d) obtenção de um valor de frequência observado para cada NLS por meio da contagem do número de vezes que cada NLS é representada no banco de dados e dividindo pelo número total de NLSs observadas no banco de dados;
    (e) cálculo do escore de probabilidade para cada NLS identificado na etapa (c) com respeito ao banco de dados fornecido na etapa (b) para gerar uma Tabela de Estatísticas de NLS, em que o escore de probabilidade representa a frequência observada de cada NLS em relação à frequência esperada de ocorrência no banco de dados de destino;
    (f) identificação para uma ou mais regiões de comprimento N (NLR) da sequência nucleotídica de interesse de um conjunto correspondente de NLSs que não altera a sequência de aminoácidos codificada pela sequência nucleotídica de interesse, em que um NLS que não altera a sequência de aminoácidos codificada pela sequência nucleotídica de interesse é considerada uma NLS silenciosa (SNLS), e
    Petição 870190040348, de 29/04/2019, pág. 56/63
  2. (2) substituição de uma ou mais NLRs na sequência otimizada com uma SNLS correspondente que toma o conteúdo G:C mais próximo do conteúdo G:C alvo; e, (3) opcionalmente repetição das etapas (1) e (2) até que o conteúdo G:C alvo seja alcançado.
    (2) substituição de uma ou mais NLRs na sequência otimizada com uma SNLS correspondente que remove o elemento de DNA curto indesejado; e, (3) opcionalmente repetição das etapas (1) e (2) até que todos os elementos de DNA curtos indesejados sejam removidos da sequência.
    (2) substituição de uma ou mais NLRs na sequência otimizada com uma SNLS correspondente que interrompe a ORF espúria; e,
    2. Método de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa (h) compreende ainda:
    2/4 em que o comprimento N na NLR é igual ao comprimento N na NLS; e, (g) cálculo de um escore delta para cada SNLS, em que o escore delta representa a diferença entre o escore de probabilidade da NLR da sequência de nucleotídeos de interesse e cada SNLS correspondente;
    (h) substituição de uma ou mais NLRs na sequência nucleotídica de interesse pela SNLS correspondente com o maior escore delta para gerar uma sequência otimizada; e (i) sintetizar quimicamente uma molécula de ácido nucléico que consiste na sequência nucleotídica otimizada para expressão no organismo alvo.
  3. 3/4
    3. Método de acordo com a reivindicação 2, caracterizado pelo fato de que a etapa (h) compreende ainda:
    (3) opcionalmente repetição das etapas (g) e (h) até que todas as ORFs espúrias sejam removidas da sequência.
  4. 4/4
    (4) varredura da sequência otimizada gerada na etapa (2) ou (3) para identificar qualquer elemento de DNA curto indesejado;
    (4) definição de um conteúdo G:C alvo para a sequência otimizada da etapa (2) ou etapa (3);
    4. Método de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa (h) compreende ainda:
    (4) definição de um conteúdo G:C alvo para a sequência otimizada da etapa (2) ou etapa (3);
  5. (5) substituição de uma ou mais NLRs na sequência otimizada com uma SNLS correspondente que remove o elemento de DNA curto indesejado; e, (6) opcionalmente repetição das etapas (4) e (5) até que todos os elementos de DNA curtos indesejados sejam removidos da sequência.
    Petição 870190040348, de 29/04/2019, pág. 58/63
    (5) substituição de uma ou mais NLRs na sequência otimizada gerada na etapa (2) ou etapa (3) por uma SNLS correspondente que toma o conteúdo G:C mais próximo do conteúdo G:C alvo; e, (6) opcionalmente repetição das etapas (4) e (5) até que o conteúdo G:C alvo seja alcançado.
    5. Método de acordo com a reivindicação 4, caracterizado pelo fato de que a etapa (h) compreende ainda:
    (5) substituição de uma ou mais NLRs na sequência otimizada gerada na etapa (2) ou etapa (3) por uma SNLS correspondente que toma o conteúdo G:C mais próximo do conteúdo G:C alvo; e,
  6. 6. Método de acordo com a reivindicação 2, caracterizado pelo fato de que a etapa (h) compreende ainda:
    (6) opcionalmente repetição das etapas (4) e (5) até que o conteúdo G:C alvo seja alcançado.
    Petição 870190040348, de 29/04/2019, pág. 57/63
  7. (7) definição de um conteúdo G:C alvo para a sequência otimizada da etapa (6);
    7. Método de acordo com a reivindicação 1, caracterizado pelo fato de que a etapa (h) compreende ainda:
  8. (8) substituição de uma ou mais NLRs na sequência otimizada com uma SNLS correspondente que toma o conteúdo G:C mais próximo do conteúdo G:C alvo; e, (9) opcionalmente repetição das etapas (7) e (8) até que o con-teúdo G:C alvo seja alcançado.
    8. Método de acordo com a reivindicação 6, caracterizado pelo fato de que a etapa (h) compreende ainda:
  9. 9. Método de acordo com a reivindicação 1, caracterizado pelo fato de que o referido banco de dados alvo é específico para um organismo de interesse.
  10. 10. Método de acordo com a reivindicação 1, caracterizado pelo fato de que o referido comprimento N é entre 4 e 10.
  11. 11. Método de acordo com a reivindicação 10, caracterizado pelo fato de que o referido comprimento N é entre 5 e 7.
BRPI0818507A 2007-10-09 2008-10-09 Método de otimização de uma sequência nucleotídica para expressão em um organismo alvo BRPI0818507B8 (pt)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US97872907P 2007-10-09 2007-10-09
PCT/US2008/079343 WO2009049045A1 (en) 2007-10-09 2008-10-09 Computational methods for synthetic gene design

Publications (3)

Publication Number Publication Date
BRPI0818507A2 BRPI0818507A2 (pt) 2015-06-16
BRPI0818507B1 true BRPI0818507B1 (pt) 2019-09-17
BRPI0818507B8 BRPI0818507B8 (pt) 2022-07-05

Family

ID=40193507

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0818507A BRPI0818507B8 (pt) 2007-10-09 2008-10-09 Método de otimização de uma sequência nucleotídica para expressão em um organismo alvo

Country Status (11)

Country Link
US (1) US8175813B2 (pt)
EP (1) EP2208157B1 (pt)
CN (1) CN101821744B (pt)
AT (1) ATE504045T1 (pt)
AU (1) AU2008310806A1 (pt)
BR (1) BRPI0818507B8 (pt)
CA (1) CA2702084C (pt)
DE (1) DE602008005920D1 (pt)
MX (1) MX2010003878A (pt)
WO (1) WO2009049045A1 (pt)
ZA (1) ZA201002472B (pt)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130060481A1 (en) * 2010-01-15 2013-03-07 Board of Regents of the Nevada System of Higher Ed ucation,on behalf of The Desert Reserach Institut Systems and Methods for Identifying Structurally or Functionally Significant Nucleotide Sequences
US9321814B2 (en) 2011-03-30 2016-04-26 Athenix Corp. AXMI238 toxin gene and methods for its use
WO2012135501A2 (en) 2011-03-30 2012-10-04 Athenix Corp. Axmi232, axmi233, and axmi249 toxin genes and methods for their use
ES2743322T3 (es) 2011-04-05 2020-02-18 BASF Agricultural Solutions Seed US LLC Gen insecticida variante AXMI115 y procedimientos de uso
MX363910B (es) 2011-07-28 2019-04-08 Athenix Corp Gen de la toxina axmi270 y sus metodos de uso.
BR112014002027A8 (pt) 2011-07-29 2022-07-05 Athenix Corp Gene pesticida axmi279 e métodos para a sua utilização
WO2013134523A1 (en) 2012-03-08 2013-09-12 Athenix Corp. Bacillus thuringiensis toxin gene axmi335 and methods for its use
CA2866241C (en) 2012-03-08 2021-03-16 Athenix Corp. Axmi345 delta-endotoxin gene and methods for its use
UA117731C2 (uk) 2012-06-29 2018-09-25 Атенікс Корп. Токсин axmi277 проти нематод та його застосування
WO2014036238A1 (en) 2012-08-30 2014-03-06 Athenix Corp. Axmi-234 and axmi-235 toxin genes and methods for their use
ES2682351T3 (es) 2013-02-13 2018-09-20 Athenix Corp. Uso de AXMI184 para el control de los insectos del gusano de la raíz
CN110172466A (zh) 2013-03-07 2019-08-27 巴斯夫农业解决方案种子美国有限责任公司 毒素基因及其使用方法
WO2015038262A2 (en) 2013-08-09 2015-03-19 Athenix Corp. Axmi281 toxin gene and methods for its use
UY35696A (es) 2013-08-09 2015-03-27 Athenix Corp ?molécula de adn recombinante que comprende al gen de toxina axmi440, vector, célula huésped, plantas, composiciones y métodos relacionados?.
WO2015077525A1 (en) 2013-11-25 2015-05-28 Bayer Cropscience Lp Use of axmi-011 for the control of hemipteran insects
ES2982696T3 (es) 2013-12-09 2024-10-17 BASF Agricultural Solutions Seed US LLC Gen de la toxina AXMI486 y procedimientos para su uso
US11041158B2 (en) 2014-12-22 2021-06-22 AgBiome, Inc. Optimization methods for making a synthetic gene
US10468119B2 (en) 2015-07-28 2019-11-05 Yeda Research And Development Co. Ltd. Stable proteins and methods for designing same
WO2017017673A2 (en) * 2015-07-28 2017-02-02 Yeda Research And Development Co. Ltd. Stable proteins and methods for designing same
US11151497B2 (en) * 2016-04-27 2021-10-19 Zymergen Inc. Microbial strain design system and methods for improved large-scale production of engineered nucleotide sequences
CN118256514A (zh) 2016-11-23 2024-06-28 巴斯夫农业种子解决方案美国有限责任公司 Axmi669和axmi991毒素基因及其使用方法
KR20190095411A (ko) 2016-12-22 2019-08-14 바스프 아그리컬쳐럴 솔루션즈 시드 유에스 엘엘씨 선충 해충의 방제를 위한 cry14의 용도
WO2018136604A1 (en) 2017-01-18 2018-07-26 Bayer Cropscience Lp Bp005 toxin gene and methods for its use
WO2018136611A1 (en) 2017-01-18 2018-07-26 Bayer Cropscience Lp Use of bp005 for the control of plant pathogens
AU2020367523A1 (en) 2019-10-14 2022-04-28 BASF Agricultural Solutions Seed US LLC Novel insect resistant genes and methods of use
CA3157808A1 (en) 2019-10-14 2021-04-22 BASF Agricultural Solutions Seed US LLC Novel insect resistant genes and methods of use
US11049590B1 (en) 2020-02-12 2021-06-29 Peptilogics, Inc. Artificial intelligence engine architecture for generating candidate drugs
CN113793639B (zh) * 2021-08-03 2024-01-05 杭州瑞丰生物科技有限公司 一种管理玉米螟对Bt毒素抗性的方法
WO2024137438A2 (en) 2022-12-19 2024-06-27 BASF Agricultural Solutions Seed US LLC Insect toxin genes and methods for their use
WO2025111030A2 (en) 2023-07-07 2025-05-30 Basf Agricultural Solutions Us Llc Use of novel genes for the control of nematode pests
WO2025090606A1 (en) 2023-10-27 2025-05-01 Basf Agricultural Solutions Us Llc Use of novel genes for the control of nematode pests
WO2026010930A1 (en) 2024-07-05 2026-01-08 BASF Agricultural Solutions Seed US LLC Use of axmi277 for the control of rotylenchulus reniformis nematode pests

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5567600A (en) * 1983-09-26 1996-10-22 Mycogen Plant Sciences, Inc. Synthetic insecticidal crystal protein gene
US5380831A (en) * 1986-04-04 1995-01-10 Mycogen Plant Science, Inc. Synthetic insecticidal crystal protein gene
US6114138A (en) * 1984-06-04 2000-09-05 Mycogen Plant Science, Inc. Insecticidal protein fragments
TR27832A (tr) * 1987-04-29 1995-08-31 Monsanto Co Zararli ucucu hasarata mukavim bitkiler.
NZ230375A (en) 1988-09-09 1991-07-26 Lubrizol Genetics Inc Synthetic gene encoding b. thuringiensis insecticidal protein
US6015891A (en) * 1988-09-09 2000-01-18 Mycogen Plant Science, Inc. Synthetic insecticidal crystal protein gene having a modified frequency of codon usage
DK0413019T3 (da) * 1989-02-24 2001-11-12 Monsanto Technology Llc Syntetiske plantegener og fremgangsmåde til fremstilling af disse
US20010003849A1 (en) * 1989-08-07 2001-06-14 Kenneth A. Barton Expression of genes in plants
US6403865B1 (en) * 1990-08-24 2002-06-11 Syngenta Investment Corp. Method of producing transgenic maize using direct transformation of commercially important genotypes
UA48104C2 (uk) * 1991-10-04 2002-08-15 Новартіс Аг Фрагмент днк, який містить послідовність,що кодує інсектицидний протеїн, оптимізовану для кукурудзи,фрагмент днк, який забезпечує направлену бажану для серцевини стебла експресію зв'язаного з нею структурного гена в рослині, фрагмент днк, який забезпечує специфічну для пилку експресію зв`язаного з нею структурного гена в рослині, рекомбінантна молекула днк, спосіб одержання оптимізованої для кукурудзи кодуючої послідовності інсектицидного протеїну, спосіб захисту рослин кукурудзи щонайменше від однієї комахи-шкідника
AT405624B (de) * 1996-09-25 1999-10-25 Stempfer Ferdinand Ing Schweissgerät und schweissverfahren, insbesondere widerstandsschweissverfahren
US8434105B2 (en) * 2007-11-13 2013-04-30 Tp Lab, Inc. Television scripting language

Also Published As

Publication number Publication date
CN101821744A (zh) 2010-09-01
BRPI0818507A2 (pt) 2015-06-16
AU2008310806A1 (en) 2009-04-16
EP2208157B1 (en) 2011-03-30
US8175813B2 (en) 2012-05-08
DE602008005920D1 (en) 2011-05-12
MX2010003878A (es) 2010-10-15
ZA201002472B (en) 2011-06-29
EP2208157A1 (en) 2010-07-21
BRPI0818507B8 (pt) 2022-07-05
CN101821744B (zh) 2013-05-22
CA2702084A1 (en) 2009-04-16
US20090137409A1 (en) 2009-05-28
CA2702084C (en) 2017-07-25
ATE504045T1 (de) 2011-04-15
WO2009049045A1 (en) 2009-04-16

Similar Documents

Publication Publication Date Title
BRPI0818507B1 (pt) método de otimização de uma sequência nucleotídica para expressão em um organismo alvo
Birney et al. GeneWise and genomewise
Siepel et al. New methods for detecting lineage-specific selection
Lee Generating consensus sequences from partial order multiple sequence alignment graphs
Chaisson et al. De novo fragment assembly with short mate-paired reads: Does the read length matter?
Al Arab et al. Accurate annotation of protein-coding genes in mitochondrial genomes
Price et al. De novo identification of repeat families in large genomes
US9165109B2 (en) Sequence assembly and consensus sequence determination
US9715574B2 (en) Compressing, storing and searching sequence data
Warnow Supertree construction: opportunities and challenges
Diallo et al. Exact and heuristic algorithms for the indel maximum likelihood problem
Miller et al. CAM: An alignment-free method to recover phylogenies using codon aversion motifs
Lai et al. Fast heuristics for resolving weakly supported branches using duplication, transfers, and losses
Zhang et al. Spider-web enables stable, repairable, and encryptible algorithms under arbitrary local biochemical constraints in dna-based storage
Groult et al. Speeding up the detection of evolutive tandem repeats
Shkolikov et al. Deciphering the 3D genome organization across species from Hi-C data
Chan An analysis of pairwise sequence alignment algorithm complexities: Needleman-wunsch, smith-waterman, fasta, blast and gapped blast
Diaz-Riaño et al. Current progress in phased genome assembly from long-read DNA sequencing data
Diallo et al. Finding maximum likelihood indel scenarios
Dang et al. Estimating amino acid substitution models and rooting bacterial trees
Imelfort Sequence comparison tools
Alipanahi Variants and Applications of Colored De Bruijn Graphs
Mukherjee Algorithms for Single-Molecule Optical Maps
Chu Improving sequence analysis with probabilistic data structures and algorithms
Cotta et al. Metaheuristics in bioinformatics: Dna sequencing and reconstruction

Legal Events

Date Code Title Description
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06T Formal requirements before examination [chapter 6.20 patent gazette]

Free format text: EXIGENCIA DE PRE-EXAME.

B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 17/09/2019, OBSERVADAS AS CONDICOES LEGAIS. (CO) 10 (DEZ) ANOS CONTADOS A PARTIR DE 17/09/2019, OBSERVADAS AS CONDICOES LEGAIS

B25A Requested transfer of rights approved

Owner name: BASF SE (DE)

B25A Requested transfer of rights approved

Owner name: BASF AGRICULTURAL SOLUTIONS SEED US LLC (US)