Example of Nifty File I/O¶
Note: this is out of data. v1.0b12 compartmentalized the data of each step, so you can safely delete the intermediate products of each step. This is moderately correct up the extraction of 1D spectra.
This is an example of how the Nifty directory tree appears after each step of the date reduction. These directory trees were created using a custom niftree bash command:
find . -name .git -prune -o -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
Add the following line to your ~/.bash_profile to create the niftree alias:
alias niftree="find . -name .git -prune -o -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
Example Data Reduction Products:¶
|____.DS_Store
|____config.cfg
|____ExtractedOneD
| |____20130527_obs28
| | |____xtfbrsnN20130527S0264.fits
| | |____xtfbrsnN20130527S0266.fits
| | |____xtfbrsnN20130527S0267.fits
| | |____xtfbrsnN20130527S0269.fits
| | |____xtfbrsnN20130527S0270.fits
| | |____xtfbrsnN20130527S0272.fits
| |____20130530_obs36
| | |____xtfbrsnN20130530S0261.fits
| | |____xtfbrsnN20130530S0263.fits
| |____20130530_obs55
| | |____xtfbrsnN20130530S0254.fits
| | |____xtfbrsnN20130530S0256.fits
| |____20130531_obs36
| | |____xtfbrsnN20130531S0162.fits
| | |____xtfbrsnN20130531S0164.fits
| |____20130621_obs36
| | |____xtfbrsnN20130621S0248.fits
| | |____xtfbrsnN20130621S0250.fits
| | |____xtfbrsnN20130621S0251.fits
| | |____xtfbrsnN20130621S0253.fits
| |____20130622_obs44
| | |____xtfbrsnN20130622S0327.fits
| | |____xtfbrsnN20130622S0329.fits
| | |____xtfbrsnN20130622S0330.fits
| | |____xtfbrsnN20130622S0332.fits
| |____20130624_obs75
| | |____xtfbrsnN20130624S0078.fits
| | |____xtfbrsnN20130624S0080.fits
| | |____xtfbrsnN20130624S0081.fits
| | |____xtfbrsnN20130624S0083.fits
| | |____xtfbrsnN20130624S0084.fits
| | |____xtfbrsnN20130624S0086.fits
| |____20130626_obs83
| | |____xtfbrsnN20130626S0108.fits
| | |____xtfbrsnN20130626S0110.fits
| | |____xtfbrsnN20130626S0111.fits
| | |____xtfbrsnN20130626S0113.fits
| |____combined20130527_obs28.fits
| |____combined20130530_obs36.fits
| |____combined20130530_obs55.fits
| |____combined20130531_obs36.fits
| |____combined20130621_obs36.fits
| |____combined20130622_obs44.fits
| |____combined20130624_obs75.fits
| |____combined20130626_obs83.fits
|____Merged_telCorAndFluxCalibrated
| |____.DS_Store
| |____20130527_obs28_merged.fits
| |____20130530_obs36_merged.fits
| |____20130530_obs55_merged.fits
| |____20130531_obs36_merged.fits
| |____20130621_obs36_merged.fits
| |____20130622_obs44_merged.fits
| |____20130624_obs75_merged.fits
| |____20130626_obs83_merged.fits
| |____temp_mergedH.fits
| |____TOTAL_mergedH.fits
| |____waveoffsetsH.txt
|____Merged_telluricCorrected
| |____20130527_obs28_merged.fits
| |____20130530_obs36_merged.fits
| |____20130530_obs55_merged.fits
| |____20130531_obs36_merged.fits
| |____20130621_obs36_merged.fits
| |____20130622_obs44_merged.fits
| |____20130624_obs75_merged.fits
| |____20130626_obs83_merged.fits
| |____temp_mergedH.fits
| |____TOTAL_mergedH.fits
| |____waveoffsetsH.txt
|____Merged_uncorrected
| |____20130527_obs28_merged.fits
| |____20130530_obs36_merged.fits
| |____20130530_obs55_merged.fits
| |____20130531_obs36_merged.fits
| |____20130621_obs36_merged.fits
| |____20130622_obs44_merged.fits
| |____20130624_obs75_merged.fits
| |____20130626_obs83_merged.fits
| |____temp_mergedH.fits
| |____TOTAL_mergedH.fits
| |____waveoffsetsH.txt
|____Nifty.log
.
|____config.cfg
|____ExtractedOneD/ # Extracted One D Science Spectra
| |____20130527_obs28/
| |____20130530_obs36/
| |____20130530_obs55/
| |____20130531_obs36/
| |____20130621_obs36/
| |____20130622_obs44/
| |____20130624_obs75/
| |____20130626_obs83/
| |____combined20130527_obs28.fits
| |____combined20130530_obs36.fits
| |____combined20130530_obs55.fits
| |____combined20130531_obs36.fits
| |____combined20130621_obs36.fits
| |____combined20130622_obs44.fits
| |____combined20130624_obs75.fits
| |____combined20130626_obs83.fits
|____Merged_telCorAndFluxCalibrated/ # Telluric corrected AND flux calibrated
| |____TOTAL_mergedH.fits
|____Merged_telluricCorrected/ # Telluric corrected cubes
| |____TOTAL_mergedH.fits
|____Merged_uncorrected # Uncorrected cubes
| |____TOTAL_mergedH.fits
|____Nifty.log
nifsPipeline Data Reduction¶
Config file used (slightly out of date but still a useful example):
# Nifty configuration file.
#
# Each section lists parameters required by a pipeline step.
manualMode = True
over = False
merge = True
scienceDirectoryList = []
telluricDirectoryList = []
calibrationDirectoryList = []
[nifsPipelineConfig]
sort = True
calibrationReduction = True
telluricReduction = True
scienceReduction = True
[sortConfig]
rawPath = '/Users/ncomeau/data/TUTORIAL_HD141004'
program = ''
skyThreshold = 2.0
sortTellurics = True
date = ''
copy = ''
[calibrationReductionConfig]
baselineCalibrationStart = 1
baselineCalibrationStop = 4
[telluricReductionConfig]
telStart = 1
telStop = 6
telluricSkySubtraction = True
spectemp = ''
mag = ''
hline_method = 'vega'
hlineinter = False
continuuminter = False
[scienceReductionConfig]
sciStart = 1
sciStop = 6
scienceSkySubtraction = True
telluricCorrectionMethod = 'gnirs'
telinter = False
fluxCalibrationMethod = 'gnirs'
use_pq_offsets = True
im3dtran = True
# Good luck with your Science!
Starting directory structure:
.
|____config.cfg
Command used to launch Nifty:
runNifty nifsPipeline config.cfg
Directory structure after sorting:
.
|____config.cfg
|____HD141004/ # Object name, from science header
| |____20100401/ # UT date, from science header
| | |____Calibrations_K/ # Calibrations for a given science observation
| | | |____arcdarklist # Textfile list of lamps-off arc frames
| | | |____arclist # Textfile list of lamps-on arc frames
| | | |____flatdarklist # Textfile list of lamps-off flats; same length as flatlist
| | | |____flatlist # Textfile list of lamps-on flats; same length as flatdarklist
| | | |____N201004*.fits # Raw Calibration Frames
| | | |____original_flatdarklist # Unmodified textfile list of lamps-off flats
| | | |____original_flatlist # Unmodified textfile list of lamps-on flats
| | | |____ronchilist # Textfile list of lamps-on ronchi flats
| | |____K/ # Grating of science and telluric frames
| | | |____obs107/ # Science observation, from science headers
| | | | |____N201004*.fits # Raw science frames
| | | | |____scienceFrameList # Textfile list of science frames
| | | | |____skyFrameList # Textfile list of science sky frames
| | | |____Tellurics/
| | | | |____obs109/ # A single standard star observation directory
| | | | | |____N201004*.fits # Raw standard star frames
| | | | | |____scienceMatchedTellsList # Textfile matching telluric observations with science frames
| | | | | |____skyFrameList # Textfile list of standard star sky frames
| | | | | |____tellist # Textfile list of standard star frames
|____Nifty.log # Master log file
Now in nifsBaselineCalibration:
After Step 1: Get Shift, two new files appear.
.
|____config.cfg
|____HD141004/
| |____20100401/
| | |____Calibrations_K/
| | | |____arcdarklist
| | | |____arclist
| | | |____flatdarklist
| | | |____flatlist
| | | |____N201004*.fits
| | | |____original_flatdarklist
| | | |____original_flatlist
| | | |____ronchilist
| | | |____shiftfile # Textfile storing name of the reference shift file
| | | |____sN20100410S0362.fits # Reference shift file; a single lamps-on flat run through nfprepare
|____Nifty.log
After Step 2: Make Flat and bad pixel mask, several new files and intermediate results appear.
.
|____config.cfg
|____HD141004/
| |____20100401/
| | |____Calibrations_K/
| | | |____arcdarklist
| | | |____arclist
| | | |____flatdarklist
| | | |____flatfile # Textfile storing name of final flat
| | | |____flatlist
| | | |____gnN20100410S0362.fits # Median-combined with gemcombine() and prepared lamps-on flat
| | | |____gnN20100410S0368.fits # Median-combined with gemcombine() and prepared lamps-off flat
| | | |____N201004*.fits
| | | |____nN201004*.fits # Result of running raw frames through nfprepare()
| | | |____original_flatdarklist
| | | |____original_flatlist
| | | |____rgnN20100410S0362.fits # Result of running gemcombine() lamps-on flats through nsreduce()
| | | |____rgnN20100410S0362_flat.fits # Final rectified flat; result of nsslitfunction()
| | | |____rgnN20100410S0362_sflat.fits # Preliminary flat; result of nsflat()
| | | |____rgnN20100410S0362_sflat_bpm.pl # Final bad pixel mask; later used in nffixbad()
| | | |____rgnN20100410S0368.fits # Result of running gemcombine() lamps-off flats through nsreduce()
| | | |____rgnN20100410S0368_dark.fits # Final flat dark frame
| | | |____ronchilist
| | | |____sflat_bpmfile # Textfile storing name of final bad pixel mask
| | | |____sflatfile
| | | |____shiftfile
| | | |____sN20100410S0362.fits
|____Nifty.log
After Step 3: Wavelength Solution, similar files are created as well as a database/ directory containing wavelength solutions for each slice.
.. code-block:: text
.
|____config.cfg
|____HD141004/
| |____20100401/
| | |____Calibrations_K/
| | | |____arcdarkfile
| | | |____arcdarklist
| | | |____arclist
| | | |____database/ # Contains textfile results from nswavelength(), nfsdist(), nffitcoords(), nifcube()
| | | | |____idwrgnN20100401S0137_SCI_*_ # Textfiles containing wavelength solutions for a particular slice
| | | |____flatdarklist
| | | |____flatfile
| | | |____flatlist
| | | |____gnN20100401S0137.fits # Median-combined with gemcombine() arc dark frame
| | | |____gnN20100410S0362.fits
| | | |____gnN20100410S0368.fits
| | | |____gnN20100410S0373.fits # Median-combined with gemcombine() arc frame
| | | |____N201004*.fits
| | | |____nN201004*.fits # Results of running raw frames through nfprepare()
| | | |____original_flatdarklist
| | | |____original_flatlist
| | | |____rgnN20100401S0137.fits # Results from nsreduce() of combined arc dark frame
| | | |____rgnN20100410S0362.fits
| | | |____rgnN20100410S0362_flat.fits
| | | |____rgnN20100410S0362_sflat.fits
| | | |____rgnN20100410S0362_sflat_bpm.pl
| | | |____rgnN20100410S0368.fits
| | | |____rgnN20100410S0368_dark.fits
| | | |____ronchilist
| | | |____sflat_bpmfile
| | | |____sflatfile
| | | |____shiftfile
| | | |____sN20100410S0362.fits
| | | |____wrgnN20100401S0137.fits # Final wavelength calibration frame
|____Nifty.log
After Step 4: Spatial Distortion, the last step of the calibration reduction, more files are added to the database directory.
.
|____config.cfg
|____HD141004/
| |____20100401/
| | |____Calibrations_K/
| | | |____arcdarkfile
| | | |____arcdarklist
| | | |____arclist
| | | |____database/
| | | | |____idrgnN20100410S0375_SCI_*_ # Textfiles containing spatial solutions for particular slices
| | | | |____idwrgnN20100401S0137_SCI_*_
| | | |____flatdarklist
| | | |____flatfile
| | | |____flatlist
| | | |____gnN20100401S0137.fits
| | | |____gnN20100410S0362.fits
| | | |____gnN20100410S0368.fits
| | | |____gnN20100410S0373.fits
| | | |____gnN20100410S0375.fits # Median combined with gemcombine() lamps-on ronchi frame
| | | |____N201004*.fits
| | | |____nN20100401S0137.fits # Results of running raw lamps-on ronchi frames through nfprepare()
| | | |____original_flatdarklist
| | | |____original_flatlist
| | | |____rgnN20100401S0137.fits
| | | |____rgnN20100410S0362.fits
| | | |____rgnN20100410S0362_flat.fits
| | | |____rgnN20100410S0362_sflat.fits
| | | |____rgnN20100410S0362_sflat_bpm.pl
| | | |____rgnN20100410S0368.fits
| | | |____rgnN20100410S0368_dark.fits
| | | |____rgnN20100410S0375.fits # Results of running combined lamps-on ronchi frame through nsreduce() AND nfsdist()
| | | |____ronchifile # Text file storing name of final ronchi frame
| | | |____ronchilist
| | | |____sflat_bpmfile
| | | |____sflatfile
| | | |____shiftfile
| | | |____sN20100410S0362.fits
| | | |____wrgnN20100401S0137.fits
|____Nifty.log
The final directory structure after nifsBaselineCalibration, should look something like. The products used by appropriate standard star and science observation directories are the “rgn” prefixed final ronchi file, the “wrgn” prefixed final wavelength solution file, the “database/” directory, the “s” prefixed shiftfile, the “rgn” prefixed and “_flat.fits” suffixed final flat field correction frame, the “rgn” prefixed and “_sflat_bpm.pl” suffixed final bad pixel mask.
.
|____config.cfg
|____HD141004/ # OT object name; from science frame .fits headers
| |____20100401/ # Date; from science frame .fits headers
| | |____Calibrations_K/ # Calibrations directory; All the work in this step happens in one of these
| | | |____arcdarkfile # Text file storing name of final reduced arc dark
| | | |____arcdarklist # Text file storing name of arc dark frames
| | | |____arclist # Text file storing name of arc frames
| | | |____database/ # Directory with text file results of nswavelength() and nfsdist()
| | | | |____idrgnN20100410S0375_SCI_*_ # Textfiles containing spatial solutions for particular slices
| | | | |____idwrgnN20100401S0137_SCI_*_ # Textfiles containing wavelength solutions for particular slices
| | | |____flatdarklist # Text file storing names of lamps-off flats; pipeline uses this, not original_flatlist
| | | |____flatfile # Text file storing name of final flat field correction frame, corrected for slice to slice variation
| | | |____flatlist # Text file storing names of lamps-on flats; pipeline uses this, not original_flatlist
| | | |____gnN20100401S0137.fits # Median combined and prepared arc frame
| | | |____gnN20100410S0362.fits # Median combined and prepared lamps-on flat
| | | |____gnN20100410S0368.fits # Median combined and prepared lamps-off flat
| | | |____gnN20100410S0373.fits # Median combined and prepared arc dark frame
| | | |____gnN20100410S0375.fits # Median combined and prepared lamps-on ronchi frame
| | | |____N201004*.fits # Raw calibration frames
| | | |____nN20100401S0137.fits # Results of running raw lamps-on ronchi frames through nfprepare()
| | | |____original_flatdarklist # Text file list of lamps-off flats, NOT taking P and Q offset zero-points into account
| | | |____original_flatlist # Text file list of lamps-on flats, NOT taking P and Q offset zero-points into account
| | | |____rgnN20100401S0137.fits # Final reduced, combined and prepared arc frame
| | | |____rgnN20100410S0362.fits # Final reduced, combined and prepared lamps-on flat
| | | |____rgnN20100410S0362_flat.fits # Final flat field correction frame, corrected for slice to slice variations with nsslitfunction()
| | | |____rgnN20100410S0362_sflat.fits # Preliminary flat field correction frame. Result of nsflat()
| | | |____rgnN20100410S0362_sflat_bpm.pl # Final bad pixel mask. Result of nsflat()
| | | |____rgnN20100410S0368.fits # Final reduced, combined and prepared lamps-off flat frame
| | | |____rgnN20100410S0368_dark.fits # Final flat field correction dark frame; result of nsflat()
| | | |____rgnN20100410S0375.fits # Results of running combined lamps-on ronchi frame through nsreduce() AND nfsdist()
| | | |____ronchifile # Text file storing name of final ronchi frame
| | | |____ronchilist # Text file list of lamps-on ronchi flat frames
| | | |____sflat_bpmfile # Text file storing name of final bad pixel mask frame
| | | |____sflatfile # Text file storing name of preliminary flat field correction frame
| | | |____shiftfile # Text file storing name of shift file; used to get consistent shift to the MDF
| | | |____sN20100410S0362.fits # Shift file; used to get consistent shift to MDF. Result of nfprepare()
| | | |____wrgnN20100401S0137.fits # Final wavelength solution frame. Result of nswavelength()
|____Nifty.log # Logfile; all log files should go here.
nifsReduce of Tellurics¶
After Step 1: Locate the Spectrum, calibrations are copied over from the appropriate calibrations directory and each raw frame is run through nfprepare().
.
|____config.cfg
|____HD141004/
| |____20100401/
| | |____K/
| | | |____Tellurics/
| | | | |____obs109/
| | | | | |____database/ # Database from appropriate calibrations directory
| | | | | | |____idrgnN20100410S0375_SCI_*_ # Spatial distortion database text files
| | | | | | |____idwrgnN20100401S0137_SCI_*_ # Wavelength solution database text files
| | | | | |____N201004*.fits
| | | | | |____nN201004*.fits # Results of running each raw frame through nfprepare()
| | | | | |____rgnN20100410S0375.fits # Final reduced ronchi flat frame from appropriate calibrations directory
| | | | | |____scienceMatchedTellsList
| | | | | |____skyFrameList
| | | | | |____tellist
| | | | | |____wrgnN20100401S0137.fits # Final reduced arc frame from appropriate calibrations directory
|____Nifty.log
After Step 2: Sky Subtraction, the only files that are written are in standard star observation directories. Each prepared standard star frame is sky subtracted with gemarith(), and then the sky-subtracted prepared frames are median combined into one frame.
obs109/
|____database/
| |____idrgnN20100410S0375_SCI_*_
| |____idwrgnN20100401S0137_SCI_*_
|____gnN20100401S0139.fits # Single median-combined standard star frame
|____N201004*.fits
|____nN201004*.fits
|____rgnN20100410S0375.fits
|____scienceMatchedTellsList
|____skyFrameList
|____snN201004*.fits # Sky subtracted, prepared standard star frames
|____tellist
|____wrgnN20100401S0137.fits
After Step 3: Flat fielding and Bad Pixels Correction:
obs109/
|____brsnN20100401S0138.fits # Flat fielded and bad pixels corrected standard frames; results of nffixbad()
|____database/
| |____idrgnN20100410S0375_SCI_*_
| |____idwrgnN20100401S0137_SCI_*_
|____gnN20100401S0139.fits
|____N201004*.fits
|____nN201004*.fits
|____rgnN20100410S0375.fits
|____rsnN201004*.fits # Flat fielded standard frames; results of nsreduce()
|____scienceMatchedTellsList
|____skyFrameList
____snN201004*.fits
|____tellist
|____wrgnN20100401S0137.fits
After Step 4: 2D to 3D transformation and Wavelength Calibration:
obs109/
|____brsnN201004*.fits
|____database/
| |____fcfbrsnN20100401S0138_SCI_*_lamp # Textfile result of nffitcoords()
| |____fcfbrsnN20100401S0138_SCI_*_sdist # Textfile result of nffitcoords()
| |____fcfbrsnN20100401S0140_SCI_*_lamp
| |____fcfbrsnN20100401S0140_SCI_*_sdist
| |____fcfbrsnN20100401S0142_SCI_*_lamp
| |____fcfbrsnN20100401S0142_SCI_*_sdist
| |____fcfbrsnN20100401S0144_SCI_*_lamp
| |____fcfbrsnN20100401S0144_SCI_*_sdist
| |____fcfbrsnN20100401S0146_SCI_*_lamp
| |____fcfbrsnN20100401S0146_SCI_*_sdist
| |____idrgnN20100410S0375_SCI_*_
| |____idwrgnN20100401S0137_SCI_*_
|____fbrsnN201004*.fits # Results of nffitcoords()
|____gnN20100401S0139.fits
|____N201004*.fits
|____nN201004*.fits
|____rgnN20100410S0375.fits
|____rsnN201004*.fits
|____scienceMatchedTellsList
|____skyFrameList
|____snN201004*.fits
|____tellist
|____tfbrsnN20100401S0138.fits # Results of nftransform()
|____wrgnN20100401S0137.fits
After Step 5: Extract 1D Spectra and Make Combined Telluric:
obs109/
|____brsnN201004*.fits
|____database/
| |____fcfbrsnN201004*_SCI_*_lamp
| |____fcfbrsnN201004*_SCI_*_sdist
| |____idrgnN20100410S0375_SCI_*_
| |____idwrgnN20100401S0137_SCI_*_
|____fbrsnN201004*.fits
|____gnN20100401S0139.fits
|____gxtfbrsnN20100401S0138.fits # Median-combined extracted standard star spectra; result of gemcombine()
|____N201004*.fits
|____nN201004*.fits
|____rgnN20100410S0375.fits
|____rsnN201004*.fits
|____scienceMatchedTellsList
|____skyFrameList
|____snN201004*.fits
|____tellist
|____telluricfile # Text file storing name of median-combined extracted standard star spectrum.
|____tfbrsnN201004*.fits
|____wrgnN20100401S0137.fits
|____xtfbrsnN201004*.fits # Extracted 1D standard star spectra; result of nfextract()
After Step 6: Create Telluric Correction Spectrum, the telluric standard data reduction is complete. The final products of the reduction are telluricCorrection.fits, the final continuum-normalized telluric correction spectrum, and fit.fits, the continuum used to normalize the final telluric correction spectrum. These two products are copied to an appropriate science observation directory and used by the ‘gnirs’ telluric correction method.
obs109/
|____brsnN201004*.fits
|____database/
| |____fcfbrsnN201004*_SCI_*_lamp
| |____fcfbrsnN201004*_SCI_*_sdist
| |____idrgnN201004*_SCI_*_
| |____idwrgnN201004*_SCI_*_
|____fbrsnN201004*.fits
|____final_tel_no_hlines_no_norm.fits # Final telluric correction spectrum NOT continuum normalized
|____fit.fits # Continuum used to normalize the final telluric correction spectrum
|____gnN20100401S0139.fits
|____gxtfbrsnN20100401S0138.fits
|____N201004*.fits
|____nN201004*.fits
|____rgnN20100410S0375.fits
|____rsnN201004*.fits
|____scienceMatchedTellsList
|____skyFrameList
|____snN201004*.fits
|____std_star.txt # Text file storing temperature and magnitude of standard star
|____tell_nolines.fits # H-line corrected standard star spectrum
|____tellist
|____telluric_hlines.txt # Text file storing what linefitAuto() and linefitManual did. Empty file for now
|____telluricCorrection.fits # Final continuum-normalized telluric correction spectrum
|____telluricfile
|____tfbrsnN201004*.fits
|____wrgnN20100401S0137.fits
|____xtfbrsnN201004*.fits
PRODUCTS/
The final telluric observation directory structure after nifsReduce Tellurics:
obs109/ # Base standard star observation directory; from .fits headers
|____brsnN201004*.fits # Results of nffixbad()
|____database/ # Database directory containing text file results of nswavelength(), nfsdist(), nffitcoords()
| |____fcfbrsnN201004*_SCI_*_lamp # Text file result of nffitcoords()
| |____fcfbrsnN201004*_SCI_*_sdist # Text file result of nffitcoords()
| |____idrgnN201004*_SCI_*_ # Text file result of nfsdist()
| |____idwrgnN201004*_SCI_*_ # Text file result of nswavelength()
|____fbrsnN201004*.fits # Results of nffitcoords()
|____final_tel_no_hlines_no_norm.fits # Final telluric correction spectrum NOT continuum normalized
|____fit.fits # Continuum used to normalize the final telluric correction spectrum
|____gnN20100401S0139.fits # Median combined and prepared sky frame
|____gxtfbrsnN20100401S0138.fits # Final median-combined and extracted one D standard star spectrum; result of gemcombine()
|____N201004*.fits # Raw standard star and standard star sky frames
|____nN201004*.fits # Prepared standard star and standard star sky frames; results of nfprepare()
|____rgnN20100410S0375.fits # Final ronchi flat frame; copied from appropriate calibration directory. Result of nfsdist()
|____rsnN201004*.fits # Flat fielded, cut, sky subtracted, and prepared standard star frames. Results of nsreduce()
|____scienceMatchedTellsList # Textfile used to match this standard star observation directory with certain science frames
|____skyFrameList # Textfile list of standard star sky frames
|____snN201004*.fits # Sky subtracted and prepared standard star frames. Results of gemarith()
|____std_star.txt # Text file storing temperature and magnitude of standard star
|____tell_nolines.fits # H-line corrected standard star spectrum
|____tellist # Text file list of standard star frames
|____telluric_hlines.txt # Text file storing what linefitAuto() and linefitManual did. Empty file for now
|____telluricCorrection.fits # Final continuum-normalized telluric correction spectrum
|____telluricfile # Text file storing name of final median-combined and extracted one D standard star spectrum
|____tfbrsnN201004*.fits # Results of nftransform()
|____wrgnN20100401S0137.fits # Final reduced arc frame; copied from appropriate calibrations directory
|____xtfbrsnN201004*.fits # One D extracted standard star spectra; results of nfextract()
PRODUCTS/ # Products directory; currently not used for anything
nifsReduce Science¶
After Step 1: locate the spectrum,
Our perspective is inside the science observation directory as all changes, until step 5, happen there.
obs107/
|____database/ # Database directory and associated text files copied from the appropriate calibrations directory
| |____idrgnN20100410S0375_SCI_*_
| |____idwrgnN20100401S0137_SCI_*_
|____N201004*.fits # Raw science and science sky frames
|____nN201004*.fits # Prepared science and sky frames. Results of nfprepare()
|____original_skyFrameList # Sky frame list without taking P and Q zero-point offsets into account
|____rgnN20100410S0375.fits # Final reduced ronchi flat; copied from appropriate calibrations directory
|____scienceFrameList # Text file list of science frames
|____skyFrameList # Text file list of science sky frames. If an original_skyFrameList exists, this is the result of taking P and Q zero-point offsets into account
|____wrgnN20100401S0137.fits # Final reduce arc frame; copied from appropriate calibrations directory
After Step 2: Sky Subtraction. This is a bit different than the telluric sky subtraction as we do not subtract a median-combined sky frame from each science frame; we subtract the sky frame of (hopefully) same exposure time closest in time to the science frame from each science frame.
obs107
|____database/
| |____idrgnN20100410S0375_SCI_*_
| |____idwrgnN20100401S0137_SCI_*_
|____N201004*.fits
|____nN201004*.fits
|____original_skyFrameList
|____rgnN20100410S0375.fits
|____scienceFrameList
|____skyFrameList
|____snN201004*.fits # Sky-subtracted and prepared science frames. Results of gemarith()
|____wrgnN20100401S0137.fits
After Step 3: Flat Fielding and Bad Pixels Correction:
obs107/
|____brsnN201004*.fits # Bad pixel corrected and flat fielded science frames. Results of nffixbad()
|____database/
| |____idrgnN201004*_SCI_*_
| |____idwrgnN201004*_SCI_*_
|____N201004*.fits
|____nN201004*.fits
|____original_skyFrameList
|____rgnN20100410S0375.fits
|____rsnN201004*.fits # Flat fielded science frames. Results of nsreduce()
|____scienceFrameList
|____skyFrameList
|____snN201004*.fits
|____wrgnN20100401S0137.fits
After Step 4: 2D to 3D transformation and Wavelength Calibration
obs107/
|____brsnN201004*.fits
|____database/
| |____fcfbrsnN201004*_SCI_*_lamp # Text file result of nffitcoords()
| |____fcfbrsnN201004*_SCI_*_sdist # Text file result of nffitcoords()
| |____idrgnN20100410S0375_SCI_*_
| |____idwrgnN20100401S0137_SCI_*_
|____fbrsnN20100401S0182.fits # Results of nffitcoords()
|____N201004*.fits
|____nN201004*.fits
|____original_skyFrameList
|____rgnN20100410S0375.fits
|____rsnN201004*.fits
|____scienceFrameList
|____skyFrameList
|____snN201004*.fits
|____tfbrsnN201004*.fits # Results of nftransform()
|____wrgnN20100401S0137.fits
After Step 5: Make Uncorrected, Telluric Corrected and Flux Calibrated Data Cubes and Extracted One D Spectra:
Changes take place in both science observation directories AND objectName/ExtractedOneD/ directories.
In a science observation directory:
obs107/
|____actfbrsnN201004*.fits # Final telluric corrected data cubes
|____bbodyN201004*.fits # Unshifted or scaled blackbody used to flux calibrate cubes
|____brsnN201004*.fits
|____combinedOneD # Textfile storing name of combined extracted one D standard star spectra
|____ctfbrsnN201004*.fits # Final uncorrected data cubes
|____cubesliceN201004*.fits # One D extracted spectrum of cube used to get telluric correction shift and scale
|____database/
| |____fcfbrsnN201004*_SCI_*_lamp
| |____fcfbrsnN201004*_SCI_*_sdist
| |____idrgnN20100410S0375_SCI_*_
| |____idwrgnN20100401S0137_SCI_*_
|____factfbrsnN201004*.fits # Final flux calibrated AND telluric corrected data cubes
|____fbrsnN201004*.fits
|____finaltelCorN201004*.fits # Final shifted and scaled fit to telluric correction
|____gxtfbrsnN20100401S0182.fits # One D extracted and combined standard star used to derive the telluric correction used on these cubes
|____N201004*.fits
|____nN201004*.fits
|____oneDcorrectedN201004*.fits # One D telluric corrected slice of cube; this was used to get the shift and scale of the final correction
|____original_skyFrameList
|____rgnN20100410S0375.fits
|____rsnN201004*.fits
|____scaledBlackBodyN201004*.fits # Blackbody scaled by flambda and ratio of experiment times; telluric corrected cube multiplied by this
# to get flux calibrated AND telluric corrected cube.
|____scienceFrameList
|____skyFrameList
|____snN201004*.fits
|____telCorN201004*.fits # UNSHIFTED AND SCALED telluric correction for each science cube
|____telFitN201004*.fits # UNSHIFTED AND SCALED fit to telluric correction for each science cube
|____tfbrsnN201004*.fits
|____wrgnN20100401S0137.fits
|____xtfbrsnN201004*.fits
In the scienceObjectName/ExtractedOneD/ directory:
ExtractedOneD/
|____20100401_obs107/ # Science data and observation, from .fits headers of science frames
| |____xtfbrsnN201004*.fits # Extracted one D spectra from UNCORRECTED cubes. Results of nfextract()
|____combined20100401_obs107.fits # Median-combined, extracted one D spectra. Result of gemcombine()
The final science observation directory and scienceObservationName/ExtractedOneD/ directory should look something like this:
In each science directory:
obs107/
|____actfbrsnN201004*.fits # Final telluric corrected data cubes
|____bbodyN201004*.fits # Unshifted or scaled blackbody used to flux calibrate cubes
|____brsnN201004*.fits # Bad pixel corrected, reduced, sky subtracted and prepared science frames
|____combinedOneD # Textfile storing name of combined extracted one D standard star spectra
|____ctfbrsnN201004*.fits # Final uncorrected data cubes
|____cubesliceN201004*.fits # One D extracted spectrum of cube used to get telluric correction shift and scale
|____database/
| |____fcfbrsnN201004*_SCI_*_lamp # Text file results of nffitcoords()
| |____fcfbrsnN201004*_SCI_*_sdist # Text file results of nffitcoords()
| |____idrgnN20100410S0375_SCI_*_ # Text file results of nfsdist()
| |____idwrgnN20100401S0137_SCI_*_ # Text file results of nswavelength()
|____factfbrsnN201004*.fits # Final flux calibrated AND telluric corrected data cubes
|____fbrsnN201004*.fits # Results of nffitcoords()
|____finaltelCorN201004*.fits # Final shifted and scaled fit to telluric correction
|____gxtfbrsnN20100401S0182.fits # Median-combined and extracted one D spectra from UNCORRECTED cubes. Results of gemcombine()
|____N201004*.fits # Raw science and science sky frames
|____nN201004*.fits # Prepared raw science frames. Results of nfprepare()
|____oneDcorrectedN201004*.fits # One D telluric corrected slice of cube; this was used to get the shift and scale of the final correction
|____original_skyFrameList # Text file storing names of science sky frames, not taking P and Q offset zero points into account
|____rgnN20100410S0375.fits # Final reduced, combined and prepared ronchi flat frame. Result of nfsdist()
|____rsnN201004*.fits # Flat fielded, sky subtracted and prepared science frames. Result of nsreduce()
|____scaledBlackBodyN201004*.fits # Blackbody scaled by flambda and ratio of experiment times; telluric corrected cube multiplied by this
# to get flux calibrated AND telluric corrected cube.
|____scienceFrameList # Text file storing names of science frames
|____skyFrameList # Text file storing names of science sky frames; pipeline uses this and not original_skyFrameList
|____snN201004*.fits # Sky subtracted, prepared raw science frames. Results of gemarith()
|____telCorN201004*.fits # UNSHIFTED AND SCALED telluric correction for each science cube
|____telFitN201004*.fits # UNSHIFTED AND SCALED fit to telluric correction for each science cube
|____tfbrsnN201004*.fits # Results of nftransform()
|____wrgnN20100401S0137.fits # Final reduced wavelength solution frame. Result of nswavelength()
|____xtfbrsnN201004*.fits # Extracted one D spectra from each UNCORRECTED science cube. Result of nfextract()
In the scienceObjectName/ExtractedOneD/ directory:
ExtractedOneD/
|____20100401_obs107/ # Science data and observation, from .fits headers of science frames
| |____xtfbrsnN201004*.fits # Extracted one D spectra from UNCORRECTED cubes. Results of nfextract()
|____combined20100401_obs107.fits # Median-combined, extracted one D spectra. Result of gemcombine()
nifsMerge¶
nifsMerge.py is called as the last step of nifsReduce Science to merge data cubes. It produces three cube merging directories: an UNCORRECTED, a telluric corrected, and a telluric corrected AND flux calibrated directory. Here are two examples of the structure:
First, from the test data we have been using (HD141004) the final merged directory structure should look something like:
.
|____config.cfg
|____HD141004/
| |____20100401/
| | |____Calibrations_K/
| | |____K/
| | | |____obs107/
| |____ExtractedOneD/
| |____Merged_telCorAndFluxCalibrated/ # Merging directory for final telluric corrected AND flux calibrated data cubes
| | |____20100401_obs107/
| | | |____cube_merged.fits
| | | |____factfbrsnN201004*.fits # Unmodified, final telluric corrected AND flux calibrated data cubes. Copied from appropriate science observation directory
| | | |____offsets.txt # Offsets provided to imcombine(); see manual for details
| | | |____out.fits
| | | |____transcube*.fits # Transposed data cubes. Results of im3dtran()
| | |____20100401_obs107_merged.fits # Final merged cube for obs107
| |____Merged_telluricCorrected/ # Merging directory for telluric corrected data cubes
| | |____20100401_obs107/
| | | |____actfbrsnN201004*.fits # Unmodified, final telluric corrected data cubes. Copied from appropriate science observation directory
| | | |____cube_merged.fits
| | | |____offsets.txt
| | | |____out.fits # Offsets provided to imcombine(); see manual for details
| | | |____transcube*.fits # Transposed data cubes. Results of im3dtran()
| | |____20100401_obs107_merged.fits # Final merged cube for obs107
| |____Merged_uncorrected/ # Merging directory for UNCORRECTED data cubes
| | |____20100401_obs107/
| | | |____ctfbrsnN201004*.fits # Unmodified, final UNCORRECTED data cubes. Copied from appropriate science observation directory
| | | |____cube_merged.fits
| | | |____offsets.txt # Offsets provided to imcombine(); see manual for details
| | | |____out.fits
| | | |____transcube*.fits # Transposed data cubes. Results of im3dtran()
| | |____20100401_obs107_merged.fits # Final merged cube for obs107
|____Nifty.log


