midgard.parsers
Framework for parsers
Description:
To add a new parser, simply create a new .py-file which defines a class
inheriting from parsers.Parser. The class needs to be decorated with the
midgard.dev.plugins.register
decorator as follows:
from midgard.parsers import parser
from midgard.lib import plugins
@plugins.register
class MyNewParser(parser.Parser):
...
To use a parser, you will typically use the parse_file
-function defined below
from midgard import parsers
my_new_parser = parsers.parse_file('my_new_parser', 'file_name.txt', ...)
my_data = my_new_parser.as_dict()
The name used in parse_file
to call the parser is the name of the module
(file) containing the parser.
names()
Full name: midgard.parsers.names
Signature: () -> List[str]
List the names of the available parsers
Returns:
Names of the available parsers
parse_file()
Full name: midgard.parsers.parse_file
Signature: (parser_name:str, file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, timer_logger:Union[Callable[[str], NoneType], NoneType]=None, use_cache:bool=False, **parser_args:Any) -> midgard.parsers._parser.Parser
Use the given parser on a file and return parsed data
Specify parser_name
and file_path
to the file that should be parsed. The following parsers are available:
{doc_parser_names}
Data can be retrieved either as Dictionaries, Pandas DataFrames or Midgard Datasets by using one of the methods
as_dict
, as_dataframe
or as_dataset
.
Example:
>>> df = parse_file('rinex2_obs', 'ande3160.16o').as_dataframe() # doctest: +SKIP
Args:
parser_name
: Name of parserfile_path
: Path to file that should be parsed.encoding
: Encoding in file that is parsed.timer_logger
: Logging function that will be used to log timing information.use_cache
: Whether to use a cache to avoid parsing the same file several times.parser_args
: Input arguments to the parser
Returns:
Parser
: Parser with the parsed data
midgard.parsers._parser
Basic functionality for parsing datafiles, extended by individual parsers
Description:
This module contains functions and classes for parsing datafiles. It should typically be used by calling
parsers.parse_file
:
Example:
from midgard import parsers
my_new_parser = parsers.parse_file('my_new_parser', 'file_name.txt', ...)
my_data = my_new_parser.as_dict()
Parser
Full name: midgard.parsers._parser.Parser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
An abstract base class that has basic methods for parsing a datafile
This class provides functionality for parsing a file. You should inherit from one of the specific parsers like for instance ChainParser, LineParser, SinexParser etc
Attributes:
file_path (Path): Path to the datafile that will be read. file_encoding (String): Encoding of the datafile. parser_name (String): Name of the parser (as needed to call parsers.parse_...). data_available (Boolean): Indicator of whether data are available. data (Dict): The (observation) data read from file. meta (Dict): Metainformation read from file.
midgard.parsers._parser_chain
Basic functionality for parsing datafiles line by line
Description:
This module contains functions and classes for parsing datafiles.
Example:
from midgard import parsers
my_new_parser = parsers.parse_file('my_new_parser', 'file_name.txt', ...)
my_data = my_new_parser.as_dict()
ChainParser
Full name: midgard.parsers._parser_chain.ChainParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
An abstract base class that has basic methods for parsing a datafile
This class provides functionality for parsing a file with chained groups of information. You should inherit from
this one, and at least specify the necessary parameters in setup_parser
.
ParserDef
Full name: midgard.parsers._parser_chain.ParserDef
Signature: (end_marker:Callable[[str, int, str], bool], label:Callable[[str, int], Any], parser_def:Dict[Any, Dict[str, Any]], skip_line:Union[Callable[[str], bool], NoneType]=None, end_callback:Union[Callable[[Dict[str, Any]], NoneType], NoneType]=None)
A convenience class for defining the necessary fields of a parser
A single parser can read and parse one group of datalines, defined through the ParserDef by specifying how to parse each line (parser_def), how to identify each line (label), how to recognize the end of the group of lines (end_marker) and finally what (if anything) should be done after all lines in a group is read (end_callback).
The end_marker, label, skip_line and end_callback parameters should all be functions with the following signatures:
end_marker = func(line, line_num, next_line)
label = func(line, line_num)
skip_line = func(line)
end_callback = func(cache)
The parser definition parser_def
includes the parser
, field
, strip
and delimiter
entries. The parser
entry points to the parser function and the field
entry defines how to separate the line in fields. The separated
fields are saved either in a dictionary or in a list. In the last case the line is split on whitespace by
default. With the delimiter
entry the default definition can be overwritten. Leading and trailing whitespace
characters are removed by default before a line is parsed. This default can be overwritten by defining the
characters, which should be removed with the 'strip' entry. The parser
dictionary is defined like:
parser_def = { <label>: {'fields': <dict or list of fields>,
'parser': <parser function>,
'delimiter': <optional delimiter for splitting line>,
'strip': <optional characters to be removed from beginning and end of line>
}}
Args:
end_marker
: A function returning True for the last line in a group.label
: A function returning a label used in the parser_def.parser_def
: A dict with 'parser' and 'fields' defining the parser.skip_line
: A function returning True if the line should be skipped.end_callback
: A function called after reading all lines in a group.
midgard.parsers._parser_line
Basic functionality for parsing datafiles line by line using Numpy
Description:
This module contains functions and classes for parsing datafiles.
Example:
from midgard import parsers
my_new_parser = parsers.parse_file('my_new_parser', 'file_name.txt', ...)
my_data = my_new_parser.as_dict()
LineParser
Full name: midgard.parsers._parser_line.LineParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
An abstract base class that has basic methods for parsing a datafile
This class provides functionality for using numpy to parse a file line by line. You should inherit from this one,
and at least specify the necessary parameters in setup_parser
.
midgard.parsers._parser_rinex
Basic functionality for parsing Rinex files
Description:
This module contains functions and classes for parsing Rinex files.
This file defines the general structure shared by most types of Rinex files, including header information. More specific format details are implemented in subclasses. When calling the parser, you should call the apropriate parser for a given Rinex format.
RinexHeader
Full name: midgard.parsers._parser_rinex.RinexHeader
Signature: (marker:str, fields:Dict[str, Tuple[int, int]], parser:Callable[[Dict[str, str]], Dict[str, Any]])
A convenience class for defining how a Rinex header is parsed
Args:
marker
: Marker of header (as defined in columns 60 and onward).fields
: Dictionary with field names as keys, tuple of start- and end-columns as value.parser
: Function that will parse the fields.
RinexParser
Full name: midgard.parsers._parser_rinex.RinexParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
An abstract base class that has basic methods for parsing a datafile
This class provides functionality for reading Rinex header data. You should inherit from this one,
and at least implement parse_epochs
.
parser_cache()
Full name: midgard.parsers._parser_rinex.parser_cache
Signature: (func:Callable[[_ForwardRef('RinexParser'), Dict[str, str], List[Dict[str, str]]], Dict[str, Any]]) -> Callable[[_ForwardRef('RinexParser'), Dict[str, str]], Dict[str, Any]]
Decorator for adding a cache to parser functions
midgard.parsers._parser_sinex
Basic functionality for parsing Sinex datafiles
Description:
This module contains functions and classes for parsing Sinex datafiles.
References:
- SINEX Format: https://www.iers.org/IERS/EN/Organization/AnalysisCoordinator/SinexFormat/sinex.html
SinexBlock
Full name: midgard.parsers._parser_sinex.SinexBlock
Signature: (marker:str, fields:Tuple[midgard.parsers._parser_sinex.SinexField, ...], parser:Callable[[<built-in function array>, Tuple[str, ...]], Dict[str, Any]])
A convenience class for defining a Sinex block
Args:
marker
: Sinex marker denoting the block.fields
: Fields in Sinex block.parser
: Function used to parse the data.
SinexField
Full name: midgard.parsers._parser_sinex.SinexField
Signature: (name:str, start_col:int, dtype:Union[str, NoneType], converter:Union[str, NoneType]=None)
A convenience class for defining the fields in a Sinex block
Args:
name
: Name of field.start_col
: Starting column of field (First column is 0)dtype
: String, using numpy notation, defining type of field, use None to ignore field.converter
: Optional, name of converter to apply to field data.
SinexParser
Full name: midgard.parsers._parser_sinex.SinexParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, header:bool=True) -> None
An abstract base class that has basic methods for parsing a Sinex file
This class provides functionality for parsing a sinex file with chained
groups of information. You should inherit from this one, and at least
specify which Sinex blocks you are interested in by implementing
setup_parser
, as well as implement methods that parse each block if
needed.
parsing_factory()
Full name: midgard.parsers._parser_sinex.parsing_factory
Signature: () -> Callable[..., Dict[str, Any]]
Create a default parsing function for a Sinex block
The default parsing function returns a dictionary containing all fields of the block as separated arrays. This will be stored in self.data['{marker}'] with the {marker} of the current block.
Returns:
Simple parsing function for one Sinex block.
parsing_matrix_factory()
Full name: midgard.parsers._parser_sinex.parsing_matrix_factory
Signature: (marker:str, size_marker:str) -> Callable[..., Dict[str, Any]]
Create a parsing function for parsing a matrix within a Sinex block
The default parsing function converts data to a symmetric matrix and stores
it inside self.data[marker]
.
The size of the matrix is set to equal the number of parameters in the
size_marker
-block. If that block is not parsed/found. The size is set to
the last given row index. If some zero elements in the matrix are omitted
this might be wrong.
Args:
marker
: Marker of Sinex block.size_marker
: Marker of a different Sinex block indicating the size of the matrix.
Returns:
Simple parsing function for one Sinex block.
midgard.parsers.anubis
A parser for reading Anubis xtr-files
AnubisXtrParser
Full name: midgard.parsers.anubis.AnubisXtrParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading Anubis XTR files
midgard.parsers.bcecmp_sisre
A parser for reading DLR BCEcmp Software SISRE output files
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='bcecmp_sisre', file_path='BCEcmp_GAL_FNAV_E1E5A_com_2018_032.OUT')
data = p.as_dict()
Description:
Reads data from files in the BCEcmp Software output file format. The BCEcmp Software is developed and used by DLR.
BcecmpParser
Full name: midgard.parsers.bcecmp_sisre.BcecmpParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading DLR BCEcmp Software output files.
The following data are available after reading BCEcmp Software output file:
| Key | Description |
|---|---|
| age_min | age of ephemeris in [min] |
| clk_diff_with_dt_mean | Satellite clock correction difference corrected for average satellite clock offset |
| difference for given GNSS and epoch in [m] | |
| dalong_track | Along-track orbit difference in [m] |
| dcross_track | Cross-track orbit difference in [m] |
| dradial | Radial orbit difference in [m] |
| dradial_wul | Worst-user-location (wul) SISRE? |
| satellite | Satellite PRN number together with GNSS identifier (e.g. G07) |
| sisre | Signal-in-space range error [m] |
| time | Observation time |
| used_iodc | GPS: IODC (Clock issue of data indicates changes (set equal to IODE)) |
| QZSS: IODC | |
| used_iode | Ephemeris issue of data indicates changes to the broadcast ephemeris: |
| - GPS: Ephemeris issue of data (IODE), which is set equal to IODC | |
| - Galileo: Issue of Data of the NAV batch (IODnav) | |
| - QZSS: Ephemeris issue of data (IODE) | |
| - BeiDou: Age of Data Ephemeris (AODE) | |
| - IRNSS: Issue of Data, Ephemeris and Clock (IODEC) |
and meta-data:
| Key | Description |
|---|---|
| __data_path__ | File path |
| __parser_name__ | Parser name |
midgard.parsers.csv_
A parser for reading CSV output files
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='csv_', file_path='ADOP20473_0000.csv')
data = p.as_dict()
Description:
Reads data from files in CSV output format. The header information of the CSV file is not read (TODO).
CsvParser
Full name: midgard.parsers.csv_.CsvParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading CSV output files
The CSV data header line is used to define the keys of the data dictionary. The values of the data dictionary are represented by the CSV colum values.
Following meta-data are available after reading of CSV file:
| Key | Description |
|---|---|
| __data_path__ | File path |
| __parser_name__ | Parser name |
midgard.parsers.discontinuities_snx
A parser for reading data from discontinuities.snx in SINEX format
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='discontinuities_snx', file_path='discontinuties.snx')
data = p.as_dict()
Description:
Reads discontinuities of GNSS station timeseries in SINEX format .
DiscontinuitiesSnxParser
Full name: midgard.parsers.discontinuities_snx.DiscontinuitiesSnxParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, header:bool=True) -> None
A parser for reading data from discontinuties.snx file in SINEX format
The solution discontinuity dictionary has as keys the site identifiers and as value the 'solution_discontinuity' entry. The dictionary has following strucuture:
self.data[site] = { 'solution_discontinuity': [] } # SOLUTION/DISCONTINUITY SINEX block information
with the 'solution_discontinuity' dictionary entries
solution_discontinuity[ii] = [ 'point_code': point_code, 'soln': soln, 'obs_code': obs_code, 'start_time': start_time, 'end_time': end_time, 'event_code': event_code, 'description': description ]
The counter 'ii' ranges from 0 to n and depends on how many discontinuities exists for a site. Note also, that time entries (e.g. start_time, end_time) are given as 'datetime'. If the time is defined as 00:000:00000 in the SINEX file, then the value is saved as 'None' in the Sinex class.
midgard.parsers.galileo_constellation_html
A parser for reading Galileo constellation info from a web page
See https://www.gsc-europa.eu/system-status/Constellation-Information for an example
GalileoConstellationHTMLParser
Full name: midgard.parsers.galileo_constellation_html.GalileoConstellationHTMLParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger:Union[Callable[[str], NoneType], NoneType]=<built-in function print>, url:Union[str, NoneType]=None) -> None
A parser for reading Galileo constellation info from a web page
See https://www.gsc-europa.eu/system-status/Constellation-Information for an example
midgard.parsers.gipsy_tdp
A parser for reading NASA JPL Gipsy time dependent parameter (TDP) file
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='gipsy_tdp', file_path='final.tdp')
data = p.as_dict()
Description:
Reads data from files in Gipsy time dependent parameter (TDP) format.
GipsyTdpParser
Full name: midgard.parsers.gipsy_tdp.GipsyTdpParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading Gipsy time dependent parameter (TDP) file
Following data are available after reading Gipsy TDP output file:
| Key | Description |
|---|---|
| apriori_value | Nominal value. This field contains the last value used by the model. |
| name | Parameter name. |
| sigma | The sigma associated with the value of the parameter. A negative value indicates it |
| should be used for interpolation by the file reader read_time_variation in | |
| $GOA/libsrc/time_variation. If no sigmas are computed by the smapper, a 1.0 will be | |
| placed here. | |
| time_past_j2000 | Time given in GPS seconds past J2000. |
| value | Accumulated value of the parameter at time and includes any nominal, or iterative |
| correction. This is the only entry used by the model. |
and meta-data:
| Key | Description |
|---|---|
| __data_path__ | File path |
| __parser_name__ | Parser name |
midgard.parsers.glab_output
A parser for reading gLAB output files
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='glab_output', file_path='glab_output.txt')
data = p.as_dict()
Description:
GlabOutputParser
Full name: midgard.parsers.glab_output.GlabOutputParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading gLAB output files
The keys of the data dictionary are defined depending, which kind of gLAB output file is read. The values of the data dictionary are represented by the gLAB colum values.
Following meta-data are available after reading of gLAB files:
| Key | Description |
|---|---|
| __data_path__ | File path |
| __parser_name__ | Parser name |
midgard.parsers.gnss_antex
A parser for reading ANTEX format 1.4 data
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='gnss_antex', file_path='igs14.atx')
data = p.as_dict()
Description:
Reads data from files in the GNSS Antenna Exchange (ANTEX) file format version 1.4 (see :cite:antex
).
AntexParser
Full name: midgard.parsers.gnss_antex.AntexParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading ANTEX file
The parser reads GNSS ANTEX format 1.4 (see :cite:antex
).
The 'data' attribute is a dictionary with GNSS satellite PRN or receiver antenna as key. The GNSS satellite antenna corrections are time dependent and saved with "valid from" datetime object entry. The dictionary looks like:
dout = { <prn> : { <valid from>: { cospar_id: <value>,
sat_code: <value>,
sat_type: <value>,
valid_until: <value>,
azimuth: <list with azimuth values>,
elevation: <list with elevation values>,
<frequency>: { azi: [<list with azimuth-elevation dependent corrections>],
neu: [north, east, up],
noazi: [<list with elevation dependent corrections>] }}},
<receiver antenna> : { azimuth: <list with azimuth values>,
elevation: <list with elevation values>,
<frequency>: { azi: [<array with azimuth-elevation dependent corrections>],
neu: [north, east, up],
noazi: [<list with elevation dependent corrections>] }}}
with following entries:
| Value | Type | Description |
|---|---|---|
| azi | numpy.ndarray | Array with azimuth-elevation dependent antenna correction in [mm] with |
| the shape: number of azimuth values x number of elevation values. | ||
| azimuth | numpy.ndarray | List with azimuth values in [rad] corresponding to antenna corrections |
given in azi . |
||
| cospar_id | str | COSPAR ID |
| orbit, xxx -> sequential satellite number for that year, a -> alpha | ||
| numeric sequence number within a launch | ||
| elevation | numpy.ndarray | List with elevation values in [rad] corresponding to antenna |
corrections given in azi or noazi . |
||
| str | Frequency identifier (e.g. G01 - GPS L1) | |
| neu | list | North, East and Up eccentricities in [m]. The eccentricities of the |
| mean antenna phase center is given relative to the antenna reference | ||
| point (ARP) for receiver antennas or to the center of mass of the | ||
| satellite in X-, Y- and Z-direction. | ||
| noazi | numpy.ndarray | List with elevation dependent (non-azimuth-dependent) antenna |
| correction in [mm]. | ||
| str | Satellite code e.g. GPS PRN, GLONASS slot or Galileo SVID number | |
| str | Receiver antenna name together with radome code | |
| sat_code | str | Satellite code e.g. GPS SVN, GLONASS number or Galileo GSAT number |
| sat_type | str | Satellite type (e.g. BLOCK IIA) |
| valid_from | datetime.datetime | Start of validity period of satellite in GPS time |
| valid_until | datetime.datetime | End of validity period of satellite in GPS time |
The 'meta' attribute is a dictionary with following entries:
| Value | Type | Description |
|---|---|---|
| comment | list | Header commments given in list line by line |
| pcv_type | str | Phase center variation type |
| ref_antenna | str | Reference antenna type for relative antenna |
| ref_serial_num | str | Serial number of the reference antenna |
| sat_sys | str | Satellite system |
| version | str | Format version |
Attributes:
data
: (dict), Contains the (observation) data read from file.data_available
: (bool), Indicator of whether data are available.file_path
: (pathlib.Path), File path.parser_name
: (str), Parser name.meta
: (dict), Contains metainformation read from file.
midgard.parsers.gnss_bernese_crd
A parser for reading Bernese CRD file
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='gnss_bernese_crd', file_path='W20216.CRD')
data = p.as_dict()
Description:
Reads data from files in Bernese CRD format.
GnssCrdParser
Full name: midgard.parsers.gnss_bernese_crd.GnssCrdParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading Bernese CRD file
Following data are available after reading Bernese CRD file:
| Parameter | Description |
|---|---|
| num | Number of station coordinate solution |
| station | 4-digit station identifier |
| domes | Domes number |
| gpssec | Seconds of GPS week |
| pos_x | X-coordinate of station position |
| pos_y | Y-coordinate of station position |
| pos_z | Z-coordinate of station position |
| flag | Flag |
and meta-data:
| Key | Description |
|---|---|
| __data_path__ | File path |
| __parser_name__ | Parser name |
midgard.parsers.gnss_sinex_igs
A parser for reading data from igs.snx file based on IGS sitelog files in SINEX format
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='gnss_sinex_igs', file_path='igs.snx')
data = p.as_dict()
Description:
Reads station information (e.g. approximated station coordinates, receiver and antenna type, station eccentricities, ...) igs.snx file in SINEX format.
IgsSnxParser
Full name: midgard.parsers.gnss_sinex_igs.IgsSnxParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, header:bool=True) -> None
A parser for reading data from igs.snx file based on IGS sitelog files in SINEX format
site - Site dictionary, whereby keys are the site identifiers and values are a site entry dictionary with the keys 'site_antenna', 'site_eccentricity', 'site_id' and 'site_receiver'. The site dictionary has following strucuture:
self.site[site] = { 'site_antenna': [], # SITE/ANTENNA SINEX block information
'site_eccentricity': [], # SITE/ECCENTRICITY block information
'site_id': {}, # SITE/ID block information
'site_receiver': [], # SITE/RECEIVER block information }
with the site entry dictionary entries
site_antenna[ii] = { 'point_code': point_code,
'soln': soln,
'obs_code': obs_code,
'start_time': start_time,
'end_time': end_time,
'antenna_type': antenna_type,
'radome_type': radome_type,
'serial_number': serial_number }
site_eccentricity[ii] = { 'point_code': point_code,
'soln': soln,
'obs_code': obs_code,
'start_time': start_time,
'end_time': end_time,
'reference_system': reference_system,
'vector_1': vector_1,
'vector_2': vector_2,
'vector_3': vector_3,
'vector_type': UNE }
site_id = { 'point_code': point_code,
'domes': domes,
'marker': marker,
'obs_code': obs_code,
'description': description,
'approx_lon': approx_lon,
'approx_lat': approx_lat,
'approx_height': approx_height }
site_receiver[ii] = { 'point_code': point_code,
'soln': soln,
'obs_code': obs_code,
'start_time': start_time,
'end_time': end_time,
'receiver_type': receiver_type,
'serial_number': serial_number,
'firmware': firmware }
The counter 'ii' ranges from 0 to n and depends on how many antenna type, receiver type and
antenna monument changes were done at each site. Note also, that time entries (e.g. start_time,
end_time) are given in Modified Julian Date. If the time is defined as 00:000:00000 in the SINEX
file, then the value is saved as 'None' in the Sinex class.
midgard.parsers.rinex2_nav
A parser for reading GNSS RINEX navigation file (exception GLONASS and SBAS)
Example:
from midgard.data import dataset
from midgard import parsers
# Parse data
parser = parsers.parse_file(parser_name="rinex2_nav", file_path=file_path)
# Create a empty Dataset
dset = data.Dataset()
# Fill Dataset with parsed data
parser.write_to_dataset(dset)
Description:
Reads GNSS data from files in the RINEX navigation file format 2.11 (see :cite:rinex2
). An exception is, that this
parser does not handle GLONASS and SBAS navigation messages. All navigation time epochs (time of clock (toc)) are
converted to GPS time scale.
The navigation message is not defined for GALILEO, BeiDou, QZSS and IRNSS in RINEX format 2.11. In this case the RINEX
3.03 definition is used (see :cite:rinex3
).
Rinex2NavParser
Full name: midgard.parsers.rinex2_nav.Rinex2NavParser
Signature: (*args, **kwargs)
A parser for reading RINEX navigation file
The parser reads GNSS broadcast ephemeris in RINEX format 2.11 (see :cite:rinex2
).
TODO: Would it not be better to use one leading underscore for non-public methods and instance variables.
Attributes:
data (dict): Dict containing the (navigation) data read from file. data_available (bool): Indicator of whether data are available. day_offset (int): Day offset used to calculate the number of days to read. dependencies (list): List of files that have been read by the parser. file_key (str): Key to the SP3 orbit file defined in files.conf file. file_path (pathlib.PosixPath): File path to SP3 orbit file. meta (dict): Dict containing the metainformation read from file, whereby the current day define the key and the values are the RINEX header entries. rundate (datetime.date): Date of model run. system(str): GNSS identifier. vars (dict): Variables needed to identify RINEX observation file based on definition in files.conf file.
Methods: calculate_data() Carry out the defined calculators copy_cache_to_data() Copy contents of the cache to the data datastructure copy_cache_to_meta() Copy contents of the cache to the meta datastructure parse() Parse data parse_default() Add the contents of line to data parse_default_meta() Add the contents of line to meta parse_line() Parse line read_data() Read data from datafiles setup_calculators() List steps necessary for postprocessing setup_parsers() Setup parser definition write_to_dataset() Write data based on GNSS SP3 orbit file
_check_nav_message() Check correctness of navigation message
_get_system_from_file_extension() Get GNSS by reading RINEX navigation file extension
_parse_file() Read a data file and parse the content
_parse_float() Parse float entries of SP3 header to instance variable 'meta'
_parse_ion_alpha() Parse entries of RINEX header `ION ALPHA` to instance variable `meta`.
_parse_ion_beta() Parse entries of RINEX header `ION BETA` to instance variable `meta`.
_parse_obs_float() Parse float entries of RINEX navigation data block to instance variable 'data'.
_parse_observation_epoch() Parse observation epoch information of RINEX navigation data record
_parse_string() Parse string entries of SP3 header to instance variable 'meta'
_parse_string_list() Parse string entries of RINEX header to instance variable 'meta' in a list
_parse_time_system_corr() Not defined.
_rename_fields_based_on_system() Rename general GNSS fields to GNSS specific ones
_time_system_correction() Apply correction to given time system for getting GPS time scale
SYSNAMES (dict)
SYSNAMES = {'gnss_data_info': {'G': 'codes_l2', 'J': 'codes_l2', 'E': 'data_source'}, 'gnss_interval': {'G': 'fit_interval', 'J': 'fit_interval', 'C': 'age_of_clock_corr'}, 'gnss_iodc_groupdelay': {'G': 'iodc', 'J': 'iodc', 'E': 'bgd_e1_e5b', 'C': 'tgd_b2_b3'}, 'gnss_l2p_flag': {'G': 'l2p_flag', 'J': 'l2p_flag'}, 'gnss_tgd_bgd': {'G': 'tgd', 'J': 'tgd', 'E': 'bgd_e1_e5a', 'C': 'tgd_b1_b3', 'I': 'tgd'}}
SYSTEM_FILE_EXTENSION (dict)
SYSTEM_FILE_EXTENSION = {'n': 'G', 'g': 'R', 'l': 'E'}
SYSTEM_TIME_OFFSET_TO_GPS_SECOND (dict)
SYSTEM_TIME_OFFSET_TO_GPS_SECOND = {'C': 14, 'E': 0, 'I': 0, 'J': 0}
SYSTEM_TIME_OFFSET_TO_GPS_WEEK (dict)
SYSTEM_TIME_OFFSET_TO_GPS_WEEK = {'C': 1356, 'E': 0, 'I': 0, 'J': 0}
midgard.parsers.rinex2_nav_header
RINEX navigation header classes for file format version 2.xx
Rinex2NavHeaderMixin
Full name: midgard.parsers.rinex2_nav_header.Rinex2NavHeaderMixin
Signature: ()
A mixin defining which RINEX navigation headers are mandatory and optional in RINEX version 2.xx
Rinex2NavHeaderParser
Full name: midgard.parsers.rinex2_nav_header.Rinex2NavHeaderParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
A parser for reading just the RINEX version 2.xx navigation header
The data in the rinex file will not be parsed.
midgard.parsers.rinex2_obs_header
RINEX observation header classes for file format version 3.xx
Rinex2ObsHeaderMixin
Full name: midgard.parsers.rinex2_obs_header.Rinex2ObsHeaderMixin
Signature: ()
A mixin defining which RINEX observation headers are mandatory and optional in RINEX version 2.xx
Rinex2ObsHeaderParser
Full name: midgard.parsers.rinex2_obs_header.Rinex2ObsHeaderParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
A parser for reading just the RINEX version 2.xx observation header
The data in the rinex file will not be parsed.
midgard.parsers.rinex3_clk
A parser for reading RINEX clock files with version 3.xx
Rinex3ClkParser
Full name: midgard.parsers.rinex3_clk.Rinex3ClkParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
A parser for reading RINEX clock files with version 3.xx
midgard.parsers.rinex3_clk_header
RINEX clock header classes for file format version 3.xx
Rinex3ClkHeaderMixin
Full name: midgard.parsers.rinex3_clk_header.Rinex3ClkHeaderMixin
Signature: ()
A mixin defining which RINEX clock headers are mandatory and optional in RINEX version 3.xx
Rinex3ClkHeaderParser
Full name: midgard.parsers.rinex3_clk_header.Rinex3ClkHeaderParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
A parser for reading just the RINEX version 3.xx clock header
The data in the rinex file will not be parsed.
midgard.parsers.rinex3_nav
A parser for reading GNSS RINEX v3.03 navigation file (exception GLONASS and SBAS)
Example:
from midgard.data import dataset
from midgard import parsers
# Parse data
parser = parsers.parse_file(parser_name="rinex3_nav", file_path=file_path)
# Create a empty Dataset
dset = data.Dataset()
# Fill Dataset with parsed data
parser.write_to_dataset(dset)
Description:
Reads GNSS data from files in the RINEX navigation file format 3.03 (see :cite:rinex3
). An exception is also, that
this parser does not handle GLONASS and SBAS navigation messages. All navigation time epochs (time of clock (toc)) are
converted to GPS time scale.
Rinex3NavParser
Full name: midgard.parsers.rinex3_nav.Rinex3NavParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading RINEX navigation file
The parser reads GNSS broadcast ephemeris in RINEX format 3.03 (see :cite:rinex3
) except for GLONASS and SBAS.
TODO: Would it not be better to use one leading underscore for non-public methods and instance variables.
Attributes:
data (dict): Dict containing the (navigation) data read from file. data_available (bool): Indicator of whether data are available. day_offset (int): Day offset used to calculate the number of days to read. dependencies (list): List of files that have been read by the parser. file_key (str): Key to the SP3 orbit file defined in files.conf file. file_path (pathlib.PosixPath): File path to SP3 orbit file. meta (dict): Dict containing the metainformation read from file, whereby the current day define the key and the values are the RINEX header entries. rundate (datetime.date): Date of model run. vars (dict): Variables needed to identify RINEX observation file based on definition in files.conf file.
Methods: calculate_data() Carry out the defined calculators copy_cache_to_data() Copy contents of the cache to the data datastructure copy_cache_to_meta() Copy contents of the cache to the meta datastructure parse() Parse data parse_default() Add the contents of line to data parse_default_meta() Add the contents of line to meta parse_line() Parse line read_data() Read data from datafiles setup_calculators() List steps necessary for postprocessing setup_parsers() Setup parser definition write_to_dataset() Write data based on GNSS SP3 orbit file
_check_nav_message() Check correctness of navigation message
_parse_file() Read a data file and parse the content
_parse_float() Parse float entries of SP3 header to instance variable 'meta'
_parse_ionospheric_corr() Parse entries of RINEX header `IONOSPHERIC CORR` to instance variable `meta`.
_parse_leap_seconds() Parse entries of RINEX header `LEAP SECONDS` to instance variable `meta`.
_parse_obs_float() Parse float entries of RINEX navigation data block to instance variable 'data'.
_parse_observation_epoch() Parse observation epoch information of RINEX navigation data record
_parse_string() Parse string entries of SP3 header to instance variable 'meta'
_parse_string_list() Parse string entries of RINEX header to instance variable 'meta' in a list
_parse_time_system_corr() Not defined.
_rename_fields_based_on_system() Rename general GNSS fields to GNSS specific ones
_time_system_correction() Apply correction to given time system for getting GPS time scale
SYSNAMES (dict)
SYSNAMES = {'gnss_data_info': {'G': 'codes_l2', 'J': 'codes_l2', 'E': 'data_source'}, 'gnss_interval': {'G': 'fit_interval', 'J': 'fit_interval', 'C': 'age_of_clock_corr'}, 'gnss_iodc_groupdelay': {'G': 'iodc', 'J': 'iodc', 'E': 'bgd_e1_e5b', 'C': 'tgd_b2_b3'}, 'gnss_l2p_flag': {'G': 'l2p_flag', 'J': 'l2p_flag'}, 'gnss_tgd_bgd': {'G': 'tgd', 'J': 'tgd', 'E': 'bgd_e1_e5a', 'C': 'tgd_b1_b3', 'I': 'tgd'}}
SYSTEM_TIME_OFFSET_TO_GPS_SECOND (dict)
SYSTEM_TIME_OFFSET_TO_GPS_SECOND = {'C': 14, 'E': 0, 'G': 0, 'I': 0, 'J': 0}
SYSTEM_TIME_OFFSET_TO_GPS_WEEK (dict)
SYSTEM_TIME_OFFSET_TO_GPS_WEEK = {'C': 1356, 'E': 0, 'G': 0, 'I': 0, 'J': 0}
midgard.parsers.rinex3_nav_header
RINEX navigation header classes for file format version 3.xx
Rinex3NavHeaderMixin
Full name: midgard.parsers.rinex3_nav_header.Rinex3NavHeaderMixin
Signature: ()
A mixin defining which RINEX navigation headers are mandatory and optional in RINEX version 3.xx
Rinex3NavHeaderParser
Full name: midgard.parsers.rinex3_nav_header.Rinex3NavHeaderParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
A parser for reading just the RINEX version 3.xx navigation header
The data in the rinex file will not be parsed.
midgard.parsers.rinex3_obs_header
RINEX observation header classes for file format version 3.xx
Rinex3ObsHeaderMixin
Full name: midgard.parsers.rinex3_obs_header.Rinex3ObsHeaderMixin
Signature: ()
A mixin defining which RINEX observation headers are mandatory and optional in RINEX version 3.xx
Rinex3ObsHeaderParser
Full name: midgard.parsers.rinex3_obs_header.Rinex3ObsHeaderParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
A parser for reading just the RINEX version 3.xx observation header
The data in the rinex file will not be parsed.
midgard.parsers.rinex_nav
A parser for reading GNSS RINEX navigation files
Example:
from midgard.data import dataset
from midgard import parsers
# Parse data
parser = parsers.parse(file_path=file_path)
# Create a empty Dataset
dset = data.Dataset()
# Fill Dataset with parsed data
parser.write_to_dataset(dset)
Description:
Reads GNSS ephemeris data from RINEX navigation file in format 2.11 (see :cite:rinex2
) or 3.03 (see :cite:rinex3
).
get_rinex2_or_rinex3()
Full name: midgard.parsers.rinex_nav.get_rinex2_or_rinex3
Signature: (file_path:pathlib.PosixPath) -> 'TODO'
Use either Rinex2NavParser or Rinex3NavParser for reading orbit files in format 2.11 or 3.03.
Firstly the RINEX file version is read. Based on the read version number it is decided, which Parser should be used.
Args:
file_path (pathlib.PosixPath): File path to broadcast orbit file.
midgard.parsers.spring_csv
A parser for reading Spring CSV output files
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='spring_csv', file_path='ADOP20473_0000.csv')
data = p.as_dict()
Description:
Reads data from files in Spring CSV output format. The header information of the Spring CSV file is not read (TODO).
SpringCsvParser
Full name: midgard.parsers.spring_csv.SpringCsvParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading Spring CSV output files
The Spring CSV data header line is used to define the keys of the data dictionary. The values of the data dictionary are represented by the Spring CSV colum values.
Depending on the Spring CSV following dataset fields can be available:
| Field | Description |
|---|---|
| acquiredsat | Number of acquired satellites (TODO?) |
| gdop | Geometric dilution of precision |
| hdop | Horizontal dilution of precision |
| pdop | Position (3D) dilution of precision |
| satinview | Number of satellites in view |
| system | GNSS identifier based on RINEX definition (e.g. G: GPS, E: Galileo) |
| tdop | Time dilution of precision |
| time | Observation time given as Time object |
| usedsat | Number of used satellites |
| vdop | Vertical dilution of precision |
| ... | ... |
midgard.parsers.terrapos_position
A parser for reading Terrapos position output file
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='terrapos_position', file_path='Gal_C1X_brdc_land_30sec_24hrs_FNAV-file.txt')
data = p.as_dict()
Description:
Reads data from files in Terrapos position output format.
TerraposPositionParser
Full name: midgard.parsers.terrapos_position.TerraposPositionParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading Terrapos position output file
Following data are available after reading Terrapos position file:
| Key | Description |
|---|---|
| gpsweek | GPS week |
| gpssec | Seconds of GPS week |
| head | Head in [deg] |
| height | Ellipsoidal height in [m] |
| lat | Latitude in [deg] |
| lon | Longitude in [deg] |
| num_sat | Number of satellites |
| pdop | Position Dilution of Precision (PDOP) |
| pitch | Pitch in [deg] |
| reliability_east | East position external reliability in [m] #TODO: Is that correct? |
| reliability_height | Height position external reliability in [m] #TODO: Is that correct? |
| reliability_north | North position external reliability in [m] #TODO: Is that correct? |
| roll | Roll in [deg] |
| sigma_east | Standard deviation of East position in [m] #TODO: Is that correct? |
| sigma_height | Standard deviation of Height position in [m] #TODO: Is that correct? |
| sigma_north | Standard deviation of North position in [m] #TODO: Is that correct? |
and meta-data:
| Key | Description |
|---|---|
| __data_path__ | File path |
| __parser_name__ | Parser name |
midgard.parsers.terrapos_residual
A parser for reading Terrapos residual file
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='terrapos_residual', file_path='PPP-residuals.txt')
data = p.as_dict()
Description:
Reads data from files in Terrapos residual format.
TerraposResidualParser
Full name: midgard.parsers.terrapos_residual.TerraposResidualParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading Terrapos residual file
Following data are available after reading Terrapos residual file:
| Parameter | Description |
|---|---|
| azimuth | Azimuth of satellites in [deg] |
| elevation | Elevation of satellites in [deg] |
| gpsweek | GPS week |
| gpssec | Seconds of GPS week |
| residual_code | Code (pseudorange) residuals in [m] |
| residual_doppler | Doppler residuals in [m] |
| residual_phase | Carrier-phase residuals in [m] |
| satellite | Satellite PRN number together with GNSS identifier (e.g. G07) |
| system | GNSS identifier |
and meta-data:
| Key | Description |
|---|---|
| __data_path__ | File path |
| __parser_name__ | Parser name |
midgard.parsers.timeseries_env
A parser for reading timeseries files in ENV format
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='timeseries_env', file_path='stas.env')
data = p.as_dict()
Description:
Reads data from files timeseries files in ENV (east, north, vertical) format
TimeseriesEnvParser
Full name: midgard.parsers.timeseries_env.TimeseriesEnvParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading timeseries files in ENV format
Following data are available after reading timeseries ENV file:
| Key | Description |
|---|---|
| date | Date in format yyMMMdd (e.g. 18MAY10). |
| year | Date in unit year. |
| east | East coordinate in [mm]. |
| east_sigma | Standard devication of east coordinate in [mm]. |
| north | North coordinate in [mm]. |
| north_sigma | Standard devication of north coordinate in [mm]. |
| vertical | Vertical coordinate in [mm]. |
| vertical_sigma | Standard devication of vertical coordinate in [mm]. |
and meta-data:
| Key | Description |
|---|---|
| __data_path__ | File path |
| __params__ | np.genfromtxt parameters |
| __parser_name__ | Parser name |
midgard.parsers.timeseries_tsview
A parser for reading timeseries files in TSVIEW format
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='timeseries_tsview', file_path='stas.enu')
data = p.as_dict()
Description:
Reads data from files timeseries files in TSVIEW (east, north, up) format
TimeseriesEnvParser
Full name: midgard.parsers.timeseries_tsview.TimeseriesEnvParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading timeseries files in TSVIEW format
Following data are available after reading timeseries TSVIEW file:
| Key | Description |
|---|---|
| mjd | Modified Julian Date. |
| east | East coordinate in [mm]. |
| north | North coordinate in [mm]. |
| up | Up coordinate in [mm]. |
and meta-data:
| Key | Description |
|---|---|
| __data_path__ | File path |
| __params__ | np.genfromtxt parameters |
| __parser_name__ | Parser name |
midgard.parsers.ure_control_tool_csv
A parser for reading URE Control Tool CSV output files
Example:
from midgard import parsers
p = parsers.parse_file(parser_name='ure_control_tool_csv', file_path='G_GAL258_E1E5a_URE-AllPRN_190301.csv')
data = p.as_dict()
Description:
Reads data from files in URE Control Tool CSV output format. The header information of the URE Control Tool CSV file is not read (TODO).
UreControlToolCsvParser
Full name: midgard.parsers.ure_control_tool_csv.UreControlToolCsvParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading URE Control Tool CSV output files
The URE Control Tool CSV data header line is used to define the keys of the data dictionary. The values of the data dictionary are represented by the URE Control Tool CSV colum values.
midgard.parsers.vlbi_source_names
A parser for reading IVS source names translation table
VlbiSourceNamesParser
Full name: midgard.parsers.vlbi_source_names.VlbiSourceNamesParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None) -> None
A parser for reading IVS source names translation table
See https://vlbi.gsfc.nasa.gov/output for an example of a IVS source name file
midgard.parsers.wip_rinex
A parser for reading Rinex files
rinex()
Full name: midgard.parsers.wip_rinex.rinex
Signature: (**parser_args:Any) -> midgard.parsers._parser_rinex.RinexParser
Dispatch to correct subclass based on Rinex file type
midgard.parsers.wip_rinex2_nav
A parser for reading RINEX navigation files with version 2.xx
Rinex2NavParser
Full name: midgard.parsers.wip_rinex2_nav.Rinex2NavParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
A parser for reading RINEX navigation files with version 2.xx
midgard.parsers.wip_rinex2_obs
A parser for reading RINEX observation files with version 2.xx
Rinex2ObsParser
Full name: midgard.parsers.wip_rinex2_obs.Rinex2ObsParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
A parser for reading RINEX observation files with version 2.xx
midgard.parsers.wip_rinex3_nav
A parser for reading RINEX navigation files with version 3.xx
Rinex3NavParser
Full name: midgard.parsers.wip_rinex3_nav.Rinex3NavParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
A parser for reading RINEX navigation files with version 3.xx
midgard.parsers.wip_rinex3_obs
A parser for reading RINEX observation files with version 3.xx
Rinex3ObsParser
Full name: midgard.parsers.wip_rinex3_obs.Rinex3ObsParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
A parser for reading RINEX observation files with version 3.xx
midgard.parsers.wip_rinex_clk
A parser for reading Rinex navigation files
RinexClkParser
Full name: midgard.parsers.wip_rinex_clk.RinexClkParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
Class for defining common methods for RINEX clock parsers.
rinex_clk()
Full name: midgard.parsers.wip_rinex_clk.rinex_clk
Signature: (**parser_args:Any) -> midgard.parsers._parser_rinex.RinexParser
Dispatch to correct subclass based on version in Rinex file
midgard.parsers.wip_rinex_nav
A parser for reading Rinex navigation files
RinexNavParser
Full name: midgard.parsers.wip_rinex_nav.RinexNavParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
Class for defining common methods for RINEX navigation parsers.
rinex_nav()
Full name: midgard.parsers.wip_rinex_nav.rinex_nav
Signature: (**parser_args:Any) -> midgard.parsers._parser_rinex.RinexParser
Dispatch to correct subclass based on version in Rinex file
midgard.parsers.wip_rinex_obs
A parser for reading Rinex observation files
RinexObsParser
Full name: midgard.parsers.wip_rinex_obs.RinexObsParser
Signature: (file_path:Union[str, pathlib.Path], encoding:Union[str, NoneType]=None, logger=<built-in function print>, sampling_rate:Union[int, NoneType]=None, strict:bool=False) -> None
Class for defining common methods for RINEX observation parsers.
rinex_obs()
Full name: midgard.parsers.wip_rinex_obs.rinex_obs
Signature: (**parser_args:Any) -> midgard.parsers._parser_rinex.RinexParser
Dispatch to correct subclass based on version in Rinex file


