score_frag_dag module¶
Score spectra/scans against a collection of molecular fragmentation directed acyclic graphs (trees).
-
pactolus.score_frag_dag.
FILE_LOOKUP_TABLE_DTYPE
= dtype([('filename', 'S400'), ('ms1_mass', '<f8')])¶ Numpy data dtype (dtype) used for the tree file lookup table
-
pactolus.score_frag_dag.
HIT_TABLE_DTYPE
= dtype([('score', '<f4'), ('id', 'S100'), ('name', 'S100'), ('mass', '<f4'), ('n_peaks', '<i4'), ('n_match', '<i4')])¶ Numpy data type (dtype) used for hit tables
-
pactolus.score_frag_dag.
METACYC_DTYPE
= dtype([('metacyc_id', 'S30'), ('name', 'S100'), ('inchi', 'S1000'), ('lins', 'S400'), ('inchi_key', 'S40'), ('mass', '<f8')])¶ Numpy data type (dtype) used to store METACYC molecular databases
-
pactolus.score_frag_dag.
bfs_plausibility_score
(plaus_score, tree, matches, nodes=None)[source]¶ Modifies in place a numpy vector of plausibility scores for each fragment in a tree through breadth-first search.
Parameters: - plaus_score – numpy 1D vector with len same as tree, value is plausibility score
- tree – numpy structured array output by FragTree.numpy_tree
- matches – numpy 1D vector of ints; the rows of tree that match any data peaks
- nodes – numpy array with 1 dimension; row indices of tree currently being scored
-
pactolus.score_frag_dag.
calculate_MIDAS_score
(mz_intensity_arr, tree, mass_tol, neutralizations, max_depth=None, want_match_matrix=False)[source]¶ Score the the plausibility that a given MS2 (or MSn) scan arose from a given compound.
Parameters: - mz_intensity_arr – ndarray w/ shape (n_peaks, 2). m/z values in col 0, intensities in col 1
- tree – numpy structured array for a frag. tree of a molecule, usually from FragTree.numpy_tree
- mass_tol – maximum mass in Da by which two MS2 (or MSn) peaks can differ
- neutralizations – list of floats, adjustments (in Da) added to data peaks in order to neutralize them
- max_depth – int, truncates tree, keeping only nodes <= max_depth bond breakages away from root
- want_match_matrix – bool, if True then tuple of (score, match_matrix) is returned, else return score only
Returns: score, float, a MIDAS score
Returns: match_matrix, a bool matrix with a shape of (n_tree_nodes, n_peaks). elements are True if given peak matches given node of frag_dag Returned only if want_match_matrix is True, othewise None is returned.
-
pactolus.score_frag_dag.
calculate_lambda
(fragment_masses, data_masses, mass_tol)[source]¶ Calculates lambda values as described in the MIDAS paper [dx.doi.org/10.1021/ac5014783]
Parameters: - fragment_masses – np.ndarray of floats w/ shape (n,), theoretical masses from frag tree, in Da
- data_masses – np.ndarray of floats w/ shape (n,), (neutralized) masses in Da detected in MS2 scan
- mass_tol – float, maximum allowed mass difference in Da between theoretical and detected peaks
Return lambda: np.ndarray of floats containing the lambda scores
-
pactolus.score_frag_dag.
check_scoring_output_targets
(output_filepath, output_grouppath, tempdir='', cleanup_output=False, cleanup_tempdir=False, mpi_comm=None, mpi_root=0)[source]¶ Check whether the locations we should use for writing are clean. Optionally clean the locations by deleting any prior data.
Parameters: - output_filepath – The path to the file where scoring results should be written to
- output_grouppath – The path to the group where scoring results should be written to
- tempdir – The path of the temporary data location. Empty string is used to indicate that the default tempdir and NamedTemporaryFiles will be used instead.
- mpi_comm – The MPI communicator to be used when runnning in parallel
- mpi_root – The root MPI process to be used
Returns: output_clean boolean indicating whether the output target is clean
Returns: tempdir_clean boolean indicating whether the temproary directory is clean
-
pactolus.score_frag_dag.
collect_score_scan_list_results
(temp_filename_lists, output_filepath, output_grouppath, num_scans, num_compounds, scan_list, save_scan_list=False, scan_metadata=None, experiment_metadata=None, global_metadata_attributes=None, file_lookup_table=None, collect_compound_metadata=False, metabolite_database=None, mpi_comm=None, mpi_root=0)[source]¶ Consolidate the results from the incrementally stored scoring results into a single file with a consolidated data layout
Parameters: - temp_filename_lists – A list of temporary files with data
- output_filepath – The path to the output file. The file will be created if it does not exists or appended if the file does exist.
- output_grouppath – The path to the group in the output file. This may be a hierarchy of groups given by a standard “/” separated path. Any groups missing in the hierarchy will be created.
- num_scans – The number of scans (i.e, scans) that were scored.
- num_compounds – The number of compounds included in the scoring.
- scan_list – list of numpy ndarrays Stores peak mzs and intensities. Each list el has shape of (n_peaks, 2), with mzs in column 1 an intensities in col 2. Length of list is n_scans long
- save_scan_list – Boolean indicating whether we should include the scan_list in the output file
- scan_metadata – Dictionary of scan metadata. Keys are dataset names and values are numpy data arrays.
- experiment_metadata – Dictionary of the experiment metadata. Keys are dataset names and values are numpy data arrays.
- global_metadata_attributes – Additional global metadata about the run to be stored as attributes on the output group
- collect_compound_metadata – Boolean indicating whether we shoudl collect and save compound metadata
- metabolite_database – Optional metabolite database. This is used to collect additional compound metadata if collect_compound_metadata is set to True
- file_lookup_table – The numpy array with the file look-up table for the tree files used for scoring
- mpi_comm – The MPI communicator to be used
- mpi_root – The MPI root rank to be used for writing
-
pactolus.score_frag_dag.
compound_metadata_from_trees
(table_file, mpi_comm=None, mpi_root=0)[source]¶ Compile metadata for the trees in the given table_file
Parameters: - table_file – Full path to .npy file containing tree file names and parent masses or the numpy array directly.
- mpi_comm – The MPI communicator to be used
- mpi_root – The MPI root rank to be used for writing
Returns: Dictionary of 1D arrays with metadata information about the compounds. This includes the: inchi, num_atoms, num_bonds, inchi_key, mass
-
pactolus.score_frag_dag.
crossref_to_db
(table_file, original_db)[source]¶ Cross-references pactolus results to name, structure, etc. data in a flat text file
Parameters: - table_file – string, full path to .npy file containing tree file names and parent masses that was used to generate pactolus results. Or the numpy array directly.
- original_db – string, full path to flat text file containing DB
Return db_arr: numpy structured array re-ordered to match table_file. The numpy dtype is score_frag_dag.METACYC_DTYPE which has the fields: ‘metacyc_id’, ‘name’, ‘inchi’, ‘lins’, ‘inchi_key’
-
pactolus.score_frag_dag.
find_matching_fragments
(data_masses, tree, mass_tol)[source]¶ Find node sets in a tree whose mass is within mass_tol of a data_mz value
Parameters: - data_masses – numpy 1D array, float, neutralized m/z values of data from an MS2 or MSn scan
- tree – numpy structured array as output by FragDag
- mass_tol – precursore m/z mass tolerance
Returns: matching_frag_sets, list of lists; len is same as data_mzs; sublists are idxs to rows of tree that match
Returns: unique_matching_frags, numpy 1d array, a flattened numpy version of unique idxs in matching_frag_sets
-
pactolus.score_frag_dag.
load_file_lookup_table
(path)[source]¶ Load or generate a file lookup table based on the given path.
Parameters: path – This may be either the path to: 1) the .npy file with the file lookup table prepared via make_file_lookup_table_by_MS1_mass, 2) a path to an HDF5 file ending in ‘.h5’ and dataset defined via <filename>:<datasetpath 3) a textfile where each line a path to a tree 4) the path to a directory with all trees that should be used. In the latter 2 cases the make_file_lookup_table_by_MS1_mass function is called to compile the lookup table, whereas in the first case the table is simply restored from file. Returns: tree_files_by_ms1_mass, a numpy structured array with columns (i) filename and (ii) MS1 mass. The numpy dtype is type = [(‘filename’, ‘a400’),(‘ms1_mass’, ‘f8’), ]
-
pactolus.score_frag_dag.
load_scan_data_hdf5
(filepath, grouppath=None)[source]¶ Load the scans/spectra to be scored from file
Expected HDF5 data layout within the group:
- peak_mz : 1D array with all m/z values for all concatenated scans.
- peak_value : 1D array with all intensity values for all concatenated scans. Must have the same length as peak_mz.
- `peak_arrayindex : 1D (or n-D array) where first dimension is the scan index and the last dimension (in the case of n-D arrays) contains the integer start offset where each scan is located in the peak_mz and peak_value arrays. An n-D array is sometimes used to store additional location data (e.g., the x/y location from which a scan is recorded). The additional data will be returned as part of the scan_metadata in the form of peak_arrayindex_# = peak_arrayindex[:, #].
- ms1_mz or precursor_mz1 : Optional 1D array with the MS1 precursor m/z value for each scan. Must have the same length as the number of scans (i.e, the length of the peak_array_index). Alternatively the ms1_mz dataset may also be stored in the scan_metadata group. This will be returned as part of the scan_metadata as well as as a separate return value.
- scan_metadata : Group with additional arrays for per-scan metadata that should be passed through. The first dimension of the arrays should always have the same lenght as the number of scans.
- experiment_metadata : Group with additional arbitrary metadata pertaining to the experiment. This data will also be pass through as is.
Parameters: - filepath – The path to the file
- grouppath – The group object within the file
Returns: scan_list : list of numpy ndarrays with mzs and intensities. Each list el has shape of (n_peaks, 2), with mzs in column 1 an intensities in col 2. Length of list is n_scans long
Returns: scan_metadata : A dictionary of 1D numpy arrays with the same length as the scan_list where the keys are the names of the metadata field and the arrays contain the per-scan metadata. This also includes the
ms1_mz
data if available, which is a numpy array of floats with the (unneutralized) MS1 mz/s of the precursor ions.Returns: experiment_metadata : A dictionary with additional arbitrary metadata about the collection of scans as a whole
-
pactolus.score_frag_dag.
make_file_lookup_table_by_MS1_mass
(tree_files=None, path=None, save_result=None)[source]¶ Creates a sorted table listing of .h5 file paths and (i) parent MS1 mass for input trees from generate_frag_dag.
Parameters: - tree_files – list of filenames (must be full-path!) containing trees to use for scoring
- path – path to subdirectory containing all relevant .h5 files
- save_result – if not None, the name of a file to which to save the numpy table as a
Returns: tree_files_by_ms1_mass, a numpy structured array with columns (i) filename and (ii) MS1 mass. The numpy dtype is type = [(‘filename’, ‘a400’),(‘ms1_mass’, ‘f8’), ]
-
pactolus.score_frag_dag.
make_pactolus_hit_table
(pactolus_results, table_file, original_db, match_matrix=None)[source]¶ Makes a hit table in the same format as lbl-midas for comparison of the two algorithms..
A hit table is a structured numpy array that summarizes all scores for a single spectrum. Each entry in the hit-table describes the score, id, name, mass, n_peaks, n_match for a given fragmentation tree (i.e., molecule) against the given spectrum (see also
pactolus.score_frag_dag.HIT_TABLE_DTYPE
). The n_peaks and n_match are only set if the match_matrix input is provided. This function uses ``pactolus.score_frag_dag.crossref_to_db` to cross-reference pactolus fragmentation trees (typically identified via inchi-keys) against the molecular data base file to retrieve real molecule names. An example molecular database file is available, e.g, from http://midas-omicsbio.ornl.gov/MetaCyc.mdb. The main important parts in this case is the second column with the molecule name and the third column with the inchi key.Parameters: - pactolus_results – ndarray, n_compounds by n_scans matrix of pactolus scores
- table_file – string, full path to .npy file containing tree file names and parent masses that was used to generate pactolus results. Or the numpy array directly.
- original_db – string, full path to flat text file containing the molecule DB used to generate the fragmentation trees. The primary use for this is to enable lookup of molecule names.
- match_matrix – Optional input. Dictionary of match matrices (one matrix per non-zero score for a given scan and compound combination). The keys are tuples of integers describing the index of scan and compound in the returned score_matrix. Each value is a bool matrix with n_peaks columns and n_nodes rows. Elements are True if given peak matches given node of frag_dag. The return value will be None if want_match_matrix is set to False (Default)
Returns: hit_table_list, a list of hit_tables
-
pactolus.score_frag_dag.
neutralize_mzs
(data_mz_intensity_arr, neutralizations)[source]¶ Converts data m/z values to possible data neutral mass values (in Da) by combinatorial subtraction from ionizations.
Parameters: - data_mz_intensity_arr – numpy float with shape (num_peaks, 2), assumed normalized i.e. x[:, 1].sum() = 1
- neutralizations – masses: in Da of singly charged ionic species whose removal results in a neutral mass.
Returns: neutralized_mass_intensity_arr
-
pactolus.score_frag_dag.
normalize_intensities
(mz_intensity_arr, order=1)[source]¶ Normalizes intensities in a 2D numpy array of m/z values & intensities. Designed to be used non-neutralized data.
Parameters: - mz_intensity_arr – numpy float with shape (num_peaks, 2)
- order – int, if 1 then L1 norm is returned; otherwise L2 norm is computed
Returns: out, a normalized version of mz_intensity_arr with intensities that sum to 1
Note: this function assumes intensities can never be negative.
-
pactolus.score_frag_dag.
parse_command_line_args
()[source]¶ Define and parse all command line arguments
Returns: - Dictionary with the parsed command line arguments. See –help for a list of all command line arguments
- and their names. The basic keys in the dict are:
- input : The full input path provided by the user
- input_filepath : The path to the input file
- input_grouppath : The path to the group within the input file
- output : The full path to the output file
- output_filepath : The path to the ouput file
- ouput_grouppath : The path to to the group within the output file
- precursor_mz : Optional precursor_mz floating point value (-1 by default, i.e., read from file)
- metabolite_database : Optional path to the metabolite database
- trees : The file or dir with the list of trees to be used for scoring
- ms1_mass_tolerance : The ms1 mass tolerance floating point value
- ms2_mass_tolerance : The ms2 mass tolerance floating point value
- max_depth : The maximum search depth in the trees integer value
- neutralizations : Numpy array with floating point neutralization values
- pass_scanmeta: Boolean indicating whether we should pass additional metadata through to the ouptut
- pass_scans: Boolean indicating whether the actual scan/spectra data should be passed through to the output.
- pass_compound_meta : Boolean indicating whether we should compile compound metadata from the tree file and pass it through to the output.
- schedule : The scheduling scheme to be used
- start_barrier : Add an MPI barrier before recording the start-time for the analysis but after parsing the command-line args. This can help in measuring “runtime performance in case that the startup time for Python varies greatly between cores.
- collect : Boolean defining whether the results should be collected to rank 0 in parallel
- loglevel : String indicating the logging level to be used
- tempdir : Directory where temporary data files should be stored. Temporary files are created one-per-core to incrementally save the results of an analysis.
- clean_tempdir : “Boolean indicating whether we should automatically delete conflicting data in tempdir
- clean_output : Boolean indicating whether we should automatically delete conflicting data in the output target defined by –save.
-
pactolus.score_frag_dag.
score_main
(use_command_line=True, **kwargs)[source]¶ Main function used to execute the scoring of scans
Parameters: - use_command_line – Retrieve analysis settings from the command line
- kwargs –
Optional keyword arguments used to define all (or overwrite some) settings usually defined via the command line. Optional keywqord arguments are:
- input : The full input path provided by the user
- input_filepath : The path to the input file
- input_grouppath : The path to the group within the input file
- output : The full path to the output file
- output_filepath : The path to the ouput file
- ouput_grouppath : The path to to the group within the output file
- precursor_mz : Optional precursor_mz floating point value (-1 by default, i.e., read from file)
- metabolite_database : Optional path to the metabolite database
- trees : The file or dir with the list of trees to be used for scoring
- ms1_mass_tolerance : The ms1 mass tolerance floating point value
- ms2_mass_tolerance : The ms2 mass tolerance floating point value
- max_depth : The maximum search depth in the trees integer value
- neutralizations : Numpy array with floating point neutralization values
- pass_scanmeta: Boolean indicating whether we should pass additional metadata through to the ouptut
- pass_scans: Boolean indicating whether the actual scan/spectra data should be passed through to the output.
- pass_compound_meta : Boolean indicating whether we should compile compound metadata from the tree file and pass it through to the output.
- schedule : The scheduling scheme to be used
- start_barrier : Add an MPI barrier before recording the start-time for the analysis but after parsing the command-line args. This can help in measuring “runtime performance in case that the startup time for Python varies greatly between cores.
- collect : Boolean defining whether the results should be collected to rank 0 in parallel
- loglevel : String indicating the logging level to be used
- tempdir : Directory where temporary data files should be stored. Temporary files are created one-per-core to incrementally save the results of an analysis.
- clean_tempdir : “Boolean indicating whether we should automatically delete conflicting data in tempdir
- clean_output : Boolean indicating whether we should automatically delete conflicting data in the output target defined by –save.
Returns: The function returns the output of
score_scan_list_against_trees(..)
. See score_scan_list_against_trees(...) for details
-
pactolus.score_frag_dag.
score_peakcube_against_trees
(peakcube, peakmzs, ms1_mz, file_lookup_table, neutralizations, ms1_mass_tol, ms2_mass_tol, max_depth, want_match_matrix=False)[source]¶ Create a score cube of MIDAS scores for each
Parameters: - peakcube – numpy ndarray of floats Stores peak intensities. Has shape (nx, ..., n_peaks). i.e., the last axis is a peak index, and prior axes are an arbitrary number of spatial or time coordinates
- peakmzs – numpy array of floats Stores fragment peak m/z values. Has shape (n_peaks,)
- ms1_mz – float the (unneutralized) MS1 mass of the precursor ions.
- file_lookup_table – full path to a .npy file having a numpy structured array with columns (i) filename and (ii) MS1 mass. Alternatively, this may also be the numpy array directly.
- ms1_mass_tol – float, max. diff. in Da of tree_parent_mass & MS1_precursor_mass
- ms2_mass_tol – float, max. mass in Da by which two MS2/MSn peaks can differ
- neutralizations – list of floats, adjustments (in Da) added to data peaks in order to neutralize them
- max_depth – int, optional. For restricting scoring to lower max depths than are present in the supplied tree
- want_match_matrix – bool, if True then tuple of (score, match_matrix) is returned, else return score only. Default value is False.
Returns: score_cube a numpy ndarray of shape (nx, ..., len(file_lookup_table))
Returns: match_matrix Optional output that is only returned if want_match_matrix is set to True. Dictionary of match matrices (one matrix per non-zero score for a given scan and compound combination). The keys are tuples of integers describing the index of scan and compound in the returned score_matrix. Each value is a bool matrix with n_peaks columns and n_nodes rows. Elements are True if given peak matches given node of frag_dag. The return value will be None if want_match_matrix is set to False (Default)
Unlike score_scan_list_against_trees, this function is designed to work on numpy arrays of scans. It is more appropriate for imaging data where:
- an common MS1 precursor has been fragmented and scanned many times/places, as long as
- a global peak finder has been run on all scans, so peak intensities exist for every peak at every pixel
-
pactolus.score_frag_dag.
score_scan_list_against_trees
(scan_list, ms1_mz, file_lookup_table, neutralizations, ms1_mass_tol, ms2_mass_tol, max_depth, want_match_matrix=False, temp_out_group=None, schedule='DYNAMIC', mpi_comm=None, mpi_root=0)[source]¶ Create a score cube of MIDAS scores for a series of spectra/scans using either
score_scan_list_against_trees_serial(..)
or score_scan_list_against_trees_parallel(..)`` depending on whether we have multiple MPI cores available for processing or not. NOTE: similar to score_scan_list_against_trees_parallel(..), only the results that were computed on the current core are returned on any given core. If we need the results from all cores, then we need to collect them afterwards.- param scan_list: Stores peak mzs and intensities. Each list element is a numpy array with a shape of
- n_peaks, 2), with mzs in column 1 an intensities in col 2. The list is n_scans long/
Parameters: - ms1_mz (numpy array of floats. Must have same length as scan_list, i.e. len(ms1_ms) = num_scans) – The (unneutralized) MS1 mz/s of the precursor ions.
- file_lookup_table (full path to a .npy file having a numpy structured array with columns (i) filename and (ii) MS1 mass. Alternatively, this may also be the numpy array directly.) – The lookup table for the tree files
- ms1_mass_tol – Maximum mass difference in Da of tree_parent_mass & MS1_precursor_mass
- ms2_mass_tol (float) – Maximum mass difference in Da by which two MS2/MSn peaks can differ
- neutralizations (list of floats or 1D numpy array of floats) – adjustments (in Da) added to data peaks in order to neutralize them
- max_depth (int) – Optional parameter For restricting scoring to lower max depths than are present in the supplied tree
- want_match_matrix (bool) – If True then the dict of match matrices is returned as second output. (Default=False)
- scan_indexes – Optional 1D array or list of integer indices for the scans. Used to identify scans for logging. Default value is None in which case range(n_scans) will be used as scan_indexes.
- temp_out_group –
HDF5 group where the results from this run should temporarily be stored. If given, then the results for each scan will be written to a group ‘scan_#’ which in turn contains the following datasets
- score_matrix : The 2D score matrix
- match_matrix_#s_#c where #s is the scan index and #c is the compound index. This dataset contains the match matrix for the corresponding scan / compound combindation
- schedule – The parallel scheduling scheme to be used. Default is the recommended DYNAMIC scheduling. See pactolus.third_party.mpi_helper.parallel_over_axes.SCHEDULES for alternative options.
- mpi_root – The root MPI task. Only needed for consistent logging when running in parallel. Set to NONE to do logging from all cores.
- mpi_comm – The mpi communicator to be used. Only needed for consistent logging when running in parallel.
Returns: score_matrix a numpy ndarray of shape (n_scans, len(file_lookup_table))
Returns: match_matrix Optional output that is only returned if want_match_matrix is set to True. Dictionary of match matrices (one matrix per non-zero score for a given scan and compound combination). The keys are tuples of integers describing the index of scan and compound in the returned score_matrix. Each value is a bool matrix with n_peaks columns and n_nodes rows. Elements are True if given peak matches given node of frag_dag. The return value will be None if want_match_matrix is set to False (Default)
Returns: scan_index Numpy array of integer indices indicating the subset of scans for which processing was performed by the given core (and or collected to the core in case of the root rank with collect set to True).
-
pactolus.score_frag_dag.
score_scan_list_against_trees_parallel
(scan_list, ms1_mz, file_lookup_table, neutralizations, ms1_mass_tol, ms2_mass_tol, max_depth, want_match_matrix=False, temp_out_group=None, scan_indexes=False, schedule='DYNAMIC', mpi_comm=None, mpi_root=0)[source]¶ Create in parallel a score cube of MIDAS scores for a series of spectra/scans. Note, only the results that were computed on the current core are returned on any given core.
Parameters: - scan_list (list of numpy ndarrays) – Stores peak mzs and intensities. Each list element is a numpy array with a shape of n_peaks, 2), with mzs in column 1 an intensities in col 2. The list is n_scans long/
- ms1_mz (numpy array of floats. Must have same length as scan_list, i.e. len(ms1_ms) = num_scans) – The (unneutralized) MS1 mz/s of the precursor ions.
- file_lookup_table (full path to a .npy file having a numpy structured array with columns (i) filename and (ii) MS1 mass. Alternatively, this may also be the numpy array directly.) – The lookup table for the tree files
- ms1_mass_tol – Maximum mass difference in Da of tree_parent_mass & MS1_precursor_mass
- ms2_mass_tol (float) – Maximum mass difference in Da by which two MS2/MSn peaks can differ
- neutralizations (list of floats or 1D numpy array of floats) – adjustments (in Da) added to data peaks in order to neutralize them
- max_depth (int) – Optional parameter For restricting scoring to lower max depths than are present in the supplied tree
- want_match_matrix (bool) – If True then the dict of match matrices is returned as second output. (Default=False)
- scan_indexes – Optional 1D array or list of integer indices for the scans. Used to identify scans for logging. Default value is None in which case range(n_scans) will be used as scan_indexes.
- temp_out_group –
HDF5 group where the results from this run should temporarily be stored. If given, then the results for each scan will be written to a group ‘scan_#’ which in turn contains the following datasets
- score_matrix : The 2D score matrix
- match_matrix_#s_#c where #s is the scan index and #c is the compound index. This dataset contains the match matrix for the corresponding scan / compound combindation
- schedule – The parallel scheduling scheme to be used. Default is the recommended DYNAMIC scheduling. See pactolus.third_party.mpi_helper.parallel_over_axes.SCHEDULES for alternative options.
- mpi_root – The root MPI task. Only needed for consistent logging when running in parallel. Set to NONE to do logging from all cores.
- mpi_comm – The mpi communicator to be used. Only needed for consistent logging when running in parallel.
Returns: score_matrix a numpy ndarray of shape (n_scans, len(file_lookup_table))
Returns: match_matrix Optional output that is only returned if want_match_matrix is set to True. Dictionary of match matrices (one matrix per non-zero score for a given scan and compound combination). The keys are tuples of integers describing the index of scan and compound in the returned score_matrix. Each value is a bool matrix with n_peaks columns and n_nodes rows. Elements are True if given peak matches given node of frag_dag. The return value will be None if want_match_matrix is set to False (Default)
Returns: scan_index Numpy array of integer indices indicating the subset of scans for which processing was performed by the given core (and or collected to the core in case of the root rank with collect set to True).
-
pactolus.score_frag_dag.
score_scan_list_against_trees_serial
(scan_list, ms1_mz, file_lookup_table, neutralizations, ms1_mass_tol, ms2_mass_tol, max_depth, want_match_matrix=False, scan_indexes=None, temp_out_group=None, mpi_root=None, mpi_comm=None)[source]¶ Create in serial a score cube of MIDAS scores for a series of spectra/scans.
Parameters: - scan_list (list of numpy ndarrays) – Stores peak mzs and intensities. Each list element is a numpy array with a shape of n_peaks, 2), with mzs in column 1 an intensities in col 2. The list is n_scans long/
- ms1_mz (numpy array of floats. Must have same length as scan_list, i.e. len(ms1_ms) = num_scans) – The (unneutralized) MS1 mz/s of the precursor ions.
- file_lookup_table (full path to a .npy file having a numpy structured array with columns (i) filename and (ii) MS1 mass. Alternatively, this may also be the numpy array directly.) – The lookup table for the tree files
- ms1_mass_tol – Maximum mass difference in Da of tree_parent_mass & MS1_precursor_mass
- ms2_mass_tol (float) – Maximum mass difference in Da by which two MS2/MSn peaks can differ
- neutralizations (list of floats or 1D numpy array of floats) – adjustments (in Da) added to data peaks in order to neutralize them
- max_depth (int) – Optional parameter For restricting scoring to lower max depths than are present in the supplied tree
- want_match_matrix (bool) – If True then the dict of match matrices is returned as second output. (Default=False)
- scan_indexes – Optional 1D array or list of integer indices for the scans. Used to identify scans for logging. Default value is None in which case range(n_scans) will be used as scan_indexes.
- temp_out_group –
HDF5 group where the results from this run should temporarily be stored. If given, then the results for each scan will be written to a group ‘scan_#’ which in turn contains the following datasets
- score_matrix : The 2D score matrix
- match_matrix_#s_#c where #s is the scan index and #c is the compound index. This dataset contains the match matrix for the corresponding scan / compound combindation
- mpi_root – The root MPI task. Only needed for consistent logging when running in parallel. Set to NONE to do logging from all cores.
- mpi_comm – The mpi communicator to be used. Only needed for consistent logging when running in parallel.
Returns: score_matrix a numpy ndarray of shape (n_scans, len(file_lookup_table))
Returns: match_matrix Optional output that is only returned if want_match_matrix is set to True. Dictionary of match matrices (one matrix per non-zero score for a given scan and compound combination). The keys are tuples of integers describing the index of scan and compound in the returned score_matrix. Each value is a bool matrix with n_peaks columns and n_nodes rows. Elements are True if given peak matches given node of frag_dag. The return value will be None if want_match_matrix is set to False (Default)
- Unlike score_peakcube_against_trees, this function is designed to work on _lists_ of scans. It is more
- appropriate for scans directly extracted from mzML files or for centroided data. This function does NOT assume that each scan in the list has the same precursors.