10 weeks at the biohack academy at the Waag
What is in this leave of spinach?
Many things! And one of them is chloroplast.
Chloroplasts are organelles, specialized subunits, in plant and algal cells.Chloroplasts' main role is to conduct photosynthesis, where the photosynthetic pigment chlorophyll captures the energy from sunlight and converts it and stores it in the energy-storage molecules ATP and NADPH while freeing oxygen from water. They then use the ATP and NADPH to make organic molecules from carbon dioxide in a process known as the Calvin cycle.
Chop the leaves as small as possible
Put this mash on some paper. We used lab filter paper, but that is quite expensive. We couldnt think of another cheaper paper. sorry.
Next we tested which medium breaks the cell of the spinach best so the chloroplasts can escape.
As you can see, aceton works best.
Of the other mash, transfer two times 2 mL to two centrifuge tubes, make sure they’re balanced, otherwise the centrifuge starts to wobble. Pieter used the digital scale to be sure.
Centrifuge at low speed (50x - 200x g) for 3 - 10 minutes to get rid of cell debris (white pellet)
Transfer the supernatant to two fresh centrifuge tubes, save 0.5 mL of each tube for later examination. Centrifuge at high speed (1000x g) for 10 minutes to pellet the chloroplasts.
Dispose the supernatant when you feel satisfied with the pellet, spin longer if you feel like it
Resuspend the pellet in 0.5 mL 80% acetone. Examine the samples under the microscope and/or measure the absorbance at OD650. You can count the number of Chloroplasts per mL. We didnt count them though...
Find the whole protocol here