I'd like to help repair the
{{page.title | downcase}}
Your name
Please enter your name
Email address
Please enter a valid email address
Amount (£)
In pounds (and pence) please
Message
Card Details
Make payment
{(successMessage)}
{(failureMessage)}


# -*- coding: utf-8 -*-
"""
Preprocess the data
"""
#######################################
import re
import logging
import io
import spacy
import gensim
from sptm.utils import force_unicode
__author__ = "Rochan Avlur Venkat"
__credits__ = ["Anupam Mediratta"]
__license__ = "MIT"
__version__ = "1.0"
__maintainer__ = "Rochan Avlur Venkat"
__email__ =<EMAIL_ADDRESS>#######################################
# Setup logging for gensim
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', \
level=logging.INFO)
# Setup spacy model for custom preprocessing of data used in tokenize_custom()
NLP = spacy.load('en_core_web_sm')
[docs]class Corpus:
"""Corpus object to handle all pre-processing of data
read_reviews() method assumes data in the file to be in the following
format:
<metadata></t>...</t><data_in_multiple_sentences>
Data to be preprocessed must be in the last column.
Attributes:
path: path to the data file
raw_review: data read from the file in a list
sentences: list of lists containing data number and
sentence
tokens: list of lists of data index number followed by tokenized
sentence
"""
def __init__(self, path=None, raw_review=None, sentences=None,\
tokens=None):
"""Inits Corpus with path, raw_review, sentences and tokens if passed
One can directly pass semi processed data at different stages and use
methods provided in the class to complete the preprocessing.
Args:
path: Path to data file
raw_review: data in a list
sentences: list of lists containing data index number and sentences
tokens: list of lists of data index number followed by tokenized
sentence
"""
self.path = path
self.raw_review = raw_review if (raw_review is not None) else []
self.sentences = sentences if (sentences is not None) else []
self.tokens = tokens if (tokens is not None) else []
[docs] def read_reviews(self, delimiter='\t', reg=r"(\\u[0-z][0-z][0-z])\w",\
rep=" "):
"""Read reviews and store it in a list
Args:
delimiter: The seperator between data
reg: Custom regex to filter
rep: String to replace the regex values
Raises:
IOError: file not found
Exception: Data format in the file opened does not follow the
specified template style
"""
# Open the data file
try:
with io.open(self.path, 'rb') as raw:
self.raw_review = [x.strip().split(delimiter) for x in raw]
except IOError:
raise IOError('File not found')
try:
# Select data only
for i, val in enumerate(self.raw_review):
# Take the last column values
self.raw_review[i] = self.raw_review[i][-1]
# Run regex
self.raw_review[i] = re.sub(reg, rep, self.raw_review[i])
except:
raise Exception('Data format in the file does not follow template')
[docs] def split_sentence(self, min_len=2):
"""Split each data index into its individual sentences
Splits data index at periods.
Args:
min_len: Minimum length of a sentence above which to include
"""
# Iterate over every unique data value
for i, val in enumerate(self.raw_review):
# Split the sentences
sentence = self.raw_review[i].split('.')
# Append the other sentences to the end of the self.sentences
for j, v in enumerate(sentence):
# Make sure the sentence has more than <min_len> words
if len(sentence[j]) > min_len:
self.sentences.append([i, sentence[j]])
[docs] def tokenize_simple(self, deacc=False, min_len=2, max_len=15):
"""Processes sentences
Tokenize, ignore tokens that are too small
Args:
deacc: Remove accentuation
min_len: Minimal length of token in result
max_len: Maximum length of token in result
"""
# Simple tokens, de-accent and lowercase processor
for i, val in enumerate(self.sentences):
self.tokens.append([self.sentences[i][0], \
gensim.utils.simple_preprocess(self.sentences[i][1], deacc, \
min_len, max_len)])
[docs] def tokenize_custom(self, min_len=1):
"""Processes sentences
Tokenize, ignore tokens that are too small, lemmatize, filter out
grammar {stop words, symbols, prepositions, numbers etc}
Args:
min_len: Minimum length of tokens
"""
# POS Tagging and filtering sentences
for i, val in enumerate(self.sentences):
doc = NLP(force_unicode(self.sentences[i][1]))
to = [unicode(self.sentences[i][0])]
for tok in doc:
if tok.is_stop != True and tok.pos_ != 'SYM' and \
tok.tag_ != 'PRP' and tok.tag_ != 'PRP$' and \
tok.pos_ != 'NUM' and tok.dep_ != 'aux' and \
tok.dep_ != 'prep' and tok.dep_ != 'det' and \
tok.dep_ != 'cc' and len(tok) != min_len:
to.append(tok.lemma_)
if len(to) > 1:
self.tokens.append(to)
[docs] def write_processed(self, name):
"""Save to file
Appends tokens to given file
Args:
name: Name of file
Raises:
IOError: Path does not exist
Exception: self.tokens structure not supported, manually check its
value
"""
try:
# Write the preprocessed reviews to file
with io.open(name, "a", encoding='utf8') as outfile:
for i, val in enumerate(self.tokens):
outfile.write(unicode(','.join(self.tokens[i]) + "\n"))
except IOError:
raise IOError('Path does not exist')
except Exception:
raise Exception('Error while saving file, check self.tokens value')


