Artigos

8.1E: Exercícios - Matemática


A prática leva à perfeição

Nos exercícios a seguir, determine os valores para os quais a expressão racional é indefinida.

Exemplo ( PageIndex {49} )

  1. ( frac {2x} {z} )
  2. ( frac {4p − 1} {6p − 5} )
  3. ( frac {n − 3} {n ^ 2 + 2n − 8} )
Responder
  1. z = 0
  2. (p = frac {5} {6} )
  3. n = −4, n = 2

Exemplo ( PageIndex {50} )

  1. ( frac {10m} {11n} )
  2. ( frac {6y + 13} {4y − 9} )
  3. ( frac {b − 8} {b ^ 2−36} )

Exemplo ( PageIndex {51} )

  1. ( frac {4x ^ {2} y} {3y} )
  2. ( frac {3x − 2} {2x + 1} )
  3. ( frac {u − 1} {u ^ 2−3u − 28} )
Responder
  1. y = 0
  2. (x = - frac {1} {2} )
  3. u = −4, u = 7

Exemplo ( PageIndex {52} )

  1. ( frac {5pq ^ {2}} {9q} )
  2. ( frac {7a − 4} {3a + 5} )
  3. ( frac {1} {x ^ 2−4} )

Avalie Expressões Racionais

Nos exercícios a seguir, avalie a expressão racional para os valores dados.

Exemplo ( PageIndex {53} )

( frac {2x} {x − 1} )

  1. x = 0
  2. x = 2
  3. x = -1
Responder
  1. 0
  2. 4
  3. 1

Exemplo ( PageIndex {54} )

( frac {4y − 1} {5y − 3} )

  1. y = 0
  2. y = 2
  3. y = -1

Exemplo ( PageIndex {55} )

( frac {2p + 3} {p ^ 2 + 1} )

  1. p = 0
  2. p = 1
  3. p = −2
Responder
  1. 3
  2. ( frac {5} {2} )
  3. (- frac {1} {5} )

Exemplo ( PageIndex {56} )

( frac {x + 3} {2−3x} )

  1. x = 0
  2. x = 1
  3. x = −2

Exemplo ( PageIndex {57} )

( frac {y ^ 2 + 5y + 6} {y ^ 2−1} )

  1. y = 0
  2. y = 2
  3. y = -2
Responder
  1. −6
  2. ( frac {20} {3} )
  3. 0

Exemplo ( PageIndex {58} )

( frac {z ^ 2 + 3z − 10} {z ^ 2−1} )

  1. z = 0
  2. z = 2
  3. z = −2

Exemplo ( PageIndex {59} )

( frac {a ^ 2−4} {a ^ 2 + 5a + 4} )

  1. a = 0
  2. a = 1
  3. a = −2
Responder
  1. −1
  2. (- frac {3} {10} )
  3. 0

Exemplo ( PageIndex {60} )

( frac {b ^ 2 + 2} {b ^ 2−3b − 4} )

  1. b = 0
  2. b = 2
  3. b = −2

Exemplo ( PageIndex {61} )

( frac {x ^ 2 + 3xy + 2y ^ 2} {2x ^ {3} y} )

  1. x = 1, y = −1
  2. x = 2, y = 1
  3. x = −1, y = −2
Responder
  1. 0
  2. ( frac {3} {4} )
  3. ( frac {15} {4} )

Exemplo ( PageIndex {62} )

( frac {c ^ 2 + cd − 2d ^ 2} {cd ^ {3}} )

  1. c = 2, d = −1
  2. c = 1, d = −1
  3. c = -1, d = 2

Exemplo ( PageIndex {63} )

( frac {m ^ 2−4n ^ 2} {5mn ^ 3} )

  1. m = 2, n = 1
  2. m = −1, n = −1
  3. m = 3, n = 2
Responder
  1. 0
  2. (- frac {3} {5} )
  3. (- frac {7} {20} )

Exemplo ( PageIndex {64} )

( frac {2s ^ {2} t} {s ^ 2−9t ^ 2} )

  1. s = 4, t = 1
  2. s = −1, t = −1
  3. s = 0, t = 2

​​​​​​​Simplifique as Expressões Racionais

Nos exercícios a seguir, simplifique.

Exemplo ( PageIndex {65} )

(- frac {4} {52} )

Responder

(- frac {1} {13} )

Exemplo ( PageIndex {66} )

(- frac {44} {55} )

Exemplo ( PageIndex {67} )

( frac {56} {63} )

Responder

( frac {8} {9} )

Exemplo ( PageIndex {68} )

( frac {65} {104} )

Exemplo ( PageIndex {69} )

( frac {6ab ^ {2}} {12a ^ {2} b} )

Responder

( frac {b} {2ab} )

Exemplo ( PageIndex {70} )

( frac {15xy ^ {3}} {x ^ {3} y ^ {3}} )

Exemplo ( PageIndex {71} )

( frac {8m ^ {3} n} {12mn ^ 2} )

Responder

( frac {2m ^ 2} {3n} )

Exemplo ( PageIndex {72} )

( frac {36v ^ {3} w ^ 2} {27vw ^ 3} )

Exemplo ( PageIndex {73} )

( frac {3a + 6} {4a + 8} )

Responder

( frac {3} {4} )

Exemplo ( PageIndex {74} )

( frac {5b + 5} {6b + 6} )

Exemplo ( PageIndex {75} )

( frac {3c − 9} {5c − 15} )

Responder

( frac {3} {5} )

Exemplo ( PageIndex {76} )

( frac {4d + 8} {9d + 18} )

Exemplo ( PageIndex {77} )

( frac {7m + 63} {5m + 45} )

Responder

( frac {7} {5} )

Exemplo ( PageIndex {78} )

( frac {8n − 96} {3n − 36} )

Exercício ( PageIndex {79} )

( frac {12p − 240} {5p − 100} )

Responder

( frac {12} {5} )

Exemplo ( PageIndex {80} )

( frac {6q + 210} {5q + 175} )

Exemplo ( PageIndex {81} )

( frac {a ^ 2 − a − 12} {a ^ 2−8a + 16} )

Responder

( frac {a + 3} {a − 4} )

Exemplo ( PageIndex {82} )

( frac {x ^ 2 + 4x − 5} {x ^ 2−2x + 1} )

Exemplo ( PageIndex {83} )

( frac {y ^ 2 + 3y − 4} {y ^ 2−6y + 5} )

Responder

( frac {y + 4} {y − 5} )

Exemplo ( PageIndex {84} )

( frac {v ^ 2 + 8v + 15} {v ^ 2 − v − 12} )

Exemplo ( PageIndex {85} )

( frac {x ^ 2−25} {x ^ 2 + 2x − 15} )

Responder

( frac {x − 5} {x − 3} )

Exemplo ( PageIndex {86} )

( frac {a ^ 2−4} {a ^ 2 + 6a − 16} )

Exemplo ( PageIndex {87} )

( frac {y ^ 2−2y − 3} {y ^ 2−9} )

Responder

( frac {y + 1} {y + 3} )

Exemplo ( PageIndex {88} )

( frac {b ^ 2 + 9b + 18} {b ^ 2−36} )

Exemplo ( PageIndex {89} )

( frac {y ^ 3 + y ^ 2 + y + 1} {y ^ 2 + 2y + 1} )

Responder

( frac {y ^ 2 + 1} {y + 1} )

Exemplo ( PageIndex {90} )

( frac {p ^ 3 + 3p ^ 2 + 4p + 12} {p ^ 2 + p − 6} )

Exemplo ( PageIndex {91} )

( frac {x ^ 3−2x ^ 2−25x + 50} {x ^ 2−25} )

Responder

x − 2

Exemplo ( PageIndex {92} )

( frac {q ^ 3 + 3q ^ 2−4q − 12} {q ^ 2−4} )

Exemplo ( PageIndex {93} )

( frac {3a ^ 2 + 15a} {6a ^ 2 + 6a − 36} )

Responder

( frac {a (a + 5)} {2 (a + 3) (a − 2)} )

Exemplo ( PageIndex {94} )

( frac {8b ^ 2−32b} {2b ^ 2−6b − 80} )

Exemplo ( PageIndex {95} )

( frac {−5c ^ 2−10c} {- 10c ^ 2 + 30c + 100} )

Responder

( frac {c} {2 (c − 5)} )

Exemplo ( PageIndex {96} )

( frac {4d ^ 2−24d} {2d ^ 2−4d − 48} )

Exemplo ( PageIndex {97} )

( frac {3m ^ 2 + 30m + 75} {4m ^ 2−100} )

Responder

( frac {3 (m + 5)} {4 (m − 5)} )

Exemplo ( PageIndex {98} )

( frac {5n ^ 2 + 30n + 45} {2n ^ 2−18} )

Exemplo ( PageIndex {99} )

( frac {5r ^ 2 + 30r − 35} {r ^ 2−49} )

Responder

( frac {5 (r − 1)} {r + 7} )

Exemplo ( PageIndex {100} )

( frac {3s ^ 2 + 30s + 72} {3s ^ 2−48} )

Exemplo ( PageIndex {101} )

