Mais

Matriz de distância QGIS: distância métrica errada


Eu usei a ferramenta de matriz de distância linear no QGIS 2.6 Meu sistema de coordenação é métrico (nacional holandês RD novo) Os resultados têm os decimais errados, como mostrado abaixo. Como posso consertar isso? (mostrando distâncias únicas apenas)

InputID TargetID Distância por matriz distância real 3 2 914.753.872.032 914 medidor 3 1 119.476.303.875 1,19 km 4 1 156.770.528.678 1,56 km 4 3 162.709.997.483 1,62 km 4 2 226.796.645.372 2,26 km 6 5 241.698.218.226 2,41 km 6 3 614.677.367.185 6,14 km 6 4 631.106.480.203 6,31 km 6 2 693.828.353.563 6,93 km 6 1 723.724.716.201 7,23 km 2 1 105.868.974.731 1,05 km 5 3 38,004.119,442 3,8 km 5 4 390.398.472.686 3,9 km 5 2 46.440.219.167 4,64 km 5 1 484.470.336.769 484 metros

Não sabia que a Holanda é um dos países que também usa algarismos arábicos com vírgula decimal (http://en.wikipedia.org/wiki/Decimal_mark). Por esse motivo, parece um problema de localidade. Na Espanha (que também usa vírgula decimal), para evitar problemas de localidade, eu uso meu QGIS com o idioma inglês dos EUA e "Substituir localidade do sistema" (Configurações-> Opções-> Localidade).

Para testar a operação correta da "ferramenta de matriz de distância" em meu sistema, carreguei uma camada de vetor de ponto no QGIS e executei a ferramenta.

Imprimi minha matriz de distância como um arquivo csv, onde selecionei o primeiro registro para fins de verificação (em vermelho):

Na imagem seguinte, selecionei os pontos com id 0-4 e medi sua distância com a "Ferramenta Linha de Medição". O resultado foi comparável ao do arquivo csv.


Você abriu o csv com um editor de texto ou com o Excel? O Excel se confunde com vírgulas delimitadoras, mil pontos e vírgulas decimais; dependendo da localidade de seus computadores.

Se você substituir a vírgula do delimitador por ponto-e-vírgula, ele deve funcionar. Um bom editor de texto como o notepad ++ para Windows pode fazer isso facilmente.


QGIS para ensino a distância e ensino de SIG em universidades¶

A University of Southern Queensland (USQ) é uma universidade regional localizada no sudeste de Queensland, Austrália. Tem 28.000 alunos estudando dentro e fora do campus. O acesso dos alunos fora do campus a tecnologias modernas, como serviços de Internet, varia amplamente. Eles também usam diferentes tipos de computadores (por exemplo, notebook, desktop, etc.) com diferentes sistemas operacionais (por exemplo, Windows, MacOS e Linux).

Oferecer educação tanto no modo Presencial quanto Fora do Campus apresenta muitos desafios tecnológicos. Ministrar um curso de GIS exige superar esses desafios. Em média, 300-350 alunos se inscrevem no curso básico de SIG todos os anos. Cerca de 80% deles estudam fora do campus.

Mapa do campus principal da USQ criado usando QGIS ¶


Um algoritmo de computação de matriz de distância aprimorado para clusters multicore

A matriz a distância tem diversas utilizações em diferentes áreas de pesquisa. Seu cálculo é normalmente uma tarefa essencial na maioria das aplicações de bioinformática, especialmente no alinhamento de múltiplas sequências. A gigantesca explosão de bancos de dados de sequências biológicas leva a uma necessidade urgente de acelerar esses cálculos. DistVect algoritmo foi introduzido no artigo de Al-Neama et al. (no prelo) para apresentar uma abordagem recente para a vetorização da computação de matriz de distância. Ele mostrou um desempenho eficiente em computação sequencial e paralela. No entanto, os sistemas de cluster multicore, que agora estão disponíveis, com sua escalabilidade e relação desempenho / custo, atendem à necessidade de um desempenho mais poderoso e eficiente. Este artigo propõe DistVect1 como algoritmo paralelo vetorizado altamente eficiente com alto desempenho para computação de matriz de distância, direcionado a clusters multicore. Ele reformula DistVect1 algoritmo vetorizado em termos de primitivas de clusters. Ele deduz uma abordagem eficiente de particionamento e agendamento de cálculos, conveniente para este tipo de arquitetura. As implementações empregam o potencial das bibliotecas MPI e OpenMP. Os resultados experimentais mostram que o método proposto melhora a velocidade de cerca de 3 vezes após SSE2. Além disso, ele também atinge acelerações de mais de 9 ordens de magnitude em comparação com a implementação paralela disponível publicamente utilizada no ClustalW-MPI.

1. Introdução

Matriz de distância (DM) se refere a uma matriz bidimensional contendo as distâncias entre pares de um conjunto de elementos. DM tem uma ampla gama de uso em vários campos de pesquisa científica. É usado intensamente em agrupamento de dados [1], reconhecimento de padrões [2], análise de imagens [3], recuperação de informações [4] e bioinformática. Em bioinformática, é usado principalmente na construção da chamada árvore filogenética, que é um diagrama que representa as linhas de descendência evolutiva de diferentes espécies, organismos ou genes de um ancestral comum [5].

O crescimento explosivo dos genomas faz com que a capacidade de alinhar um grande número de longas sequências se torne mais essencial. Por exemplo, o Ribosomal Database Project Release 10 [6] consiste em mais de um milhão de sequências. Isso leva a um grande número de cálculos de distância. Como, apenas para alinhar 100.000 sequências, aproximadamente 5 bilhões de distâncias precisam ser calculadas para construir um DM completo. Mesmo se as sequências forem curtas e os cálculos de distâncias entre pares podem ser feitos de forma relativamente rápida, digamos a uma taxa de

., seu alinhamento ainda requer quase 12 dias de tempo de CPU. Outra dificuldade é como armazenar os elementos DM, pois ele ocupará até 40 GB de memória. Isso leva à necessidade de novas abordagens para acelerar os cálculos de distância e para lidar com o armazenamento de forma eficiente.

Por outro lado, o rápido desenvolvimento de hardware de computação de alto desempenho (HPC) fornece capacidade computacional de relação de custo de alto desempenho. As altas precisões de computadores multicore, clusters e grades têm se tornado cada vez mais disponíveis e mais poderosas nos dias de hoje [7]. Portanto, é interessante usar tecnologias de alto desempenho para desbloquear o potencial de tais sistemas. Enquanto isso, as bibliotecas de programação paralela, como OpenMP e MPI, possibilitaram aos programadores tirar vantagem da grande capacidade computacional de multicore e clusters para uso de propósito geral.

Muitas tentativas foram feitas para calcular com eficiência a matriz de distância. Como visto na próxima seção, os que usaram GPUs são muito rápidos, mas o comprimento das sequências é limitado. Outros métodos que podem lidar com sequências longas e produzir alinhamento preciso são relativamente lentos. Nossa motivação é fornecer um método eficiente que combine a velocidade e a capacidade de alinhar longas sequências.

Este artigo é uma extensão do nosso trabalho em [8]. Uma versão melhorada de DistVect algoritmo é proposto. Os cálculos são redistribuídos de forma eficiente para gerenciar o desequilíbrio de carga com o objetivo de melhorar o desempenho geral. O algoritmo foi atualizado para o modelo híbrido de modo a colher os benefícios máximos dos modelos de granulação fina e grossa. O método proposto é voltado para clusters multicore devido à sua popularidade atualmente e por atingir maior velocidade de processamento.

As principais contribuições deste artigo são: (i) projetar um sistema estendido altamente paralelo DistVect algoritmo para computação de matriz de distância em clusters multicore, chamado DistVect1, para alinhar sequências enormes rapidamente, (ii) implementar a proposta DistVect1 algoritmo usando C ++ com MPI e OpenMP na plataforma Bibliotheca Alexandrina, (iii) realizando experimentos abrangentes usando uma grande variedade de tamanhos de conjuntos de dados reais e mostrando que nosso programa desenvolvido supera ClustalW-MPI e SSE2 em termos de tempo de execução, (iv) investigando o impacto do aumento do número e da duração das sequências na aceleração e demonstração de que DistVect1 produz uma aceleração significativa quando o comprimento dos genomas aumenta.

O restante deste trabalho está organizado da seguinte forma. A seção 2 resume brevemente os métodos e algoritmos fundamentais relativos à matriz de distância. Seção 3 explica o DistVect algoritmo. Seção 4 discute o melhor DistVect1. A seção 5 descreve brevemente o procedimento de implementação e apresenta os resultados com uma análise detalhada. Finalmente, a Seção 6 conclui o artigo e sugere trabalhos futuros.

2. Trabalho relacionado

O cálculo da matriz de distância é considerado o estágio substancial da maioria das ferramentas de alinhamento de múltiplas sequências. Para alinhar um conjunto de dados de tamanho

, onde é o número de sequências e seu comprimento médio, o cálculo dos elementos DM requer

Comparações por pares. Cada comparação usa uma matriz de tamanho

para obter a distância. Esses cálculos podem se tornar proibitivos quando e são muito grandes (ou seja, na casa das dezenas de milhares). Existem poucos programas de alinhamento múltiplo que manipulam datasets deste tamanho, com precisão aceitável, como MAFFT [9], DIALIGN [10] e Clustal [11]. Os métodos mais precisos só podiam lidar rotineiramente com centenas ou alguns milhares de sequências, como MUSCLE [12], Probcoms [13] e T-Coffee [14].

Soluções promissoras foram encontradas para paralelizar cálculos de DM. Vários algoritmos paralelos foram apresentados para superar os obstáculos de velocidade / espaço para diferentes sistemas HPC, como máquinas com multiprocessadores e clusters de estações de trabalho. Uma categoria se concentra em paralelizar as operações em componentes de dados menores. Implementações típicas desta abordagem usando multithreading estão em [15, 16]. Os outros se concentram na distribuição de cada par independente de sequências em processadores diferentes. O método paralelo mais popular que usa essa abordagem é o ClustalW-MPI [17]. Ele é direcionado a clusters de estação de trabalho com arquitetura de memória distribuída. Sua principal contribuição foi fornecer uma implementação eficiente de memória distribuída do ClustalW que pode ser executada em uma ampla gama de clusters de PC com memória distribuída e multicomputadores paralelos.

Wirawan et al. explorar em [18] o uso de uma abordagem intertarefa, com modelo SIMD. Eles tiram vantagem do fato de que todos os elementos na mesma diagonal menor podem ser calculados independentemente em paralelo. Eles usaram processadores Intel comuns com o conjunto de instruções SSE2, suportando elementos de 16 bits, e produziram uma ferramenta de software chamada SSE2, que foi escrita principalmente em C com API p-thread. Esta abordagem foi explorada em alguns métodos recentes [15, 19–21] onde o paralelismo ocorre dentro de um único par de sequências, para evitar dependências de dados dentro da matriz de alinhamento.

A GPU foi usada em [22] para acelerar o alinhamento da sequência. Ele reformulou algoritmos de alinhamento baseados em programação dinâmica como algoritmos de streaming em termos de primitivas de computação gráfica. Resultados experimentais mostram que a abordagem baseada em GPU permite acelerações de mais de uma ordem de magnitude em relação a implementações de CPU otimizadas. No entanto, isso não é grave, pois 99,8 por cento das sequências no banco de dados têm comprimento & lt4.096. Além disso, é razoável esperar que os tamanhos de buffer de textura permitidos aumentem no hardware gráfico de próxima geração.

Além disso, CUDASW ++ [20] paraleliza o algoritmo Smith-Waterman para CUDA GPU que calcula as pontuações de similaridade de uma sequência de consulta emparelhada com cada sequência em um banco de dados. A análise de desempenho mostra uma melhoria substancial no desempenho geral da ordem de três a quatro atualizações de giga-células por segundo. A versão de GPU única atinge um desempenho médio de 9.509 GCUPS com um desempenho mais baixo de 9,039 GCUPS e um desempenho mais alto de 9.660 GCUPS, e a versão de GPU dupla atinge um desempenho médio de 14.484 GCUPS com um desempenho mais baixo de 10.660 GCUPS e um mais alto desempenho de 16.087 GCUPS. Mas ele oferece suporte a sequências de consulta de comprimento de até 59 K e para sequências de consulta variando de comprimento de 144 a 5.478.

Esta abordagem foi explorada por seus autores, resultando em SIMT otimizado e algoritmo particionado vetorizado CUDASW ++ 2.0 [19] com um desempenho surpreendente de até 17 GCUPS em uma GeForce GTX 280 e 30 GCUPS em uma GeForce GTX 295 de GPU dupla.

Da mesma forma, CUDASW ++ 3.0 [21] acopla as instruções CPU e GPU SIMD e realiza cálculos simultâneos de CPU e GPU. Ele emprega unidades de execução de vetor baseadas em SSE como aceleradores e emprega instruções de vídeo CUDA PTX SIMD para obter mais paralelismo de dados além do modelo de execução SIMT. A avaliação mostra que o CUDASW ++ 3.0 obtém uma melhoria de desempenho em relação ao CUDASW ++ 2.0 até 2,9 e 3.2, com um desempenho máximo de 119,0 e 185,6 GCUPS, em uma placa de vídeo GeForce GTX 680 de GPU único e GeForce GTX 690 de GPU duplo, respectivamente. Ele também demonstrou acelerações significativas em SWIPE e BLAST +. No entanto, a sequência de consulta mais longa tinha 5.478 para pesquisar os bancos de dados de proteínas Swiss-Prot que têm a maior sequência de comprimento 35.213.

No entanto, a maioria das implementações de GPU não pode alinhar sequências com mais de 59.000 resíduos. Isso se deve às características intrínsecas do SIMD do GPG, onde o pipelining permite um grande fator de aumento de velocidade, embora o uso intenso de memória possa levar a gargalos. Isso leva à implantação de outras arquiteturas, como muitos núcleos [23]. MC64-ClustalWP2 foi desenvolvido recentemente como uma nova implementação do algoritmo ClustalW, para alinhar sequências longas em arquiteturas com muitos núcleos. Ele executa alinhamentos múltiplos 18 vezes mais rápido do que o algoritmo ClustalW original e pode alinhar sequências que são relativamente longas (mais de 10 kb).

Os autores propuseram um algoritmo de computação de matriz de distância vetorizado chamado DistVect [8]. O algoritmo aborda o problema de construção de uma ferramenta paralela para multicores que produza o alinhamento de múltiplas sequências em um curto espaço de tempo sem usar muito espaço de armazenamento. A principal contribuição foi a vetorização de todas as matrizes utilizadas na computação. Experimentalmente, o método proposto alcançou boa capacidade de alinhar um grande número de sequências por meio de poderosos recursos de manipulação de armazenamento aprimorados com melhoria eficiente do tempo de processamento geral.

3. DistVect Algoritmo

DistVect [8] é um algoritmo acelerado que calcula a matriz de distância para alinhar grandes conjuntos de dados. Tem a vantagem de consumir menos espaço. Leva, como entrada , sequências

de comprimento médio, com sua matriz de substituição sbt e o custo gab

. Ele produz um vetor de distância,

, contendo a pontuação de similaridade (distância) para cada uma das duas sequências. Funciona com matrizes de vetorização apresentadas por Liu et al. em [22] e usado por Wirawan et al. em [18]. Ele paraleliza os cálculos dos vetores de resolução, levando em consideração a vantagem da independência dos elementos das diagonais menores das matrizes.

Para calcular o número de correspondências exatas e torná-lo adequado para uma implementação paralela refinada, Liu et al. [22] formulou uma relação de recorrência para o número de cálculos de correspondência exata que é mais adequada para implementação usando uma penalidade de intervalo linear. Esta fórmula facilita os cálculos sem o cálculo do alinhamento real. Dadas duas sequências


Assista o vídeo: QGIS - Matriz de distâncias e análise da localidade mais próxima (Outubro 2021).