Giant fireworks mark 30th anniversary of fall of Berlin Wall
Celebrations of the 30th anniversary of the fall of the Berlin wall culminated with a giant firework at Brandenbourg gate on Saturday evening.
Thousands, including German Chancellor Angela Merkel and Berliners young and old, bundled up to attend the festivities.
The party also featured the Staatskapelle Berlin orchestra directed by celebrated conductor Daniel Barenboim.
The toppling of the wall, which had divided the Communist-ruled East and the capitalist West in Berlin for nearly three decades, was followed a year later by the reunification of Germany in 1990.
In August 1989, Hungarian border guards for the first time allowed people from East Germany to cross freely into Austria, paving the way for the fall of the Berlin Wall three months later and bringing with it the end of the Iron Curtain.
Leaders from Germany, Poland, Hungary, Slovakia and the Czech Republic attended a ceremony on Saturday at Bernauer Strasse, where one of the last parts of the Berlin Wall remains, before placing roses in gaps in the once-fearsome barrier that divided the city for 28 years.
Thirty years on, Germany has become the most powerful economic and political force on the continent, but there remain deep misgivings among some in the country about how the transition from socialism to capitalism was managed.


Ultimate Trekking Paradise
Incredible History and Past
The House of Mughal Grandeur
The Spiritual Kingdom
The Rajputana State of India
Iced Desert and Moonlight Paradise
The Great Historic Caves
The Wildlife Zest
The Breathtaking Natural Vistas