( frac {t ^ 3−27} {t ^ 2−9} )

Responder

( frac {t ^ 2 + 3t + 9} {t + 3} )

Exemplo ( PageIndex {102} )

( frac {v ^ 3−1} {v ^ 2−1} )

Exemplo ( PageIndex {103} )

( frac {w ^ 3 + 216} {w ^ 2−36} )

Responder

( frac {w ^ 2−6w + 36} {w − 6} )

Exemplo ( PageIndex {104} )

( frac {v ^ 3 + 125} {v ^ 2−25} )

Simplifique as expressões racionais com fatores opostos

Nos exercícios a seguir, simplifique cada expressão racional.

Exemplo ( PageIndex {105} )

( frac {a − 5} {5 − a} )

Responder

−1

Exemplo ( PageIndex {106} )

( frac {b − 12} {12 − b} )

Exemplo ( PageIndex {107} )

( frac {11 − c} {c − 11} )

Responder

−1

Exemplo ( PageIndex {108} )

( frac {5-d} {d-5} )

Exemplo ( PageIndex {109} )

( frac {12−2x} {x ^ 2−36} )

Responder

(- frac {2} {x + 6} )

Exemplo ( PageIndex {110} )

( frac {20−5y} {y ^ 2−16} )

Exemplo ( PageIndex {111} )

( frac {4v − 32} {64 − v ^ 2} )

Responder

(- frac {4} {8 + v} )

Exemplo ( PageIndex {112} )

( frac {7w − 21} {9 − w ^ 2} )

Exemplo ( PageIndex {113} )

( frac {y ^ 2−11y + 24} {9 − y ^ 2} )

Responder

(- frac {y − 8} {3 + y} )

Exemplo ( PageIndex {114} )

( frac {z ^ 2−9z + 20} {16 − z ^ 2} )

Exemplo ( PageIndex {115} )

( frac {a ^ 2−5a − 36} {81 − a ^ 2} )

Responder

(- frac {a + 4} {9 + a} )

Exemplo ( PageIndex {116} )

( frac {b ^ 2 + b − 42} {36 − b ^ 2} )

Matemática cotidiana

Exemplo ( PageIndex {117} )

Taxas de impostos Para o ano fiscal de 2015, o valor do imposto devido por uma única pessoa que ganha entre $ 37.450 e $ 90.750 pode ser encontrado avaliando a fórmula 0,25x − 4206,25, onde x é a renda. A taxa de imposto média para essa renda pode ser encontrada avaliando a fórmula ( frac {0,25x − 4206,25} {x} ). Qual seria a taxa média de imposto para uma única pessoa que ganha US $ 50.000?

Responder

16.5%

Exemplo ( PageIndex {118} )

Trabalhos O tempo que leva para duas pessoas realizarem a mesma tarefa se trabalharem juntas pode ser encontrado avaliando a fórmula ( frac {xy} {x + y} ). Se Tom pode pintar a toca em x = 45 minutos e seu irmão Bobby pode pintar em y = 60 minutos, quantos minutos levarão se trabalharem juntos?

Exercícios de escrita

Exemplo ( PageIndex {119} )

Explique como você encontra os valores de x para o qual a expressão racional ( frac {x ^ 2 − x − 20} {x ^ 2−4} ) é indefinida.

Responder

As respostas variam, mas todas devem fazer referência à definição da função do denominador para zero.

Exemplo ( PageIndex {120} )

Explique todos os passos que você segue para simplificar a expressão racional ( frac {p ^ 2 + 4p − 21} {9 − p ^ 2} ).

Auto-verificação

Ⓐ Depois de concluir os exercícios, use esta lista de verificação para avaliar seu domínio dos objetivos desta seção.

Ⓑ Se a maioria de seus cheques fosse:

… Com confiança. Parabéns! Você atingiu seus objetivos nesta seção! Reflita sobre as habilidades de estudo que você usou para que possa continuar a usá-las. O que você fez para ter certeza de sua capacidade de fazer essas coisas? Seja específico!

… Com alguma ajuda. Isso deve ser abordado rapidamente, pois os tópicos que você não domina tornam-se buracos no seu caminho para o sucesso. A matemática é sequencial - cada tópico baseia-se em trabalhos anteriores. É importante ter certeza de que você tem uma base sólida antes de prosseguir. A quem você pode pedir ajuda? Seus colegas de classe e instrutor são bons recursos. Há algum lugar no campus onde professores de matemática estejam disponíveis? Suas habilidades de estudo podem ser melhoradas?

... não - eu não entendo! Isso é fundamental e você não deve ignorá-lo. Você precisa obter ajuda imediatamente ou ficará sobrecarregado rapidamente. Consulte seu instrutor o mais rápido possível para discutir sua situação. Juntos, vocês podem traçar um plano para obter a ajuda de que você precisa.


Cálculo gráfico numérico algébrico 4ª edição pdf

Cálculo: Respostas Gráficas, Numéricas, Algébricas, da 3ª Edição Capítulo 4 Aplicações de Derivados Ex 4.3 Cálculo: Respostas Gráficas, Numéricas, Algébricas Capítulo 4 Aplicações de Derivados Exercício 4.3 1E Capítulo 4 Aplicações de Derivados Exercício 4.3 1QQ Capítulo 4 Aplicações de Derivados Exercício 4.3 1QR Capítulo 4 Aplicações de derivados & # x02026 [Leia mais. ] sobre Cálculo: Gráfico, Numérico, Algébrico, 3ª Edição Respostas Capítulo 4 Aplicações de Derivados Ex 4.3


6.2 Exercícios

Você pode baixar um arquivo modelo RMarkdown para começar a partir daqui.

Exploraremos a modelagem LASSO usando o conjunto de dados Hitters no pacote ISLR (associado ao livro-texto opcional). Você precisará instalar o pacote ISLR no console primeiro. Você também deve instalar o pacote glmnet, pois iremos usá-lo posteriormente para ajustar os modelos LASSO.