Given array:
private int[] counts = {74, 55, 34, 99, 22}
Trace selection sort from the video demo. What does the array look like at the end of the for loop when lh = 2?
There are no hints for this question


My name is Benjamin Fletes. I want to do Artificial Intelligence in the future. I speak English and Spanish. My interests are video games, discussing ideas for a better tomorrow, and make people laugh. I love math and science I hope this semester goes well. I will do my best


Rob Gronkowski’s ‘Big Announcement’ Seemingly Closes Door On 2019 Return To Patriots (VIDEO)
by Darrelle LincolnOver the weekend, Rob Gronkowski, who retired from the NFL in March, took to Instagram and stated that he would be dropping a big announcement on Tuesday morning.
“I have a big announcement to make. I can’t wait to drop it on all of you. It’s gonna be fun, it’s gonna be wild, it’s gonna be a good time,” Gronkowski said. “Come check out my Instagram page this Tuesday at 9:00am to hear the news. Lets go.”
Most people thought it would be football related or even wrestling related. It was neither.
Gronk revealed plans for a music festival called “Gronk Beach” that will be held Saturday, Feb. 1 on Miami Beach.
The last day for Gronkowski and the Patriots to agree to grant him an official return to the roster would be Saturday, Nov. 30th, and it does not look like he has any plans of doing that.
If he is truly done with football, he finishes his career with 521 receptions for 7,861 yards and 79 touchdowns across 115 games.