Browse Map
Browse Food Services
Anna's Taqueria
Au Bon Pain
Baker Dining
Bio Cafe
Bosworth's Cafe
Cafe 4
Cafe Spice (Lobdell Food Court)
Cambridge Grill
Dunkin Donuts
Faculty Club
Faculty Lunch
Forbes family cafe
Goosebeary's (food truck)
Hungry Mind Cafe
Jerusalem Cafe (food truck)
Jose's Mexican Food (food truck)
Kosher Shabbat Dinner
La Verde's Market
MacGregor Convenience
McCormick Dining
Muddy Charles Pub
Next House Dining
Pacific St. Cafe
Pritchett Convenience
Pritchett Grill
R and D (Pub)
Refresher Course
Sepal (Lobdell Food Court)
Shinkansen Japan (Lobdell Food Court)
Simmons Dining
Simmons Late Night Cafe
Steam Cafe
Subway Restaurant (Lobdell Food Court)
Thirsty Ear Pub
Yona's Pizza (food truck)
Browse map by:
Building number
Building name
Residences
Selected rooms
Streets & Landmarks
Courts & Greenspace
Food Services
Parking Lots


|
App Engine Python SDK
v1.6.9 rev.445
The Python runtime is available as an experimental Preview feature.
|
Public Member Functions | |
| def | __init__ |
| def | get16 |
| def | get32 |
| def | get64 |
| def | getVarInt64 |
| def | getVarInt32 |
| def | getVarUint64 |
| def | getFloat |
| def | getDouble |
| def | getPrefixedString |
Public Attributes | |
| idx | |


| 002:071 Khan | : |
He [Musa (Moses)] said, "He says, 'It is a cow neither trained to till the soil nor water the fields, sound, having no other colour except bright yellow.' " They said, "Now you have brought the truth." So they slaughtered it though they were near to not doing it. |
| 002:071 Maulana | : |
(Moses) said: He says: She is a cow not made submissive to plough the land, nor does she water the tilth, sound, without a blemish in her. They said: Now thou has brought the truth. So they slaughtered her, though they had not the mind to do (it). |
| 002:071 Pickthal | : |
(Moses) answered: Lo! He saith: Verily she is a cow unyoked; she plougheth not the soil nor watereth the tilth; whole and without mark. They said: Now thou bringest the truth. So they sacrificed her, though almost they did not. |
| 002:071 Rashad | : |
He said, "He says that she is a heifer that was never humiliated in plowing the land or watering the crops; free from any blemish." They said, "Now you have brought the truth." They finally sacrificed her, after this lengthy reluctance. |
| 002:071 Sarwar | : |
(Moses) said, "The Lord says that it must not have even tilled the soil nor irrigated the fields and it must be free of blemishes and flaws." They said, "Now you have given us the right description." After almost failing to find it, they slaughtered the cow. |
| 002:071 Shakir | : |
Musa said: He says, Surely she is a cow not made submissive that she should plough the land, nor does she irrigate the tilth; sound, without a blemish in her. They said: Now you have brought the truth; so they sacrificed her, though they had not the mind to do (it). |
| 002:071 Sherali | : |
He answered, 'God says it is a cow not broken to plough the earth or water the tilth; one without blemish; of one colour.' They said, 'Now thou have brought the truth.' Then they slaughtered her, though they would rather not do it. |
| 002:071 Yusufali | : |
He said: "He says: A heifer not trained to till the soil or water the fields; sound and without blemish." They said: "Now hast thou brought the truth." Then they offered her in sacrifice, but not with good-will. |
Concepts/Themes Covered:
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


Ocean [at13], ocean, in The Outer Sea
Last updated Turn #136
Ocean [at13], ocean, in The Outer Sea
------------------------------------------------------------------------
3: The Savvy Aardvark [ha5r], ship, 2 hulls, 1 rowing port, 6 sails,
3: 20% damaged, arrived from Ocean [as13], owner:
3: Phantasm [n4b], Imperial Empire, duke, with two workers,
3: eight sailors
3: A storm batters the ship and causes some damage.
4: The Savvy Aardvark [ha5r], ship, 2 hulls, 1 rowing port, 6 sails,
4: 22% damaged, departed for Ocean [au13].
Routes leaving Ocean:
North, to Ocean [as13], 6 days
East, to Ocean [at14], 6 days
South, to Ocean [au13], 6 days
West, to Ocean [at12], 6 days
Inner locations:
Island [aa4z], island, 1 day, owner:
Cyclops [dm7s], cyclops, number: 15
Pirate [bo2z], pirates, number: 9
It is raining.


Since Black families have been prevented from amassing generational wealth through systemic racism (in which laws favor one racial group over another), the legacy of slavery and Jim Crow, and mass incarceration, as well as continued implicit and explicit racism in public policy, housing (including the legacy of redlining, a policy which conitnued through \(1977\)), private banking and lending, access to education, and hiring practices, Black folks are both more likely to have to take on debt to attend college and less likely to attain wealth due to a college education [9.11.155].
in-context


