Páginas

Mostrando postagens com marcador tutoriais. Mostrar todas as postagens
Mostrando postagens com marcador tutoriais. Mostrar todas as postagens

quinta-feira, 27 de julho de 2017

Dica: Use a dupla SciDAVis + python para carregamento dinâmico de dados

A ideia desta dica surgiu a partir de uma pergunta feita no repositório do SciDAVis no GitHub [1].
English version is after the links.

A questão foi a seguinte: é possível utilizar o SciDAVis para carregar dados dinamicamente em uma tabela, em determinados intervalos de tempo, e atualizá-los em um gráfico?
E a resposta é simples: sim, através de scripts em python no SciDAVis. Porém, infelizmente, só é possível utilizar scripts em python no SciDAVis nas versões disponíveis para Linux (ao menos na maioria das distribuições) e Mac, ou em versões antigas para Windows (≤ 1.D5), conforme já foi noticiado neste blog [2].
Então, para os felizes usuários de Linux e Mac que tem o suporte a scripts em python habilitado, segue um script com um exemplo de como carregar dados de forma dinâmica no SciDAVis, de modo que eles sejam importados para uma tabela e atualizados em um gráfico:
import time
import os
t=newTable("DynamicTable") #Tabela onde os dados serão importados
file="/home/fellype/file.dat" #Caminho para o arquivo com os dados
modTime0=os.path.getmtime(file) # *Obs1
mod="True"
n=1 #
*Obs2
while (mod == "True"):
 t.importASCII(file," ",0,False,False,True,False) # *Obs3
 if (n == 1):
  g=plot(t,"2",0) # Plotando os dados da coluna 2 da tabela t
 time.sleep(20) #
*Obs4
 modTime=os.path.getmtime(file)
 if (modTime == modTime0):
  mod="False"
 else:
  modTime0=os.path.getmtime(file)
  n=2

Com o script acima, se o arquivo "/home/fellype/file.dat" for modificado dentro de um intervalo de 20 segundos, os dados na tabela "DynamicTable" serão atualizados, assim como o gráfico "g".
*Obs1: Obtém dados de quando o arquivo foi modificado pela última vez.
*Obs2: Usado para impedir que um novo gráfico seja criado a cada vez que o arquivo de dados for modificado.*Obs3: A sintaxe da função importASCII é: importASCII(file,"separador de colunas", ignore=0, renameCols=False, stripSpaces=False, simplifySpace=True, newTable=False). Consulte o manual [3] para mais informações sobre o uso de python no SciDAVis.*Obs4: A unidade de tempo na função time.sleep() é em segundos. Faça as contas para converter em minutos, horas, etc..., conforme a sua necessidade.

Uma desvantagem de utilizar a função time.sleep() é que o seu projeto no SciDAVis ficará paralisado durante o intervalo de tempo que for determinado na função. Logo, se você quiser fazer outras coisas no SciDAVis enquanto o script é executado, terá que abrir outra janela e criar outro projeto.
Como não sou um expert no uso de python, acredito que este script possa ser melhorado. Logo, se vocês tiverem sugestões, fiquem à vontade para incrementá-lo e compartilhar com outros usuários.
Até mais.

Links:
[1] https://github.com/highperformancecoder/scidavis/issues/46
[2] http://scidavisbr.blogspot.com.br/2015/12/atualizacao-disponivel-scidavis-1d9.html
[3] https://highperformancecoder.github.io/scidavis-handbook/

________________________________________________________________________

quinta-feira, 6 de abril de 2017

SciDAVis Handbook: versão mais atual (0.2) disponível online - apenas em inglês

Com algum tempo de atraso (~7 anos)¹, foi disponibilizada a versão 0.2 do manual do SciDAVis [1]. Esta versão do manual está atualizada² para o SciDAVis 0.2.3 ou mais recente, incluindo a série 1.x. Infelizmente, ela só está disponível no idioma Inglês. Eu iniciei a tradução para o Português em 2010, mas o tempo que eu podia dedicar a isto foi sendo reduzido drasticamente ao longo destes últimos anos.
Bom aprendizado!

¹ Na verdade o código fonte (arquivos .docbook, figuras e arquivos auxiliares) desta versão do manual sempre esteve disponível no repositório SVN...
² O Apêndice do manual não está atualizado para versões do SciDAVis posteriores a 0.2.4.

sexta-feira, 11 de dezembro de 2015

Dica: Ajuste de curvas utilizando Python script - Parte I: visão geral e exemplos

Olá a todos,

Nesta dica vou ensinar como fazer ajustes de curvas no SciDAVis utilizando scripts em python.
Antes de começarmos, vale lembrar que as primeiras coisas a serem feitas são:
- abrir uma nota no SciDAVis em Arquivo → Novo → Nova nota/script;
- alterar a linguagem de programação para python em Programação → Linguagem de programação (script) → escolha Python e de um OK.