O conjunto de dados Hitters contém várias estatísticas sobre jogadores da liga principal de beisebol em 1987. Nosso objetivo será construir um modelo de regressão que preveja o salário do jogador.

  1. Conheça os dados dos Hitters
    1. Dê uma olhada nas primeiras linhas.
    2. Quantos jogadores estão no conjunto de dados?
    3. Quantos prognósticos possíveis de salário existem?

    Desenvolvendo alguma intuição
    Um modelo natural para começar é aquele com todos os preditores possíveis. O modelo a seguir é adequado para mínimos quadrados comuns (não penalizados):

    1. Use acento circunflexo para realizar validação cruzada de 7 vezes para estimar o erro de teste deste modelo. Use a média direta da coluna RMSE em vez de elevar os valores ao quadrado primeiro. (Por que 7? Pense no número de casos nas dobras.)
    2. Como você acha que o erro de teste estimado mudaria com menos preditores?
    3. Descreva resumidamente como a saída de um procedimento de seleção passo a passo pode ajudá-lo a escolher um modelo menor (um modelo com menos preditores).
    4. Este modelo ajustado com mínimos quadrados ordinários corresponde a um caso especial de mínimos quadrados penalizados. Qual é o valor de ( lambda ) neste caso especial?
    5. À medida que ( lambda ) aumenta, o que você espera que aconteça com o número de preditores que permanecem no modelo?

    O código abaixo se ajusta a um modelo LASSO com ( lambda = 10 ). Este valor de ( lambda ) é especificado no argumento tuneGrid. O alpha = 1 especifica o método LASSO especificamente (o método glmnet tem outros propósitos).

    Ajuste o LASSO usando ( lambda = 100 ).

    Quantas variáveis ​​permanecem no modelo LASSO com ( lambda = 100 )? Este modelo é “maior” ou menor que o LASSO com ( lambda = 10 )? Como os coeficientes das variáveis ​​se comparam às variáveis ​​correspondentes no modelo de mínimos quadrados e no LASSO com ( lambda = 10 )?

    LASSO para uma variedade de ( lambda )
    Existem infinitos ( lambda ) que poderíamos usar. Seria tedioso demais examinar um de cada vez. O código a seguir se ajusta aos modelos LASSO em um rede de ( lambda ) valores e faz um gráfico de resumo das estimativas de coeficiente como uma função de ( lambda ).

    • Cada linha colorida corresponde a um preditor diferente. O pequeno número à esquerda de cada linha indica um preditor por sua posição em nomes de linhas (lasso_mod $ finalModel $ beta).
    • O eixo x reflete o intervalo de diferentes valores ( lambda ) considerados em lasso_mod (o vetor lambdas que criamos).
    • Em cada ( lambda ), o eixo y reflete as estimativas de coeficiente para os preditores no modelo LASSO correspondente.
    • Em cada ( lambda ), os números no topo do gráfico indicam quantos preditores permanecem no modelo correspondente.

    Podemos ampliar o gráfico definindo os limites do eixo y para ir de -10 a 10 com ylim como abaixo. Compare as linhas para as variáveis ​​6 e 15. O que são as variáveis ​​6 e 15? Qual parece ser uma variável mais “importante” ou “persistente”? Isso faz sentido no contexto?

    Escolhendo ( lambda )
    Para escolher qual ( lambda ) (daí o modelo LASSO) é o “melhor”, podemos comparar a taxa de erro CV de 7 vezes para cada modelo. caret realmente fez isso por nós quando treinou () o modelo. Podemos ver um gráfico desses resultados:

    1. Comente sobre a forma do enredo. O RMSE desce logo no início, em seguida, começa a subir novamente. Por que você acha que é isso?
    2. Grosso modo, qual valor de ( lambda ) resulta no melhor modelo?

    Este gráfico indica que tentamos muitos valores ( lambda ) que eram muito ruins. (Por quê?) Vamos ajustar os modelos LASSO sobre uma grade melhor de valores ( lambda ). Modifique o código anterior para usar a seguinte grade e refaça lasso_mod e o gráfico anterior:

    Escolha ( lambda ): contabilizando a incerteza
    Cada um dos pontos no gráfico anterior surgiu da média do RMSE em 7 iterações de validação cruzada. Essas 7 estimativas RMSE têm um desvio padrão e um erro padrão também. Você pode usar a função custom best_lambdas () para fazer um gráfico do teste RMSE estimado versus ( lambda ) que também mostra informações sobre os erros padrão.
    Em particular, o gráfico mostra pontos que correspondem exatamente ao gráfico anterior. As linhas adicionais mostram 1 erro padrão acima e abaixo da estimativa RMSE. Em essência, a extensão das linhas indica um intervalo de confiança.
    A função best_lambdas () também exibe informações sobre algumas escolhas razoáveis ​​para bons valores ( lambda ).

    1. A primeira linha da saída impressa mostra uma escolha para ( lambda ) chamada lambda_min, o ( lambda ) no qual o erro CV observado foi o menor. A segunda linha mostra uma escolha chamada lambda_1se, o maior ( lambda ) para o qual o modelo LASSO correspondente tem um erro CV que ainda está dentro de 1 erro padrão daquele para o LASSO usando lambda_min. Explique por que podemos usar o LASSO com lambda_1se em vez de lambda_min.
    2. Como o CV-estimado RMSE desses modelos se compara ao modelo de mínimos quadrados ordinários original no exercício 2?

    Observe os coeficientes dos modelos LASSO correspondentes a ambas as opções de ( lambda ). Como os coeficientes diferem entre lambda_min e lambda_1se? Os coeficientes de um modelo parecem mais sensatos contextualmente? O instrutor não tem um conhecimento profundo o suficiente sobre beisebol, mas você pode!


    Programando Praxis

    Vimos no exercício anterior que encontrar uma solução exata para o problema do caixeiro-viajante é extremamente demorado, demorado O(n!). A alternativa é uma heurística que entrega uma solução razoavelmente boa rapidamente. Uma dessas heurísticas é o & # 8220 vizinho mais próximo: & # 8221 escolha um ponto inicial e, em cada etapa, escolha o ponto não visitado mais próximo, adicione-o ao passeio atual e marque-o como visitado, repetindo até que não haja pontos não visitados.

    Sua tarefa é escrever um programa que resolva o problema do caixeiro viajante usando a heurística do vizinho mais próximo. Quando terminar, você pode ler ou executar uma sugestão de solução, postar sua própria solução ou discutir o exercício nos comentários abaixo.

    Compartilhar isso:

    Como isso:

    Relacionado

    6 Respostas para & # 8220Vendedor de viagens: Vizinho mais próximo & # 8221

    [& # 8230] Praxis & # 8211 Traveller Salesman: Nearest Neemeijer Por Remco Niemeijer No exercício de hoje & # 8217s Programming Praxis, temos que implementar um algoritmo significativamente mais rápido para o viajante [& # 8230]

    [& # 8230] dados. Na Programação do Praxis, eles propuseram resolver o problema usando força bruta e usando o vizinho mais próximo (uma simplificação do [& # 8230]

    Uma solução em Python, incluindo comparação com força bruta. Comentários em meu blog em http://wrongsideofmemphis.wordpress.com/2010/03/16/travelling-salesman/

    importar aleatório
    importar itertools
    operador de importação
    importar data e hora

    def random_cities (número):
    & # 8221 & # 8217 Gere várias cidades localizadas em lugares aleatórios & # 8221 & # 8217

    cidades = [(random.randrange (0, MAX_X),
    random.randrange (0, MAX_Y))
    para i no intervalo (número)]

    def path_lenght (path):
    & # 8221 & # 8217 Obtenha o comprimento de um caminho & # 8221 & # 8217
    comprimento = 0
    para i em xrange (len (caminho) & # 8211 1):
    # Adicione a distância entre duas cidades
    comprimento + = abs (complexo (caminho [i] [0], caminho [i] [1])
    & # 8211 complexo (caminho [i + 1] [0], caminho [i + 1] [1]))

    def find_path_bruteforce (cidades):
    & # 8221 & # 8217 Encontre o menor caminho usando a força bruta & # 8221 & # 8217

    para caminho em itertools.permutations (cities, len (cities)):
    # Obtenha o comprimento do caminho, adicionando o ponto de retorno
    total_path = path + (path [0],)
    lenght = path_lenght (total_path)
    lenghts.append ((total_path, lenght))

    # Obtenha o mínimo
    lenghts.sort (key = operator.itemgetter (1))
    return lenghts [0]

    def find_path_nearest (cities):
    & # 8221 & # 8217 Encontre o vizinho mais próximo & # 8221 & # 8217

    lenghts = []
    para cidade em cidades:
    comprimento = 0
    cidades_realistas = cidades [:]
    actual_city = actual_cities.pop (actual_cities.index (city))
    caminho = [cidade_real,]
    # Encontre o neibour mais próximo
    enquanto actual_cities:
    min_lenght = []
    para next_city em actual_cities:
    min_lenght.append ((next_city, abs (complex (city [0], city [1])
    & # 8211 complexo (next_city [0], next_city [1]))))
    # Obtenha o neibor mais próximo
    min_lenght.sort (key = operator.itemgetter (1))

    cidade_real = comprimento_min [0] [0]
    comprimento + = comprimento_min [0] [1]
    actual_cities.pop (actual_cities.index (actual_city))
    path.append (actual_city)

    # Complete a viagem com a primeira cidade
    path.append (cidade)

    # Obtenha o mínimo
    lenghts.sort (key = operator.itemgetter (1))
    return lenghts [0]

    if __name__ == & # 8216__main __ & # 8217:
    para i no intervalo (3, 10):
    imprimir & # 8216Número de cidades: & # 8216, i
    cidades = cidades_aleatórias (i)


    8.1E: Exercícios - Matemática

    Aqui você pode solicitar à nossa comunidade um recurso a ser criado que atenda às suas especificações.

    11 de junho de 2021 Kylie da Austrália (AUS) - Todos os Estados, Austrália (AUS) - Novo perguntado:

    Nome Ângulos (geometria) Ano 5 NSW Syllabus 5 lições sequenciadas

    Detalhes Preciso de uma sequência de 5 aulas de 45 minutos para um aluno do 5º ano. Eu trabalho em um ssp e programa principalmente para alunos do ensino médio. Eu preciso que ele corresponda ao plano de estudos do nsw

    Recurso para: Para Aluno, Para Educador

    Localização Austrália (AUS) - Todos os estados, Austrália (AUS) - Novo

    16 de maio de 2020 Melanie da Austrália (AUS) - Austrália Ocidental (WA), Wa perguntou:

    Nome Pacotes de trabalho de saúde do currículo K-3 WA

    Detalhes Estou procurando pacotes alinhados com o currículo WA que cobrem a totalidade do conteúdo listado no currículo de saúde para K-3. Eles serão enviados para ensino à distância.

    Localização Austrália (AUS) - Austrália Ocidental (WA), Wa

    Tópico Saúde, Saúde e Condicionamento físico, Educação em saúde, Prioridades de saúde na Austrália, Alimentação saudável, Estilo de vida saudável, Vida saudável, Currículo

    Nível Pré-escolar, Jardim de Infância, Ano 1, Ano 2, Ano 3

    Resultados 1.0, cobrem toda a área de aprendizagem

    18 de dezembro de 2017 Kibria de New South Wales perguntou:

    Nome Recursos e teste de habilidades gerais de leitura em NSW do 3º ao 6º ano escolar

    Detalhes Estamos procurando por recursos personalizados de alta qualidade para o currículo educacional de NSW - Ano 3 ao Ano 6 para 1. Leitura 2. Matemática 3. Recursos e teste de habilidades gerais

    Recurso para: Para educador

    Nível da série ano 3, ano 4, ano 5, ano 6

    13 de dezembro de 2017 Kibria de New South Wales perguntou:

    Nome Recursos e teste de habilidades gerais de leitura em NSW do 3º ao 6º ano escolar

    Detalhes Estamos procurando por recursos personalizados de alta qualidade para o currículo educacional de NSW - Ano 3 ao Ano 6 para 1. Leitura 2. Matemática 3. Recursos e teste de habilidades gerais


    Funções lógicas NumPy: função isclose ()

    A função isclose () é usada para retornar um array booleano onde dois arrays são iguais em termos de elemento dentro de uma tolerância.

    Os valores de tolerância são positivos, normalmente números muito pequenos.
    A diferença relativa (rtol * abs (b)) e a diferença absoluta atol são somadas para comparar com a diferença absoluta entre a e b.

    Versão: 1.15.0

    Nome Descrição Tipos de dados Obrigatório /
    Opcional
    a, b Matrizes de entrada para comparar.
    array_like
    Obrigatório
    rtol O parâmetro de tolerância relativa. flutuador Obrigatório
    atol O parâmetro de tolerância absoluta. flutuador Obrigatório
    equal_nan Se deve comparar NaNs como iguais. Se for verdade,
    NaN's em a será considerado igual a NaN's em b na matriz de saída.
    bool Obrigatório

    Retorna:
    y: array_like - Retorna uma matriz booleana de onde a e b são iguais dentro da tolerância fornecida.
    Se aeb forem escalares, retorna um único valor booleano.

    Notas:
    Para valores finitos, isclose usa a seguinte equação para testar se dois valores de ponto flutuante são equivalentes.


    Aprenda sobre peixes e # 039s Blog

    Postado por Ed em 20 de setembro de 2009

    A seguir, explicarei o que a Programação Orientada a Objetos significa em Java. E você verá que é fácil de entender, uma vez que você tenha compreendido a noção de um objeto. Eu encorajo você a copiar o código e executá-lo em Java.

    O que é um objeto?
    Definição: Um objeto em Programação Orientada a Objetos é caracterizado por
    a) é atributos (propriedades)
    b) métodos que fazem algo com os atributos (por exemplo, alterá-los)

    Por exemplo, Homer Simpson é um objeto:
    a) Seus atributos são: nome, idade, sexo, etc.
    b) E existem métodos que você pode aplicar ao objeto:
    por exemplo. você pode perguntar o nome de Homer Simpson e # 8217s ou pode deixá-lo comemorar o aniversário dele, o que muda sua idade.

    O que é uma aula?
    Existem diferentes tipos de objetos, por exemplo:
    & # 8211 Marie Curie, Isaac Newton e Emmy Noether têm algo em comum. Eles são pessoas. Dizemos que eles são objetos da classe & # 8220Person & # 8221.
    & # 8211 Maçã, banana, manga: são objetos da classe & # 8220Fruta & # 8221.
    & # 8211 Jaqueta, blusa, pulôver, calças: esses são objetos da classe & # 8220roupa & # 8221.

    Vamos ser práticos e digitar o seguinte código em Java (para copiar o código: vá para a janela do código-fonte abaixo e aponte para o canto superior direito. Lá, clique no símbolo branco):

    Vamos examinar o programa:
    & # 8211 Na linha 01, declaramos uma classe & # 8220Person & # 8221.
    & # 8211 Na linha 03-05, definimos que tipo de atributos (propriedades) nossos objetos têm. Aqui, nossos objetos devem ter um nome e uma idade.
    & # 8211 Na linha 07-27 definimos os métodos que podem ser aplicados aos nossos objetos. Por exemplo, na linha 08-10 o método nome do conjunto() dá aos nossos objetos um nome.
    & # 8211 Nosso método (ou programa) main () começa na linha 29.

    Compilar o código acima não produz nenhuma saída de console, uma vez que ainda não escrevemos nada em nosso método main (). A seguir, adicionaremos código ao método main ().

    Criar um objeto e definir seus atributos

    Vamos examinar o código:
    & # 8211 Aqui, na linha 04, criamos um objeto & # 8220father & # 8221 da classe & # 8220Person & # 8221 digitando
    Pai da pessoa = nova pessoa ()
    Em geral, criamos um objeto digitando
    Objeto de classe = nova classe ()
    Além disso, o método Pessoa() é chamado de & # 8220construtor & # 8221. O construtor tem seu nome por razões óbvias: nós construímos um objeto.

    & # 8211 Na linha 07-08, aplicamos métodos ao nosso objeto & # 8220father & # 8221. Damos a ele um nome e uma idade:
    father.setName (& # 8220Homer & # 8221)
    father.setAge (40)

    Em geral, a aplicação de um método a um objeto é feita digitando:
    object.method ()
    Em particular, você notou o ponto. Sempre que você quiser aplicar um método a um objeto, use o ponto.

    Mostra os atributos na saída do console
    Compilar o código acima ainda não nos dará nenhuma saída no console. Vamos adicionar algum código ao método main () (linha 10-12):

    Agora, queremos que o pai nos diga seu nome e idade. É por isso que na linha 11-12 aplicamos os métodos getName () e getAge () ao nosso pai objeto. Compilar o código produz a saída do console:
    Meu nome é Homer.
    Tenho 40 anos de idade.

    Exercícios:
    1a) Usando a classe & # 8220Person & # 8221 acima, crie um objeto & # 8220daughter & # 8221.
    1b) Dê a ela o nome & # 8220Lisa Simpson & # 8221, que tem 8 anos.
    1c) & # 8220daughter & # 8221 deve nos dizer seu nome e idade por meio da saída do console.
    1d) Usando a classe & # 8220Person & # 8221 acima, crie um objeto & # 8220son & # 8221 com os atributos name = & # 8221Bart Simpson & # 8221 e age = 8.
    1e) Faça o filho nos dizer o nome dele. Depois, aplique o método aniversário() para o filho.

    2a) Crie uma classe & # 8220Fruit & # 8221 com um método main ().
    2b) Os objetos desta classe devem ter o seguinte atributo: cor
    A classe tem os métodos setColor () e getColor ().
    2c) Crie um objeto maçã. Defina sua cor como & # 8220 vermelho & # 8221. Em seguida, mostre a cor na saída do console usando o getColor () método.

    A saída do console para 1c) é: Meu nome é Lisa Simpson. Eu tenho 8 anos de idade.

    Para 1d) e 1e), a saída do console é:
    Meu nome é Bart Simpson.
    Acabei de fazer meu aniversário! Agora, tenho 9 anos.
    2a) e 2b)

    Para 2c) adicione o seguinte código ao método main ():

    Aqui, obtemos a saída do console: Minha cor é: vermelho.

    Referências:
    1) Conceitos de programação orientada a objetos
    Um tutorial da Sun Microsystems, o desenvolvedor Java

    4) Noções básicas de linguagem orientada a objetos
    Um tutorial mais avançado por javaworld.com

    5) Eclipse e Java para Iniciantes Totais
    Tutorial em vídeo sobre como usar o Eclipse com uma introdução à Programação Orientada a Objetos


    16.7.1. Arquiteturas de modelo¶

    No sistema de recomendação com reconhecimento de sequência, cada usuário é associado a uma sequência de alguns itens do conjunto de itens. Seja (S ^ u = (S_1 ^ u,. S_ <| S_u |> ^ u) ) denota a sequência ordenada. O objetivo do Caser é recomendar o item considerando os gostos gerais do usuário, bem como a intenção de curto prazo. Suponha que levemos os itens (L ) anteriores em consideração, uma matriz de incorporação que representa as interações anteriores para o intervalo de tempo (t ) pode ser construída:

    onde ( mathbf in mathbb^) representa embeddings de itens e ( mathbf_i ) denota o (i ^ mathrm) fila. ( mathbf^ <(u, t)> in mathbb^) pode ser usado para inferir o interesse transitório do usuário (u ) no intervalo de tempo (t ). Podemos ver a matriz de entrada ( mathbf^ <(u, t)> ) como uma imagem que é a entrada dos dois componentes convolucionais subsequentes.

    A camada convolucional horizontal tem (d ) filtros horizontais ( mathbf^ j in mathbb^, 1 leq j leq d, h = <1,. L > ), e a camada convolucional vertical tem (d ') filtros verticais ( mathbf^ j in mathbb^ , 1 leq j leq d '). Após uma série de operações convolucionais e de pool, obtemos as duas saídas:

    onde ( mathbf in mathbb^ d ) é a saída da rede convolucional horizontal e ( mathbf' in mathbb^) é a saída da rede convolucional vertical. Para simplificar, omitimos os detalhes das operações de convolução e pool. Eles são concatenados e alimentados em uma camada de rede neural totalmente conectada para obter mais representações de alto nível.

    onde ( mathbf in mathbb^) é a matriz de peso e ( mathbf in mathbb^ k ) é o viés. O vetor aprendido ( mathbf in mathbb^ k ) é a representação da intenção de curto prazo do usuário.

    Por fim, a função de previsão combina o gosto geral e de curto prazo dos usuários, que é definido como:

    (16.7.4) ¶ [ hat_ = mathbf_i cdot [ mathbf, mathbf

    _u] ^ top + mathbf'_eu,]

    onde ( mathbf in mathbb^) é outra matriz de incorporação de itens. ( mathbf' in mathbb^ n ) é a tendência específica do item. ( mathbf

    in mathbb^) é a matriz de incorporação do usuário para os gostos gerais dos usuários. ( mathbf

    _u in mathbb^ ) é o (u ^ mathrm) linha de (P ) e ( mathbf_i in mathbb^ <2k> ) é o (i ^ mathrm) linha de ( mathbf) .

    O modelo pode ser aprendido com BPR ou perda de dobradiça. A arquitetura do Caser é mostrada abaixo:

    Fig. 16.7.1 Ilustração do modelo Caser ¶

    Primeiro importamos as bibliotecas necessárias.


    8.1E: Exercícios - Matemática

    Análise de introgressão com dados SNP

    Um tutorial sobre a análise de hibridização e introgressão com dados SNP por Milan Malinsky ([email protected]) e Michael Matschiner

    Mistura entre populações e hibridização entre espécies são comuns e uma árvore bifurcada é freqüentemente insuficiente para capturar sua história evolutiva (exemplo). D de Patterson, também conhecido como ABBA-BABA, e a estimativa relacionada da fração de mistura f, referido como a razão f4 são comumente usados ​​para avaliar a evidência do fluxo gênico entre populações ou espécies intimamente relacionadas em conjuntos de dados genômicos. Eles são baseados no exame de padrões de compartilhamento de alelos entre populações ou espécies estreitamente relacionadas. Embora tenham sido desenvolvidos em uma estrutura genética populacional, os métodos podem ser aplicados com sucesso para aprender sobre hibridização e introgressão dentro de grupos de espécies intimamente relacionadas, desde que existam suposições genéticas populacionais comuns - ou seja, que (a) as espécies compartilham uma quantidade substancial de variação genética devido à ancestralidade comum e classificação de linhagem incompleta (b) mutações recorrentes e retrógradas nos mesmos locais são insignificantes e (c) as taxas de substituição são uniformes entre as espécies.

    O D de Patterson e estatísticas relacionadas também foram usadas para identificar loci introgressed por varreduras de janela deslizante ao longo do genoma, ou pelo cálculo dessas estatísticas para regiões genômicas curtas particulares. Como a própria estatística D tem grande variância quando aplicada a pequenas janelas genômicas e porque é um estimador pobre da quantidade de introgressão, estatísticas adicionais que estão relacionadas à razão f4 foram projetadas especificamente para investigar assinaturas de introgressão em janelas genômicas ao longo cromossomos. Essas estatísticas incluem fd (Martin et al., 2015), sua extensão fdM (Malinsky et al., 2015), e a fração de distância df (Pfeifer & amp Kapan, 2019).

    Neste tutorial, primeiro usaremos dados simulados para demonstrar que, sob o fluxo gênico, alguns relacionamentos de espécies inferidos podem não corresponder a nenhum relacionamento biológico real. Em seguida, vamos usar Dsuite, um pacote de software que implementa D de Patterson e estatísticas relacionadas de uma forma simples de usar e computacionalmente eficiente. Isso nos permitirá identificar táxons misturados. Ao explorar o Dsuite, também aprenderemos ou revisaremos conceitos relacionados à aplicação, cálculo e interpretação do D e das estatísticas relacionadas. Em seguida, aplicamos estatísticas de janela deslizante para identificar loci introgressados ​​em um conjunto de dados real de peixes ciclídeos do Malawi. Finalmente, olhamos os mesmos dados que foram usados ​​para inferência de espécies-árvore com SVDQuartets no tutorial Species-Tree Inference with SNP Data para ver se podemos chegar às mesmas conclusões de um manuscrito de 2016 que usou um conjunto de dados mais limitado com menos espécies.

    Os alunos interessados ​​também podem aplicar pinturas ancestrais para investigar um caso putativo de espécies híbridas.

    Dsuite: O programa Dsuite permite o cálculo rápido do D-statística de dados SNP em formato VCF. O programa é particularmente útil porque calcula automaticamente o D-estatística para todos os trios de espécies possíveis, opcionalmente também de uma forma que os trios sejam compatíveis com uma árvore de espécies fornecida pelo usuário. As instruções para download e instalação no Mac OS X e Linux são fornecidas em https://github.com/millanek/Dsuite. A instalação no Windows não é suportada, mas os usuários do Windows podem usar os arquivos de saída fornecidos para aprender como plotar e analisar a saída do Dsuite.

    Figueira: O programa FigTree já deve estar instalado se você seguiu os tutoriais Bayesian Phylogenetic Inference, Phylogenetic Divergence-Time Estimation ou outros tutoriais. Caso contrário, você pode baixá-lo para Mac OS X, Linux e Windows em https://github.com/rambaut/figtree/releases.

    pypopgen3: (com dependências, excluindo msprime) Pypopgen3 fornece várias ferramentas úteis de genética de população, incluindo, o que é importante, um invólucro para o programa msprime para permitir simulações convenientes de dados filogenômicos.

    1. Inferir a árvore de espécies e o fluxo gênico de um conjunto de dados simulado

    1.1 Simulando dados filogenômicos com msprime

    Uma dificuldade em aplicar e comparar diferentes métodos em genômica e filogenômica evolucionária é que raramente sabemos qual é a resposta certa. Se os métodos nos fornecem respostas conflitantes, ou quaisquer respostas, como sabemos se podemos confiar neles? Uma abordagem que geralmente é útil é o uso de dados simulados. Saber a verdade nos permite ver se os métodos que usamos fazem sentido.

    Um dos pacotes de software mais rápidos para simular dados filogenômicos é o msprime (manuscrito) baseado em coalescência. O manuscrito msprime e o próprio software são apresentados na estrutura genética populacional. No entanto, podemos usá-lo para produzir dados filogenômicos. Isso porque, do ponto de vista puramente genético, não há distinção fundamental entre um conjunto de populações alopátricas de uma única espécie e um conjunto de espécies diferentes. Os processos genealógicos que ocorrem em diferentes populações são de fato os mesmos que determinam as relações genéticas ao longo do genoma de qualquer espécie que possa surgir. Voltaremos a este tema de um continuum entre genética populacional e filogenômica mais tarde.

    Simulamos dados SNP para 20 espécies no formato VCF, dois indivíduos de cada espécie. As espécies começaram a divergir há 1 milhão de anos, com tamanhos populacionais efetivos em cada ramo definido para 50.000. Ambas as taxas de recombinação e mutação foram definidas para 1e-8 e 20Mb de dados foram simulados. Como essas simulações levam algum tempo para serem executadas, temos os dados simulados prontos disponíveis para você. First a simulation without gene-flow (VCF, true tree: image, newick, json), and second, a simulation where five gene-flow events have been added to a tree (VCF, true tree with gene-flow: image, newick, json). Details for how to generate such simulated datasets are provided below.

    Generating simulated phylogenomic data with msprime

    It is in principle possible to simulate data from an arbitrary phylogeny with msprime, but specifying the phylogenetic tree directly in the program is complicated. Therefore, a number of 'helper' wrapper programs have been developed that can make this task much easier for us. For this exercise, we use Hannes Svardal's pypopgen3. After installing pypogen3 and its dependencies, using the instructions on the webpage, we simulated the data using the following code:

    Note that if you run this code yourselves, the data and the trees that you get out will be somewhat different from the ones we prepared for you, because the trees are randomly generated and the coalescent simulation run by msprime is also a stochastic process. Therefore, every simulation will be different. If you want to simulate more data using the trees we provided to you, you would replace the treetools.get_random_geneflow_species_tree commands with the following code to read the provided trees:

    1.2 Reconstructing phylogenies from simulated data

    Now we apply the phylogentic (or phylogenomic) approaches that we have learned to the simulated SNP data to see if we can recover the phylogentic trees that were used as input to the simulations. As in the tutorial on Species-Tree Inference with SNP Data, we are going to use algorithms implemented in PAUP*.

    Our msprime simulation did not use any specific substitution model for mutations, but simply designated alleles as 0 for ancestral and 1 for derived. The alleles are indicated in the fourth (REF) and fifth (ALT) column of the VCF as per the VCF file format. To use PAUP* we first need to convert the the VCF into the Nexus format, and this needs the 0 and 1 alleles to be replaced by actual DNA bases. We can use the vcf2phylip.py python script and achieve these steps as follows, first for the dataset simulated without gene-flow:

    Next, open the Nexus file chr1_no_geneflow_nt.min4.nexus in PAUP*, again making sure that the option "Execute" is set in the opening dialog, as shown in the screenshot.

    Then designate the outgroup (Data->Define_outgroup) as you learned in the tutorial on Species-Tree Inference with SNP Data.

    Then use the Neighbor Joining algorithm (Analysis->Neighbor-Joining/UPGMA) with default parameters to build a quick phylogeny.

    As you can see by comparison of the tree you just reconstructed (also below) against the input tree, a simple Neigbor Joining algorithm easily reconstructs the tree topology perfectly, and even the branch lengths are almost perfect.

    Click here to see the reconstructed NJ tree without gene-flow

    Now we repeat the same tree-reconstruction procedure for the simulation with gene-flow, starting with file format conversion:

    Then load the file with_geneflow_nt.min4.nexus into PAUP*, again making sure the option "Execute" is set, then designate the outgroup, and finally run the Neighbor Joining tree reconstruction. You should get a tree like the one below:

    An examination of this reconstructed tree reveals that in this case we did not recover the topology of the true tree used as input to the simulation. Unlike in the true tree, in the reconstructed tree species S14 is "pulled outside" the group formed by S13,S15,S16 . This is most likely because of the gene-flow that S14 received from S00 . This is a typical pattern: when one species from within a group receives introgression from another group, it tends to be "pulled out" like this in phylogenetic reconstruction. One argument that could be made here is that the Neighbor Joining algorithm is outdated, and that perhaps newer, more sophisticated, methods would recover the correct tree. You can now try to apply SVDQuartets in PAUP*, and also try any of the other phylogenomic methods you know to see if any of these will succeed.

    Click here to see the reconstructed SVDQuartets tree with gene-flow

    As you can see, the topology is in fact different from the Neighbor Joining, but also is not correct ( S13,S14 should not be sister taxa, also S10 and S11 are swapped) .

    1.3 Testing for gene-flow in simulated data

    Under incomplete lineage sorting alone, two sister species are expected to share about the same proportion of derived alleles with a third closely related species. Thus, if species "P1" and "P2" are sisters and "P3" is a closely related species, then the number of derived alleles shared by P1 and P3 but not P2 and the number of derived alleles that is shared by P2 and P3 but not P1 should be approximately similar. In contrast, if hybridization leads to introgression between species P3 and one out the two species P1 and P2, then P3 should share more derived alleles with that species than it does with the other one, leading to asymmetry in the sharing of derived alleles. These expectations are the basis for the so-called "ABBA-BABA test" (first described in the Supporting Material of Green et al. 2010) that quantifies support for introgression by the D-statistic. Below is an illustration of the basic principle.

    In short, if there is gene-flow between P2 <-> P3, there is going to be an excess of the of the ABBA pattern, leading to positive D statistics. In contrast, gene-flow between P1 <-> P3 would lead to a an excess of the BABA pattern and a negative D statistic. However, whether a species is assigned in the P1 or P2 position is arbitrary, so we can always assign them so that P2 and P3 share more derived alleles and the D statistic is then bounded between 0 and 1. There is also a related and somewhat more complicated measure, the f4-ratio, which strives to estimate the admixture proportion in percentage. We will not go into the maths here - if you are interested, have a look at the Dsuite paper.

    The Dsuite software has several advantages: it brings several related statistics together into one software package, has a straightforward workflow to calculate the D statistics and the f4-ratio for all combinations of trios in the dataset, and the standard VCF format, thus generally avoiding the need for format conversions or data duplication. It is computationally more efficient than other software in the core tasks, making it more practical for analysing large genome-wide data sets with tens or even hundreds of populations or species. Finally, Dsuite implements the calculation of the fdM e f-branch statistics for the first time in publicly available software.

    To calculate the D statistics and the f4-ratio for all combinations of trios of species, all we need is the file that specifies what individuals belong to which population/species - we prepared it for you: species_sets.txt. Such a file could be simply prepared manually, but, in this case we can save ourselves the work and automate the process using a combination of bcftools and awk :

    Something similar to the above can be useful in many cases, depending on how the individuals are named in your VCF file.

    Then, to familiarize yourself with Dsuite, simply start the program with the command Dsuite . When you hit enter, you should see a help text that informs you about three different commands named "Dtrios", "DtriosCombine", and "Dinvestigate", with short descriptions of what these commands do. Of the three commands, we are going to focus on Dtrios, which is the one that calculates the D-statistic for all possible species trios.

    To learn more about the command, type Dsuite Dtrios and hit enter. The help text should then inform you about how to run this command. There are numerous options, but the defaults are approprite for a vast majority of use-cases. All we are going to do is to provide a run name using the -n option, the correct tree using the -t option, and use the -c option to indicate that this is the entire dataset and, therefore, we don't need intermediate files for "DtriosCombine".

    1.3.1 Do we find geneflow in data simulated without geneflow?

    We run Dsuite for the dataset without gene-flow as follows:

    The run takes about 50 minutes. Therefore, we already put the output files for you in the data folder. Let's have a look at the first few lines of species_sets_no_geneflow_BBAA.txt :

    Each row shows the results for the analysis of one trio. For example in the first row, species S01 was used as P1, S02 was considered as P2, and S00 was placed in the position of P3. Then we see the D statistic, associated Zscore and p-value, the f4-ratio estimating admixture proportion and then the counts of BBAA sites (where S01 and S02 share the derived allele) and then the counts of ABBA and BABA sites. As you can see, ABBA is always more than BABA and the D statistic is always positive because Dsuite orients P1 and P2 in this way. Since these results are for coalescent simulations without gene-flow, the ABBA and BABA sites arise purely through incomplete lineage sorting and the difference between them is purely random - therefore, even though the D statistic can be quite high (e.g. up to 8% on the last line), this is not a result of gene flow.

    Questão 1: Can you tell why the BBAA, ABBA, and BABA numbers are not integer numbers but have decimal positions?

    Click here to see the answer

    Integer counts of ABBA and BABA sites would only be expected if each species would be represented only by a single haploid sequence. With diploid sequences and multiple samples per species, allele frequences are taken into account to weigh the counts of ABBA and BABA sites as described by equations 1a to 1c of the Dsuite paper.

    Questão 2: How many different trios are listed in the file? Are these all possible (unordered) trios?

    Click here to see the answer

    Because each trio is listed on a single row, the number of trios in file species_sets_no_geneflow_BBAA.txt is identical to the number of lines in this file. This number can easily be counted using, e.g. the following command:

    You should see that the file includes 1140 lines and therefore results for 1140 trios. Given that the dataset includes (except the outgroup species) 20 species and 3 of these are required to form a trio, the number of possible trios is

    In species_sets_no_geneflow_BBAA.txt , trios are arranged so that P1 and P2 always share the most derived alleles (BBAA is always the highest number). There are two other output files: one with the _tree.txt suffix: species_sets_no_geneflow_tree.txt where trios are arranged according to the tree we gave Dsuite, and a file with the _Dmin.txt suffix species_sets_no_geneflow_Dmin.txt where trios are arranged so that the D statistic is minimised - providing a kind of "lower bound" on gene-flow statistics. This can be useful in cases where the true relationships between species are not clear, as illustrated for example in this paper (Fig. 2a).

    Let's first see how the other outputs differ from the _tree.txt file, which has the correct trio arrangments. :

    There is one difference in the _BBAA.txt ile. Because of incomplete lineage sorting being a stochastic (random) process, we see that S08 and S10 share more derived alleles than S09 and S10 , which are sister species in the input tree. If you look again at the input tree, you will see that the branching order between S08 , S09 and S10 is very rapid, it is almost a polytomy.

    A comparison of the _tree.txt file against the _Dmin.txt , which minimises the Dstatistic, reveals nine differences. However, the correct trio arrangements in all these cases are very clear.

    Next, let's look at the results in more detail, for example in R. We load the _BBAA.txt file and first look at the distribution of D values:

    There are some very high D statistics. In fact, the D statistics for 9 trios are >0.7, which is extremely high. So how is this possible in a dataset simulated with no geneflow?

    These nine cases arise because there is amost no incomplete lineage sorting among these trios almost all sites are BBAA - e.g. 179922 sites for the first trio, while the count for ABBA is only 1.5 and for BABA it is 0 . The D statistic is calculated as D = (ABBA-BABA)/(ABBA+BABA), which for the first trio would be D = (1.5-0)/(1.5+0)=1. So, the lesson here is that the D statistic is very sensitive to random fluctuations when there is a small number of ABBA and BABA sites. One certainly cannot take the D value seriously unless it is supported by a statistical test suggesting that the D is significanly different from 0. In the most extreme cases above, the p-value could not even be calculated, becuase there were so few sites. Those definitely do not represent geneflow. But in one case we see a p value of 0.0018. Well, that looks significant, if one considers for example the traditional 0.05 cutoff. So, again, how is this possible in a dataset simulated with no geneflow?

    In fact, there are many p values that are <0.05. For those who have a good understanding of statistics this will be not be suprising. This is because p values are uniformly distributed when the null hypopthesis is true. Therefore, we expect 5% of the (or 1 in 20) p-values, they will be <0.05. If we did a 1140 tests, we can expect 57 of them to be <0.05. Therefore, any time we conduct a large amount of statistical tests, we should apply a multiple testing correction - commonly used is the Benjamini-Hochberg (BH) correction which controls for the false discovery rate.

    However, even after applying the BH correction there are three p-values which look significant. These are all false discoveries. Here comes an important scientific lesson - that even if we apply statistical tests correctly, seeing a p-value below 0.05 is not a proof that the null hypothesis is false. All hypothesis testing has false positives and false negatives. It may be helpful to focus less on statistical testing and aim for a more nuanced understanding of the dataset, as argued for example in this Nature commentary.

    Therefore, we should also plot the f4-ratio, which estimates the proportion of genome affected by geneflow. It turns out that this is perhaps the most reliable - all the f4-ratio values are tiny, as they should be for a dataset without geneflow.

    Finally, we use visualisation heatmap in which the species in positions P2 and P3 are sorted on the horizontal and vertical axes, and the color of the corresponding heatmap cell indicates the most significant D-statistic found between these two species, across all possible species in P1. To prepare this plot, we need to prepare a file that lists the order in which the P2 and P3 species should be plotted along the heatmap axes. The file should look like plot_order.txt . You could prepare this file manually, or below is a programmatic way:

    Then make the plots using the scripts plot_d.rb and plot_f4ratio.rb .

    1.3.2 Do we find geneflow in data simulated with geneflow?

    How do the results for the simulation with geneflow differ from the above? Here we are going to run a similar set of analyses and make comparisons. We run Dsuite for the dataset with gene-flow as follows:

    Now we find 39 differences between the _tree.txt file and the _BBAA.txt , reflecting that, under geneflow, sister species often do not share the most derived alleles. Between _tree.txt file and the _Dmin.txt there are 124 differences.

    We can visualise the overlap between these different files using a Venn diagram. For example in R:

    Then we explore the results in the _BBAA.txt in R, analogously to how we did it above for the no-geneflow case:

    As you can see if you click above, the distributions of the statistics are markedly different when compared against the no-geneflow scenario. The number of D statistics >0.7 here is 85 (compared with 9 under no-geneflow) and very many trios now have significant p values - even after FDR correction, we have p<0.05 for whopping 671 trios. Finally, the f4-ratios are also elevated, up to almost 15% in some cases.

    To remind ourselves, the simulated tree and geneflow events are shown on the left. The 15% f4-ratios estimates correspond reasonably well with the strength of the geneflow events that we simulated (in the region of 8% to 18%). However, we simulated only five geneflow events and have 671 significant p values and 138 f4-ratio values above 3%. This is because the test statistics are correlated when trios share an (internal) branch in the overall population or species tree. Therefore, a system of all possible four taxon tests across a data set can be difficult to interpret. In any case (and with any methods) pinpointing specific introgression events in data sets with tens or hundreds of populations or species remains challenging - especially when genetic data is all the evidence we have.

    The scripts plot_d.rb and plot_f4ratio.rb were originally developed to help with such interpretation, and can still be useful. Because they take the maximum D or f4-ratio value between species in the P2 and P3 positions, across all possible species in P1, the plot deals with some of the correlated signals and redundancy in the data by focusing on the overall support for geneflow between pairs of species or their ancestors, which could have happened at any time in the past since the species in P2 and P3 positions diverged from each other.

    Questão 3: How informative are the plots above? Can you identify the gene flow events from the plots?

    As an upgrade on the above plots we developed with Hannes Svardal, the f-branch or fb(C) metric (introduced in Malinsky et al. (2018). This is designed to disentangle correlated f4-ratio results and, unlike the matrix presentation above, f-branch can assign gene flow to specific, possibly internal, branches on a phylogeny. The f-branch metric builds upon and formalises verbal arguments employed by Martin et al. (2013), who used these lines of reasoning to assign gene flow to specific internal branches on the phylogeny of Heliconius butterflies.

    The logic of f-branch is illustated in the following figure. The panel (c) provides an example illustrating interdependences between different f4-ratio scores, which can be informative about the timing of introgression. In this example, different choices for the P1 population provide constraints on when the gene flow could have happened. (d) Based on relationships between the f4-ratio results from different four taxon tests, the f-branch, or fb statistic, distinguishes between admixture at different time periods, assigning signals to different (possibly internal) branches in the population/species tree

    This is implemented in the Dsuite Fbranch subcommand, and the plotting utility, called dtools.py is in the utils subfolder of the Dsuite package.

    The second command creates a file called fbranch.png , which is shown below.

    Questão 4: Can you identify the gene flow events clearer here than from the matrix plots above? Is this a good showcase for the f-branch method?

    Questão 5: If you exclude species with the strongest f4-ratio of f-branch signals, can you then get a correct phylogeny from PAUP*?

    Questão 6: What happens when you re-run Dsuite with the inferred (wrong) tree from PAUP*?

    2. Finding specific introgressed loci - adaptive introgression in Malawi cichlids

    This exercise is based on analysis from the Malinsky et al. (2018) manuscript published in Nature Ecol. Evo.. The paper shows that two deep water adapted lineages of cichlids share signatures of selection and very similar haplotypes in two green-sensitive opsin genes (RH2Aβ and RH2B). The genes are located next to each other on scaffold_18. To find out whether these shared signatures are the result of convergent evolution or of adaptive introgression, we used the f_dM statistic. The f_dM is related to Patterson’s D and to the f4-ratio, but is better suited to analyses of sliding genomic windows. The calculation of this statistic is implemented in the program Dsuite Dinvestigate .

    The data for this exercise are in the data folder. It includes the VCF file with variants mapping to the scaffold_18 of the Malawi cichlid reference genome we used at the time - scaffold_18.vcf.gz . There are also two other files required to run Dinvestigate: the “SETS” file and the “test_trios” file. In this case they are called: MalawiSetsFile.txt and MalawiTestTriosForInvestigate.txt . The “TestTrios” file specifies that we want to investigate the admixture signal between the Diplotaxodon genus and the deep benthic group, compared with the mbuna group. The “SETS” file specifies which individuals belong to these groups. Finally, the command to execute the analysis is:

    The -w 50,25 option specifies that the statistics should be averaged over windows of 50 informative SNPs, moving forward by 25 SNPs at each step. The run should take a little under 10 minutes. We suggest you have a tea/coffee break while you wait for the results ).

    Questão 7: What are the overall D and f_dM values over the entire scaffold_18? What does this suggest?

    The results are output by Dsuite into the file mbuna_deep_Diplotaxodon_localFstats__50_25.txt . A little R plotting function plotInvestigateResults.R is prepared for you. Use the script to load in the file you just produced (line 3) and plot the D statistic (line 6). Also execute line 8 of the script to plot the f_dM values. Do you see any signal near the opsin coordinates? We also plot the f_d statistic. As you can see, the top end of the plot is the same as for the f_dM, but the f_d is asymmetrical, extending far further into negative values.

    Questão 8: Do you see any interesting signal in the D, f_dM, and f_d statistics? The opsin genes are located between 4.3Mb and 4.4Mb. Do you see anything interesting there?

    Click here to see the resulting R plots

    You could also plot the new d_f statistic? Doe that look any better?

    Finally, we zoom in at the region of the opsin genes (line 12). As you can see, the results look like a single “mountain” extending over 100kb.

    Click here to see the zoom in with `-w 50,25`

    But there is more structure than that in the region. Perhaps we need to reduce the window or step size to see a greater level of detai.

    They can be plotted with the same R script. Have a look at the results.

    Click here to see the zoom in with `-w 50,5`

    Click here to see the zoom in with `-w 50,1`

    Click here to see the zoom in with `-w 10,1`

    Click here to see the zoom in with `-w 2,1`

    Questão 9: What combination of window size/step seems to have the best resolution? Why is the smallest window so noisy?

    Questão 10: What happens if you plot individual data points, instead of a continuous line? Are the results clearer?

    Click here to see the zoom in with `-w 10,1` and individual data points

    3. Finding geneflow in a real dataset - Tanganyikan cichlids

    In this execise, we are going to see if we can reproduce the findings reported by Gante et al. (2016), with a different dataset. The Gante et al. dataset contained whole genome sequence data from five species from the cichlid genus Neolamprologus. The authors analysed these data and reported conclusions that are summarised by the figure below:

    A dataset containing these species, but also six additional Neolamprologus species (for a total of 11) was used in the tutorials on Species-Tree Inference with SNP Data and Divergence-Time Estimation with SNP Data.

    Questão 11: Are the trees you reconstructed in these exercises consistent with the relationships reported by Gante et al.?

    Here we use data with 10 Neolamprologus species (the clearly hybrid Neolamprologus cancellatus removed), to reassess the evidence for geneflow within this genus with the f4-ratio and f-branch statistics. The genetic data are in NC_031969.vcf.gz , the file specifying sample->species relationships is NC_031969_sets.txt and the tree topology hypothesis is in SNAPP_tree.txt . We run the analysis for all possible trios as follows:

    This should finish in a couple of minutes. There are 'only' ten species, so 120 trios. Could this be manageable? Have a look at the output file TanganyikaCichlids/NC_031969_sets__tree.txt and see if you can interpret the results. Chances are that is is still too complex to interpret the results for the trios just by looking at them. Perhaps you can try the ‘f-branch’ method:

    Question 12: Are the geneflow signals seen here consistent with the Gante et al. figure?

    Question 13: What happens when we focus only on the five species from Gante et al. and exclude all others?

    Notice the -n option to dtools.py , to specify the output file name, making sure that our previous plots are not overwritten. Below is the plot, after a little editing in Inkscape.

    A very simple alternative way of investigating patterns of ancestry in potentially introgressed or hybrid species is to "paint" their chromosomes according to the genotypes carried at sites that are fixed between the presumed parental species. This type of plot, termed "ancestry painting" was used for example by Fu et al. (2015 Fig. 2) to find blocks of Neanderthal ancestry in an ancient human genome, by Der Sarkassian et al. (2015 Fig. 4) to investigate the ancestry of Przewalski's horses, by Runemark et al. (2018 Suppl. Fig. 4) to assess hybridization in sparrows, and by Barth et al. (2019 Fig. 2) to identify hybrids in tropical eels.

    If you haven't seen any of the above-named studies, you might want to have a look at the ancestry-painting plots in some of them. You may note that the ancestry painting in Fu et al. (2015 Fig. 2) is slightly different from the other two studies because no discrimination is made between heterozygous and homozygous Neanderthal alleles. Each sample in Fig. 2 of Fu et al. (2015) is represented by a single row of cells that are white or colored depending on whether or not the Neanderthal allele is present at a site. In contrast, each sample in the ancestry paintings of Der Sarkassian et al. (2015 Fig. 4), Runemark et al. (2018 Suppl. Fig. 4), and Barth et al. (2019 Fig. 2) is drawn with two rows of cells. However, as the analyses in both studies were done with unphased data, these two rows do not represent the two haplotypes per sample. Instead, the two cells per site were simply both colored in the same way for homozygous sites or differently for heterozygous sites without regard to haplotype structure.

    Here, we are going to use ancestry painting to investigate ancestry in Neolamprologus cancellatus ("neocan"), assuming that it is a hybrid between the parental species Altolamprologus fasciatus ("altfas") and Telmatochromis vittatus ("telvit"). As in Der Sarkassian et al. (2015 Fig. 4), Runemark et al. (2018 Suppl. Fig. 4), and Barth et al. (2019 Fig. 2), we are going to draw two rows per sample to indicate whether genotypes are homozygous or heterozygous.

    To generate an ancestry painting, we will need the data file NC_031969.f5.sub1.vcf.gz and will run two Ruby scripts. The first of these, get_fixed_site_gts.rb determines the alleles of the putative hybrid species at sites that are fixed differently in the two putative parental species. The second script, plot_fixed_site_gts.rb then uses the output of the first script to draw an ancestry painting. As the first script requires an uncompressed VCF file as input, first uncompress the VCF file for the SNP dataset with the following command:

    Then, run the Ruby script get_fixed_site_gts.rb to determine the alleles at sites that are fixed differently in the two parents. This script expects six arguments these are

    • the name of the uncompressed VCF input file, [ NC_031969.f5.sub1.vcf ,
    • the name of an output file, which will be a tab-delimited table,
    • a string of comma-separated IDs of samples for the first putative parent species,
    • a string of comma-separated IDs of samples for the putative hybrid species,
    • another string of comma-separated IDs of samples for the second putative parent species,
    • a threshold value for the required completeness of parental genotype information so that sites with too much missing data are discarded.

    We'll use NC_031969.f5.sub1.vcf as the input and name the output file pops1.fixed.txt . Assuming that the parental species are Altolamprologus fasciatus ("altfas") and Telmatochromis vittatus ("telvit") and the hybrid species is Neolamprologus cancellatus ("neocan"), we'll specify the sample IDs for these species with the strings "AUE7,AXD5", "JBD5,JBD6", and "LJC9,LJD1". Finally, we'll filter for sites without missing data by specifying "1.0" as the sixth argument. Thus, run the script get_fixed_site_gts.rb with the following command:

    The second script, plot_fixed_site_gts.rb , expects four arguments, which are

    • the name of the file written by script get_fixed_site_gts.rb ,
    • the name of an output file which will be a plot in SVG format,
    • a threshold value for the required completeness, which now applies not only to the parental species but also to the putative hybrid species,
    • the minimum chromosomal distance in bp between SNPs included in the plot. This last argument aims to avoid that the ancestry painting is overly dominated by high-divergence regions.

    We'll use the file pops1.fixed.txt as input, name the output file pops1.fixed.svg , require again that no missing data remains in the output, and we'll thin the remaining distances so that those plotted have a minimum distance of 1,000 bp to each other. Thus, use the following command to draw the ancestry painting:

    The screen output of this script will include some warnings about unexpected genotypes, these can be safely ignored as the script automatically excludes those sites. At the very end, the output should indicate that 6,069 sites with the required completeness were found, these are the sites included in the ancestry painting. Th output also reports, for all analyzed specimens, the heterozygosity at those 6,069 sites. For first-generation hybrids, this heterozygosity is expected to be close to 1.

    Open the file pops1.fixed.svg with a program capable of reading files in SVG format, for example with a browser such as Firefox or with Adobe Illustrator. You should see a plot like the one shown below.

    In this ancestry painting, the two samples of the two parental species are each drawn in solid colors because all included sites were required to be completely fixed and completely without missing data. The samples of Neolamprologus cancellatus, "LJC9" and "LJD1" are drawn in between, with two rows per sample that are colored according to genotypes observed at the 6,069 sites. Keep in mind that even though the pattern may appear to show phased haplotypes, this is not the case instead the bottom row for a sample is arbitrarily colored in red and the top row is colored in blue when the genotype is heterozygous.

    Question 14: Do you notice any surprising difference to the ancestry plots of Der Sarkassian et al. (2015 Fig. 4) and Runemark et al. (2018 Suppl. Fig. 4)?

    Click here to see the answer

    One remarkable difference compared to the ancestry painting of Der Sarkassian et al. (2015 Fig. 4) and Runemark et al. (2018 Suppl. Fig. 4) is that almost no homozygous genotypes are observed in the two samples of Neolamprologus cancellatus: the bottom rows are drawn almost entirely in red for the two putative hybrid individuals and the top rows are almost entirely in blue. The same pattern, however, can be found in Barth et al. (2019 Fig. 2).

    Question 15: How can this difference be explained?

    The fact that both Neolamprologus cancellatus samples are heterozygous for basically all sites that are differentially fixed in the two parental species can only be explained if both of these samples are in fact first-generation hybrids. If introgression would instead be more ancient and backcrossing (or recombination within the hybrid population) had occurred, we would expect that only certain regions of the chromosome are heterozygous while others should be homozygous for the alleles of one or the other of the two parental species. However, unlike in cases where the genomes have been sequenced of parent-offspring trios, we do not know who the actual parent individuals were. We can guess that the parent individuals were members of the species Altolamprologus fasciatus e Telmatochromis vittatus, but whether the parental individuals were part of the same population as the sampled individuals or a more distantly related population within these species remains uncertain.


    Programming Praxis

    We represent a point as a three-slot vector with the point number (on the range 0 to n-1) in slot 0, x-coordinate in slot 1, and y-coordinate in slot 2. Here are convenience functions:

    (define (n p) (vector-ref p 0))
    (define (x p) (vector-ref p 1))
    (define (y p) (vector-ref p 2))

    A traveling salesman problem is a list of points. We make a problem with make-tsp :

    (define (make-tsp n)
    (define n10 (* n 10))
    (let loop ((n (- n 1)) (ps '()))
    (if (negative? n) ps
    (let ((p (vector n (randint n10) (randint n10))))
    (if (member p ps) (loop n ps)
    (loop (- n 1) (cons p ps)))))))

    We compute distances as they are used, caching them in a global variable dists , which is a two-dimensional matrix initialized in the main solving program. We store the distance twice, in both directions, because the space cost is very little (we allocate the entire matrix), and it saves us the trouble of figuring out a canonical direction:

    (define (dist a b)
    (define (square x) (* x x))
    (when (negative? (matrix-ref dists (n a) (n b)))
    (let ((d (sqrt (+ (square (- (x a) (x b)))
    (square (- (y a) (y b)))))))
    (matrix-set! dists (n a) (n b) d)
    (matrix-set! dists (n b) (n a) d)))
    (matrix-ref dists (n a) (n b)))

    Given a point p and a list of unvisited points ps, function nearest finds the nearest unvisited point:

    (define (nearest p ps)
    (let loop ((ps ps) (min-p #f) (min-d #f))
    (cond ((null? ps) min-p)
    ((or (not min-d) (< (dist p (car ps)) min-d))
    (loop (cdr ps) (car ps) (dist p (car ps))))
    (else (loop (cdr ps) min-p min-d)))))

    We are ready for the solver. Tsp initializes the dists matrix, then enters a loop in which it tracks both the current tour and the list of unvisited points at each step of the loop, it calculates the nearest neighbor, adds that point to the current tour and removes it from the list of unvisited points, and loops, stopping when the tour is complete. The initial point is always the first point in the input:

    (define (tsp ps)
    (let ((len (length ps)))
    (set! dists (make-matrix len len -1)))
    (let loop ((tour (list (car ps))) (unvisited (cdr ps)))
    (if (null? unvisited) tour
    (let ((next (nearest (car tour) unvisited)))
    (loop (cons next tour) (remove next unvisited))))))

    Here we compute the cost of the tour:

    (define (cost tour)
    (if (or (null? tour) (null? (cdr tour))) 0
    (let ((start (car tour)))
    (let loop ((tour tour) (sum 0))
    (if (null? (cdr tour))
    (+ sum (dist (car tour) start))
    (loop (cdr tour) (+ sum (dist (car tour) (cadr tour)))))))))


    Assista o vídeo: EMAI 4o ANO ATIVIDADE SEQUÊNCIA 8 VOLUME 1 - POLIEDROS, O QUE SÃO VÉRTICES, FACES E ARESTAS (Novembro 2021).