Exemplo n.º 1
0
    def clear_all_data(self):

        self.XYjob = XY_Job()  # XYjob may hold nonlinear fit object
        self.linear_fitL = []  # list of candidate linear fits
        self.selected_spline_objL = []  # list of candidate spline fits

        for pagename in ['Simple Fit', 'Exhaustive Fit']:
            self.pageD[pagename].selected_linfitL = []
            self.pageD[pagename].Equations_Listbox.delete(0, END)
            self.pageD[pagename].Pcentstddev_Listbox.delete(0, END)
            self.pageD[pagename].Stddev_Listbox.delete(0, END)

        self.pageD['Data'].clear_all_data()

        self.pageD['Code Gen'].Listbox_1.delete(0, END)
        self.pageD['Math'].Listbox_1.delete(0, END)
        self.pageD['Spline'].Listbox_1.selection_clear(0, 5)

        # remove any constant entry widgets and pack_forget Improve Button
        self.pageD['Non-Linear Fit'].ImproveFit_Button.pack_forget()
        self.pageD['Non-Linear Fit'].SetConst_Button.pack_forget()

        for e in self.pageD['Non-Linear Fit'].constEntryWidgetL:
            e.pack_forget()
            del (e)

        for pagename in [
                'Data', 'Simple Fit', 'Spline', 'Math', 'Exhaustive Fit',
                'Non-Linear Fit', 'Code Gen'
        ]:
            self.pageD[pagename].ShowHelp_Button_Click(None)
            self.pageD[pagename].pageFrame.update_idletasks()

        self.PlotWin.start_new_plot()
        #self.PlotWin.add_curve([1,2,3],[4,6,9], label='Sample Data', show_pts=1, show_line=1,
        #    linewidth=2, markersize=20)
        #self.PlotWin.final_touches( title_str='Sample Plot', show_grid=True, show_legend=True)
        self.PlotWin.show_it()
Exemplo n.º 2
0
        A = 101124.977819
        c = 1.00041249485
        d = 2.23356723474e-05
        n = 5.31856523127
        x = altitude (m)
        y = Pressure (Pa)
        Correlation Coefficient = 0.999996135864
        Standard Deviation = 88.761441745
        Percent Standard Deviation = 0.094401748723%
        