{% load static %}
These attacks prevents users from accessing login systems
Software that has malicious intent such as viruses, worms and spyware. This is the most prevalent threat to any home system.
These are attacks on your user system a variety of tools is used to achieve this.
These are SQL injections, You don't need to be particularly worried about these at home.
This is a quite lethal one it is when hackers redirect you from a site you think is legitimate like banking or any other app you need to log in to in order to obtain your username and password or credit card numbers
This is a program installed on your system that can enable people to log your keystrokes, take screenshots of your system and monitor all the activity you perform on your phone or desktop.


Mail
Joren Van Onder
Table of Contents
GMail has become slow
The GMail redesign was a while ago. I don't care much about the visual
changes. The main thing I dislike is how sluggish the interface has
become. Interacting with it no longer feels snappy and regularly I run
into blocking beforeunload
handlers warning me I might lose data
when attempting to close the tab.
Figure 1: Archiving an email seemingly takes about a second before you can close the tab
Since the place I work at uses GSuite and there's a lot of email to go through in the morning I decided to stop using the GMail webclient.
The rest of this page describes my personal email setup.
Have you accepted GNU Emacs as your lord and savior?
I have and therefore decided on using Notmuch1. It has an official GNU Emacs client and it's simplicity makes it interesting and fun to use and configure. Because it's pretty minimalist in it's design an additional program is needed to synchronize your mail. The most popular choice for this is probably OfflineIMAP.
Approach
OfflineIMAP
OfflineIMAP will synchronize mail between GMail and a local maildir. Plenty can be found online on how to configure OfflineIMAP with GMail. Here's a basic configuration that downloads a couple of IMAP folders.
[general] accounts = Gmail pythonfile = ~/.config-git/mail/offlineimap.py [Account Gmail] localrepository = Local remoterepository = Remote [Repository Local] type = Maildir localfolders = ~/mail [Repository Remote] type = IMAP remotehost = imap.gmail.com remoteuser =<EMAIL_ADDRESS>remotepasseval = get_password_authinfo("imap.gmail.com"<EMAIL_ADDRESS>folderfilter = lambda foldername: foldername in ['INBOX', '[Gmail]/Trash', 'ArchivedMail', 'SentDir'] ssl = yes # Work around https://github.com/OfflineIMAP/offlineimap/issues/573 ssl_version = tls1_2 sslcacertfile = /etc/ssl/certs/ca-certificates.crt maxconnections = 3 realdelete = no
The referenced Python file is responsible for parsing my PGP encrypted Gnus authinfo file. This contains the password used to connect to IMAP.
#!/usr/bin/env python3 import re import os def get_password_authinfo(machine, login): s = 'machine %s login %s password ([^ ]*) port.*\n' % (machine, login) p = re.compile(s) authinfo = os.popen('gpg -q --no-tty -d ~/.authinfo.gpg').read() return p.search(authinfo).group(1)
So I don't have to type my password often I set
# cache for 24 hours default-cache-ttl 86400 max-cache-ttl 86400
in my ~/.gnupg
file.
Indexing
Now that OfflineIMAP has downloaded a copy of my mail into a local maildir we need to index it with Notmuch. This makes it searchable. Indexing is accomplished by simply running
$ notmuch new
Tagging
In Notmuch email is organized by tags. We can tell Notmuch to tag all emails that match some search query:
$ notmuch tag +inbox -archived -- folder:INBOX
This goes through all mail in the INBOX folder, removes the archived
tag and adds the inbox
tag. This way we essentially put all mail in
our GMail INBOX (from here on when I refer to INBOX I mean the remote
GMail INBOX) in our Notmuch "inbox".
I try to achieve basic 2-way sync. Meaning that if I archive mail in
the GMail webclient it will sync locally as well. Hence the
-archived
.
Avoiding the huge INBOX of death
Notmuch does not modify your local mail2. You may be removing
inbox
tags from local emails but your remote inbox will never be
modified. This eventually leads to a huge INBOX.
In order to avoid this and keep our INBOX clean we can:
- search for mail tagged with
archived
and move it to the archived maildir folder - search for mail tagged with
inbox
and move it to the inbox maildir folder - run OfflineIMAP
Putting it all together
I implement the previous concepts in a Bash script. Whenever I want to download mail I run the script manually.
#!/usr/bin/env bash set -euo pipefail move_tagged_mail () { TAG="${1}" FOLDER="${2}" SENTFOLDER="SentDir" # -f in case mail was moved already notmuch search --format text0 --output files tag:"${TAG}" and not folder:"${FOLDER}" and not folder:"${SENTFOLDER}" |\ xargs -0 -I {} mv -fv {} ~/mail/"${FOLDER}"/cur/ } # move files in maildir to sync with changes to tags move_tagged_mail archived ArchivedMail move_tagged_mail inbox INBOX offlineimap # remove deleted email notmuch search --format=text0 --output=files tag:deleted | xargs -0 --no-run-if-empty rm -v NOTMUCH_DB_COUNTER_BEFORE=$(notmuch count --lastmod | cut -f3) notmuch new # using --input is more efficient than multiple invocations of notmuch tag # this syncs our tags based on what was done on IMAP notmuch tag --input <(echo " -inbox +archived -- lastmod:${NOTMUCH_DB_COUNTER_BEFORE}.. and folder:ArchivedMail +inbox -archived -- lastmod:${NOTMUCH_DB_COUNTER_BEFORE}.. and folder:INBOX +sent -- lastmod:${NOTMUCH_DB_COUNTER_BEFORE}.. and folder:sent ") # tag groups notmuch tag --input <(echo " +mailing-list -inbox --lastmod:${NOTMUCH_DB_COUNTER_BEFORE}.. tag:inbox and<EMAIL_ADDRESS>or<EMAIL_ADDRESS>+mailing-list -inbox --lastmod:${NOTMUCH_DB_COUNTER_BEFORE}.. tag:inbox and subject:[GitHub] A new public key was added to ")
The script
- moves mail to the correct maildirs
- runs
offlineimap
- removes deleted mail
- indexes mail with
notmuch new
- tags mail based on what maildir folder they're in
- tags mail low-priority mail, i.e. mailing lists
Moving mail to the correct maildirs ensures that when mail is archived
in Notmuch it's also archived remotely when offlineimap
runs.
Removing mail tagged with deleted
is necessary because when
composing a draft Notmuch creates a new draft
when saving and adds
deleted
to previously saved drafts. This gives some sort of
rudimentary version control but as someone who saves draft mail often
often it leads to a lot of clutter.
The last steps in the script tags mail based on what maildir they're
in and their content. The --lastmod
trick allows this tag operation
to happen quickly. Without it Notmuch would reapply the tags to all
mail. This can take a while with a large amount of mail. Every time
Notmuch makes some modification to its database it increments a
revision number. By storing the revision number before running
notmuch new
we can make Notmuch tag only new mail.
GNU Emacs
(defun replace-unicode-no-break-space () (save-excursion (goto-char (point-min)) (while (search-forward " " nil t) (replace-match " ")))) (use-package notmuch :defer t :config (progn (add-hook 'notmuch-show-hook 'replace-unicode-no-break-space) (setq message-send-mail-function 'smtpmail-send-it smtpmail-starttls-credentials '(("smtp.gmail.com" 587 nil nil)) smtpmail-default-smtp-server "smtp.gmail.com" smtpmail-smtp-server "smtp.gmail.com" smtpmail-smtp-service 587 smtpmail-local-domain "gmail.com" notmuch-archive-tags '("-inbox" "+archived") notmuch-fcc-dirs "SentDir +sent" notmuch-mua-user-agent-function 'notmuch-mua-user-agent-full notmuch-show-empty-saved-searches t notmuch-saved-searches `((:name "inbox" :query "tag:inbox" :key ,(kbd "i")) (:name "mailing-lists" :query "tag:mailing-list and not tag:archived" :key ,(kbd "m")) (:name "archived" :query "tag:archived" :key ,(kbd "a"))) message-citation-line-format "On %a, %b %d, %Y at %R, %f wrote:" message-citation-line-function 'message-insert-formatted-citation-line message-kill-buffer-on-exit t user-full-name "Joren Van Onder" user-mail-address<EMAIL_ADDRESS>mm-decrypt-option 'always mm-verify-option 'always)))
My Emacs configuration is not very special. We have software that
sends email with non-break spaces which doesn't render nicely in
Emacs. replace-unicode-no-break-space
replaces those with regular
spaces before displaying the message.
notmuch-fcc-dirs
defines what folder sent mail gets put into and how
it's tagged.
Setting notmuch-mua-user-agent-function
to
notmuch-mua-user-agent-full
puts back the user-agent string which
removed for dubious "security" reasons. This way people know they're
nowhere near as cool as you are when they are reading your mail.
Footnotes:
Except for maildir flags.


PAIN RELIEVER- acetaminophen, aspirin and salicylamide tablet
ADVANCED FIRST AID, 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 INGREDIENT IN EACH TABLET- ACETAMINOPHEN 100 MG, ASPIRIN 162 MG, SALICYLAMIDE 152 MG, CAFFEINE (ADJUVANT) 32.4 MG
Uses:
temporarily relieves minor aches and pains associated with:
• headaches • colds • toothache • minor arthritis pain • muscular aches • menstrual cramps • backache
Warnings:
Reye's syndrome:
Children and teenagers should not use this medicine for chicken pox or flu symptoms before
a doctor is consulted about Reye's syndrome, a rare but serious illness reported to be associated with aspirin.
Liver Warning:
This product contains Acetaminophen. Severe liver damage may occur if:
•
you take more than 8 tablets in 24 hours • you take with other drugs containing acetaminophen (prescription
or non-prescription)
• you have 3 or more alcoholic drinks every day while using this product
Stomach Bleeding Warning:
This product contains nonsteroidal anti-inflammatory drugs (NSAIDs)
which may cause stomach bleeding. The chance is higher if you:
• have had stomach ulcers or bleeding
problems
• take a blood thinning (anticoagulant) or steroid drug • are age 60 or older • have 3 or more
alcoholic drinks every day while using this product
• take with other drugs containing an NSAID • you take more
or for a longer time than directed
Do not use:
• if you are allergic to aspirin • with any other pain reliever/fever reducer • if you have ever had an
allergic reaction to any other pain reliever/fever reducer
• for pain for more than 10 days or for fever for more
than 3 days unless directed by a doctor
• with any other product containing acetaminophen
Ask doctor before using if you have:
• asthma • stomach problems (such as heartburn, upset stomach or
stomach pain)
• gastric ulcers • bleeding problems
Ask a doctor or pharmacist before use if
you are taking a prescription drug for:
•anticoagulation (thinning of blood) • diabetes • gout • arthritis
When using this product do not exceed recommended dose.
Stop use and ask a doctor if:
• ringing in the ears or loss of
hearing occurs
• pain or fever persists or gets worse • new
symptoms occur
• redness or swelling is present
If pregnant or breast-feeding baby,
ask a health professional
before use. IT IS ESPECIALLY IMPORTANT NOT TO USE ASPIRIN
DURING THE LAST 3 MONTHS OF PREGNANCY UNLESS
SPECIFIC-ALLY DIRECTED TO DO SO BY A DOCTOR BECAUSE IT
MAY CAUSE PROBLEMS IN THE UNBORN CHILD OR
COMPLICATIONS DURING DELIVERY.
KEEP OUT OF REACH OF CHILDREN.
In case of overdose, get medical help or
contact a Poison Control Center right away. Prompt medical attention is critical for
adults as well as for children even if you do not notice any signs or symptoms.
Adults and children 12 years of age and older:Take 2 tablets every 4 hours as
needed, with a full glass of water. Do not exceed 6 tablets in any 24 hour period.
Children under 12 years: Consult a doctor.
|
PAIN RELIEVER
acetaminophen, aspirin, salicylamide tablet | ||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||
|
| Labeler - ADVANCED FIRST AID, INC. (114477180) |
| Registrant - ADVANCED FIRST AID, INC. (114477180) |
| Establishment | |||
| Name | Address | ID/FEI | Business Operations |
|---|---|---|---|
| ULTRA SEAL CORPORATION | 085752004 | pack(67060-242) |
| Establishment | |||
| Name | Address | ID/FEI | Business Operations |
|---|---|---|---|
| ULTRA TAB LABORATORIES, INC. | 151051757 | manufacture(67060-242) |


Will you support me?
Xmodgames needs
better equipments, team members to develop
MORE MODS!
We've Got
324
Supporters!
Donate Now!
Choose the amount of donation
×
$
2
$
5
$
10
$
20
$
50
$
100
Please input an integer from 1 to 500. e.g: 30, 40.
*
Continue
I agree to Terms of
Xmodgames Donation Agreement


My name is Utkarsh Gauniyal. I'm a student who is passionate about learning new things. Currently I'm
pursuing B.Tech in Electronics and Communications.
Below are my wonderful experiences in the world of coding.
Google Code-In 2017-18
I participated in Google Code-In in the year 2017. Google Code-In is a contest for
pre-university students aging between 13 to 17. The main objective of the contest is
to introduce the upcoming coders to the world of open source software development.
Google Code-In introduced me to the world of open source and git. I learned a lot
and also participated in some of the inter-school competition. But real open source experience was
still to come.


Version
public struct Version : Hashable, Codable
Struct to represent basic Semantic versioning 2.0.0 https://semver.org
-
Update type, based on comparison of two semantic versions, i.e.
See more1.1.1
<2.0.0
Declaration
Swift
public enum UpdateType
-
String representation of version in
X.Y.Z
formatDeclaration
Swift
public var string: String { get }
-
Implementation of Comparable protocol, allows to compare objects of Version type
Declaration
Swift
public static func < (lhs: Version, rhs: Version) -> Bool
-
Initializes Version from string, examples:
1
,1.0
,0.2.5
Declaration
Swift
public init(stringLiteral version: String)


Objects:
delete add save json file
Click the buttons below to add things to the model
draw cubes
draw gnomen
draw stonehenge


Simple Hello World response in a browser window.
Codable route demo of fetching a struct object book.
Additional raw routing handlers.
Codable and Raw sessions using cookies.
Codable and Raw routes using HTTP basic authentication .
Render a page using a Stencil file and Swift code.
Render a static page from a Markdown file using Markdown.
Displays an error message in a window, generated and returned by Kitura.
Kitura WebSockets demo using a Chat Room application.
Open Kitura.io in a new tab.
Simple Hello World response in a new browser tab.
Displays an error message in a new tab.


| Home |
|---|
| Get To Know Me |
| Work Experience |
| Education |
| Skills |
| Projects |
| Contact Me |
Hello and welcome to my personal website. My name is Christopher Katcher and I am a forth year Computer Science Bachelor at Rochester Institute of Technology. I am a prospective full-stack developer in search of performing cutting edge software development. I take pride in writing clean, loosely coupled software solutions and utilizing powerful development tools to efficiently tackle challenges. ...
|
Computer Science
|
Mathematics
|
Educmations
|
Educmations
|
|---|


Free Shipping
Free shipping on all order
Free Shipping
Free shipping on all order
Free Shipping
Free shipping on all order
Free Shipping
Free shipping on all order
Lorem ipsum jacket
$10.47$17.45
Lorem ipsum jacket
$10.47$17.45
Lorem ipsum jacket
$10.47$17.45
Lorem ipsum jacket
$10.47$17.45
Lorem ipsum jacket
$10.47$17.45
Lorem ipsum jacket
$10.47$17.45
Lorem ipsum jacket
$10.47$17.45
Lorem ipsum jacket
$10.47$17.45
A guide to latest trends
by admin
A guide to latest trends
by admin
A guide to latest trends
by admin


Main Page
Namespaces
Classes
lib
luwra
luwra Directory Reference
Files
file
auxiliary.hpp
file
common.hpp
file
compat.hpp
file
fields.hpp
file
functions.hpp
file
generic.hpp
file
methods.hpp
file
stack.hpp
file
state.hpp
file
tables.hpp
file
types.hpp
file
usertypes.hpp


Dear Sir/Madam ASSISTANCE REQUIRED FOR ACQUISITION OF ESTATE I write to inform you of my desire to acquire estates or landed properties in your country on behalf of the Director of Contracts and Finance Allocations of the Federal Ministry of Works and Housing in Nigeria. Considering his very strategic and influential position, he would want the transaction to be as strictly confidential as possible. He further wants his identity to remain undisclosed at least for now, untill the completion of the transaction. Hence our desire to have an overseas agent. I have therefore been directed to inquire if you would agree to act as our overseas agent in order to actualize this transaction. The deal, in brief, is that the funds with which we intend to carry out our proposed investments in your country is presently in a coded account at the Nigerian Apex Bank (i.e. the Central Bank of Nigeria) and we need your assistance to transfer the funds to your country in a convenient bank account that will be provided by you before we can put the funds into use in your country. For this, you shall be considered to have executed a contract for the Federal Ministry of Works and Housing in Nigeria for which payment should be effected to you by the Ministry, The contract sum of which shall run into US$27.4 Million, of which your share shall be 25% and 5% for expenses if you agree to be our overseas agent. As soon as payment is effected, and the amount mentioned above is successfully transferred into your account, we intend to use our own share in acquiring some estates abroad. For this too you shall also serve as our agent. In the light of this, I would like you to forward to me the following information: 1. Your company name and address if any 2. Your personal fax number 3. Your personal telephone number for easy communication. You are requested to communicate your acceptance of this proposal through my above stated email address after which we shall discuss in details the modalities for seeing this transaction through. Your quick response will be highly appreciated. Thank you in anticipation of your cooperation. Yours faithfully, DR. JAMES ALBERT


When I first started Web Development, like everyone else, I also wished for an
online Portfolio and super cool blog running on WordPress-like sites. But upon
digging deep into it and spending some time on Web Development, I came to know
about this awesome feature of GitHub, GitHub-Pages, where you can host and
serve any number of static-sites for “free” with site names like username.github.io/project-name
. So why not
use this free feature and host a Personal portfolio and also a blog built
upon HarpJS a static-site builder built upon Node that preprocesses the
blog/anything just to HTML, CSS & JS.
ProTip : Better to use Cloud9 online IDE for dedicated work space and testing
Getting Started
First, you’ll need to install Git, NodeJS, HarpJS.
Familiarity with Git is helpful, but not a prerequisite.
Next, head to GitHub, create free account and explore the site.
Done with that ?
Now, open the command prompt. If you’re not acquainted, that’s okay: it’s only needed sparingly. Now practice some basic syntax for Git and MarkDown( you need to write your blog in this ) .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
git init
// initialises am empty git repository
git remote -v
//lists out the connected URLs to Github repos
git remote add origin <url>
//adds a url to existing repo on local machine
git remote set-url origin <url>
// sets/ modifies the url of existing repo on local machine
git clone <url>
//create a working copy of a local repository by running the command
git add -A
//adds or stores the changes
git commit -am "<message>"
//commit or finalise the changes
git push origin master
//sync the change with remote-url
GitHub-Pages & Hosting
GitHub Pages lets you turn GitHub repositories into websites that showcase your portfolio, your projects, their documentation, or anything else you want to share with the world. What’s the advantage ? You don’t need to update your site every time you modify your sites’ source code. GitHub automatically does it. “Everything just works” . Check out to their video to know what exactly it does and why I am very much fond of it.
Ok, so you are now familiar with Git, GitHub, MarkDown, GitHub pages. Now, its time to dive in.
Go ahead and create a new repository in GitHub named
username.github.io
, where username
is your username on GitHub. Repository
should be public for publishing. Add a license of your own choice ( optional ) .
Clone the Repository to your local system
1
git clone https://github.com/username/username.github.io
Lets test it now, run the following commands in your Command Prompt or Terminal.
1
2
3
4
5
cd username.github.io
echo "Hello World" > index.html
git add --all
git commit -m "Initial commit"
git push -u origin master
You’re done. As simple as that. Now wait for 5–10 minutes. Fire up your browser and go to
Yippee, your personal site is now running Live.
Rules & Best Practices
There are certain rules to be followed while publishing your site on GitHub-Pages.
- “index.html” file should be at the root of your repository
- Your repository should be made as public ( already done! )
- You can only publish static-sites on GitHub-Pages. (Static vs Dynamic sites)
While building up your site, it would be a convenient for fellow developers to explore your repository if you have a good file structure. One good-olden convention is mentioned below.
Make sure commit your project at various stages of development. In case you are not satisfied with the final output, you can revert back to earlier commits and start building again.
Next ?
Nothing, for the Portfolio.You are now well acquainted. Start brain-storming and build an awesome Portfolio to showcase yourself and your projects on The Web.
Here is mine as an example.
Portfolio Wrap up
Congratulations! You are now done with your Portfolio *( assuming you have completed all the tasks *:) and came here ). *Try to *make it visible and reachable from the web, link other social accounts into it. Use Facebook debugging tools to scrap your site and look into its suggestions.
To change or update it later, at any time, you only need to change the its repository and changes will live soon.
Next ?
Blog with HarpJS
I am pretty sure you would be wondering what is this HarpJS and how does it help us in hosting our blog. Let me clear these things first, HarpJS is a static-site generator that automatically preprocesses code and serves it to the browser as HTML, CSS, and JavaScript. Now you can focus on writing/blogging instead of wrangling.
( If you are wondering why static-sites instead of wordpress and likewise platforms, check about it here )
Head on to Github and create a new repository with the name of your blog, your
final bog will be hosted at <username>.github.io/<blogName>
. Then ,go to settings, choose your master
branch as
github-pages site.
I am assuming you have already installed HarpJS as suggested in Getting Started section. So, without further due, lets start building our stuff. Create and to an empty folder where you want to create and initialise your new blog over. ( Use Git for version control with remote earlier created repo remote-url).
1
harp init my-harp-blog
This creates a folder named my-harp-blog
, looks as follows.
Now, start your server locally to test it locally using
And go to localhost:9000
to look at the rudimentary version of your blog.
Markdown, Layouts and Partials
Just skim through the documentations that are hyper-linked in the paragraph title above, to get an idea of what exactly they are and what they do.
Each Markdown file in the root directory add a new page to the blog. Go ahead
and create an About Me page with contents written in markdownwith file name as aboutme.md
.
1
2
3
4
# About Me
Hi, I am Diwakar. I love build cool stuff that helps the world. I am currently an I.T. Undergrad Sophomore in India.
Now save your file and go to localhost:9000/aboutme
server running. Yup, your changes are there running
live.
(* Harp does hot-reloading/ live-reloading, so you do not need to restart your server for every change you make.* )
Layouts are used for establishing repeating structures, whether it’s a header
and footer or something more complicated. The _layout
file contains this markup. By
convention, Harp doesn’t serve files or folders with an underscore preceding
their name. Essentially, this _layout.jade
becomes a wrapper for the files that are
served.
The content from your about.md
, 404.jade
and index.jade
are all brought into the layout wherever you use
the variable yield
:
Now, head on to _layout.jade
and make a template for your blog homepage. Here is an example
:
1
2
3
4
5
6
7
doctype
html
head
link(rel="stylesheet", href="/main.css")
body
!= yield
( The language used is *jade, you can use HTML also, Jade feels more clearer and easier once you get acquainted and robust too.*)
Notice that main.css
is referenced, even though that file isn’t actually in the folder; main.less
is. Because Harp has preprocessing built in, there’s no need to have the
compiled files around, cluttering up your app. Update and save the LESS file,
and your changes are already in the browser.
Adding Articles
You might want your blog to actually have some articles. Go ahead and write a few posts. I can wait.
Now, I would like to access my first article at localhost:9000/articles/another-article
, so I’ll create a folder called articles
. Folders are for people and so are URLs; make the directory structure mirror
the URL you want.
There is nothing unexpected going on inside the articles I added, they are just
Markdown. Information about the articles, beyond the articles themselves, is
stored inside the _data.json
file.
Flexible Metadata
Keeping metadata inside , rather than inside each individual .md
file, works well
for a number of reasons:
- A file can have any amount of metadata, and it still won’t interfere with your writing.
- Metadata for posts, images, videos or anything else can be added in the same way.
- Different files can still easily make use of this
_data.json
. - The order of information can come from the
_data.json
, rather than requiring anything of the file name
By adding the title, date, or any other information in a _data.json
file inside the
article itself, you can get the most out of using Markdown and just worry about
writing.
For this blog, I decided to just add the title in my _data.json
file for now:
Using Jade, it’s possible to iterate over this metadata, listing out all the
articles. I’ve added the following to index.jade
.
As you’d expect, there’s a list of articles on the home page now.
This blog is still missing a way to navigate. It would be nice to have the nav
in the footer as well as the header of our layout, so it’s present when someone
reaches the bottom of an article. Harp’s partial
function makes this possible without
writing the same markup multiple times.
Partials
Partial()
brings one file into another. You could use any text-based file in your
application as a partial. Usually you’ll want to bring in snippets of code
rather than entire pages, but you can use partial()
for either.
As with the _layout
file, adding an underscore to the beginning of a file’s name
prevents it from generating its own page, which is great for snippets of code.
This convention is true for folders, too: name a folder with an underscore at
the beginning, and nothing inside will be served directly. Folders with a
leading underscore are a great place to store partials. I created a new folder
called _shared
for this purpose.
Inside is a new file named nav.jade
.
Now, in _layout.jade
, I’m using this file with partial()
:
Now, the nav can go at the top and bottom of the blog posts without the markup needing to be duplicated. This is a simple example, but you can probably imagine how useful partials are once parts of your blog can be reused anywhere.
Sigh !!!
Going live
Once the initial version of your blog is done, it’s now time to put it online. Any Harp can be compiled to simple HTML, CSS & JavaScript files, and can be published anywhere.
1
harp compile
This command generates all the required HTML, CSS & JavaScript in folder in your blog directory. Now copy the contents of and put it in another folder, such that it contains
- index.html of
www
at root - harp blog directory inside it
Here is the sample view of directory
Here is the repo of my blog as an example.
When you are done with this, now go to the articles
folder in the root directory and edit all the html’s href
property as shown below.
1
2
3
4
5
6
7
8
9

Home

//edit this to

Home

//another example:
<link rel="stylesheet" href="/main.css">
//edit this to
<link rel="stylesheet" href="/blog/main.css">
Do this only for resources hosted by you, do not change the href of the ones hosted by CDNs
This is because all our resources are present at /blog/
instead of /
for the blog. Now, any idea what is present at /
? Your Portfolio’s resources !!!
Now push your to the github repo to be hosted under Github-Pages. Head on to username.github.io/blogname
( To modify your blog later, you first need to modify the harp-blog folder, then compile it, bring the flattened HTML, CSS, JS to root, edit html files’ href in root folder, push it )
That’s it. Its a wrap.
Make sure to comment below your experience, any doubts or for any suggestions.
Thanks for making it till here. Happy Coding !
Here is the Medium article for this post


OpenLaszlo Incubator Directory
The Incubator directory contains components and other code that have been contributed to the OpenLaszlo project, but have not yet been fully integrated into the product. It is intended as an easy way to contribute code that doesn't have the level of documentation, testing, or API review that is required in other directories, or that is simply contributed too late in the release cycle to place elsewhere.
Components
autocompletecombobox.lzx
- Autocomplete variant of combobox. Contributed by Daniel Kim.
base64.lzx
- Base 64 encoder/decoder created by Brendan Fagan.
basecheckbox.lzx
- Base class for a component representing a boolean value. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
baseedittext.lzx
- This component provides the look and feel for user editable text, data binding, and focus events. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
baseradio.lzx
- Base class for a single radio button. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
baseslider.lzx
- Modifications to baseslider to support floating point. By Mark Davis at Laszlo Systems, Inc.
bigcheckbox.lzx
- Checkbox using large resources. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
boxview.lzx
- View with customizable border. Contributed by Brad Erickson.
checkbox.lzx
- Smaller checkbox. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
closebox.lzx
- No special behavior, just a button that looks like a closebox. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
colorpicker.lzx
- Color selection tool created by Henry Minsky at Laszlo Systems, Inc.
defaultlistitem.lzx
- Item type for a simpledefaultlist. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
domapi.js
- A collection of compatability functions to bring LZX closer to
the W3 DOM API bindings for ECMAScript. Created by Oliver Steele of Laszlo Systems, Inc.
draglib.lzx
- Drag and drop library created by Sarah Allen at Laszlo Systems, Inc.
draglib-test.lzx
can be found in the test
subdirectory.
formlayout.lzx
- A layout used to arrange title-control pairs as might appear in a form. Contributed by Togawa Manabu at Laszlo-Japan.
gradientview.lzx
- A gradientview component created by Brendan Fagan. The
test file
gradientview-test.lzx
can be found in the
test
subdirectory.
hscrollbar.lzx
- Horizontal scrollbar with a different look. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
hsplitpane.lzx
- Horizontal split pane. Contributed by Daniel Kim.
icontab.lzx
- Nice-looking tab with an icon and a text label. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
icontogglebutton.lzx
- Button, which toggles, which has only an icon, but no text. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
inspector
- The "inspector" will let you visually inspect the view (or node) hierarchy. Click on a view to see its subviews. Submitted by Sarah Allan at Laszlo Systems, Inc.
labeledinputtext.lzx
- Horizontal container for a right-aligned label and text field. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
lzcombobox.lzx
- Subclass of newcombobox with a visual appearance. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
lzeditcombobox.lzx
- Like lzcombobox, but editable. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
lzedittext.lzx
- Inputtext with edges. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
lzradio.lzx
- Subclass of radiobutton with matching appearance to the other incubator lz components. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
minibutton.lzx
- stylishbutton subclass with specialized resources to be smaller than a usual button. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
newcombobox.lzx
- Alternate prototype combobox component; requires two include
files. Contributed by Laszlo Systems, Inc.
newcombobox-test.lzx
can be found
in the test
subdirectory.
opttree/opttree.lzx
- An optimized implementation of tree, contributed by Adam Wolff of Laszlo Systems, Inc.
radioitem.lzx
- A selectable list item which works like a radio button except it uses an icon instead of radio button graphics. . Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
rich-text
- A rich text editor, and various support components. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
roundrect.lzx
- Round rectangle component with optional gradient, created by Oliver Steele of Laszlo Systems, Inc.
roundrect-test.lzx
can be found in the test
subdirectory.
roundrectbutton.lzx
- Round rectangle button without art assets (so programmers can make roundrect buttons that look three-dish without a designer in the loo) created by Benjamin Shine of Laszlo Systems, Inc.
test-roundrectbutton.lzx
can be found in the test
subdirectory.
scrollinputtext.lzx
- Scrolling input text filed created by Max Carlson
and Sarah Allen at Laszlo Systems, Inc.
Enhanced by
Geert Bevin and Brendan Fagan of the Laszlo forums —
thanks guys!
scrollinputtext-test.lzx can be found in the
test
subdirectory.
stepper.lzx
- Numeric stepper component created by Jeff Freedman.
stepper-test.lzx
can be found in the test
subdirectory.
stylishbutton.lzx
- A button which can be capsule-shaped or rectangular. Contributed by Benjamin Shine and the rest of the Laszlo Mail team at Laszlo Systems.
tooltipmanager.lzx
- Provides support for tool tips, created by Krosscore, Inc. Modifications and improvements by Daniel Kim.
tooltipmanager-test.lzx
can be found in the test
subdirectory.
ulink.lzx
- A text link that is decorated with an underline when hovered. The color, hover color, and hover decoration can be customized, and all attributes can be data bound. Created by Oliver Steele of Laszlo Systems, Inc.
validators
- Utilities for incrementally validating form entry values. Contributed by Togawa Manabu at Laszlo-Japan. See laszlo.jp for updates. Timevalidator contributed by Luca Ritossa.
vscrollbar.lzx
- Vertical scrollbar with a different look. Contributed by the Laszlo Mail team at Laszlo Systems, Inc.
vslider.lzx
- Vertical slider contributed by Sebastian Wagner.
Other Software
SOLO Deployment Wizard JSP
- Created by Henry Minsky (hminsky@laszlosystems.com)


Fashion Notes: Melania Trump is Old World Christmas Elegance in Dolce & Gabbana
First Lady Melania Trump may have dropped a hint as to the style of this year’s White House Christmas — old world ornamentation meets a new era of elegance.
by John BinderTo receive the White House Christmas Tree, Melania Trump went back to her fashion roots in a jacquard Dolce & Gabbana splashed with the Italian duo’s maximalist florals. The rich, Sicilian-style coat retails for about $2,350.
Mrs. Trump paired the coat with an all-black base of Christian Louboutin stiletto boots, black skinny pants, and a black sweater. Loyal Fashion Notes readers will recall that Mrs. Trump wore a similar silhouette — that is, a black base with a statement coat — during last year’s Thanksgiving turkey pardon.
Could this be a hint to what the White House’s Christmas decorations will be? Red florals with gold reindeer antlers? Classical Santa Claus illustrations with Coca-Cola polar bears?
The last couple of years at the White House Christmas have been overtly modern with monochromatic entrances in all-white and all-red decor. Perhaps Mrs. Trump is interested in shaking things up with a traditional approach this year.
After all, she went back to tradition with her love for Dolce & Gabbana in this floral coat.
John Binder is a reporter for Breitbart News. Follow him on Twitter at @JxhnBinder .


--- layout: page title: About header-img: "img/about-bg.png" ---
Sara lives in Brooklyn, NY and also loves to bake.


What is Mathematics Series
Introduction
In mathematics, most statements in number theory are concerned not with a single object, but with a whole class of objects that have a common property, such as the class of all even integers etc.
Mathematics is the queen of sciences and the theory of numbers is the queen of the mathematics.
One such class of number, called the prime numbers (or primes) are of fundamental importance.
The Prime Numbers
Most numbers can be resolved into smaller factors, but the ones that cannot be resolved are known as prime numbers or primes.
A prime is an integer \(p\), greater than one, which has no factors other than itself and one.
A integer \(a\) is a factor or divisor of integer \(b\), if there exists an integer \(c\) such that \(b=ac\). The numbers \(2, 3, 5, 7, \cdots \) are primes.
So effectively, every integer can be expressed as a product of primes. And a number which not prime (other than 0 and 1) is called composite.
The set of all primes is a infinite set.
The infinitude of primes is proved by contradiction. Say there exists only a finite number of primes, \(n\) and represented by set \({p_1, p_2, \cdots p_n}\). Then according to the assumption any number greater than numbers in the finite set must be composite. But it is possible to come up with a number, \(A\) greater than all these \(n\) primes given by,
This contracdicts the assumption of finite set of primes and hence its proved that there is a infinite set of primes.
Every integer N greater than 1 can be factored into a product of primes in only one way.
The proof of this can be achieved by contradiction once again. If there exists a positive prime integer capable of decomposition into two essentially different products of primes, there will be a smallest such integer (using the principle of smallest integer), given by,
where \(p’s\) and \(q’s\) are primes. By rearranging if necessary, its possible to get the following order,
Where, \(p_1 \ne q_1\) because then one could cancel them in \eqref{2} and come up with another number smaller than \(m\) with two distinct prime factorization which would contradict the priniciple of smallest integer.
So, either \(p_1 \lt q_1\) or \(q_1 \lt p_1\).
Let, \(p_1 \lt q_1\) (if \(q_1 \lt p_1\), interchange the sequences in the analysis presented). Let \(m’\) be an integer given by,
Substituting, for \(m\) in \eqref{4} using \eqref{2},
Since \(q_1 \gt p_1\), it follows from \eqref{6} that \(m’\) is a positive integer, while from \eqref{4} it follows that \(m’ \lt m\). Hence the prime factorization of \(m’\) must be unique.
From \eqref{5} \(p_1\) is a factor of \(m’\), so in \eqref{6}, \(p_1\) must be a factor of either \((q_1 - p_1)\) or \(q_2 \cdots q_s\). Since \(p_1 \lt q_1\) and \eqref{3}, \(p_1\) cannot be a factor of any of the \(q’s\) nor equal to them. So, \(p_1\) must be a factor of \(q_1 - p_1\). So there exists an integer \(h\), such that,
But, \eqref{7} is a contradicts the fact that \(q_1\) is a prime number. This points to the fact that the initial assumption of a number having two distinct prime factorizations must be wrong.
If a prime \(p\), is a factor of the product \(ab\), then \(p\) must be a factor of either \(a\) or \(b\).
Also, if prime factorization of \(a\) can be expressed as,
where \(p’s\) are distinct primes, each raised to a certain power. The number of different divisors of \(a\) (including \(a\) and 1) is given by
and all the divisors of the number \(a\) are given by,
where \(\beta’s\) are integers satisfying inequalities,
Distribution of Primes
In mathematics, the sieve of Eratosthenes is a simple, ancient algorithm for finding all prime numbers up to any given limit.
Attempts have been made at finding simple arithmetic formulas that yield only primes, even though they may not give all of them.
- Fermat’s Conjecture : All number of the form \(F(n) = 2^{2^n} +1\) are primes, but was proved incorrect by Euler who discovered that \(2^{2^5} + = 641 \cdot 6700417\) meaning \(F(5)\) is not a prime.
Any of the numbers \(F(n)\) are not prime for \(n>4\).
There are various other similar expressions which produce primes until a certain limit.
-
\(f(n) = n^2 - n + 41\): For limit \(n < 41\).
-
\(f(n) = n^2 - 79n + 1601\): For limit \(n < 80\)
It’s been a futile effort to seek equation of a simple type which produces only primes. Even less promising is the attempt to find an algebraic formula that yields all the primes.
Primes in Arithmetic Progression
In each arithmetic progression, \(a,\, a+d,\, a+2d,\, \cdots a+nd,\, \cdots\), where \(a\) and \(d\) have no common factors, there are infinitely many primes.
The proof to this theorem could not be cracked for several years until finally it was presented by Lejeune Dirichlet and even after a hundred years it’s not been simplified any further and would be a series of posts in itself if presented here.
Though a generalized Euclid’s proof of infinitude of primes can be used to cover some special arithmetic progression such as \(4n+3\) and \(6n + 5\).
Proof of Infinitude of Arithmetic Progressions: \(4n+3\)
Any prime greater than 2 must be a odd prime and hence must be of the form \(4n+1\) or \(4n+3\) for some integer \(n\).
Also, the product of two numbers of the form \(4n+1\) is again of the same form, since
Let there be a finite number of primes in this arithmetic progression given by, \(p_1,\, p_2,\, \cdots p_n\) of the form \(4n+3\).
Consider the number,
From \eqref{12}, either N has to be a prime or it can be decomposed into a product of primes, none of which can be \(p_1,\, p_2,\, \cdots p_n\) because they leave a remainder \(-1\) on dividing \(N\).
Also, all of the primes must not be of the form \(4n+1\) because the form of \(N\) is \(4n+3\) and \eqref{11}.
Hence, one of the factors must of the form \(4n+3\), which is impossible, since none of the \(p’s\), which was assumed to be the finite set of primes of the form \(4n+3\), can be a factor of \(N\) (using \eqref{12}).
So, the initial assumption that number of primes in arithmetic progression of the form \(4n+3\) is finite is incorrect because of the contradiction encountered.
Proof of Infinitude of Arithmetic Progressions: \(6n+5\)
Any prime greater than 2 must be a odd prime and hence must be of the form \(6n+1\) or \(6n+3\) or \(6n+5\) for some integer \(n\).
Let there be a finite number of primes in this arithmetic progression given by, \(p_1,\, p_2,\, \cdots p_n\) of the form \(6n+5\).
From \eqref{13}, \eqref{14} and \eqref{15}, a number of the form \(6n+5\) cannot be achieved using only primes of the form \(6n+1\) and \(6n+3\).
Consider the number,
From \eqref{16}, either N has to be a prime or it can be decomposed into a product of primes, none of which can be \(p_1,\, p_2,\, \cdots p_n\) because they leave a remainder \(-1\) on dividing \(N\).
Also, all of the primes must not be only of the form \(6n+1\) and \(6n+3\) because the form of \(N\) is \(6n+5\) and \eqref{13}, \eqref{14} and \eqref{15} show it cannot be achieved otherwise.
Hence, one of the factors must of the form \(6n+5\), which is impossible, since none of the \(p’s\), which was assumed to be the finite set of primes of the form \(6n+5\), can be a factor of \(N\) (using \eqref{16}).
So, the initial assumption that number of primes in arithmetic progression of the form \(6n+5\) is finite is incorrect because of the contradiction encountered.
The Prime Number Theorem
Let \(A_n\) denote the number of primes among the integers \(1, 2, 3, \cdots , n\).
The density of primes among first n integers is given by the ratio \({A_n \over n} \).
Prime number theorem describes the asymptotic distribution of the primes among positive integers. It states that,
Unsolved Problems Concerning Primes
-
Goldbach Conjecture: Goldbach’s conjecture is one of the oldest and best-known unsolved problems in number theory and all of mathematics. It states: Every even integer greater than 2 can be expressed as the sum of two primes.
-
Polignac’s conjecture: Twin prime conjecture, also known as Polignac’s conjecture, in number theory, assertion that there are infinitely many twin primes, or pairs of primes that differ by 2.
These are simple to experiment with, but mathematically some of the most mysterious problems. These are the properties of the number system that shows that a lot is still left to be discovered about the number system.
REFERENCES:
What is Mathematics? Second Edition - Chapter I: Natural Numbers


Upload File Here
Maximum Size: 50 MB
Upload Now
Download New File
Enter your email as identity:
I have read and agree to the Terms and Conditions listed above


Pattern Recognition is simply the process of recognizing a successful pattern used in solving a similar problem, to solve your own specific problem, out of the smaller more manageable ones.
But He doesn’t have any of the items yet. Now where does he start from?
Musa sat down for a moment and taught about all the party he had attended previously.
He said to himself;
Last year, when I attended Sadiqs birthday party, I remembered the sweet delicious cake with the icing
on top, OH MY GOD!!!, even the food, CHAI!!!
.
As he was talking about it, he began to salivate.
Musa immediately snapped out of it, brought out his phone and called Sadiq his friend to ask him where he normally orders his birthday cake and food from. Sadiq replied with, Mama Julis restaurant.
The following day, Musa went to Mama Julis restaurant, bought the cake and booked a chef to cook during his party.
But wait, upon reaching Mama Julis restaurant, he saw different types of drinks; the one people normally drink on a regular basis and the one he had never seen before. Eventually, he bought the one he is familiar with and then went back home.
To be continued...
Why must Musa order from the exact place sadiq normally orders? Seriously he could have tried other restaurants, but he insisted on that particular one.
The reason was that, He noticed everyone enjoyed it, that was why he ordered the same thing.
Another thing that you must have noticed about Musa was that, he bought the drink that everyone knows about. Why is that so?
The reason was that, majority of people have tasted it or even heard the name before. Therefore no wastage will occur when he buys it.
The whole process listed above is called pattern recognition.
In summary, when you notice a particular problem similar to yours that has already been successfully solved and then you decide to use the solution. That process is called pattern recognition.


ReadFile()
Syntax
Result = ReadFile(#File, Filename$ [, Flags])Description
Open an existing file for read-only operations.
Parameters
#File The number to identify the file. #PB_Any can be used to auto-generate this number. Filename$ The filename and path to the file. If the filename does not include a full path, it is interpreted relative to the current directory. Flags (optional) It can be a combination (using the '| operand) of the following values: #PB_File_SharedRead : if the file has been already opened by another process for read operation, this flag is needed to access it (Windows only). #PB_File_SharedWrite: if the file has been already opened by another process for write operation, this flag is needed to access it (Windows only). #PB_File_NoBuffering: the internal PureBasic file buffering system will be disabled for this file. FileBuffersSize() can not be used on this file.combined with one of the following values (the following flags affect the ReadString() and ReadCharacter() behaviour):#PB_Ascii : all read string operation will use ascii if not specified otherwise (default for ASCII executable). #PB_UTF8 : all read string operation will use UTF-8 if not specified otherwise (default for Unicode executable). #PB_Unicode: all read string operation will use Unicode if not specified otherwise.
Return value
Returns nonzero if the file was opened successfully and zero if there was an error. If #PB_Any was used as the #File parameter then the new generated number is returned on success.
Remarks
To open a file for reading and writing, use the OpenFile() function. To create a new and empty file, use the CreateFile() function.
Example
If ReadFile(0, "Text.txt") ; if the file could be read, we continue... While Eof(0) = 0 ; loop as long the 'end of file' isn't reached Debug ReadString(0) ; display line by line in the debug window Wend CloseFile(0) ; close the previously opened file Else MessageRequester("Information","Couldn't open the file!") EndIf
See Also
OpenFile(), CreateFile(), CloseFile()
Supported OS
All


Working Sao Paulo
Because of the draught, the water reserves of this city that uses 16.000.000 liters of water per hour, have gotten so low as to make water racioning very likely.
This means one day with and the next day without water.
Storing a greater quantity of water than we already do, resolves nothing in terms of learning to live with a lower water footprint.


CELEBRATION, THE (FESTEN)(director/writer:Thomas Vinterberg; screenwriter: Mogens Rukov; cinematographer:Anthony Dod Mantle; cast: Ulrich Thomsen (Christian), Henning Moritzen (Helge),Thomas Bo Larsen (Michael), Paprika Steen (Helene), Birthe Neumann (Elsie ), Helle Dolleris (Mette),Trine Dyrholm (Pia ),Therese Glahn (Michelle), Bjarne Henriksen (Chef), Gbatokai Dakinah (Gbatokai), Klaus Bondam (Toastmaster), Lene Laub Oksen (Linda), 1998-Denmark)
Reviewed by Dennis Schwartz
This is a Dogma 95 styled film, where the Danish filmmaker's group manifesto determines the rules for how the film is to be made. The idea is to give their films a fresh look and for them to provide the unexpected, and to catch on film the complete truth from its characters and their situations. This film was shot with a small video camera (a Sony PC7) that fits in the palm of your hand, then it is transferred to the prescribed Dogma 35-millimeter format. I suppose it is fair to assume that one of the reasons that this manifesto was drawn up in 1995 by four Danish filmmakers--Christian Levring, Soren Kragh-Jacobsen, Thomas Vinterberg, and Lars von Trier-- was to give them publicity and challenge the film community to create innovative films. So far the only two films I saw from this group, von Trier's The Idiots & BREAKING THE WAVES, have been challenging and impressive films.
For those interested in what their Dogma document actually states, I give you the following example:
"1. Shooting must be done on location. Props and sets must not be brought in. (If a particular prop is necessary for the story, a location must be chosen where this prop is to be found.)
"2. The sound must never be produced apart from the image or vice versa. (Music must not be used unless it occurs where the scene is being shot.)
"3. The camera must be hand-held. Any movement or immobility attainable in the hand is permitted. (The film must not take place where the camera is standing; shooting must take place where the film takes place.) "4. The film must be in color. Special lighting is not acceptable. (If there is too little light for exposure, the scene must be cut or a single lamp [must] be attached to the camera.)
"5. Optical work and filters are forbidden.
"6. The film must not contain superficial action. (Murders, weapons, etc. must not occur.)
"7. Temporal and geographical alienation are forbidden. (That
is to say that the film takes place here and now.)
"8. Genre movies are not acceptable.
"9. The film format must be Academy 35 mm.
"10. The director must not be credited.
"Furthermore, I swear as a director to refrain from personal taste! I am no longer an artist. I swear to refrain from creating a 'work,' as I regard the instant as more important than the whole. My supreme goal is to force the truth out of my characters and settings. I swear to do so by all the means available and at the cost of any good taste and any aesthetic considerations."
Rules like that rub me the wrong way. What I ask from a film, is for it to be imaginative and well-made, and I don't particularly care how the filmmaker accomplishes that.
Henning Moritzen is Helge (played with a restraint and a certain brilliance, not allowing himself to become a stereotypical villain). Helge, a prosperous patriarch, is celebrating his sixtieth birthday by having his family and friends come to his country-estate hotel for his bourgeois birthday party, complete with a hired toastmaster (Bondam) to keep things looking well-organized and professional. The celebration will turn into a feast of dark family secrets revealed "bombshell style" in front of all the guests and hotel staff, while everyone tries to catch their breath and figure out how to act.
It would be impossible to go into the minute details of the film without immeasurably spoiling it for the viewer who hasn't seen the film. My pleasure in seeing it was that I was caught completely unaware of what was to occur and that shock kept me absorbed in the story, not quite knowing what to expect next. This might be the secret reason why the film worked so well, as I was made to feel like one of the guests in this theatrical film.
The psychically crippled children and their estranged relationship with their father is the key to the story. Christian (Ulrich Thomsen) is the eldest son, brooding that his twin sister, Linda, has within the year taken her life in her bathtub. He missed her funeral, which was the last family gathering and hasn't seen anyone in the family for quite a while, living in Paris, even owning a few restaurants there. But Christian's mission for coming to this party has a definite purpose, it is to let his father know what has been on his mind ever since childhood. He will be able to accomplish this mission with the help of the hotel staff who keep the guests from leaving by stealing their car keys, and with the needed personal aid of the chef (Bjarne), his childhood friend, who will see to it that he gets a chance to get his message across. He will also get solace from the pretty waitress Pia (Trine), who is in love with this troubled soul. Then there is the youngest in the family, Michael (Thomas Bo Larsen), Christian's volatile brother whom the family is ashamed of because of his crudeness and instability, who is married to a vulgar woman (Helle Dolleris), whom he treats like a dog. But, at least, he is the only one of the children to provide his father with three grandchildren. Helene (Paprika Steen) is the flighty sister who studied anthropology and now wants to be a singer, suffering from depression, who brings an American black man (Gbatokai) to the celebration, which will culminate in the families' racist feelings coming out in the open. All the children are disappointments to the incestuous father. Their mother (Birthe) acts as the father's voice of reason in all the family matters, trying to soothe out the wrinkles in their life by turning a blind eye to what she sees, until even she can't look away any more.
The result of the film was exhilerating, Dogma or not, it is a work that is scathing, penetrating layers of deceit and festering wounds that cannot be healed. The guests were left confused by all the startling revelations they were privy to, some wanting to just leave but couldn't, some trying to decide if what they were hearing was true or not but amazingly taking it all in stride, as if they were shock-proof. But the cruel truth and tenseness rule the weekend, even when all the disturbances are deftly handled by the toastmaster who tried to keep the traditional birthday party afloat with good cheer and dance and games. But it was to no avail.
To point out how the guests weren't quite sure of anything that was happening there, they are shown eating lobster, or salmon, or tomato soup, each one unsure of what they were served.
The Celebration is indeed a celebration not to be forgotten soon. It drains the emotions, somehow satisfies the intellect, and challenges the conventions of the usual fare of sophisticated family drama. I felt like I was serving as a witness for this dysfunctional family, asked to judge the family head as he is forced into finding out who he really is. Vinterberg declares how the impact of Helge's revelation affected everyone in the immediate family, and how that acted as a cleansing for the tribe, something that was essential for their psyches. At least, they now have some kind of a shot of pulling themselves together, even though the film does not show any of them changing internally. They are still their old selves (good and bad) after the revelations come out, but only this time they are all on the right side and are more armed with information about what went on as they were growing up. And how the film accomplished this, was through good storytelling, where one doesn't need any false constraints, something that is reminiscent of Greek tragedy or Shakespearean drama.
REVIEWED ON 9/25/99 GRADE: A
Dennis Schwartz: "Ozus' World Movie Reviews"
http://www.sover.net/~ozus
<EMAIL_ADDRESS>© ALL RIGHTS RESERVED DENNIS SCHWARTZ
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


All Ranks will have access to rank specific tags do /tags to see whats availbe to you!
| Rank Name | Price | Ability / Permission |
|---|---|---|
| Explorer | 200.00 | ability to set 1 additional home |
| Settler | 350.00 | access to auction house ( /ah ) |
| Citizen | 500.00 | access to enderchest ( /ec ) |
| Merchant | 750.00 | ability to make a shop |
| Novice | 1,000.00 | ability to set 1 additional home |
| apprentice | 1,500.00 | ability to make a town! |
| master | 2,250.00 | access to 1 private voult |
| Adventure | 3,500.00 | ability to list 3 items to auction house |
| Porcelain | 5,000.00 | ability to use /back! |
| Obsidian | 7,500.00 | ability to set 1 additional home |
| Steel | 9,000.00 | ability to use /craft |
| Sapphire | 12,500.00 | ability to use /trash |
| Emerald | 17,500.00 | ability to use /nickname |
| Ruby | 25,000.00 | access to 1 additional private voult |
| bronze | 32,500.00 | ability to set 1 additional home |
| silver | 40,000.00 | ability to make disposal signs! |
| gold | 55,000.00 | ability to silk spawners! |
| Platinum | 70,000.00 | ability to make a nation! |
| Mithril | 87,500.00 | access to 1 additional private voult |
| Orichalcum | 100,000.00 | ability to set 2 additional homes! |
| Adamantite | 125,000.00 | ability to use /condense |
| Aero | 150,000.00 | access to 1 additional private voult |
| elder | 185,000.00 | ability to use /back on death! |
| soldier | 225,000.00 | ability to list 5 items to auction house |
| armsmen | 300,000.00 | ability to set 3 additional homes! |
| knight | 375,000.00 | access to 1 additional private voult |
| earl | 500,000.00 | ability to keep experience points on death! |
| regent | 650,000.00 | ability to keep inventory on death! |
| duke | 825,000.00 | ability to make colored signs! |
| viceroy | 1,000,000.00 | ability to use color-coded /nickname |
| king | 1,250,000.00 | access to 2 additional private voults! |
| emperor | 1,650,000.00 | ability to use /ptime |
| Prophet | 2,000,000.00 | ability to use /pweather |
| Oracle | 2,750,000.00 | ability to use /fly |
| Charybdis | 3,500,000.00 | ability to use /feed |
| Scylla | 4,500,000.00 | access to 3 additional private voults! |
| Typhon | 5,750,000.00 | ability to /rename |
| Cerberius | 7,000,000.00 | ability to use /heal |
| Aphrodite | 8,750,000.00 | ability to set 5 additional homes! |
| Hermes | 10,500,000.00 | ability to by-pass teleport delay |
| Demeter | 14,000,000.00 | |
| Pureadesu | 20,000,000.00 | ability to use /fix |
| Ibirua | 27,500,000.00 | ability to join 4th job! |
| Majin | 40,000,000.00 | access to 5 additional private voults! |
| OverLord | 65,000,000.00 | access to special vote crate key! |


A set of instructions to do something on a remote host(s)
---
- hosts: webservers
vars:
http_port: 80
max_clients: 200
remote_user: root
tasks:
- name: ensure apache is at the latest version
yum:
name: httpd
state: latest
Yes, you can use them in playbooks
Some of the most popular are:
tasks:
- name: "shut down Debian flavored systems"
command: /sbin/shutdown -t now
when: ansible_facts['os_family'] == "Debian"
- name: add several users
user:
name: "{{ item }}"
state: present
groups: "wheel"
loop:
- testuser1
- testuser2
- name: restart apache
service:
name: httpd
state: restarted
- name: write the apache config file
template:
src: /srv/httpd.j2
dest: /etc/httpd.conf
notify:
- restart apache


Gabriela García
- 20 years.
- Medical Student.
- "I would describe myself as a quiet person who
likes to listen to music and spend time outdoors with my friends to relax"
- Dedicated.
- Bad at math.
- Good dancer.
- Does not have enough money to go out
every weekend to dance with their friends.
Jonathan Oliveira
- 27 years.
- Lawyer.
- "I am a person who is completely dedicated
to work during the week but on weekends
I like to go out and have fun with my friends"
- He is good creating atmosphere at parties.
- Good in interpersonal relationships.
- He does not like the party to end because of
lack of good music.
Carolina Ledesma
- 41 years.
- Hotel Manager.
- "I consider myself a loving, patient and
responsible person who loves to spend quality
time with the family"
- She likes to play board games with his children
while listening to music.
- Hates that your cell phone does not have enough
volume to be able to put it somewhere else than the table.
Salvador Fernández
- 53 years
- French teacher in high school.
- "My students say that I am a fun person who
is always willing to help and who is committed
to education"
- To give his class he usually needs something to play audios.
- He doesn't like that the recorders are so heavy.


Non-governmental organizations have been active in the United Nations since it foundation. They interact with the UN Secretariat, programmes, funds and agencies, and they consult with the member states. NGO works related to the UN comprises a number of activities including information dissemination, awareness raising, development education, policy advocacy, joint operational projects, and providing technical expertise and collaborating with UN agencies, programmes and funds. This work is undertaken in formal and informal ways at the national level and at the UN.
Reporters without Borders defends journalist and media assistants imprisoned or persecuted for doing their job and exposes their mistreatment in many countries. The organization also fights against censorship and laws that undermine press freedom and tries to improve the safety of journalists, especially those reporting in war zones.
Medicine sans frontier also known as Doctors without borders is an international humanitarian non-governmental organization best known for its projects in war-torn regions and developing countries affected by endemic diseases. They deliver emergency aid to people affected by armed conflicts, epidemics, natural disasters and exclusion from healthcare.
Through research and campaigning, Amnesty International helps to fight abuses of human rights worldwide. Mainly they try to bring human rights violation to justice, change oppressive laws and free people who used their right to voice their opinion.
Right to Play is a global organization that attempts to teach children in need with educational games. The organization works in both humanitarian and developmental context, builds local capacity by training community leaders as coaches to deliver its programs across the world, currently operate in 18 countries affected by war, poverty and diseases in Africa, Asia, the Middle East and North America.
At IFEMUN, you will be able to participate in every committee with the possibility to observe, interact with delegates in committee and cooperate with the press. The task as a delegate representing an NGO is to influence the debate about topics related to your ngo and try to get your positions covered in the resolutions.


Bromine Elements
Bromine Elements are a set of polymer components for brazilian needs.
Caching
Some articles about caching
Books
Some of the technical books that I've read.


{{+bindTo:partials.standard_nacl_api}}
| PP_AudioProfile | profile |
| uint32_t | max_channels |
| uint32_t | sample_size |
| uint32_t | sample_rate |
| PP_Bool | hardware_accelerated |
Supported audio profile information.
See the PPB_AudioEncoder function GetSupportedProfiles() for more details.
Whether the profile is hardware accelerated.
Maximum number of channels that can be encoded.
The codec profile.
Sampling rate that can be encoded.
Sample size.


Your Event has been registered! Here is the QR Code to your event.
DOWNLOAD
Your event will be approved by authorities.