Uma vez que esteja tudo configurado, podemos começar a trabalhar.

De um modo geral, todos os ajustes de curva seguem a sintaxe:

TipoDeAjuste( camada, curva)

Os tipos de ajustes disponíveis para serem utilizados com scripts em python são:
  • LinearFit( camada, curva) - ajuste linear
  • PolynomialFit( camada, curva, ordem) - ajuste polinomial
  • ExponentialFit( camada, curva) - ajuste exponencial
  • TwoExpFit( camada, curva) - ajuste com dois crescimentos/decaimentos exponenciais
  • ThreeExpFit( camada, curva) - ajuste com três crescimentos/decaimentos exponenciais
  • GaussFit( camada, curva) - ajuste gaussiano com fórmula "y0+A*sqrt(2/PI)/w*exp(-2*((x-xc)/w)^2)"
  • GaussAmpFit( camada, curva) - ajuste gaussiano com fórmula "y0+A*exp(-(x-xc)^2/(2*w^2))"
  • LorentzFit( camada,curva) - ajuste lorentziano
  • SigmoidalFit( camada, curva) - ajuste sigmoidal
  • NonLinearFit( camada, curva) - ajuste não linear (pode ser utilizada qualquer fórmula que se desejar)
  • PluginFit( camada, curva) - ajuste utilizando curva definida em um plugin

A seguir vamos dar dois exemplos de como utilizar ajustes. Nos dois casos vamos supor que tenhamos um gráfico, nomeado como Gráfico1, com uma curva rotulada de Tabela1_2 (substitua estes termos conforme o seu caso). Vamos supor também que a curva Tabela1_2 no Gráfico1 seja aproximadamente linear (você pode criar uma curva linear facilmente, não é?).

Exemplo 1: ajuste linear
Na nota aberta, digite as seguintes linhas (pode ignorar o que estiver depois de um #) 

g = graph("Gráfico1") # para que o Gráfico1 seja acessado na nota
camada =  g.activeLayer() # para acessar a camada ativa do Gráfico1 *
f = LinearFit(camada,"Tabela1_2") # definindo o ajuste como linear
f.fit() # para executar o ajuste

* supondo que a curva Tabela1_2 esteja nesta camada. Se estiver em outra camada, utilize layer(número da camada) no lugar de activeLayer()

Depois disto, execute a nota (tecle Ctrl + Shift + j) e você verá no Gráfico1 que o ajuste de curva foi efetuado com sucesso. Os resultados detalhados do ajuste podem ser vistos no Registro de resultados. Depois do próximo exemplo, diremos como acessar os resultados do ajuste na nota/script.

Exemplo 2: ajuste polinomial
Neste caso, vamos utilizar um ajuste polinomial de ordem 4, apenas como exemplo. Não é muito diferente do primeiro exemplo. Note que no lugar de LinearFit vamos utilizar PolynomialFit, com sua respectiva sintaxe:

g = graph("Gráfico1")
camada =  g.activeLayer()
f = PolynomialFit(camada,"Tabela1_2",4) # definindo o ajuste como polinomial, de ordem 4
f.fit()

Execute a nota (tecle Ctrl + Shift + j) e veja os resultados no Gráfico1 e no registro de resultados.
Bem simples. Não é mesmo?

Depois que um ajuste é executado, existem alguns resultados que podem ser acessados na nota/script. São os seguintes:
  • f.results() - retorna um vetor com os resultados dos parâmetros ajustados
  • f.errors() - retorna um vetor com as incertezas nos parâmetros ajustados
  • f.chiSquare() - retorna o valor do teste de Chi^2
  • f.numParameters() - retorna o número de parâmetros utilizados no ajuste
  • f.parametersTable("params") - abre uma tabela com os parâmetros ajustados e suas respectivas incertezas
  • f.covarianceMatrix("cov") - abre a matriz de covariância do ajuste
Note que, para que os resultados apareçam na própria nota você deve teclar Ctrl + Enter depois de algo como f.results().

Bom, espero que esta dica seja útil! Na próxima dica, mostrarei algumas outras curvas de ajuste e alguns controles a mais no script de ajuste.

Até mais!

quinta-feira, 23 de julho de 2009

Atualização do programa e tutorial em português

O SciDAVis já está na versão 0.2.3. Se você ainda não atualizou, é recomendável que o faça, pois foram corrigidos vários bugs, inclusive alguns que faziam o programa quebrar. Além disso, a tradução para o português foi incorporada ao programa neste meio tempo.
-----------------------------------------
Consegui um tempinho para escrever um breve tutorial de introdução ao SciDAVis, em língua portuguesa, que pode ser baixado daqui. Tenho a intenção de fazer a tradução completa da versão em inglês do manual, porém, isto ainda vai demorar um pouco. Espero que o tutorial que escrevi seja útil para novos usuários.