| Part | Amount | Price per item |
|---|---|---|
| Arduino Pro Micro | x1 | $6.96 |
| CD4051 Multiplexer | x2 | $1.00 |
| 10K Linear Potentiometer | x8 | $0.65 |
| Tactile Button Switch | x14 | $0.07 |
| Custom PCB Board | x1 | $2.99 |
| USB B Female Port | x1 | $1.26 |
| Micro USB Cable | x1 | $3.79 |
| Total | $23.18 |
All prices based on Amazon.com


Selfie action me my self and I. A post shared by Tinashe Knowiz (@knowiz) on Dec 27, 2015 at 4:32am PST
Selfie action me my self and I.
A post shared by Tinashe Knowiz (@knowiz) on Dec 27, 2015 at 4:32am PST


Woman, 18, arrested after fatal crash that 'devastated' family
by Keri TriggA teenager has been arrested on suspicion of causing death by dangerous driving after a fatal crash on Saturday.
The 18-year-old woman has been bailed while police investigate the collision in Commins Coch, near Machynlleth, in which Ellie Bryan, also 18, died.
The crash happened on the A487 at around 10pm, and involved two vehicles.
Police enquiries later revealed the involvement of a third vehicle, and it was the driver of this car who was arrested.
Tributes have been paid to Ellie, from Aberystwyth. Her family said: “We are distraught by our loss of Ellie. She will be missed by us all.
“Ellie was a loving daughter, sister and granddaughter.
“We would like to thank everyone for their support at this devastating time.
“We would appreciate having time to grieve in privacy.”
A second person remains in hospital in a critical condition.
Police are now appealing for people who were travelling along the stretch of road at the time and have dash cam footage or saw the collision to contact the Serious Collision Investigation Unit.