1. Overview
This document is a reference documentation for Task, a Clojure library for asynchronous computation.
1.1. What is Task?
Tasks provide simple and functional concurrency primitives for Clojure. Tasks represent asynchronous computation as pure values, and favours function composition over callbacks or promises.
Task promotes the use of combinators like then
and compose
.
These let you combine asynchronous data functionally, so that
asynchronous steps are just transformations on a value.
1.2. Key features
-
Value-oriented: tasks are just eventual values. No more callbacks, regular
deref
/@
is all you need. -
Functional: tasks are composable.
-
Interoperable: Any Clojure
future
/promise
can be converted into a task, and vice versa. -
Asynchronous: tasks are always asynchronous. Tasks default to the ForkJoinPool executor.
-
Customizable: If you wish to control the execution model, you can define your own ExecutorService.
-
Performant: The library leverages the standard Java 8 Concurrency API, a powerful framework for concurrent computation.
1.3. An example
For example, a potential use case for asynchronous computation is doing HTTP requests. If we want to operate on the value of a GET request, and apply a data transformation, this is what you need to do.
(def request
(task/then
(fn [data] (-> data (2)
:body (3)
(cheshire/parse-string true) (3)
:title (3)
str/upper-case))
(http/get "http://jsonplaceholder.typicode.com/posts/3"))) (1)
(println @request) (4)
-
We launch a HTTP GET request asynchronously using http-kit. The promise returned by it is converted into a task automatically.
-
We pass the task and a function to
then
, a function described in Composing tasks. The function comes first and then comes the task. -
We parse the JSON data using Cheshire, extract an attribute and uppercase it.
-
We deref the value of hte task which blocks the current thread until the task is complete.
This whole value executes in another thread (depending on the
execution model) and eventually resolves to a
value as it is deref
d.
The snippet uses http-kit to launch a GET
request asynchronously (<1>). The http-kit promise is automatically converted
into a task. Once the promise completes, we parse the string into JSON
(cheshire/parse-string
) and then extract our attribute from it, and
then uppercase the results.
All of this is executed asynchronously, so we wrap the call to then
with a call to @
, which calls
deref, a Clojure standard
library function, to await its result in the current thread. This
blocks the execution of the current thread an and returns the result of
the computation.
Head over to the User Guide to learn more!
1.4. Installation & Requirements
You need Java 8 to use Task, because Task uses features that were introduced in that version.
2. User Guide
2.1. Creating tasks
To create a task, use . It evaluates its result asynchronously. It behaves more or less like do except that it, depending on the execution model, may evaluate its result in another thread.
(task/run (println "hello")
(Thread/sleep 1000)
123)
This task evaluates to 123. We can get it value by deref
ing it.
To get the value of the task, use deref
or @
from the Clojure
standard library. This blocks the current thread.
; these are both equal
@(task/run 123) ; => 123
(deref (task/run 123)) ; => 123
See the docs on deref.
Calling (run 123)
results possibly in the creation of
another thread. To create an "immeadiate" value that doesn’t cause any
unwanted execution, use now
:
@(task/now 123)
If you want to use another executor, you have two options. You can use run-in
which accepts
an explicit Executor parameter.
(let [pool (Executors/newFixedThreadPool 16)]
(task/run-in pool
(Thread/sleep 1000)
123)
A more Clojurelike approach is to use dynamic binding. The namespace variable task/*pool*
is the default
ExecutorService in scope. Rebinding *pool*
to the executor of your choosing is done as follows:
(binding [task/*pool* (Executors/newFixedThreadPool 1)]
(task/run (Thread/sleep 1000)
(println "hello!")))
This approach, dynamic binding, lets you do executor assignment in a much more idiomatic fashion. See also Using custom executors and the Execution model for more information about executors.
2.2. Composing tasks
2.2.1. Function application: then
and compose
If you want to apply a function on the value returned by a task, use
then
. then
accepts a function and a task, produces another task, to get its
result, you need to deref it:
@(task/then clojure.string/upper-case (task/run "asdf"))
; => ASDF
@(task/then inc (task/run 123))
; => 124
then
supports multiple arity. If you pass more than one task you get a task
that returns a vector of its results.
@(task/then inc (task/run 2) (task/now 5))
; => [3 6]
If you want to apply a function that produces another task, use
compose
:
@(task/compose (fn [x] (task/run
(Thread/sleep 1212)
(inc x)))
(task/run 778))
If you had used then
the result would have been a task inside another
task, requiring a double deref.
Like then
, compose also supports multiple arity. Pass more than one task,
you get a vector of the function applied to every task. The vector task
completes when all tasks complete.
@(task/compose (fn [y] (task/run (inc y))) (task/now 9) (task/run 10))
; => [10 11]
2.3. Interoperability
Standard Clojure future
and promise
are compatible with tasks:
@(task/then inc (future 9)) ; => 10
@(task/then inc (future 3) (task/now 4))) ; => [4 5]
(def foo (promise))
(task/then println foo)
(deliver foo "hello")
; prints "hello"
2.4. Using custom executors
By default, the *pool*
variable is bound to the default executor known as ForkJoinPool. If you want to
use your own executor, there are two approaches:
-
Use dynamic binding to set
*pool*
to the executor of your choice. -
Use the explicit variants of the combinators which accept an executor as the third parameter. These are:
2.4.1. Using dynamic binding
Rebind *pool*
like this:
(binding [task/*pool* (Executors/newCachedThreadPool)]
(task/run (println "Hello!")
1)))
In the scope, and subsequent calls to, the core functions, the default executing pool will be the binding.
2.4.2. Using explicit executors
All core combinators like then
and compose
accept a third parameter as the
ExecutorService in their
explicit variants:
(let [pool (Executors/newFixedThreadPool 4)]
(task/then-in inc (task/run-in 123 pool) pool))
This approach can be used to define multiple thread pools and use them in the chain of a task execution, spreading execution across multiple executors.
(let [pool1 (Executors/newFixedThreadPool 4)
pool2 (Executors/newCachedThreadPool)
init (task/run-in pool1
(Thread/sleep 1000)
(println "we start in" (.getName (Thread/currentThread)))
'blaa)]
(task/then-in
pool2
(fn [x]
(println "...but we end in" (.getName (Thread/currentThread)))) init))
; prints:
; we start in pool-8-thread-1
; ...but we end in pool-9-thread-1
2.4.3. Using for
to avoid boilerplate
The macro, like its standard library namesake, lets you skip some boilerplate when working with tasks that depend on each other:
(task/for [x (task/run 123)
y (future 123)
z (task/run (Thread/sleep 1000) 4)]
(+ x y z))
for
evaluates its body once all futures are complete, and the values
of each future are bound to their respective bindings.
2.5. Working with sequences
If you have a sequence of tasks, and you want to deal with each result as a whole, you can turn a sequence of tasks into a task that evaluates into the values of each task inside it using :
(task/sequence [(task/run 123) (future 9) (task/run (Thread/sleep 100) "hello")])
; => [123 9 "hello]
sequence
completes when all the tasks complete.
Similarly, if you have a funtion that produces a task, you can apply it to a sequence and gather its results into inside one task.
(task/traverse
[1 2 3 4 5 6]
(fn [x] (task/run (* 2 x))))
; => [2 4 6 8 10 12]
Using regular map
would have just produced a sequence of tasks, not what we want.
2.6. Completion
To check if a task is complete, use done?
:
(task/done? some-task)
(task/done? (task/run (Thread/sleep 123123) 'foo))
; => false
(task/done? (task/now 1))
To complete a task before it is done, use [[complete!]]:
(def baz (task/run (Thread/sleep 10000) 'foo))
(task/complete! baz 'bar)
@baz ; => 'bar
If the task is already complete, it does nothing.
(else (task/run (Thread/sleep 1000) 1) 2)
; => 2
2.6.1. Forcing a result
To force the result of a task, completed or not, use [[force!]]:
(def t (task/now 123))
(task/force! t 'hi)
@t ; => 'hi
2.6.2. Cancellation
(def my-task (task/run (Thread/sleep 10000) 'bla))
(task/cancel my-task)
To see if the task was cancelled, use [[cancelled?]]:
(cancelled? my-task) ; => true
Using deref
on a cancelled task blows up, predictably.
2.6.3. Failures
A task is said to have failed if its evaluation produced an exception or it produced an exception during its execution. Such a task is a cancelled task (see Cancellation), or any task that produces an exception when `deref’d:
(def oops (task/run (throw (RuntimeException. "hey!"))))
@oops
; RuntimeException hey! task.core/fn--17494 (form-init7142405608168193525.clj:182)
[[failed? ]]will tell you if that task has failed:
(task/failed? oops) ; => true
(def failed-task (task/failed (RuntimeException. "argf")))
(task/failure failed-task) ; => RuntimeException[:cause "argf"]
To force a task to fail, like [[force!]], use [[fail!]]:
(def foo (task/now "hi there"))
(task/fail! foo (IllegalStateException. "poop"))
(task/failed? foo) ; => true
(task/failure foo) ; => IllegalStateException[:cause "poop"]
Chaining a failed task to a normal task will cause the resulting task to fail.
2.7. Error handling
To recover from errors, use recover
:
(def boom (task/run (/ 1 0)))
(def incremented (task/then inc boom))
This will blow up, so we can ensure that the resulting operation succeeds:
@(recover incremented
(fn [ex]
(println "caught exception: " (.getMessage ex))
123))
; caught exception: java.lang.ArithmeticException: Divide by zero
; => 123
So you can recover from potential failures using a backup value from the function. Supplying a non-function will just recover with that value:
@(recover boom "hello") ; => "hello"
3. Advanced topics
3.1. Execution model
In the task model, the execution model is intentionally kept opaque, but not hidden. This means that by default, the user doesn’t need to worry about where — in which thread — code is executed.
What the user needs to know, to get started, is:
-
all code is asynchronous and non-blocking, and
-
deref
or@
will block the current thread.
The concurrency model is left to the executor.
A JVM executor is an abstraction for thread execution. This can be a thread pool with 64 threads per core. Or more. Or less. By default, task uses ForkJoinPool, a work-stealing scheduler, that attempts to find the best use for each of its threads.
The reason to default to the ForkJoinPool, in addition for it being perfomant, is that it kind of makes tasks appear lightweight (a bit like, but not similar to, fibers), as the user does not intentionally think that there is a one-to-one correspondence between each task and a thread. This means that you can have several hundred tasks executing concurrently for only a handful of threads! The ForkJoinPool handles the heavy lifting here: some tasks will complete faster, some slower, so the point is to have this work-stealing algorithm that makes use of idle threads.
It is often the case that such behavior is not desirable. Which is why the executor can be overridden via two methods:
-
implicitly by using dynamic binding, or
-
explicitly by using parameters to task-executing functions.
Dynamic binding is a standard Clojure method for doing dynamic scope. This is how it works.
(def ^:dynamic foo "hello")
(println foo) ; prints "hello"
(binding [foo "hi"]
(println foo)) ; prints "hi"
Using this technique lets us freely swap the executor. The var for this
is *pool*
. See the example in Using custom executors.
The JVM offers several you can freely chose from. This document is not a guide on their details, the user is left to explore that page or the Internet for more examples.
Usually, in 99% of cases, the default ForkJoinPool
executor is just
fine. But the option to customize is there.
3.2. Beware of blocking
To get the value out of a task, you deref it. This blocks the executing thread. It is generally safe to do so, but choosing the wrong kind of executor might yield strange behaviour.
For example, when using a fixed thread pool like this, it might not be obvious that once you run out of threads, the whole program will grind to a halt.
Blocking inside a task will block that task. So if you have a special kind of thread pool that may run out of threads, this is the part where we’d say, here be dragons.
Here is an example that will go awry.
(binding [task/*pool* (Executors/newFixedThreadPool 1)]
(let [nothing (task/void)]
(task/compose
(fn [prev]
(println "This will never complete!")
(+ 1 prev))
(task/run
(+ 3 @nothing))))))
The function that we pass to compose tries to deref nothing
, which is a task that will never
complete (see void
). The executor we’ve defined has only one thread in its thread pool,
so it cannot launch a new thread for the surrounding task resulting from the call to compose
.
How is this relevant? This is particularly nasty if you do it inside a HTTP server, e.g. you use the same thread pool for handling incoming web requests and database access. If your database hangs and takes time to answer the questions, the web server, which shares the thread pool, cannot spawn new threads to handle incoming requests and the web server will appear unresponsive!


| simpleparse.xml.xml_parser | index /home/mcfletch/pylive/simpleparse/xml/xml_parser.py |
XML Parser based (loosely) on the XML Spec's EBNF
This is a hand-coded parser based on the W3C's XML specification,
there was a lot of busy-work rewriting to make the syntax agree,
but also a number of signficant structural changes required by
the limitations of the SimpleParse engine, and the completely
procedural definition of References in the XML spec (the References
don't occur in most places they can occur, and they are seen as
altering the buffer directly as soon as they are encountered, this
isn't something that fits readily into the mx.TextTools engine.
http://www.w3.org/TR/REC-xml#sec-references
Major Deviations from Spec:
No support for the unicode-style character classes
No support for UTF-16 (or Unicode at all, for that matter)
No support for References that alter the production
being parsed, so you can't have a Reference to an
item "</this>and<this>" or similar non-structure-
respecting References. References have
particular locations they can occur, and they are
just ignored elsewhere
No support for parsing the contents of References within
the primary parsing pass
No support for excluded start/end tags
Comments allowed in both tags and declarations (but not
inside content-specifiers).
Allows end tags of the form </>
| Modules | ||||||
|
| Data | ||
| declaration = "\n\n# Simple (changable) literals\n# These should b...>'\n\n\ndocument := prolog, element, Misc*\n" |


--- title: Specification for reading a record from a text file with delimited values type: docs repo: https://github.com/rstudio/tfdatasets menu: main: name: Specification for reading a record from a text file with delimited values - tfdatasets parent: tfdatasets-reference aliases: - /reference/tfdatasets/delim_record_spec.html - /tfdatasets/reference/delim_record_spec.html - /guide/tfdatasets/reference/delim_record_spec.html - /tools/tools/tfdatasets/reference/delim_record_spec.html - /installation/tfdatasets/reference/delim_record_spec.html - /tutorials/tfdatasets/reference/delim_record_spec.html - /guide/tools/tfdatasets/reference/delim_record_spec.html - /deploy/tfdatasets/reference/delim_record_spec.html - /tools/tfdatasets/reference/delim_record_spec.html - /tutorials/tools/tfdatasets/reference/delim_record_spec.html ---
Specification for reading a record from a text file with delimited values
delim_record_spec(
example_file,
delim = ",",
skip = 0,
names = NULL,
types = NULL,
defaults = NULL
)
csv_record_spec(
example_file,
skip = 0,
names = NULL,
types = NULL,
defaults = NULL
)
tsv_record_spec(
example_file,
skip = 0,
names = NULL,
types = NULL,
defaults = NULL
)
| example_file | File that provides an example of the records to be read. If you don't explicitly specify names and types (or defaults) then this file will be read to generate default values. |
| delim | Character delimiter to separate fields in a record (defaults to ",") |
| skip | Number of lines to skip before reading data. Note that if
|
| names | Character vector with column names (or If If |
| types | Column types. If Types can be explicitliy specified in a character vector as "integer",
"double", and "character" (e.g. Alternatively, you can use a compact string representation where each
character represents one column: c = character, i = integer, d = double
(e.g. |
| defaults | List of default values which are used when data is
missing from a record (e.g. |


{{show.film_1.title_en}} / {{show.film_1.title_ch}} ({{show.film_1.show_year}})
This film is a Category III film. If this film wins the vote, we will need to check your HK Identity Card to ensure your are over 18 years old when you enter the show.
Director: {{show.film_1.director_en}} / {{show.film_1.director_ch}}
Stars:
Category: {{show.film_1.category?show.film_1.category:'Unknown'}}
Tags:
Length: {{show.film_1.length?show.film_1.length:"Unknown"}} Minutes
Plot Summary
{{show.film_1.desc_en|wrap}}
{{show.film_1.desc_ch|wrap}}
{{show.film_2.title_en}} / {{show.film_2.title_ch}} ({{show.film_2.show_year}})
This film is a Category III film. If this film wins the vote, we will need to check your HK Identity Card to ensure your are over 18 years old when you enter the show.
Director: {{show.film_2.director_en}} / {{show.film_2.director_ch}}
Stars:
Category: {{show.film_2.category?show.film_2.category:'Unknown'}}
Tags:
Length: {{show.film_2.length?show.film_2.length:"Unknown"}} Minutes
Plot Summary
{{show.film_2.desc_en|wrap}}
{{show.film_2.desc_ch|wrap}}
{{show.film_3.title_en}} / {{show.film_3.title_ch}} ({{show.film_3.show_year}})
This film is a Category III film. If this film wins the vote, we will need to check your HK Identity Card to ensure your are over 18 years old when you enter the show.
Director: {{show.film_3.director_en}} / {{show.film_3.director_ch}}
Stars:
Category: {{show.film_3.category?show.film_3.category:'Unknown'}}
Tags:
Length: {{show.film_3.length?show.film_3.length:"Unknown"}} Minutes
Plot Summary
{{show.film_3.desc_en|wrap}}
{{show.film_3.desc_ch|wrap}}


CLEAN AND CLEAR ADVANTAGE POPPED PIMPLE RELIEF PEN- salicylic acid gel
Johnson & Johnson Consumer Products Company, Division of Johnson & Johnson Consumer Companies, Inc.
Disclaimer: Most OTC drugs are not reviewed and approved by FDA, however they may be marketed if they comply with applicable regulations and policies. FDA has not evaluated whether this product complies.
Active Ingredients
Salicylic Acid (2%)
Purpose
Acne medication Gel
Uses
- For the management of acne
Warnings
For external use only.
When using this product
- Skin irritation and dryness is more likely to occur if you use another topical acne medication at the same time. If irritation occurs, only use one topical acne medication at a time.
- Rinse right away with water if it gets in eyes.
Keep out of reach of children. If swallowed, get medical help or contact a Poison Control Center right away.
Caution
Flammable. Do not use near fire, heat or while smoking.
Directions
- Clean the skin thoroughly before applying this product.
- Cover the entire affected area with a thin layer one to three times daily.
- Because excessive drying of the skin may occur, start with one application daily, then gradually increase to two or three times daily if needed or as directed by a doctor.
- If bothersome dryness or peeling occurs, reduce application to once a day or every other day
Other Information
Dermatologists do not recommend intentionally popping pimples.
Inactive Ingredients
Water, SD Alcohol 40-B, Polyquaternium-37, Menthyl Lactate, C12-15 Alkyl Lactate, Potassium Lactate, Glycerin, Tetrahydroxypropyl Ethylenediamine, Chitosan PCA, Cetyl Lactate, Polysorbate 20, Cocamidopropyl PG-Dimonium Chloride Phosphate, Butylene Glycol, Fragrance, Benzalkonium Chloride, BHT, Portulaca Oleracea Extract, Citric Acid
PRINCIPAL DISPLAY PANEL - 1.7 g Carton
NEW
Clean
&
Clear®
advantage®
popped
pimple relief™
gel pen
salicylic acid acne medication
ON-THE-GO
designed to:
soothe soreness
clear up acne pimples
create a clear film
Net Wt. 0.06 Oz. (1.7 g)
Johnson & Johnson Consumer Products Company, Division of Johnson & Johnson Consumer Companies, Inc.


Inline @import to Link
Configuration
The 'Inline @import to Link' filter is enabled by specifying:
- Apache:
ModPagespeedEnableFilters inline_import_to_link
- Nginx:
pagespeed EnableFilters inline_import_to_link;
Description
The "Inline @import to Link" filter converts a <style>
tag
consisting of only @import
statements into the corresponding
<link>
tags. This conversion does not itself result in any
significant optimization, rather its value lies in that it enables optimization
of the linked-to CSS files by later filters, in particular the combine_css,
rewrite_css, inline_css, and extend_cache filters.
Operation
This filter inspects the contents of all <style>
tags and
converts the tag if all the following conditions are met:
- Either the
<style>
tag has notype
attribute or thetype
attribute has the value "text/css". - The contents comprise one or more valid
@import
statements, and no other statements. - None of the imported URLs are empty.
- The
<style>
tag has neither anhref
nor arel
attribute (which would make it invalid anyway). - If the
<style>
tag has amedia
attribute and the@import
statement specifies media after the URL, then the media types listed must be the same. They do not have to be in the same order, and blank media types are ignored.
If all these conditions are met, the <style>
tag and its
contents are replaced with a <link>
tag for each
@import
, with:
- Attributes from the
<style>
tag copied to the<link>
tag. - An
href
attribute with value of the imported URL. - A
rel
attribute with value of "stylesheet". - If the
<style>
tag did not have amedia
attribute but the@import
specified media after the URL, then amedia
attribute with value of the media specified after the URL.
For example, if the <style>
tag looks like this:
<style type="text/css" media="screen">@import url(http://www.example.com/style.css);</style>
Then PageSpeed will convert it to:
<link type="text/css" media="screen" rel="stylesheet" href="http://www.example.com/style.css"/>
Example
You can see the filter in action at www.modpagespeed.com
on this
example.
Risks
This filter is considered minimal risk.


imap-append.c
Download imap-append.c raw
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2016, Daniel Stenberg<EMAIL_ADDRESS>et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
/* <DESC>
* IMAP example showing how to send e-mails
* </DESC>
*/
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
/* This is a simple example showing how to send mail using libcurl's IMAP
* capabilities.
*
* Note that this example requires libcurl 7.30.0 or above.
*/
#define FROM<EMAIL_ADDRESS>#define TO<EMAIL_ADDRESS>#define CC<EMAIL_ADDRESS>static const char *payload_text[] = {
"Date: Mon, 29 Nov 2010 21:54:29 +1100\r\n",
"To: " TO "\r\n",
"From: " FROM "(Example User)\r\n",
"Cc: " CC "(Another example User)\r\n",
"Message-ID: "
<EMAIL_ADDRESS>"Subject: IMAP example message\r\n",
"\r\n", /* empty line to divide headers from body, see RFC5322 */
"The body of the message starts here.\r\n",
"\r\n",
"It could be a lot of lines, could be MIME encoded, whatever.\r\n",
"Check RFC5322.\r\n",
NULL
};
struct upload_status {
int lines_read;
};
static size_t payload_source(void *ptr, size_t size, size_t nmemb, void *userp)
{
struct upload_status *upload_ctx = (struct upload_status *)userp;
const char *data;
if((size == 0) || (nmemb == 0) || ((size*nmemb) < 1)) {
return 0;
}
data = payload_text[upload_ctx->lines_read];
if(data) {
size_t len = strlen(data);
memcpy(ptr, data, len);
upload_ctx->lines_read++;
return len;
}
return 0;
}
int main(void)
{
CURL *curl;
CURLcode res = CURLE_OK;
const char **p;
long infilesize;
struct upload_status upload_ctx;
upload_ctx.lines_read = 0;
curl = curl_easy_init();
if(curl) {
/* Set username and password */
curl_easy_setopt(curl, CURLOPT_USERNAME, "user");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
/* This will create a new message 100. Note that you should perform an
* EXAMINE command to obtain the UID of the next message to create and a
* SELECT to ensure you are creating the message in the OUTBOX. */
curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/100");
/* In this case, we're using a callback function to specify the data. You
* could just use the CURLOPT_READDATA option to specify a FILE pointer to
* read from. */
curl_easy_setopt(curl, CURLOPT_READFUNCTION, payload_source);
curl_easy_setopt(curl, CURLOPT_READDATA, &upload_ctx);
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
infilesize = 0;
for(p = payload_text; *p; ++p) {
infilesize += (long)strlen(*p);
}
curl_easy_setopt(curl, CURLOPT_INFILESIZE, infilesize);
/* Perform the append */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
/* Always cleanup */
curl_easy_cleanup(curl);
}
return (int)res;
}


