Páginas

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

segunda-feira, 27 de dezembro de 2021

SciDAVis no ano de 2021

 Olá pessoal!

Ando meio sem tempo para postar novidades sobre o SciDAVis (apesar de não haverem muitas). E, além disso, já não tenho usado tanto esse software, pois, devido às minhas atividades científicas atuais, tenho feito quase tudo o que preciso com Python, em conjunto com Matplotlib, Numpy, Scipy, dentre outras "peças"... muitas vezes rodando os meus scripts no Spyder. Porém, segue aqui um resumo do que aconteceu com o desenvolvimento do SciDAVis no ano de 2021:

- lançamento da versão 2.4.0: ocorreu em 4 de maio deste ano. Apenas as plataformas Linux e Windows tiveram pacotes binários ("oficiais") com esta versão. Parece que há algum problema para criar um pacote para Mac.
Uma das melhores coisas que vieram com esta versão é que as bibliotecas qwt-qt5 e qwtplot3d foram incorporadas ao projeto, o que ajuda bastante aqueles que compilam o SciDAVis a partir do código fonte, são duas dependências a menos agora...
Uma outra coisa que seria uma boa notícia (já explico) é a possibilidade de habilitar a utilização de scripts em python nos pacotes para Windows. Este commit no Github e este outro contém as alterações que possibilitam isso. A explicação do porquê seria uma boa notícia é que apesar de ser possível habilitar os scripts em python nesta versão, isso não foi feito no pacote oficial para Windows :-(

- criação da SciDAVis Corp: vocês não vão encontrar nada se procurarem por "SciDAVis Corp" no google. Eu só sei que foi criada por ter recebido um convite por email para fazer parte disso (eu recusei o convite por não ter tempo para isso, e também por não ter muito com o que contribuir, além de motivos pessoais). Mas se entrarem em github.com/SciDAVis, verão que foi para esse endereço que o desenvolvimento do SciDAVis migrou.

- maior número de desenvolvedores envolvidos: a ideia do (atual) desenvolvedor principal do projeto, Russell Standish, de migrar o desenvolvimento do projeto do SourceForge.net para o GitHub, em 2015, teve um efeito positivo no que diz respeito a atrair mais colaboradores para o projeto, principalmente neste ano de 2021. Porém, apesar do número de contribuidores ter aumentado, a quantidade de código adicionada não foi, na minha opinião (que é baseada em números que acompanho há mais de 14 anos), expressiva para que o desenvolvimento do SciDAVis se tornasse, digamos, autossustentável... em outras palavras, o "grosso" do trabalho ainda depende muito de duas ou três pessoas apenas.

Bom... é isso. O desenvolvimento do SciDAVis continua ativo. E deverá continuar por um longo tempo. Mas seria bom ver este software, que (ainda) tem um bom potencial para ser a melhor alternativa livre ao Origin, evoluir um pouco mais rápido neste sentido...

Abraço e até sei lá quando...

Boas análises de dados!

quarta-feira, 18 de dezembro de 2019

Atualização do SciDAVis - versão 1.26 disponível para download

Caros usuários do SciDAVis,

Já está disponível a versão 1.26 do SciDAVis - pacotes binários para Linux, Windows e Mac, e também o código fonte.
Esta versão contém apenas correções de alguns bugs, e deve ser a última da série 1.x.
Acredito que a próxima atualização seja a versão 2.0 (ou 2.1), onde será removido o suporte ao Python 2 e Qt 4, dando lugar ao Python 3 e Qt 5. Há esperança de que o suporte à execução de scripts em Python em pacotes para Windows (e também no Mac*) volte a estar disponível no SciDAVis 2.x.

Links para Downloads:
Linux (binários via OBS para várias distribuições): https://software.opensuse.org/download.html?project=home%3Ahpcoder1&package=scidavis
Binários para Windows (.msi) e Mac* (.pkg), e o código fonte: https://sourceforge.net/projects/scidavis/files/SciDAVis/1.26/
* python está desabilitado nos pacotes para Mac na versão 1.26 :-(

Usuários de Slackware terão o build script para a versão 1.26 no repositório do projeto SlackBuilds.org disponível a partir do próximo final de semana.

Boas análises de dados, bom final de ano e até mais!

quarta-feira, 6 de junho de 2018

Lançada a versão 1.23

Boa notícia: no dia 04/06/2018 foi lançada a versão 1.23 do SciDAVis. Já estão disponíveis pacotes binários para Linux, Windows e Mac - e também o código fonte, é claro.
Esta é basicamente uma versão para correções de problemas. Porém, vale destacar as seguintes modificações:
  • Adição de suporte ao Python 3 ¹ ²;
  • Remoção de código legado de suporte à biblioteca Qt versão 3;
  • Melhorada a importação de arquivos do Origin.
¹ O binário para Windows ainda não está suportando Python. O suporte ao Python 3 no Linux vai depender da distribuição.
² As instruções de compilação com suporte ao Python são as que seguem:
- Para compilar com suporte à versão 2 (2.7) use:
export PYTHON=python2
qmake CONFIG+=python
make

- Já para compilar com suporte à versão 3 (3.6) utilize:
export PYTHON=python3
qmake CONFIG+=python
make

Se nenhuma opção for configurada, o SciDAVis será compilado com a versão do Python que for padrão no sistema.

Links para Downloads:
Linux (binários via OBS para várias distribuições): https://software.opensuse.org/download.html?project=home%3Ahpcoder1&package=scidavis
Binários para Windows (.msi) e Mac (.pkg), e o código fonte: https://sourceforge.net/projects/scidavis/files/SciDAVis/1.23/

Usuários de Slackware terão o build script para a versão 1.23 no repositório do projeto SlackBuilds.org disponível a partir do próximo final de semana (provavelmente).

Boas análises de dados e até mais!

terça-feira, 8 de maio de 2018

Nova versão beta (1.22.2) agora com suporte ao Python 3

Caros usuários do SciDAVis e de softwares similares,

Foi lançada uma nova versão beta do SciDAVis, numerada como 1.22.2. A principal novidade nesta versão é o suporte à versão 3 do Python (3.6, para ser mais exato).
Infelizmente, usuários do Windows ainda não podem usufruir das vantagens de se utilizar scripts em Python no SciDAVis. Esta função está desabilitada desde versões posteriores à 1.D8. Talvez na próxima versão "não-beta" isto seja reabilitado. Talvez...

Os links para download são os que seguem:
Linux (binários via OBS para várias distribuições): https://software.opensuse.org/download.html?project=home%3Ahpcoder1&package=scidavis
 
Código fonte:
Novas instruções de compilação com suporte a Python:

- Para compilar com suporte à versão 2 (2.7) use:
export PYTHON=python2
qmake CONFIG+=python
make
 
- Já para compilar com suporte à versão 3 (3.6) utilize:
export PYTHON=python3
qmake CONFIG+=python
make
 
Ainda não fiz nenhum teste. Logo não sei se as instruções acima podem variar de uma distribuição para outra. Qualquer coisa eu faço um novo post elucidando o caso.
 
Repetindo o que eu disse no post anterior:
Por favor, se possível testem e reportem os problemas em um dos dois canais para relatos de bugs:
Também é possível relatar na lista de discussão de usuários no SourceForge.net (é necessário se cadastrar no SF):
ou na lista de e-mails dos usuários (precisa se inscrever):
Como nas opções 1 a 4 o idioma padrão é o inglês, quem não dominar este idioma pode relatar os problemas que encontrar para mim no e-mail: fellypaoøyahoo·com·br (não esqueça de trocar ø por @ e · por .).
Toda ajuda é bem vinda, e a recompensa será um SciDAVis mais moderno, com menos problemas e com maior longevidade.
 
Boas análises e até mais!

quarta-feira, 9 de agosto de 2017

Lançada a versão 1.21 - para Linux, Windows e Mac

Boa notícia: foi lançada hoje (9/8/2017) a versão 1.21 (ou 1.D21, para pacotes .deb) do SciDAVis. O código fonte e os binários para Mac e Windows podem ser baixados de [1]. Já os binários para algumas distribuições Linux podem ser encontrados a partir de [2]. Para os usuários de Slackware, o build script no site SlackBuilds.org deverá estar disponível a partir do próximo final de semana e os binários estarão em [3]. Para outras distribuições Linux, será necessário esperar até que o SciDAVis seja atualizado em seus respectivos repositórios (oficiais ou de terceiros).

Esta versão foi lançada para corrigir alguns bugs, mas também foi implementada uma nova característica que permite modificar, via python script, os eixos aos quais uma curva está anexada [4].
ERRATA (10/9/2017-10:39{GMT-3}): a nova característica mencionada acima foi adicionada ao SciDAVis depois de lançada a versão 1.21.

Até mais.


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/

________________________________________________________________________

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!

segunda-feira, 21 de março de 2011

Dica: Integração numérica usando Python script

Nesta minha primeira dica que posto aqui sobre Python script no SciDAVis vou falar sobre integração numérica. Antes da dica, vale lembrar que a linguagem Python deve ter sido préviamente selecionada no menu "Programação" → "Linguagem de programação (script)" (ou "Scripting" → "Scripting Language", se você estiver utilizando a interface em inglês). Os scripts podem ser editados e executados em uma nota (menu "Arquivo" → "Novo" → "Nova nota / script") ou executados via linha de comando (este último método não será abordado nesta dica).

Para este exemplo, vamos supor que tenhamos um gráfico, nomeado como Gráfico1, com uma curva rotulada de Tabela1_2, cujo parâmetro x varia entre 0 e 10. Vamos supor também que o usuário tenha conhecimentos básicos de Python.

As etapas necessárias para efetuar a integração numérica e extrair o resultado são:

- definir uma função com a curva a ser integrada, juntamente com os limites inferior e superior;
- definir o método a ser utilizado para interpolação (0, 1 ou 2, para Linear, Cúbica ou Akima, respectivamente);
- executar a integração;
- extrair o resultado.

A sintaxe da função que efetua a integração numérica no SciDAVis é:

integral = Integration(graph("Nome do gráfico").activeLayer(), "Nome da curva", Limite inferior, Limite superior)

Para definir o método de interpolação usamos:

integral.setMethod(Número do método)

Em seguida executamos com:

integral.run()

E extraímos o resultado com:

integral.result()

Vamos a um exemplo prático.
Abra uma nota e digite (ou copie e cole) os seguintes comandos (sem se esquecer da suposição de que temos um gráfico, nomeado como Gráfico1, com uma curva rotulada de Tabela1_2, cujo parâmetro x varia entre 0 e 10):

integral = Integration(graph("Gráfico1").activeLayer(), "Tabela1_2",0,5)
integral.setMethod(2)
integral.run()
integral.result()

Selecione tudo e tecle Ctrl + j para executar (se preferir, não selecione nada e tecle Ctrl + Shift + j). O resultado da operação aparecerá na janela de registro de resultados (Results Log), juntamente com todas as informações sobre a operação: método, limites, ymáx, etc.

Aí você pergunta: - Ok! Mas pra quê usar um script em Python para fazer esta operação se eu posso fazê-la através do menu "Análise" → "Integrar..."?

E eu respondo: - Pra poder automatizar o processo no caso de você precisar repeti-lo várias vezes. Por exemplo, se você precisar integrar vários intervalos da variável x, como é mostrado a seguir:

tabela2 = newTable("Tabela2",2,10) # criando uma nova tabela, com 2 colunas e 10 linhas
passo = 1.0 # incremento a ser utilizado para variar o intervalo de integração
lim_ini = 0.0
lim_fin = 1.0
for i in range(1,tabela2.numRows() + 1):
 tabela2.setCell(1,i,(lim_ini+lim_fin)/2)
 integral = Integration(graph("Gráfico1").activeLayer(),"Tabela1_2",lim_ini,lim_fin)
 integral.setMethod(0)
 integral.run()
 tabela2.setCell(2,i,integral.result())
 lim_ini = lim_ini + passo
 lim_fin = lim_fin + passo

Com este procedimento, obteremos uma tabela com valores da integração na segunda coluna e o valor médio do intervalo de integração na primeira.

Se esta informação for útil pra você, faça bom proveito.

Até a próxima.