academic/scidavis: Updated for version 1.21.

Signed-off-by: David Spencer <idlemoor@slackbuilds.org>
This commit is contained in:
Fellype do Nascimento 2017-08-10 18:55:10 +01:00 committed by Willy Sudiarto Raharjo
parent 6ee20c188f
commit 027eebfddc
5 changed files with 10 additions and 249 deletions

View file

@ -1,221 +0,0 @@
--- libscidavis/src/FFT.cpp 2017-07-14 04:54:53.000000000 -0300
+++ /home/fellype/compilando/scidavis-github/libscidavis/src/FFT.cpp 2017-07-19 09:36:40.000000000 -0300
@@ -50,6 +50,12 @@
{
init();
setDataFromCurve(curveTitle);
+ // intersperse 0 imaginary components
+ double* tmp=new double[2*d_n];
+ memset(tmp,0,2*d_n*sizeof(double));
+ for (size_t i=0; i<d_n; ++i) tmp[2*i]=d_y[i];
+ delete [] d_y;
+ d_y=tmp;
}
void FFT::init ()
@@ -63,133 +69,13 @@
d_sampling = 1.0;
}
-QList<Column *> FFT::fftCurve()
+QList<Column *> FFT::fftTable()
{
- int i2;
- int n2 = d_n/2;
double *amp = new double[d_n];
- double *result = new double[2*d_n];
-
- if(!amp || !result)
- {
- QMessageBox::critical((ApplicationWindow *)parent(), tr("SciDAVis") + " - " + tr("Error"),
- tr("Could not allocate memory, operation aborted!"));
- d_init_err = true;
- return QList<Column *>();
- }
-
- double df = 1.0/(double)(d_n*d_sampling);//frequency sampling
- double aMax = 0.0;//max amplitude
- QList<Column *> columns;
- if(!d_inverse)
- {
- d_explanation = tr("Forward") + " " + tr("FFT") + " " + tr("of") + " " + d_curve->title().text();
- columns << new Column(tr("Frequency"), SciDAVis::Numeric);
-
- gsl_fft_real_workspace *work=gsl_fft_real_workspace_alloc(d_n);
- gsl_fft_real_wavetable *real=gsl_fft_real_wavetable_alloc(d_n);
-
- if(!work || !real)
- {
- QMessageBox::critical((ApplicationWindow *)parent(), tr("SciDAVis") + " - " + tr("Error"),
- tr("Could not allocate memory, operation aborted!"));
- d_init_err = true;
- return QList<Column *>();
- }
-
- gsl_fft_real_transform(d_y, 1, d_n, real,work);
- gsl_fft_halfcomplex_unpack (d_y, result, 1, d_n);
- gsl_fft_real_wavetable_free(real);
- gsl_fft_real_workspace_free(work);
- }
- else
- {
- d_explanation = tr("Inverse") + " " + tr("FFT") + " " + tr("of") + " " + d_curve->title().text();
- columns << new Column(tr("Time"), SciDAVis::Numeric);
-
- gsl_fft_real_unpack (d_y, result, 1, d_n);
gsl_fft_complex_wavetable *wavetable = gsl_fft_complex_wavetable_alloc (d_n);
gsl_fft_complex_workspace *workspace = gsl_fft_complex_workspace_alloc (d_n);
- if(!workspace || !wavetable)
- {
- QMessageBox::critical((ApplicationWindow *)parent(), tr("SciDAVis") + " - " + tr("Error"),
- tr("Could not allocate memory, operation aborted!"));
- d_init_err = true;
- return QList<Column *>();
- }
-
- gsl_fft_complex_inverse (result, 1, d_n, wavetable, workspace);
- gsl_fft_complex_wavetable_free (wavetable);
- gsl_fft_complex_workspace_free (workspace);
- }
-
- if (d_shift_order)
- {
- for(unsigned i=0; i<d_n; i++)
- {
- d_x[i] = (i-n2)*df;
- int j = i + d_n;
- double aux = result[i];
- result[i] = result[j];
- result[j] = aux;
- }
- }
- else
- {
- for(unsigned i=0; i<d_n; i++)
- d_x[i] = i*df;
- }
-
- for(unsigned i=0;i<d_n;i++)
- {
- i2 = 2*i;
- double real_part = result[i2];
- double im_part = result[i2+1];
- double a = sqrt(real_part*real_part + im_part*im_part);
- amp[i]= a;
- if (a > aMax)
- aMax = a;
- }
-
- // ApplicationWindow *app = (ApplicationWindow *)parent();
-
- columns << new Column(tr("Real"), SciDAVis::Numeric);
- columns << new Column(tr("Imaginary"), SciDAVis::Numeric);
- columns << new Column(tr("Amplitude"), SciDAVis::Numeric);
- columns << new Column(tr("Angle"), SciDAVis::Numeric);
- for (unsigned i=0;i<d_n;i++)
- {
- i2 = 2*i;
- columns.at(0)->setValueAt(i, d_x[i]);
- columns.at(1)->setValueAt(i, result[i2]);
- columns.at(2)->setValueAt(i, result[i2+1]);
- if (d_normalize)
- columns.at(3)->setValueAt(i, amp[i]/aMax);
- else
- columns.at(3)->setValueAt(i, amp[i]);
- columns.at(4)->setValueAt(i, atan(result[i2+1]/result[i2]));
- }
- delete[] amp;
- delete[] result;
- columns.at(0)->setPlotDesignation(SciDAVis::X);
- columns.at(1)->setPlotDesignation(SciDAVis::Y);
- columns.at(2)->setPlotDesignation(SciDAVis::Y);
- columns.at(3)->setPlotDesignation(SciDAVis::Y);
- columns.at(4)->setPlotDesignation(SciDAVis::Y);
- return columns;
-}
-
-QList<Column *> FFT::fftTable()
-{
- int i;
- int rows = d_table->numRows();
- double *amp = new double[rows];
-
- gsl_fft_complex_wavetable *wavetable = gsl_fft_complex_wavetable_alloc (rows);
- gsl_fft_complex_workspace *workspace = gsl_fft_complex_workspace_alloc (rows);
-
if(!amp || !wavetable || !workspace)
{
QMessageBox::critical((ApplicationWindow *)parent(), tr("SciDAVis") + " - " + tr("Error"),
@@ -198,18 +84,18 @@
return QList<Column *>();
}
- double df = 1.0/(double)(rows*d_sampling);//frequency sampling
+ double df = 1.0/(double)(d_n*d_sampling);//frequency sampling
double aMax = 0.0;//max amplitude
QList<Column *> columns;
if(!d_inverse)
{
columns << new Column(tr("Frequency"), SciDAVis::Numeric);
- gsl_fft_complex_forward (d_y, 1, rows, wavetable, workspace);
+ gsl_fft_complex_forward (d_y, 1, d_n, wavetable, workspace);
}
else
{
columns << new Column(tr("Time"), SciDAVis::Numeric);
- gsl_fft_complex_inverse (d_y, 1, rows, wavetable, workspace);
+ gsl_fft_complex_inverse (d_y, 1, d_n, wavetable, workspace);
}
gsl_fft_complex_wavetable_free (wavetable);
@@ -217,11 +103,11 @@
if (d_shift_order)
{
- int n2 = rows/2;
- for(i=0; i<rows; i++)
+ int n2 = d_n/2;
+ for(int i=0; i<int(d_n); i++)
{
d_x[i] = (i-n2)*df;
- int j = i + rows;
+ int j = i + d_n;
double aux = d_y[i];
d_y[i] = d_y[j];
d_y[j] = aux;
@@ -229,11 +115,11 @@
}
else
{
- for(i=0; i<rows; i++)
+ for(size_t i=0; i<d_n; i++)
d_x[i] = i*df;
}
- for(i=0; i<rows; i++)
+ for(size_t i=0; i<d_n; i++)
{
int i2 = 2*i;
double a = sqrt(d_y[i2]*d_y[i2] + d_y[i2+1]*d_y[i2+1]);
@@ -246,7 +132,7 @@
columns << new Column(tr("Imaginary"), SciDAVis::Numeric);
columns << new Column(tr("Amplitude"), SciDAVis::Numeric);
columns << new Column(tr("Angle"), SciDAVis::Numeric);
- for (i=0; i<rows; i++)
+ for (size_t i=0; i<d_n; i++)
{
int i2 = 2*i;
columns.at(0)->setValueAt(i, d_x[i]);
@@ -270,9 +156,7 @@
void FFT::output()
{
QList<Column *> columns;
- if (d_graph && d_curve)
- columns = fftCurve();
- else if (d_table)
+ if (d_y)
columns = fftTable();
if (!columns.isEmpty())

View file

@ -7,4 +7,5 @@ features such as scriptability and extensibility.
SciDAVis started as a fork of QtiPlot.
Optional dependencies are numpy and scipy (to improve python scripting)
Optional dependencies, after installation, are scipy and pygsl (to
improve python scripting).

View file

@ -1,11 +0,0 @@
--- scidavis/basic.pri 2017-07-14 04:54:53.000000000 -0300
+++ /home/fellype/compilando/scidavis-github/scidavis/basic.pri 2017-07-19 09:36:40.000000000 -0300
@@ -67,7 +67,7 @@
# note the translation files are not writable during AEGIS
# integration, so we don't want to perform an update then
tstarget.commands = (! test -w translations/scidavis_de.ts || \
-$$LUPDATE_BIN src/*.cpp ../libscidavis/src/*.cpp -ts translations/*.ts) && $$LRELEASE_BIN translations/*.ts
+$$LUPDATE_BIN src ../libscidavis/src -ts translations/*.ts) && $$LRELEASE_BIN translations/*.ts
QMAKE_EXTRA_TARGETS += tstarget
QMAKE_CLEAN += $$translationfiles.files

View file

@ -24,7 +24,7 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=scidavis
VERSION=${VERSION:-1.19}
VERSION=${VERSION:-1.21}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@ -65,16 +65,11 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
sed -i -e 's#share/man/man1/scidavis.1#man/man1#' scidavis/scidavis.pro
# Correction needed in order to find qwtplot3d in its default path
grep -rl "qwtplot3d/" libscidavis/src/ | xargs sed -i "s:<qwtplot3d/:<:"
## Applying some upstream patches:
## 1: Fix translations - see https://sourceforge.net/p/scidavis/scidavis-bugs/301/
patch -p1 < $CWD/fix_translations.patch scidavis/basic.pri
## 2: Fix FFT generated from graphs - see https://sourceforge.net/p/scidavis/scidavis-bugs/305/
patch -p1 < $CWD/Fix_FFT_generated_from_graphs.patch libscidavis/src/FFT.cpp
## For some unknown reason, to build in Slackware we need to run qmake twice in order to get the app icons working properly
## See https://sourceforge.net/p/scidavis/scidavis-bugs/259/
qmake
@ -95,11 +90,8 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
mkdir -p $PKG/usr/share/scidavis/translations
install -m 0644 scidavis/translations/*.qm $PKG/usr/share/scidavis/translations
mkdir -p $PKG/usr/man/man1
docbook2man man/manpage.sgml -o $PKG/usr/man/man1/
gzip -9 $PKG/usr/man/man1/*.1
ln -sf SciDAVis.1.gz $PKG/usr/man/man1/scidavis.1.gz
rm $PKG/usr/man/man1/manpage.*
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a README.md LICENSE $PKG/usr/doc/$PRGNAM-$VERSION

View file

@ -1,8 +1,8 @@
PRGNAM="scidavis"
VERSION="1.19"
VERSION="1.21"
HOMEPAGE="http://scidavis.sourceforge.net/"
DOWNLOAD="https://ufpr.dl.sourceforge.net/project/scidavis/SciDAVis/scidavis-1.19.tar.gz"
MD5SUM="5c4af1e3bb1e1b9adaf1c839892c5382"
DOWNLOAD="https://ufpr.dl.sourceforge.net/project/scidavis/SciDAVis/scidavis-1.21.tar.gz"
MD5SUM="148f73fb596f121dcfe5d929470ca97a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="muParser qwt5 qwtplot3d"