QCredit
back to dashboard
Signout
Repayment history
Description
Date
Amount
Status
Car Repair
May 2016
$ 1,500
Paid
Visa Application
October 2017
$ 2,000
Paid
New Apartment
February 2019
$ 10,000
In Progress


Stories
-
Welcoming those who have served
In 14 years with the U.S. Marine Corps, Angela Austin's most physically challenging, rewarding, and enjoyable duty was as a Marine Corps martial arts instructor.
-
A playhouse like no other
Search anywhere and you won’t find anything quite like UCSC’s International Playhouse, an annual program of short theater pieces staged in different languages by students in the university’s Language Program.
-
Why do I give to UC Santa Cruz?
Giving can transform lives, advance research, and protect and enhance the treasures on the UC Santa Cruz campus.
-
Restoring quarry glory
A proud UCSC alumnus wants to see a campus landmark come to life once more.
-
A tale of generosities
Lovers of Charles Dickens' books have stepped forward to sustain the Dickens Project, and the famous annual Dickens Universe conference.
-
Protecting the land. Preserving a legacy
A $2 million gift from the David and Lucile Packard Foundation honors the memory of Ken Norris, while helping to ensure that UCSC remains a leader in natural history programs.
-
Lending a hand by lending books
A generous grandmother inspired three of her grandkids to "pay it forward" and help low-income students get the books they need.
-
Choosing a different path: meet Meka Williams
Student Meka Williams's fierce determination to succeed—along with help from campus and private support programs—diverted her from a potentially grim future.
-
Way beyond a job
UCSC's unique and groundbreaking Academic Excellence program has supported thousands of students since it started in 1986.
-
Sparking a relationship between art and science
With their $1 million kick-off gift, Patricia and Rowland Rebele are helping to make into reality the highly anticipated Institute of the Arts and Sciences.
-
Honoring a 'quietly incredible woman'
When alumnus Mark Headley and his wife, Christina Pehl, decided to make a gift establishing a new endowed chair at UCSC, they wanted to commemorate an extraordinary woman who worked tirelessly for four University of California presidents.
-
Gabe Zimmerman's memory lives on in scholarship
Student Carson Watts was the second winner of the Gabriel Zimmerman Memorial Scholarship, which supports students who are passionate about social issues and committed to public service.
-
Child's play = new research
A $165,000 grant to UCSC's Early Education Services has enabled the program to extend childcare hours for students' children and provide an observation room for developmental psychology research.
-
Giving back by paying forward
Karen Rhodes and her husband, fellow Slug Robert Weiner, have been consistent, reliable donors to UC Santa Cruz, providing valuable support for Cowell College, the History Department, scholarships, and more.
-
Beyond the comfort zone
With the help of an Irwin Project Grant, which funds student art projects on campus, art and psychology major Josh Katz launched a new trajectory of art-making.
-
Honoring outstanding teaching in the humanities
The Dizikes teaching award—named for professor emeritus of American studies John Dizikes—celebrates the Humanities faculty's commitment to excellence in teaching and its impact on undergraduate students.