"""
from numpy import array, double
from xymath.xy_job import XY_Job
from xymath.gui.xygui import main as run_gui

XY = XY_Job()

alt_mArr = array([
    -1524, -1372, -1219, -1067, -914, -762, -610, -457, -305, -152, 0, 152,
    305, 457, 610, 762, 914, 1067, 1219, 1372, 1524, 1829, 2134, 2438, 2743,
    3048, 4572, 6096, 7620, 9144, 10668, 12192, 13716, 15240
],
                 dtype=double)

PaArr = 1000.0 * array([
    121, 119, 117, 115, 113, 111, 109, 107, 105, 103, 101, 99.5, 97.7, 96,
    94.2, 92.5, 90.8, 89.1, 87.5, 85.9, 84.3, 81.2, 78.2, 75.3, 72.4, 69.7,
    57.2, 46.6, 37.6, 30.1, 23.8, 18.7, 14.5, 11.1
],
                       dtype=double)
Exemplo n.º 3
0
"""
This example demonstrates the proper use of project: xymath
"""
import sys
import os

sys.path.insert(
    0, os.path.abspath("../../"))  # needed to find xymath development version

from xymath.xy_job import XY_Job

# TODO: create working example of project xymath

my_class = XY_Job()
Exemplo n.º 4
0
    def __init__(self, master, XYjob_inp=None):
        self.initComplete = 0
        #frame = Frame(master, width=753, height=536)
        #frame.pack()
        self.master = master
        self.allow_subWindows_to_close = 0
        self.x, self.y, self.w, self.h = -1, -1, -1, -1

        # bind master to <Configure> in order to handle any resizing, etc.
        # postpone self.master.bind("<Configure>", self.Master_Configure)
        self.master.bind('<Enter>', self.bindConfigure)

        self.master.title("XYmath")

        # make a Status Bar
        self.statusMessage = StringVar()
        self.statusMessage.set("")
        self.statusbar = Label(self.master,
                               textvariable=self.statusMessage,
                               bd=1,
                               relief=SUNKEN)
        self.statusbar.pack(anchor=SW, fill=X, side=BOTTOM)

        self.statusMessage.set("Welcome to XYmath")
        self.menuBar = Menu(master, relief="raised", bd=2)

        top_File = Menu(self.menuBar, tearoff=0)

        top_File.add("command", label="New", command=self.menu_File_New)
        top_File.add("command", label="Open", command=self.menu_File_Open)
        top_File.add("command", label="Import", command=self.menu_File_Import)
        top_File.add("command", label="Save", command=self.menu_File_Save)
        top_File.add("command", label="Exit", command=self.menu_Program_Exit)

        self.menuBar.add("cascade", label="File", menu=top_File)
        self.menuBar.add("command", label="About", command=self.menu_About)

        self.tab_frames = TabFrames(
            self.master,
            height=460,
            width=650,
            tabPixelWidthL=[60, 90, 60, 60, 110, 110, 60, 90],
            labelL=[
                'Data', 'Simple Fit', 'Spline', 'Math', 'Exhaustive Fit',
                'Non-Linear Fit', 'Plot', 'Code Gen'
            ])
        self.tab_frames.pack(anchor=NW, fill=BOTH, side=TOP, expand=True)

        # Main window is finished, start building tab_frames pages
        self.pageD = {}  # dictionary of tab_frames pages

        def setup_page(npage, PageObj):
            self.pageD[npage] = PageObj(self, self.tab_frames(npage))
            self.pageD[str(self.tab_frames.labelL[npage])] = self.pageD[npage]
            self.tab_frames.setLeaveCallback(
                npage, self.pageD[npage].leavePageCallback)
            self.tab_frames.setSelectCallback(
                npage, self.pageD[npage].selectPageCallback)

        # setup pages
        setup_page(0, PageData)  # setup page 0, Data page
        setup_page(1, SimplePage)  # setup page 1, Simple Curve Fit
        setup_page(2, SplinePage)  # setup page 2, Spline Curve Fit
        setup_page(3, MathPage)  # setup page 3, Math Page
        setup_page(4, ExhaustPage)  # setup page 4, Exhaustive Fit
        setup_page(5, NonLinFitPage)  # setup page 5, Non-Linear Fit
        setup_page(6, PagePlot)  # setup page 6, PagePlot
        setup_page(7, CodeGenPage)  # setup page 7, Code Generation Page

        master.config(menu=self.menuBar)

        if XYjob_inp is None:
            self.XYjob = XY_Job()  # XYjob may hold nonlinear fit object
        else:
            self.XYjob = XYjob_inp

        self.linear_fitL = []  # list of candidate linear fits
        self.selected_spline_objL = []  # list of candidate spline fits

        if self.XYjob.nonlin_fit:
            self.pageD['Non-Linear Fit'].EqnStr_Text.delete(1.0, END)
            self.pageD['Non-Linear Fit'].EqnStr_Text.insert(
                END, self.XYjob.nonlin_fit.rhs_eqnStr)

        # check for input file on command line
        if (XYjob_inp is None) and (len(sys.argv) == 2):
            fName = sys.argv[1]
            if not fName.endswith('.x_y'):
                fName += '.x_y'
            self.pathopen = os.path.abspath(fName)
            if os.path.isfile(
                    self.pathopen
            ):  # if file exists, read it as a definition file
                fInp = open(os.path.abspath(fName), 'rb')
                self.read_xyjob_from_file(fInp)
            else:
                # For erroneous file names, change status bar
                self.statusMessage.set("file:%s NOT FOUND" % fName)

        # Enter Data page to begin with
        #self.tab_frames.selectTab( self.tab_frames.buttonL[0] )
        master.protocol('WM_DELETE_WINDOW', self.cleanupOnQuit)

        milliseconds = 100
        self.master.after(milliseconds, self.littleInits)

        print(LICENSE)
Exemplo n.º 5
0
 def setUp(self):
     unittest.TestCase.setUp(self)
     self.myclass = XY_Job()
Exemplo n.º 6
0
cd_050 =  1/(1.0410141095741985 - 0.018737945262767248*gamma)
# Rup=0.75,  std=1.28366e-05
cd_075 =  1/(1.0211820293860214 - 0.006064881097850447*gamma)
# Rup=1,  std=1.01453e-05
cd_100 =  1/(1.0125848593169495 - 0.002058029259787154*gamma)
# Rup=1.5,  std=4.85485e-06
cd_150 =  1/(1.0059285328940355 - 0.00011367842090816805/gamma)
# Rup=2,  std=1.52664e-07
cd_200 =  0.9957021782441166 + 0.0006720167698767546/gamma

"""

gammaL = [1.1, 1.15, 1.2, 1.25, 1.3, 1.35, 1.4]

cdD = {} # index=RWTU, value=CD
cdD[0.5] = [0.9800142, 0.9809054, 0.981803, 0.9827062, 0.9836141, 0.9845261, 0.9854414]
cdD[0.75] = [0.9857159, 0.9859911, 0.9862749, 0.9865668, 0.9868662, 0.9871727, 0.9874859]
cdD[1] = [0.9897993, 0.989885, 0.989977, 0.9900752, 0.9901793, 0.990289, 0.990404]
cdD[1.5] = [0.9942151, 0.9942037, 0.9941956, 0.9941907, 0.9941889, 0.99419, 0.9941941]
cdD[2] = [0.9963129, 0.9962867, 0.9962624, 0.9962398, 0.996219, 0.9961998, 0.9961823]

RupL = sorted( list( cdD.keys() ) )

for Rup in RupL:
    job = XY_Job()
    yL = cdD[Rup]
    job.define_dataset( gammaL, yL, xName='gamma', yName='Cd')
    ordered_resultL = job.fit_dataset_to_common_eqns( run_both=1, sort_by_pcent=1, max_terms=2)
    print('# Rup=%g,  std=%g'%(Rup, job.linfit.std))
    print( 'cd_%s = '%(str(int(100*Rup)).zfill(3),), job.linfit.get_eqn_str_w_numbs() )