Description
GO Terms (Biological Function)
Funding: U54-CA225088 (NIH), P50-GM107618 (NIH) and W911NF-14-1-0397 (DARPA / DOD)
© 2019, Laboratory of Systems Pharmacology. All rights reserved.


{# Account edit page. #} {% extends "../base.html" %} {% block head_title %}Edit account {{ account['email'] }}{% end %} {% block body_title %}Edit account {{ account['email'] }}{% end %} {% block action_content %} {% module CancelButton(reverse_url('account', account['email'])) %} {% end %} {# block action_content #} {% block main_content %}
The email address of your account cannot be changed, since it is the unique identifier for the account. If your email address has changed, then you must create a new account with the new email address. The administrator of the site can then change the ownership of your {{ terminology('orders') }} to the new account.
{% end %} {# block main_content #} {% block javascript_autofocus %} {% end %}


Sign In
Sign Up
Search
Top Bars
Favorites
Top 3:
#
Bar
Address
Rating
New Bars
#
Bar
Address
Rating
Favorites
Sign in to add/browse your favorite bars here!


SMART Sample App
Authorization failed
Standalone Launch Parameters
aud:
Run
Refresh
scope:
openid
fhirUser
offline_access
online_access
patient/*.read
patient/*.write
user/*.*
patient/*.*
launch/encounter
launch/patient
smart/orchestrate_launch
Access Token Response
Loading...
ID Token
Loading...
Refresh Token
Loading...
Patient
Loading...
User
Loading...
Encounter
Loading...


Implements interfaces:
Located in /Model/Entity.php (line 20)
__construct() - Calls the init Method and the keys in $_data property are loaded with the given $data Array
getInvalid() - If the entity has invalid keys, the keys get returned with their validation messages, otherwise NULL is returned
getReferenceId() - Retrieves the id of an referenced entity.
init() - Gets called by the constructor. Used to set up the entity (e.g.
for Validation) without overriding the constructor. Should be used to set up an inherited class
isValid() - Checks if the Entity has invalid keys, is set by the validation mechanism
load() - Loads the supplied data into the entity
setData() - Loads the supplied data into the entity
setReferenceId() - Stores the id for an referenced entity
toArray() - Returns the value of the $_data property
__get() - Interceptor Method, returns the key from the $_data Property
__isset()
__set() - Interceptor method, maps the keys in the $_data property to Object Properties, If a validator is registered for the key, the value is passed to the validator. Stores the invalid Fields with the validation messages, sets the $_isValid $property.
__unset()
Documentation generated on Sun, 13 Jun 2010 20:36:15 +0200 by phpDocumentor 1.4.3


I'm a freelance front end web developer who enjoys seeing ideas come to life online. My design style is minimalist with a strong attention to detail. Using responsive design, the web sites I create function and look beautiful regardless of the device used.


Template!
Blog 1, Yum
Blog 2, Woo
Blog 3, Wee
Blog 4, Get More
Blog 5, High Five!
Blog 6, Here's the Trick
Blog 7, Nothing Rhymes
Blog 8, Out the Gate


The Sakuli Dashboard streamlines your e2e application monitoring with Sakuli. It helps you start your Sakuli test automatically with a cronjob to monitor your application continuously or trigger it manually with a button. While watching a live video feed of your Sakuli check, you can track the monitoring metrics of your application by embedding your monitoring graphs into the Sakuli Dashboard.
Sakuli Dashboard releases are versioned following the semantic versioning scheme.
Images for stable releases are tagged accordingly.
Tech-previews of upcoming stable releases are available via the latest
tag.
It is highly discouraged to run tech-previews in production as there is no guarantee of stability.
You will come across configurations such as the
DASHBOARD_CONFIG
, theACTION_CONFIG
, theCLUSTER_CONFIG
and theCRONJOB_CONFIG
which configure your Sakuli Dashboard. For further information about how to properly configure the dashboard check out the Sakuli Dashboard Configuration documentation.
docker pull taconsol/sakuli-dashboard:<IMAGE_TAG>
docker run --rm \
-p 8080:8080 \
-e DASHBOARD_CONFIG="${DASHBOARD_CONFIG}" \
-e ACTION_CONFIG="${ACTION_CONFIG}" \
-e CLUSTER_CONFIG="${CLUSTER_CONFIG}" \
-e CRONJOB_CONFIG="${CRONJOB_CONFIG}" \
taconsol/sakuli-dashboard:<IMAGE_TAG>
Parameters:
The following template allows you to run a dashboard using docker-compose
:
version: "3"
services:
sakuli:
container_name: sakuli-dashboard
image: taconsol/sakuli-dashboard:<IMAGE_TAG>
ports:
- 8080:8080
environment:
- DASHBOARD_CONFIG=${DASHBOARD_CONFIG}
- ACTION_CONFIG=${ACTION_CONFIG}
- CLUSTER_CONFIG=${CLUSTER_CONFIG}
- CRONJOB_CONFIG=${CRONJOB_CONFIG}
After creating the <filename>.yml
configuration file, you can start the dashboard with:
docker-compose up -f /path/to/file/<filename>.yml
You can start your Sakuli Dashboard using two different approaches:
As a first step, create a deployment based on the Sakuli Dashboard image and expose the service.
kubectl create deployment sakuli-dashbaord --image=taconsol/sakuli-dashboard:<IMAGE_TAG>
kubectl expose deployment sakuli-dashboard --type=LoadBalancer --port=8080
The --type=LoadBalancer
flag is important to make your service available outside your cluster.
Now add your Sakuli Dashboard configurations such as the dashboard, action, cluster and cronjob configs to the environment of your deployment.
kubectl set env deployment/sakuli-dashboard --overwrite \
DASHBOARD_CONFIG="${DASHBOARD_CONFIG}" \
ACTION_CONFIG="${ACTION_CONFIG}" \
CLUSTER_CONFIG="${CLUSTER_CONFIG}" \
CRONJOB_CONFIG="${CRONJOB_CONFIG}"
The following ready-to-use template will configure a Sakuli Dashboard and deploy it to your cluster
Just copy and save the dashboard template below as dashboard-template.yml
. Furthermore, add your dashboard, action,
cluster and cronjob configurations listed under ConfigMap as well as the image tag.
apiVersion: apps/v1
kind: Deployment
metadata:
name: sakuli-dashboard
labels:
app: sakuli-dashboard
spec:
replicas: 1
selector:
matchLabels:
app: sakuli-dashboard
template:
metadata:
labels:
app: sakuli-dashboard
spec:
containers:
- name: sakuli-dashboard
# Specify the Sakuli Dashboard version you want to use
image: taconsol/sakuli-dashboard:${IMAGE_TAG}
imagePullPolicy: Always
env:
- name: ACTION_CONFIG
valueFrom:
configMapKeyRef:
name: sakuli-dashboard
key: ACTION_CONFIG
- name: CLUSTER_CONFIG
valueFrom:
configMapKeyRef:
name: sakuli-dashboard
key: CLUSTER_CONFIG
- name: DASHBOARD_CONFIG
valueFrom:
configMapKeyRef:
name: sakuli-dashboard
key: DASHBOARD_CONFIG
- name: CRONJOB_CONFIG
valueFrom:
configMapKeyRef:
name: sakuli-dashboard
key: CRONJOB_CONFIG
---
apiVersion: v1
kind: Service
metadata:
name: sakuli-dashboard
spec:
selector:
app: sakuli-dashboard
ports:
- protocol: TCP
port: 8080
targetPort: 8080
type: LoadBalancer
---
apiVersion: v1
kind: ConfigMap
metadata:
name: sakuli-dashboard
data:
DASHBOARD_CONFIG: >-
Dashboard configuration
ACTION_CONFIG: >-
Action configuration
CLUSTER_CONFIG: >-
Cluster configuration
CRONJOB_CONFIG: >-
Cronjob configuration
To create the deployment in your Kubernetes cluster, just use the following command.
kubectl apply -f dashboard-template.yml
A Sakuli Dashboard setup on your OpenShift cluster requires you to import the Sakuli Dashboard image from Docker Hub.
oc import-image sakuli-dashboard \
--from=docker.io/taconsol/sakuli-dashboard \
--confirm \
--scheduled=true \
--all=true
When using OpenShift v3.10 or v3.11, add the --reference-policy=local
flag:
oc import-image sakuli-dashboard \
--from=docker.io/taconsol/sakuli-dashboard \
--confirm \
--scheduled=true \
--all \
--reference-policy=local
Note: The oc import-image
statement is configured to not only import all available sakuli-dashboard images but also to
check for updates automatically.
You can start your Sakuli Dashboard using two different approaches:
An easy way to set up a Sakuli Dashboard is by using oc new-app
. Required environment variables can be passed along via the -e
parameter.
oc new-app sakuli-dashboard \
-e DASHBOARD_CONFIG="${DASHBOARD_CONFIG}" \
-e ACTION_CONFIG="${ACTION_CONFIG}" \
-e CLUSTER_CONFIG="${CLUSTER_CONFIG}" \
-e CRONJOB_CONFIG="${CRONJOB_CONFIG}"
Once completed, the service has to be exposed to make available from outside the cluster.
oc expose svc/sakuli-dashboard
The following ready-to-use template will configure a Sakuli Dashboard and deploy it to your cluster
Just copy and save the dashboard template below as dashboard-template.yml
. Furthermore, add your dashboard, action,
cluster and cronjob configurations listed under ConfigMap as well as the containers image configuration.
apiVersion: v1
kind: Template
metadata:
name: ${SERVICE_NAME}
objects:
- apiVersion: v1
kind: DeploymentConfig
metadata:
name: ${SERVICE_NAME}
labels:
app: ${SERVICE_NAME}
spec:
replicas: 1
selector:
app: ${SERVICE_NAME}
template:
metadata:
labels:
app: ${SERVICE_NAME}
spec:
containers:
- name: ${SERVICE_NAME}
#change the address to your openshift registry, your namespace and the image tag you want to use
image: ${OPENSHIFT_REGISTRY_ADDRESS}/${NAMESPACE}/sakuli-dashboard:${IMAGE_TAG}
imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
env:
- name: ACTION_CONFIG
valueFrom:
configMapKeyRef:
name: ${SERVICE_NAME}
key: ACTION_CONFIG
- name: DASHBOARD_CONFIG
valueFrom:
configMapKeyRef:
name: ${SERVICE_NAME}
key: DASHBOARD_CONFIG
- name: CLUSTER_CONFIG
valueFrom:
configMapKeyRef:
name: ${SERVICE_NAME}
key: CLUSTER_CONFIG
- name: CRONJOB_CONFIG
valueFrom:
configMapKeyRef:
name: ${SERVICE_NAME}
key: CRONJOB_CONFIG
triggers:
- type: ConfigChange
- apiVersion: v1
kind: Service
metadata:
name: ${SERVICE_NAME}
labels:
app: ${SERVICE_NAME}
spec:
ports:
- name: 8080-tcp
port: 8080
protocol: TCP
targetPort: 8080
selector:
app: ${SERVICE_NAME}
- apiVersion: v1
kind: ConfigMap
metadata:
name: ${SERVICE_NAME}
data:
ACTION_CONFIG: >-
<action configuration>
CLUSTER_CONFIG: >-
<cluster Configuration>
DASHBOARD_CONFIG: >-
<dashboard configuration>
CRONJOB_CONFIG: >-
<cronjob configuration>
parameters:
- name: SERVICE_NAME
description: Service name for dashboard
value: sakuli-dashboard
After configuring the template, run:
oc process -f <filename> | oc create -f -
<filename>
is the name of a file containing the template above.
Expose the service to make the dashboard available to clients outside of your cluster:
oc expose svc/sakuli-dashboard


Let's talk about us
It all began with a group of people who dreamt of starting something completely new. Together, we established Krayon Traders, a company dedicated to finding cutting-edge solutions and providing great services.
Our products and services were designed to satisfy all of our customers, anytime, anywhere. We are committed to customer satisfaction as our top priority. If you want to be part of us, give us a text or call today.
Online shopping
We carry on the business of online shopping, marketing of consumer goods and other goods.
Market Surveys
To offer and enter into contracts and agreements for service in connection with the undertaking of market surveys and, for development of markets
Virtual malls
Equipping your virtual mall with our multi-site shopping cart, you will get an opportunity to create one of the most secured online business projects
Overseas Trading
We carry on business of overseas trading and to sell, distribute, export, and import.


Charity T-Shirt
For our charity effort, PonyFest presents something a little different this time - A shirt fundraiser! To support our cause, simply buy our fabulous concert shirt at our CustomInk fundraiser. All profits go directly to our charity, the Coalition For The Homeless in New York, and you receive some super neat PonyFest merch, as designed by the fantastic Techycutie. Everyone wins!
However, there is a small catch - To make sure that these shirts get printed, we need to sell at least 30 in total. After that, the sky’s the limit, and every cent helps people in real need. Bring some hype and spread the word, so we can make these shirts a reality!
Q&A
Q: Are there only 50 shirts available?
A: No, there are an infinite number of shirts to be had! 50 is just an initial goal, and one we would very much like to beat!
Q: Do these shirts ship internationally?
A: Yes! Printing, processing and shipping is directly handled by CustomInk, and they offer worldwide shipping!
Q: Does the shirt come in a different fit?
A: Unfortunately not! We offer the shirt at a unisex fit, avaible in sizes YXS to 4XL. Please check out the fundraiser page for a more detailed sizing guide!


Session Expired. Please log in again to continue your work !
OK
Warning! This will delete all existing annotations located in that category. Proceed ?
Delete
Close
New Category
Create
Update Category
Update
Comments
Please click on a annotation !
Categories
New
Annotations
Please select a category
Update
Cancel
Update
Cancel


This project allows for a user to upload their npm package.json file and receive a recomendation of what dependencies they should install/look at using memory based collaborative filtering. The user data was scraped from github repos and those github repos were discovered through reddit.
This page was made as a part of the final project for CS 410. Checkout out the source code: Github.


Inventory-Admin
Current Task:
| Doc Id |
Part Number |
Receiver |
Handler |
Storer |
Current Owner |
|
|
|
|
|
|
Overdue Task:
| Doc Id |
Part Number |
Receiver |
Handler |
Storer |
Current Owner |
|
|
|
|
|
|
- Total Number Doc Id Created:
- Average Time to Create a Doc Id:
- Total Number of Admin QA Done:


We optimize interfaces!
- orchestrate robust e-markets
- reintermediate plug-and-play functionalities
- benchmark efficient infomediaries
- generate leading-edge e-tailers
- facilitate B2C experiences
- revolutionize 24/365 eyeballs
- incentivize best-of-breed platforms
- seize vertical e-commerce
- evolve mission-critical initiatives
- syndicate efficient platforms
- maximize dot-com vortals
- morph user-centric architectures
- harness interactive infrastructures


Speech
The Schools Minister speaks about the success of many Jewish faith schools and the importance of the teaching profession.
Can I start by saying thank you for inviting me here - it is a great privilege to join you at the inaugural Jewish Schools Awards.
Working as Schools Minister, it has continually struck me how powerful it is for a region, nation, or group of people to have a pro-education culture, which emphasises the value of study and hard work.
Scotland was famous for its pro-education culture, particularly during the nineteenth century; a pro-education culture can be seen in abundance in Far Eastern countries such as Singapore and cities such as Shanghai; and the Jewish community, aptly known as the ‘people of the book’, remain famous for theirs.
A pro-education culture, so difficult to win back if lost, is an enviable inheritance for any society - and I believe that it is what we should be celebrating, and are celebrating, today.
Amongst Jewish communities around the world, the fruits of this pro-education culture are unmistakable. Despite making up only 0.2% of the world population, a remarkable 22% of Nobel Peace Prize winners have been Jewish. From Harold Pinter and Boris Pasternak, to Henry Kissinger and Daniel Kahneman, Jewish communities have always punched well above their weight as writers, researchers and scholars. Perhaps there are some future Nobel Laureates amongst the classes being taught by the teachers here today.
A well-educated population does not occur unprompted. Behind every child’s story of academic success, there are the dedicated teachers who make such achievements possible.
One does sometimes hear it said that teachers do not have much impact. People like to quote great intellects, such as Mark Twain, who stated “I’ve never let my school interfere with my education”.
In addition, there are those of a sociological bent within education, who argue that teachers cannot be expected to change the life chances of children born into poverty and inequality.
I disagree profoundly with each of these ideas. My mother was a primary school teacher, and I am a committed believer that teachers can and do change children’s lives. Great teachers are masters of their subject, who tell stories, impart wisdom and inspire curiosity. They motivate, cajole and guide pupils to surpass their own expectations of themselves.
I have served as Schools Minister in 2 successive governments, and we have been dedicated to raising the prestige and quality of the teaching profession. In contradiction to the naysayers, evidence from both England and America shows that pupil outcomes vary significantly according to teacher quality.
Research in the Oxford Bulletin of Economics and Statistics has shown that being taught by a teacher in the top 25% of effectiveness, compared to one in the bottom 25%, adds almost half a GCSE grade per subject to a pupil’s outcomes.
This effect is more significant still for pupils from disadvantaged backgrounds, where the difference between a good and a poor teacher can be up to a whole year’s worth of learning.
Since 2010, we have put teachers in the driving seat of our reforms to improve state education in England. We have given schools, and teachers, unprecedented freedom to teach as they see fit, without an overbearing education bureaucracy driving their actions.
To this end, we have removed 21,000 pages of unnecessary school guidance, reducing the volume by 75%. We have worked with Ofsted to ensure that inspectors no longer penalise teachers for how they teach. Ofsted guidance was reduced in 2014 from 411 to 136 pages, and last year guidance was further reduced despite the increased reach of the common inspection framework.
In addition, teachers who believe that they are able to create something better within the state education system than the status quo, are now empowered to do so through the free schools programme, which is providing outlets for idealism across the country. And of course, it was the example of the Jewish Community Secondary School, a parent promoted school founded in 2010, which in part offered inspiration for this ground breaking reform.
And I am delighted to observe that the quality of teachers in our schools is steadily improving: in 2010, 61% of trainee teachers had an undergraduate degree at 2:1 or better. This year, that figure is 74%.
Crucially, in 2012 the proportion of trainee teachers with a 2:1 or above surpassed the national average of that year’s graduating cohort for the first time, and the annual initial teacher training census shows us that the proportion of new teachers holding a first-class degree is at an all-time high. Such evidence demonstrates that teaching is finally gaining the status it deserves in this country.
To ensure that the calibre of teachers keeps on improving, we have expanded schemes like Teach First, which this year has sent over 1,500 teachers to every region of England.
A good teaching workforce is one where teachers stay in the profession, so we are taking action to combat the unnecessary workload which for too long has weighed down teachers. More than 44,000 teachers responded to the Secretary of State’s ‘ workload challenge ’ in 2014, and in response we have pursued a series of measures to combat the debilitating effect of unnecessary workload.
The 3 biggest concerns that teachers raised during the challenge were marking, planning and resources, and data management, so we established working groups to address each of them in turn. The groups will be reporting in the spring, and I am certain that their findings will contribute to a culture shift in schools in the coming years, away from energy sapping and bureaucratic practices, and towards a teaching profession which is autonomous and empowered.
I recently attended a talk by a Swedish economist, who was explaining why Finland had such a remarkably strong education system towards the end of last century. Historically, Finland has had a classic pro-education culture, due to their use of schools as vehicles for nation building after Finland gained its independence from Sweden in 1809. He stated that in Finland, teachers were heralded as the ‘candles of the nation’, instrumental to building national solidarity.
Without wanting to sound too grandiose, if it is not too late, I would like to see teachers in England take on the ‘candles of the nation’ mantle today. We are living through a period of British history where integrating different groups of varied ethnic backgrounds is perhaps the leading challenge for this country’s future.
Our government has placed schools at the forefront of this process, ensuring that all schools promote the fundamental British values that define our country: democracy, the rule of law, individual liberty and mutual respect and tolerance for those of different faiths and beliefs.
In the past, we in Britain have perhaps been guilty of being too shy about promoting Britishness. But we should be resolute that there is nothing exclusionary about a host nation welcoming new groups into a national culture - an inclusive national identity is an eminently liberal and forward-thinking principle for a country to hold.
The assimilation of Jewish people into British national life is a case study of remarkable success. Since Jewish people began arriving in Britain in larger numbers during the late 1800s, they have not just assimilated into British society - they have become some of the leading proponents of it. Just look at Simon Schama becoming one of the foremost chroniclers of Britain’s history, or Lionel Bart one of Britain’s greatest popular composers.
For a diverse society to prosper, mutual understanding between different groups is vital. That is one reason, amongst many, why we have been preoccupied - through reforms to the national curriculum, GCSEs and A levels - with restoring the importance of knowledge to its rightful place in educational life. For years, the educational establishment has devalued knowledge in favour of skills and processes such as ‘problem solving’ and ‘critical thinking’.
But the great problem with this outlook, is that with limited knowledge, a pupil has very little with which to think critically about, or with which to solve problems.
Today, of course, is Holocaust Memorial Day - and what better example of the paramount importance of knowledge in a child’s education is there? History has the potential to widen our understanding of humanity’s potential for both greatness and evil, and a history of the 20th century provides ample examples of both.
Through the national curriculum, we ensure all secondary schools teach the Holocaust at some point during key stage 3.
However, as the October report from the Centre for Holocaust Education at University College London showed that, though 83% of pupils thought the Holocaust an important subject to study, many still did not have a sound grasp of the basic facts and events.
Two-thirds of the 8,000 British schoolchildren surveyed did not know what is meant by the term ‘antisemitism’, and when asked how many Jews died during the Holocaust, 1 in 10 chose fewer than 100,000. How can you think critically about the Holocaust when you have such fundamental misconceptions about the events?
For the past 10 years the Department for Education has funded the Holocaust Educational Trust’s Lessons from Auschwitz project which has taken more than 28,000 students to visit the site of the Auschwitz-Birkenau concentration camp. It is vital that all young people continue to learn in detail about the Holocaust, and that is why the department will continue to promote, support and fund teaching of the Holocaust.
There are other areas of the curriculum where we have broadened the scope of what pupils study. Religious education is an example where knowledge is a powerful aid to understanding British society in the 21st century.
The new religious studies GCSE , which will be introduced for first teaching in September 2016, will ensure that all pupils study not 1, but 2 religions in depth - an aspect of their education which will give pupils greater insight into the multi-faith society that we inhabit today.
Faith schools, of all denominations are a valuable component of Britain’s tapestry of school provision. In 2015, 3 non-selective state Jewish secondary schools - The King David High School, Yavneh College and the Jewish Community Secondary School - were amongst the 100 top-performing such schools nationwide at GCSE . In 2015, 4 Jewish primary schools had 100% of pupils attaining level 4 or above in reading, writing and mathematics.

Jewish education in this country provides an exemplar of how this balance can be struck, and I would like to say thank you for the enormous contribution that you all make to the educational life and cultural life of this country.
Published: 28 January 2016


Unipig
A beautiful step forward into layer 2.
Account:
NONE
Balance:
Uni:
0
Pigi:
0
Request money!
Send Money!
Uni
Pigi
Recipient:
- Amount:
-
Swap Money!
Uniswap Balance:
Uni:
0
Pigi:
0
Uni
Pigi
Amount:
-


I know the part of the property name in some JS object, but have no idea in what object this property is located.
So I wrote ridiculous script to find it for me. Just a lazzy developer. Please don't use anything like that in production.
var findPropertyCompare=function(srch, existing) { return existing.toString().indexOf(srch) >= 0; } var findProperty=function(n, root, path, depth) { depth = depth || 0; if (depth <= 5) { for(var key in root) { if (findPropertyCompare(n, key)) { console.info("Found %s = %o", path + '.' + key, root[key]); } findProperty(n, root[key], path + '.' + key, depth+1); } } }; findProperty('FCK', window, 'window');
It just outputs all the properties that contain 'FCK'. Of course it only works in FF because of console object is used. Also it doesn't handle exceptions that may occur (and will occur).
But anyway, still useful.


| Vendor Name: | BEE-CLEAN BUILDING MAINTENANCE |
|---|---|
| Reference Number: |<PHONE_NUMBER> |
| Contract Date: | 2011-08-10 |
| Description Of Work: | 811 Contracted Building Cleaning |
| Contract Period: | 2011-08-10 to 2014-09-30 |
| Original Contract Value: | $12,338.47 |
| Contract Value: | $16,798.58 |
| Comments: | This contract includes one or more amendments. This contract was sole-sourced.This contract is a multi-year contract |


The following document contains the results of FindBugs Report
FindBugs Version is 2.0.1
Threshold is low
Effort is
| Class | Bugs |
|---|---|
| com.google.code.sbt.AbstractSBTCompileMojo$1 | 1 |
| com.google.code.sbt.HelpMojo | 2 |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| The class com.google.code.sbt.AbstractSBTCompileMojo$1 could be refactored into a named _static_ inner class | PERFORMANCE | SIC_INNER_SHOULD_BE_STATIC_ANON | 663-666 | Low |
| Bug | Category | Details | Line | Priority |
|---|---|---|---|---|
| com.google.code.sbt.HelpMojo.build() may fail to clean up java.io.InputStream | EXPERIMENTAL | OBL_UNSATISFIED_OBLIGATION | 68 | Medium |
| Usage of GetResource in com.google.code.sbt.HelpMojo.build() may be unsafe if class is extended | BAD_PRACTICE | UI_INHERITANCE_UNSAFE_GETRESOURCE | 68 | Low |


Created by JustAsh0005
Set website preferences and they will be stored for your next visit.
Select light or dark mode.


Cambodia fund fundraisers are amazing, generous people who raise money to provide a better future for thousands of Cambodian children and their families.
There are so many different ways to raise money for CCF – we’ve had people cycle across Asia, a whole family ran ultra-marathons in Iceland – but it doesn’t need to be extreme. Many people ask for donations for their birthday, or ask their friends and family to sponsor them to take part in a challenge.
Giving a helping hand is easier than you think. This guide will give you some fundraising ideas to support CCF on your own.
For larger fundraising efforts, we will even work with you to setup a “Fundraising Campaign” on the CCF website, which will allow donations to be made directly to your campaign via our donation platform. We will provide you with all the support you need, and we may even be able to profile your fundraising activities on the CCF blog and social media channels.
Cambodia fund fundraisers are amazing, generous people who raise money to provide a better future for thousands of Cambodian children and their families.
There are so many different ways to raise money for CCF – we’ve had people cycle across Asia, a whole family ran ultra-marathons in Iceland – but it doesn’t need to be extreme. Many people ask for donations for their birthday, or ask their friends and family to sponsor them to take part in a challenge.
Giving a helping hand is easier than you think. This guide will give you some fundraising ideas to support CCF on your own.
For larger fundraising efforts, we will even work with you to setup a “Fundraising Campaign” on the CCF website, which will allow donations to be made directly to your campaign via our donation platform. We will provide you with all the support you need, and we may even be able to profile your fundraising activities on the CCF blog and social media channels.
Cambodia fund fundraisers are amazing, generous people who raise money to provide a better future for thousands of Cambodian children and their families.
There are so many different ways to raise money for CCF – we’ve had people cycle across Asia, a whole family ran ultra-marathons in Iceland – but it doesn’t need to be extreme. Many people ask for donations for their birthday, or ask their friends and family to sponsor them to take part in a challenge.
Giving a helping hand is easier than you think. This guide will give you some fundraising ideas to support CCF on your own.
For larger fundraising efforts, we will even work with you to setup a “Fundraising Campaign” on the CCF website, which will allow donations to be made directly to your campaign via our donation platform. We will provide you with all the support you need, and we may even be able to profile your fundraising activities on the CCF blog and social media channels.