Exodus 14:7
And he took six hundred chosen chariots, and all the chariots of Egypt, and captains over every one of them.


How to search for all or part of a page name using the Pages module. DNN Platform users must be granted Edit Page permissions to the page where the Pages module is located as well as View Page / View permissions to see the page in the search results. Evoq Content users must be granted Add Content permissions to the page where the Pages module is located as well as View permissions.


Let’s consider one of the most basic types of data - binary data
import pandas as pd
import seaborn as sns
import math
import cPickle as pickle
import itertools as it
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_mldata
import itertools as it
%matplotlib inline
sns.set_context('talk')
Binary data can take various forms:
Image data is often represented as binary images. For example, the MNIST dataset contains images of handwritten digits.
Let’s convert the MNIST digits into binary images
mnist_dataset = fetch_mldata('MNIST original')
_, D = mnist_dataset['data'].shape
Y = mnist_dataset['data'].astype(bool)
W = int(math.sqrt(D))
assert W * W == D
sns.heatmap(np.reshape(Y[0], (W, W)), linewidth=0, xticklabels=False, yticklabels=False, cbar=False)
plt.title('Example MNIST Digit')
<matplotlib.text.Text at 0x1127f1910>
Graphs can be represented as binary matrices
In this email communication network from the enron dataset, \(X_{i,j} = 1\) if and only if person\(_{i}\) sent an email to person\(_{j}\)
import enron_utils
with open('results.p') as fp:
communications = pickle.load(fp)
def allnames(o):
for k, v in o:
yield [k] + list(v)
names = set(it.chain.from_iterable(allnames(communications)))
names = sorted(list(names))
namemap = { name : idx for idx, name in enumerate(names) }
N = len(names)
communications_relation = np.zeros((N, N), dtype=np.bool)
for sender, receivers in communications:
sender_id = namemap[sender]
for receiver in receivers:
receiver_id = namemap[receiver]
communications_relation[sender_id, receiver_id] = True
labels = [i if i%20 == 0 else '' for i in xrange(N)]
sns.heatmap(communications_relation, linewidths=0, cbar=False, xticklabels=labels, yticklabels=labels)
plt.xlabel('person number')
plt.ylabel('person number')
plt.title('Email Communication Matrix')
<matplotlib.text.Text at 0x11bca0390>
In a Bayesian context, one often models binary data with a beta Bernoulli distribution
The beta Bernoulli distribution is the posterior of the Bernoulli distribution and its conjugate prior the beta distribution
Recall that the Bernouli distribution is the likelihood of \(x\) given some probability \(\theta\)
If we wanted to learn the underlying probability \(\theta\), we would use the beta distribution, which is the conjugate prior of the Bernouli distribution.
To import our desired distribution we’d call
from microscopes.models import bb as beta_bernoulli
Then given the specific model we’d want we’d import
from microscopes.model_name.definition import model_definition
from microscopes.irm.definition import model_definition as irm_definition
from microscopes.mixture.definition import model_definition as mm_definition
We would then define the model as follows
defn_mixture = mm_definition(Y.shape[0], [beta_bernoulli]*D)
defn_irm = irm_definition([N], [((0, 0), beta_bernoulli)])


H.B. Woodrose Seeds
I had just ordered 10 grams of Hawaiian baby wood rose seeds off the net. I couldn't wait to get them and try them. I had done other drugs MJ,pain killers, etc.
5:35 pm - I ate the seeds on a pretty empty stomach (didnt eat much all day.) and got on the computer to screw around while I waited.
6:30 pm - I noticed a little bit of a high coming on and a heavy feeling in my stomach.
7:00 pm - I was extremely high, like I had just smoked many joints of marijuana. I was very happy that it worked and things were going great, sounds were awesome, lights, just all out good.
7:30 - 8:00 pm - I was totaly fucked up, I could hardly walk or talk and my toughts were racing. I was getting alot of closed eye halucinations and alot of distortion in things. But it was good and I was very very happy giggly mood.
Then about 15 minutes later something happened.  I didn't even think about how it could make me trip bad, that just did not enter my mind.
Well I started watching it and sure enough I started feeling sick so I went to my room and threw up like crazy. I cant even explain what was happening my mind was racing I was seeing colors lights hearing old songs my muscles were extremely weak. I did everything I knew to come out of a bad trip but it was not working, nothing was. So I just layed there praying that it would end I would feel normal again. ALL IN ALL it was the worste freaking time I've ever had on any drug and it goes to show how quickly things can turn bad. This stuff sucked. I'm going to stick to Marijuana or beer.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
F
G
H
I
L
O
P
R
S
T
U
S
selectionChanged(SelectionChangeEvent)
- Method in interface org.swiftgantt.event.
SelectionChangeListener
Selection changed.
selectionChanged(SelectionChangeEvent)
- Method in class org.swiftgantt.
GanttChart
Handle Selection Changed Event.
SelectionChangeEvent
- Class in
org.swiftgantt.event
SelectionChangeEvent(Object, Task)
- Constructor for class org.swiftgantt.event.
SelectionChangeEvent
SelectionChangeListener
- Interface in
org.swiftgantt.event
Handle event of selection changing.
setAllowAccurateTaskBar(boolean)
- Method in class org.swiftgantt.
Config
Allow or disallow the task bar accurately displaying in Gantt chart, this feature is not available for TimeUnit.AllDay and TimeUnit.Hour.
setBackcolor(Color)
- Method in class org.swiftgantt.model.
BaseTask
Set backcolor of this task bar in Gantt Chart, not applied to task group bar.
setBlankStepsToDeadline(int)
- Method in class org.swiftgantt.
Config
Set blank steps to deadline.
setBlankStepsToKickoffTime(int)
- Method in class org.swiftgantt.
Config
Set blank steps to kickoff time.
setCurrentTimeBackColor(Color)
- Method in class org.swiftgantt.
Config
Set backcolor of current time in Gantt chart time scale.
setDeadline(Time)
- Method in class org.swiftgantt.model.
GanttModel
Set deadline of Gantt chart.
setDeadlineBackColor(Color)
- Method in class org.swiftgantt.
Config
Set back color of deadline in time axis.
setDescription(String)
- Method in class org.swiftgantt.model.
BaseTask
Set description of this
Task
.
setEnd(Calendar)
- Method in class org.swiftgantt.model.
Task
Set end time of this
Task
.
setEnd(Time)
- Method in class org.swiftgantt.model.
Task
Set end time of this
Task
.
setFillInvalidArea(boolean)
- Method in class org.swiftgantt.
Config
setGanttChartBackColor(Color)
- Method in class org.swiftgantt.
Config
Set back color of Gantt chart.
setGanttChartRowHeight(int)
- Method in class org.swiftgantt.
Config
Set row height of Gantt chart.
setId(int)
- Method in class org.swiftgantt.model.
BaseTask
Set the id of this Task.
setKickoffTime(Time)
- Method in class org.swiftgantt.model.
GanttModel
Set kickoff time of Gantt chart.
setKickoffTimeBackColor(Color)
- Method in class org.swiftgantt.
Config
Set back color of kickoff time in time axis.
setModel(GanttModel)
- Method in class org.swiftgantt.
GanttChart
Set new
GanttModel
to the
GanttChart
.
setName(String)
- Method in class org.swiftgantt.model.
BaseTask
Set name of this
Task
.
setProgresBarHeight(int)
- Method in class org.swiftgantt.
Config
Set progress bar height.
setProgress(int)
- Method in class org.swiftgantt.model.
Task
Set progress of this
Task
.
setProgressBarBackColor(Color)
- Method in class org.swiftgantt.
Config
Set back color of progress bar.
setRestoutTimeBackColor(Color)
- Method in class org.swiftgantt.
Config
Set back color of rest-out time in time axis.
setSelectedIds(int[])
- Method in class org.swiftgantt.model.
GanttModel
Set IDs of selected tasks.
setSelectedTasks(Task...)
- Method in class org.swiftgantt.
GanttChart
Set selected tasks.
setSelectedTasks(List<Task>)
- Method in class org.swiftgantt.
GanttChart
Set selected tasks.
setSelectionColor(Color)
- Method in class org.swiftgantt.
Config
Set color of selected tasks.
setShowTaskInfoBehindTaskBar(boolean)
- Method in class org.swiftgantt.
Config
Set the value that whether showing task info behind task bar.
setShowTreeView(boolean)
- Method in class org.swiftgantt.
GanttChart
Set to display or hide the task tree view.
setStart(Calendar)
- Method in class org.swiftgantt.model.
Task
Set start time of this
Task
.
setStart(Time)
- Method in class org.swiftgantt.model.
Task
Set start time of this
Task
.
setTaskBarBackColor(Color)
- Method in class org.swiftgantt.
Config
Set back color of task bar.
setTaskBarHeight(int)
- Method in class org.swiftgantt.
Config
Set task bar height.
setTaskCount(int)
- Method in class org.swiftgantt.
ChartView
setTaskCount(int)
- Method in class org.swiftgantt.
TaskTreeView
setTaskGroupBarBackColor(Color)
- Method in class org.swiftgantt.
Config
Set back color of task group bar.
setTaskTreeViewBackColor(Color)
- Method in class org.swiftgantt.
Config
Set backcolor of task tree view.
setText(String)
- Method in class org.swiftgantt.
LogoView
setTimeUnit(TimeUnit)
- Method in class org.swiftgantt.
GanttChart
Set the singleton
TimeUnit
of
GanttChart
setTimeUnit(TimeUnit)
- Method in class org.swiftgantt.model.
TaskTreeModel
Set TimeUnit to all tasks.
setTimeUnitWidth(int)
- Method in class org.swiftgantt.
Config
Set width of time unit in time axis.
setTotalScheduleSteps(int)
- Method in class org.swiftgantt.
BaseView
setTotalSteps(int)
- Method in class org.swiftgantt.
BaseView
setWorkingDaysSpanOfWeek(int[])
- Method in class org.swiftgantt.
Config
Span of working days of each week, the value is limited from 1(Sun) to 7(Sat).
setWorkingHoursSpanOfDay(int[])
- Method in class org.swiftgantt.
Config
Span of working hours of each day, the value is limited from 0 to 23.
setWorkingTimeBackColor(Color)
- Method in class org.swiftgantt.
Config
Set back color of working time in time axis.
setX(int)
- Method in class org.swiftgantt.
BaseView
setY(int)
- Method in class org.swiftgantt.
BaseView
suspendUI()
- Method in class org.swiftgantt.
GanttChart
Suspend UI to avoid refresh.
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
F
G
H
I
L
O
P
R
S
T
U


I am software engineer with Master's Degree in Computer Applications and 10+ years of work experience.
I'm also a free software contributor. Here are some projects I've contributed to:
I'm freelancer at the moment, available for hire right now.
You'll never hear “you can't do that” from me. Nothing is impossible.
Feel free to tell me what you want to do and I’ll respond within 12 hours.


By clicking Continue you confirm that you have read, understood, and agree with all the information in the Client Agreement and the service terms and conditions listed in the following documents: General Business Terms and Partnership Agreement.
Already have an account? Sign In now!


Buhari, UNGA President Bande Meet Behind Closed Doors
by Donatus AnichukwuezePresident Muhammadu Buhari on Monday met with President of the United Nations General Assembly, Prof. Tijjani Muhammad-Bande, behind closed doors at the Presidential Villa, Abuja.
The News Agency of Nigeria (NAN) reports that Muhammad-Bande, who emerged President of the 74th UN General Assembly in September, was on his first official visit to Nigeria since he was elected.
Muhammad-Bande, the sole candidate for the position, was elected through acclamation at the 87th plenary meeting of the Assembly in New York.
He is the second Nigerian to hold the office after Joseph Garba, a retired military officer and diplomat, who led the organ between 1989 and 1990.
The outcome of the meeting between Buhari and the UNGA President was being awaited as at the time of filing this report.


View source
TFRecordCompressionType
The type of compression for the record.
tf.compat.v1.python_io.TFRecordCompressionType
GZIP = 2
NONE = 0
ZLIB = 1


Content appears to be dynamically added (in Chrome) but is actually being streamed from the server using Node.js. Neat shit! Check the source, no JavaScript being used on the client, home doge.


69 Year Old Italian Tycoon Flavio Briatore Vacationing In Kenya With 20 Year Old Female Law Student (Photos)
by Mercy Auma69 Year old Italian businessman Flavio Briatore has been pictured vacationing in Kenya, with a female companion, 49 years his junior.
Briatore was getting cozy with new girlfriend, 20 year old Benedetta Bosi a law student at the State University of Milan.
The duo were locking lips at the Billionaire resort, Malindi, while enjoying time by the pool after arriving in a private jet.
Briatore is known to love the company of women, with a long list including supermodel Naomi Campbell, with whom they dated for about three years.
Read: Good News As Tanzanian Billionaire MO Dawji Returns Home Safe
Naomi and Briatore have however remained good friends, and even vacationed together in 2014 at the same resort but just as friends.
In an interview in regards to the split, Naomi stated that she was not a trophy girlfriend, who would cook in heels.
“I’m not going to be a trophy. If you expect me to be in the kitchen cooking breakfast in high heels, looking as though I just stepped out of a fashion magazine, it’s not going to happen,” she said.
In an interview with Vogue in 2005, the billionaire was asked if he kept count of the women he has been with and he stated that he did not keep count.
Read Also: Tanzanian Billionaire And Simba SC Sponsor Mohammed Dewji Reportedly Kidnapped
“I never count, it’s not right.  Always the intention is good. If it’s not successful, maybe it’s destiny,” he said in the interview.
Briatore was once married to model Elisabetta Gregoraci, who is currently 39 years old and they have a son together.
They divorced in 2017, and Gregoraci has moved on going by the recent pictures she posted of the new man in her life.
He has also dated German supermodel Heidi Klum with whom they share a daughter.
The Italian billionaire is known to date super models, although the current new catch, Bosi seems to be out of his league.


Failed to add item
Add items to your wishlist
Enter information about what you want others to buy for you
Suggestions:
Enter information about what you want others to do for you


An Ordered List:
First Item
Second Item
Third Item
An Unordered List
One Item
Another Item
Yet Another Item


Stores configuration options for how to authenticate with remote repositories.
| Modifiers | Name | Description |
|---|---|---|
static enum |
AuthConfig.Option |
Available authentication options. |
| Type | Name and description |
|---|---|
static java.lang.String |
FORCE_OPTION System property name used to force a specific authentication option. |
static java.lang.String |
PASSWORD_ENV_VAR |
static java.lang.String |
PASSWORD_OPTION |
static java.lang.String |
SSH_PASSPHRASE_OPTION |
static java.lang.String |
SSH_PRIVATE_KEY_OPTION |
static java.lang.String |
SSH_SESSION_CONFIG_OPTION_PREFIX |
static java.lang.String |
USERNAME_ENV_VAR |
static java.lang.String |
USERNAME_OPTION |
| Type Params | Return Type | Name and description |
|---|---|---|
|
boolean |
allows(AuthConfig.Option option) Test whether the given authentication option is allowed by this configuration. |
|
static AuthConfig |
fromMap(java.util.Map props, java.util.Map env = [:]) Factory method to construct an authentication configuration from the given properties and environment. |
|
static AuthConfig |
fromSystem() Factory method to construct an authentication configuration from the current system properties and environment variables. |
|
java.util.Set<Option> |
getAllowed() Set of all authentication options that are allowed in this configuration. |
|
Credentials |
getHardcodedCreds() Constructs and returns a Credentials instance reflecting the settings in the system properties. |
|
java.util.Map<java.lang.String, java.lang.String> |
getSessionConfig() Gets session config override for SSH session that is used underneath by JGit |
|
java.lang.String |
getSshPassphrase() Gets the passphrase for your SSH private key to use during authentication reflecting the value set in the system properties. |
|
java.lang.String |
getSshPrivateKeyPath() Gets the path to your SSH private key to use during authentication reflecting the value set in the system properties. |
| Methods inherited from class | Name |
|---|---|
class java.lang.Object |
java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll() |
System property name used to force a specific authentication option.
Test whether the given authentication option is allowed by this configuration.
option
- the authentication option to test fortrue
if the given option is allowed, false
otherwiseFactory method to construct an authentication configuration from the given properties and environment.
properties
- the properties to use in this configurationenv
- the environment vars to use in this configurationFactory method to construct an authentication configuration from the current system properties and environment variables.
Set of all authentication options that are allowed in this configuration.
Constructs and returns a Credentials instance reflecting the settings in the system properties.
null
Gets session config override for SSH session that is used underneath by JGit
Gets the passphrase for your SSH private key to use during authentication reflecting the value set in the system properties.
null
Gets the path to your SSH private key to use during authentication reflecting the value set in the system properties.
null


×
About
What?
Blog
Contact
Creations
Allies
☰
Welcome to Aezlo
Aezlo is a state of an art by aezlo for all purposes.


×
Email “
”
Dark Paper
Grid
Escher
Carbon
Password Protect
0 Remaining
Use a Paper
I am a new user
or
Login
Style
Handwriting
Standard
Typeset
Email
Notes via Email
Purchase
Android News
iPhone News
Sync
Adylitica
GDrive
Purchase
Dropbox
Purchase
Made by Adylitica
Contact
Account
Logout
Publish
...
on Facebook
on Tumblr
on Wordpress.com
on Buffer App
on Github
Tumblr
Post
Post now
Add to queue
Save as draft
Buffer
To Facebook
Facebook
Twitter
LinkedIn
Wordpress
Post
Post now
Save as draft
Facebook
Post
Post publicly
Post to friends
Post to myself
Github
Public Gist
Public gist
Secret gist


[
Mo
]
the Photo Mosaic Builder
(click to see full-size version)
Share this with your friends using the link below:


--- layout: post title: Copy/Move/Delete Files in Visual Basic 2010 using Windows API calls date: type: post published: false status: private categories: [] tags: [] meta: aktt_notify_twitter: 'yes' _edit_last: '1' author: login: satyadeep email<EMAIL_ADDRESS>display_name: Satyadeep first_name: Satyadeep last_name: K ---
take from sowrabh.
one more post on special folder path, application data folder etc.


A talented, multi-disciplined web designer and developer with over 10 years of agency and corporate experience, consistently producing excellent designs while writing well organized, clean code.
In the meantime, download my latest resume or email me today!


Note: this doesn't work for tabs. If you want to switch back and forth between tabs and spaces,
use this tool.
Just paste your code into the top area, set the amount of spaces you want to get to, and click the button!
⚠⚠ Make sure to run it through this beforehand if you need to, or else it might not work. ⚠⚠


Hi, my name is Alfred.
I started coding in 2015 because I felt like I needed a career change. I had only took an introduction to C++ class all the way back in 2006 during my freshman year of college. I had fun in the class solving the problems in code and making cool projects like a Sudoku generator. So when I wanted a career change, this is what made me decide to become a developer.
When I'm not coding, I spend my time paddling with my dragon boat team. I began paddling with my dragon boat team in 2007 and it's currently my 10th year paddling.
It's been a long time, but this was the sport that got me being active. I started running long distances to see how much I can push myself. Long distance running has helped me build up the discipline to continue training even on days that I didn't want to. The best part was also trying to be better than I was before and the best feeling is when you break your own PR.
Another thing I started doing was weight lifting at the gym. After many years of just doing dragon boat for fun, one of the coaches wanted to take the team to the next level so I followed his advice and started lifting. As with running, the best part is always pushing hard to seeing yourself break your PR. Because of this training, our team has made it Australia in 2016 for the Dragon Boat Club Crew World Championships. This is definitely one of the best experiences I had competing against other teams from around the world.
In addition to paddling for my team, I also coach a high school team. Originally I wanted to become a math teacher because I enjoyed working with kids. After going through the credential program, I found that teaching wasn't for me. but when the opportunity to work with kids came up, I took it. It definitely has it challenges, but it's always fun being around kids since I'm still a kid at heart.
Aside from being active, I enjoy playing video games and reading comic books. I grew up playing video games which is another reason I wanted to learn how to code. In addition, I love listening to podcasts. Planet Money and Stuff You Should Know are two of my favorite podcasts at the moment. I just enjoy learning how things work in the world.


Enjoying programmer anarchy: HappyPancake - Introduction and Swedish culture
Note: This is the first post in a series of posts about my experiences working for HappyPancake:
- Introduction & Swedish culture.
- Working remote.
Programmer anarchy.The bit with Rinat.The dev stack.The infrastructure part.- Enjoyed programmer anarchy - looking for the next project
Introduction
About three months ago, I was looking for a new project after a mini-retirement where I spent most time with the kids and on some OSS-work for Elixir.
When I posted this quest for a new project on my LinkedIn profile, I got this reply:
“I could totaly use you!” - Tomas Roos
(Not sure whether that are the literal words, as I can’t seem to go back in my LinkedIn activities - maybe Tomas could help me out here ;) )
Some background: I know Tomas from twitter, and we had quite a few nights of long and interesting chats regarding software architecture and other stuff, so we kind of knew each other a bit…
The project he wanted to start was all new and shiny to me: a rewrite of a very big dating site, moving it from the Microsoft stack to the Erlang stack… Anybody who has met me in the last year can probably imagine how thrilled I was about doing Erlang on a professional level.
Being completely new to the platform, we negotiated a doable rate, and closed the deal…
Fast forward to 2 months later
We are now two months in the project, and here is a primer of the most interesting aspects of the project up until now…
What a joy - Swedish Culture
Swedish culture is really keen on getting your priorities straight, and spending enough time with your family is considered a basic need.
Next to this, all is driven by trust, consensus-driven opinion making, and a very civilised way of discussing things.
At first I assumed this to specific to my case, but after a few talks with one of my neighbours (who spends a lot of time in Sweden, as he works for Swedish car manufacturer thas has a big factory in Belgium), I started digging deeper into the subject; and apparently it is a culture thing.
If you are interested in this subject, I might suggest you to google a bit; this was one of the first hits I got that describes some aspects really good.
I have had a very good remoting experience on a project with someone from the US a few years ago, but somehow this feels different. So far so good!
Also, because us Belgians tend to be a bit less subtle in our communication, I suggested him that we agreed on a stop-word.
Whenever I start loud-mouthing or try to make my point to much, Tomas says “Opera”, and I know I have to take a step back…
While this might sound a bit ridiculous in the beginning, having a pre-defined short way to say “You’re overdoing it”, this allows us to be very honest about things without spending to much time on protocol.
I don’t think I ever needed to use “Opera”, but as I am quite a big-mouth Tomas is probably glad we agreed on this protocol!
Conclusion
This approach to work and life is quite new to me, but also very refreshing. I am looking forward to the next months in the project!
You can find the next blog post on this subject here.


--- title: Natural Language Toolkit for Boyig (BoNLTK) keywords: fastai sidebar: home_sidebar summary: "BoNLTK aims to provide out of the box support for various NLP tasks that an application developer might need for Boyig (TIbetan) language." description: "BoNLTK aims to provide out of the box support for various NLP tasks that an application developer might need for Boyig (TIbetan) language." nb_path: "nbs/index.ipynb" ---
pip install bonltk


Some creative and subtle hover effect inspiration using modern CSS techniques including 3D translate and pseudo elements.
Image gallery grid with 30 subtle hover effect. Try to hover below demo images to show each hover effect.
 She had a dark soul.
When Layla appears, she brings an eternal summer along.
Zoe never had the patience of her sisters. She deliberately punched the bear in his face.
Oscar is a decent man. He used to clean porches with pleasure.
Marley tried to convince her but she was not interested.
Ruby did not need any help. Everybody knew that.
Roxy was my best friend. She'd cross any border for me.
Bubba likes to appear out of thin air.
Romeo never knows what he wants. He seemed to be very cross about something.
Dexter had his own strange way. You could watch him training ants.
Sarah likes to watch clouds. She's quite depressed.
Chico's main fear was missing the morning bus.
Milo went to the woods. He took a fun ride and never came back.


Maurkice Pouncey Responds To Primanti Bros Offering Him a Job As A Bouncer (TWEETS)
by Darrelle LincolnAlong with Myles Garrett receiving a 6-game suspension plus the playoffs, Maurkice Pouncey also received a 3-game ban after he came in with fists and legs swinging on the Cleveland Browns defensive end after he watched him hit his quarterback with a helmet in the head.
Pouncey won’t be getting paid for those games, but there is no reason to not get any money during that time period.
Primanti’s Bros in Pittsburgh took to Twitter and offered a three-week bouncer gig to Pittsburgh Steelers Maurkice Pouncey following the Steelers-Browns brawl. The Pittsburgh-based restaurant said it’s reaching out to Pouncey to see if he’d be interested in working the door at Primanti’s original location in the Strip, starting today.
“Primanti’s offer to hire Pouncey for three-weeks is completely unrelated to his three-week suspension for protecting, ‘his man,’ Steelers’ Quarterback Mason Rudolph,” Primanti’s wrote in a press release.
“The job of protecting Rudolph, I mean… the Strip District Primanti Bros. is bigger than any game,” said said Toni Haggerty, the Strip District Primanti’s manager in a press release. “We take it seriously and will only hire the best.”


Color Picker Project
A Pre-Work Phase 2 Activity
By Duncan Colhoun<EMAIL_ADDRESS>Red
0
Green
0
Blue
0


# Request to Response
Understanding "the stack" in your web application
## Sandhills Developement
### Chris Klosowski
#### CTO - Partner - Development Lead
![Sanshills Monsters](images/global/sandhills-monsters.png)
### Name. That. Stack.
![GameShowHost](images/stack/host.png)
MongoDB Express.js AngularJS Node.js
Some Others...
- MAMP
- WAMP
- XAMPP
- WIMSA/WISA
https://whatthefuckismystack.com/
### A typical HTTP Request
![HTTP Request](images/stack/http-request.png)
### Time to First Byte (TTFB)
Duration of time from the moment the user makes a request to when the first byte arrives from the server.
This includes all Database Queries, logic, and API calls necessary to 'calculate' the document to be delivered to the client.
### Lets talk L(E/A)MP
The most comment stack used in WordPress
### Linux
The operating system the server is running
### Apache/Nginx
The HTTP Server used to accpet requests via HTTP
Apache and Nginx can be run together. Nginx can also function as a reverse proxy between Apache and Nginx, or as a standalone proxy to PHP.
### MySQL/MariaDB
The persistent data storage for the L(A/E)MP stack.
Via "drop-ins" WordPress can support PostgrSQL however this is not official support.
### PHP
Currently supporting PHP 5.2+.
Looking to support 5.6+ in April 2019...
And PHP 7.0+ in December of 2019
![Rejoice](images/stack/rejoice.gif)
### So how can we use this?
Fine tune our themes and plugins
Make as few DB calls as possible on initital load
Use AJAX to populate areas of the site that require large queries
Use transients to cache data like API calls
Deploy object and page caching where possible
Reduces 'decisions' and external resoruces to help improve TTFB
![Tortoise and Hare](images/stack/tortoise-and-hare.gif)
### Lets talk JAM Stack
The new kid on the block
![NKOTB](images/stack/nkotb.gif)
JavaScript - APIs - Markup
JavaScript can be whatever framework you want...or vanilla
APIs - Hello WPRest API!!!
Markup - It's markup, what else do we need to say
Allows deploying a non-WordPress frontend with a WordPress powered backend
## Hit the LAMPs and lets JAM on stacks.


docker service
Manage the services on a docker daemon.
More information: home page
- List the services on a docker daemon:
docker service ls
- Create a new service:
docker service create --name service_name image:tag
- Display detailed information of a space-separated list of services:
docker service inspect service_name|ID
- List the tasks of a space-separated list of services:
docker service ps service_name|ID
- Scale to a specific number of replicas for a space-separated list of services:
docker service scale service_name=count_of_replicas
- Remove a space-separated list of services:
docker service rm service_name|ID


1029 Hot Tomato’s Splashing Into Summer
thanks to Wet’n’Wild
Everyone’s favourite Dive’n’Movies is back at Wet’n’Wild!
To celebrate, 1029 Hot Tomato are Splashing Into Summer and giving away family passes to Wet’n’Wild, so you can check out your favourite flick while floating in the famous Giant Wave Pool!
Slide into the night from Friday 27 December with some rides operating until 8:30pm! Take the whole family, grab one of the many delicious summer treats and cocktails before diving-in!
We’ll be handing out family passes every morning at 8:30am with Flan, Emily Jade & Christo, across the day while you work and again with Galey, Mal and Moyra for the drive home!
Presented by Coca-Cola, Dive’n’Movies are returning to Wet’n’Wild from 27 December – 19 January!
Let the good times roll with a line-up of blockbuster films which you can enjoy in the Giant Wave Pool by hiring a tube or on surrounding deck chairs!
Here are just some of the films hitting the big screen:
- AVENGERS: Infinity War
- AVENGERS ENDGAME
- Bumble Bee
- The Lego Movie 2: The Second Part
- Home Alone
- Finding Nemo
- ALADDIN
- Fate of the Furious
There will also be a range of mouth-watering food and drink options available for purchase to indulge in whilst you watch the movie.
You can also slide into the night with some of your favourite attractions including Super 8 Aqua Racer, AquaLoop, River Rapids, Constrictor, Wet’n’Wild Junior, Whirlpool Springs, Giant Wave Pool, Kamikaze, Tornado and Black Hole operating until 8:30pm!
Check Out The Dive’n’Movies Schedule
Dive’n’Movies schedule subject to change. Slides and attractions are subject to change to enable maintenance and some slides and attractions will not operate during inclement weather conditions. Please note queue lines may close earlier to allow slides to finish operating at 8:30pm.
Competition opens Monday 25 November and closes Friday 20 December 2019.
0Weeks0Days0Hours
70 x Family Passes to Dive’n’Movies at Wet’n’Wild (valid for single use entry for two adults and two children between 27 December 2019 to 19 January 2020).
The Hot Tomato Broadcasting Company’s Standard Competition Terms and Conditions apply to all 102.9 Hot Tomato and myGC contests.


Below are animation examples for web and TV.
Happy New 2016
Greeting based on my 10 year old sons’ drawings.
Happy Thanksgiving
Animated escape of the turkey from the Thanksgiving table.
Autumn
Made after the painting of classic Bulgarian artist Vladimir Dimitrov Majstora. Credits: Conceived, written, directed and animated by Todor Radev.“I am the mop”
Animation for the TV series of an HBO children’s show.
SHIVKV
Advertisement for an art school in Genk, Belgium. Credits: Conceived, written, directed, animated and colored by Todor Radev.


Validators are small classes that have a validate
method. the validate method
takes a single value. if the value is invalid throw a utils.ValidationError
Classes
base regex validator.
Attributes:
regex
message
code
defaults to "invalid"
Instance Methods
constructor(@regex, @message, @code)
validate(value)
Validates that the input matches the regular expression.

This code is here, because it is exactly the same for the model and the form field.
Determine if the address is shortened.
Args: ip_str: A string, the IPv6 address.
Returns: A boolean, True if the address is shortened.


Emirates close to finalizing part of wide-body jet order with Airbus: sources
DUBAI (Reuters) - Dubai state-owned airline Emirates [EMIRA.UL] was close to a deal on Monday to finalize at least part of a provisional order for 70 wide-body aircraft from Europe’s Airbus (AIR.PA), industry sources said.
The Dubai carrier has scheduled a news conference for 0900 GMT.
Both companies declined to comment.