species tundra distribution alpine Changbai dominant abundance plant Table vegetation chrysanthum climate slope Figure plants herbaceous change uliginosum {border-style Mountains Sci. different factors px;} #ffffff;} shrub significantly angustifolia community herb Ecol. Wang herbs increased shrubs warming environmental kurtosis snow spatial > effects global results zone analysis coefficient elevations species, Jin Res. elevation soil species. used ... China Dominant Tundra changes characteristics micro-topography succession variation, Alpine Geogr. Mountain Slope Species affected high index lower number px; ratio showed skewness, slopes studies study tundra. variation zone. {font-family ./j.-...x J.W. Plant Shannon-Wiener Zhang Zong composition conditions distribution, font-size grade gradient growing large mountain normal ordination parviflora precipitation value volcanic years .), ./s--- Climate Huang Mountains, Y.H. baishanense change. communities differences double; forest highest invaded jamesii low patterns plants---t_Table previous relation relative season skewness stage steep Biol. Effects Plant. Plants S.W. Sin. Veg. Vegetation and, aspect, associated border-color border-width called chrysanthum. climatic decreased descriptive dominance elevational encroached higher indicate indicated indicates largest mechanisms north-facing patches semi-sunny shrub/herb slope, solid; stipulata surveys tomentosa tundra, vascular {font-style {font-weight < ./j.-..tb.x Alp. Analysis Antarct. Arct. Arctic Ca, Chang. Change Chin. Gb, Glob. Global Herbaceous Herbs Lj, Northeast Note: Qian RDA Rc, Rhododendron Slopes Sp, Spatial Ss, St, USA Vu, Y.J. affect analyze angustifolia. aspects baishanense, bold correlated courier; cover coverage deconstruction determine distributed diversity early east-facing ecological em; individuals intensity intermediate invasion jamesii. lowest main mean means observed occurred parviflora, parviflora. plots population pt;} relatively replacement richness significant slopes, statistics stipulata. suggest temperature temperature, thus, tomentosa. total uliginosum, uliginosum. various warming,


Job [filled]! INRIA Hybrid and AAU Postdoc on AR for Neurodegenerative Diseases
Job: joint postdoc with INRIA Hybrid and AAU: developing and testing Augmented Reality based aids for Neurodegenerative Diseases
This position has been filled!
Dans le cadre d’un projet de recherche collaboratif entre le CHU de Rennes, l’équipe Hybrid Inria et l’équipe CRENAU de Centrale Nantes, il est recherché un post-doctorant correspondant à la fiche de poste ci-dessous, qui serait formé en RV et si possible en RA. Les contacts sont :
- le Dr. Mélanie Cogné, Service de Médecine physique et de réadaptation, Rennes (melanie.cogne@chu-rennes.fr).
- le Professeur Guillaume Moreau, Ecole Centrale de Nantes (guillaume.moreau@ec-nantes.fr).
Job description Project (Short presentation): Augmented Reality is a rapidly expanding field, but is not yet applied to the field of Neurodegenerative Diseases. Our objective is to create an innovative Augmented Reality tool in order to reduce activities’ limitations in this population, and to verify its safety and its tolerability. Conception of an Augmented Reality system will be the core of the postdoctoral work in this project.
Place of work: Centrale Nantes, 1 rue de la Noë, 44321 Nantes, France Candidate: Should hold a PhD in Computer Science/Neurosciences. He/she should demonstrate relevant experience with programming (MATLAB, R, Python…) and with the conception of Virtual Reality and/or Augmented Reality tools.
Starting date: Spring 2020
Duration: 1 year (possible extension)
Interested candidates are required to send their applications including CV with publication list, a summary of their research interests together with names and contact information of at least two references to<EMAIL_ADDRESS>and guillaume.moreau@ec-nantes.fr


This is a machine-readable value and can only contain letters, numbers and underscores. If left blank, the value will be generated from the main value above.
This is a machine-readable value and cannot be modified once created.


The principal goals of the S1-INBOX were to deploy autonomous platforms such as floats to acquire physical-biogeochemical data that could be used to resolve mesoscale eddies, and to quantify impacts of physical processes on biogeochemical phenomena in the oligotrophic subtropical ocean.


[one] This is a paragraph whose color has 0% saturation.
[two] This is a paragraph whose color has 0% saturation.
[three] This is a paragraph whose color has 0% saturation.
[four] This is a paragraph whose color has 0% saturation.
[five] This is a paragraph whose color has 0% saturation.
[six] This is a paragraph whose color has 0% saturation.
[seven] This is a paragraph whose color has 0% saturation.


| Version | Changes | Production Release Date |
|---|---|---|
| 208 | Update connection details | 04 May 2017 |
| 129 | Add ability to trade on multiple accounts over a single connection using Account tag (Tag 1) | 14 Jun 2014 |
| 129 | Added Order Type of stop limit orders (added for TAG40 an additional value of 4 = Stop Limit) | 11 January 2014 |
| 122 | Add missing Tag90 (StopPx) to ExecutionReport to data dictionary. | 14 September 2013 |
| 120 | Add optional Tag64 (SettlDate) to ExecutionReport. The field is optional and must be enabled by LMAX Customer Services. | 17 August 2013 |
| 109 | Add Tag40 (OrderType) to ExecutionReport | 16 March 2013 |
| 106 | Update data dictionary and documentation to add missing Tag60 (TransactTime) to ExecutionReport | 2 February 2013 |
| 103 | Add SecondaryExecID to ExecutionReport and TradeCaptureReport messages. Add section on compatabililty to documentation. | 15 December 2012 |
| 98 | Increase maximum inbound message size to 8192 bytes. | 29 September 2012 |
| 96 | Historic trade retrieval added to support recovery and access to historic data. | 01 September 2012 |
| 95 | Cancel on disconnect behaviour can now be specified on a per order basis | 18 August 2012 |
| 93 | ExecId now unique over all time. | 21 July 2012 |
| 92 | ClOrdId extended to support up to 20 arbitrary ASCII characters | 07 July 2012 |
| 90 | Order status request support extended to all Time In Force not just IOC & FOK | 09 June 2012 |
| 89 | Add support for GFD & GTC Stop Orders Add support for GTC Limit Orders Add support for AvgPx on Executions Reports | 09 June 2012 |
| 88 | Order status request support for IOC & FOK orders | 26 May 2012 |
LMAX reserves the right to change the specification of the FIX interface.
LMAX operates FIX Trading Gateways which allow users to manage orders on their LMAX Account using FIX 4.4 messages.
LMAX operates both Production and Test environments which can be connected to using FIX using the following connection parameters.
| Environment | DNS Address | Port number | LMAX CompId | Client CompId |
|---|---|---|---|---|
| Production | fix.lmaxtrader.com | 443 | LMXBL | <client production username> |
| Test | fix-order.london-demo.lmax.com | 443 | LMXBD | <client test username> |
All LMAX environments operate to the following schedules.
LMAX order books are open for trading in the following trading sessions.
| Monday | Tuesday | Wednesday | Thursday | Friday | |
|---|---|---|---|---|---|
| Trading Opens | 17:05 Sunday America/New York | 17:05 Monday America/New York | 17:05 Tuesday America/New York | 17:05 Wednesday America/New York | 17:05 Thursday America/New York |
| Trading Closes | 17:00 Monday America/New York | 17:00 Tuesday America/New York | 17:00 Wednesday America/New York | 17:00 Thursday America/New York | 17:00 Friday America/New York |
FIX sessions connected to the LMAX FIX Trading Gateways operate to the following schedule.
| Open for connection | 17:03:00 America/New York |
|---|---|
| Connection closed | 17:02:30 America/New York |
The LMAX FIX Trading Gateways have a maximum inbound message limit of 8192 bytes. If a message is received which exceeds this size, the client will be logged off.
The LMAX FIX Trading Gateway will never publish messages greater than 8192 bytes.
The LMAX FIX Trading Gateways allow a client to recover the most recent 512 messages for a session using standard FIX message resend behaviour.
In the event of the LMAX FIX Gateway requesting a message re-send, the resent messages will be ignored to avoid out of date orders being placed into the market.
In some scenarios FIX session recovery is insufficient. Some examples would be:
In these scenarios it will be necessary to use Application Recovery as described below. It may be simpler to ignore FIX session recovery entirely and always use Application Recovery as it will work in all failure scenarios. If this option is chosen then tag 141 (ResetSeqNumFlag) should always be set to "Y" on the client Logon message.
LMAX FIX Trading Gateways accept two messages to enable a client to reliably recover after a disconnection. These are:
| Message Type | Description |
|---|---|
| Order Status Request | Allows a client to query the status of an Order. |
| Trade Capture Report Request | Allows a client to request historic trades. |
Using these messages it is possible for a client to determine what trades occured on their Account during a disconnection and the current status of orders that were working at the time of the disconnection.
These messages may also be used to request historic data.
The sections on these two messages provide a detailed description on their usage.
To reset a FIX Session the client must login with the tag 141 (ResetSeqNumFlag) set to 'Y'.
LMAX supports cancel on disconnect on it's FIX Trading Gateways. This is controllable on a per Order basis using the Tag 18 (ExecInst) on the New Order Single (MsgType="D")and Order Cancel Replace Request messages (MsgType="G"). By default, orders placed via the FIX Trading Gateways will be cancelled on an explicit logout or an unexpected disconnection from the FIX Trading Gateway. To allow an order to continue working on the LMAX Order Book after the session is disconnected, the client must set Tag 18 (ExecInst) to "H" (Reinstate on System Failure).
Note that cancel on disconnect cannot be specified when a user is configured to trade on multiple accounts. In this case the user must always set Tag 18 (ExecInst) to "H" (Reinstate on System Failure).
Orders placed via the web channel (either the LMAX web trading user interface, mobile phone UI, the Java or .NET API) will not be cancelled when a FIX Trading session logs out or is disconnected.
LMAX aims to maximise compatibility by using standard FIX messages, tags and usage conventions wherever possible.
Periodically, LMAX updates it's FIX specifications in response to changes to the core trading application. Usually these changes are to support additional features and wherever possible this will be achieved through the use of additional messages, tags in existing messages or tag values in existing tags. In order to minimise the impact of these sort of changes, LMAX recommends that the client application accepts messages with unrecognised tags and ignores those tags which it cannot interpret.
LMAX will always endeavor to contact clients prior to changing the FIX API particularly in the case where a change is breaking (i.e. not additive in nature).
LMAX supports the following FIX message types.
| Type | Name | Description |
|---|---|---|
| 0 | Heartbeat | Message sent during quite intervals on the connection to ensure that connection is still alive. |
| 1 | TestRequest | Message used to request a HeartBeat from the counterparty to allow round trip testing of the connection. |
| 2 | ResendRequest | Message used to request a replay of messages from the counter party. |
| 3 | Reject | Sent in response to a message which is structurally invalid (i.e. invalid or missing tag or ill-formed tag-value). |
| 4 | SequenceReset | SequenceReset. |
| 5 | Logout | Message used to terminate a FIX connection. Can be sent by the client or the LMAX FIX Gateway. |
| 8 | ExecutionReport | Messsage sent by the LMAX FIX Gateway which reports the change in status of a client's Order |
| 9 | OrderCancelReject | Message sent by the LMAX FIX Gateway when an OrderCancelRequest message cannot be successfully processed. |
| A | Logon | Message used to establish a connection between a client and the LMAX FIX Gateway. |
| D | NewOrderSingle | Message sent by the client to place a new order with LMAX. |
| F | OrderCancelRequest | Message sent by the client to cancel an existing order which is working on an LMAX order book. |
| G | OrderCancelReplaceRequest | Message sent by the client to cancel an existing order which is working on an LMAX order book and replace it with another. |
| H | OrderStatusRequest | Message sent by the client to request the state of an order. |
| AD | TradeCaptureReportRequest | Message sent by the client in order to request historic trades. |
| AE | TradeCaptureReport | Message sent by LMAX to report an historic trade. |
| AQ | TradeCaptureReportRequestAck | Message sent by LMAX in response to a Trade Capture Report Request message to confirm the success or failure of the request. |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 8 | BeginString | The FIX version number identifier. Always 'FIX.4.4' | Y | String |
| 9 | BodyLength | Length of the FIX Message. | Y | Length |
| 35 | MsgType | The type of the message. | Y | String |
| 49 | SenderCompID | Identifier for the sender of the message. | Y | String |
| 56 | TargetCompID | Identifier for the receiver of the message. | Y | String |
| 34 | MsgSeqNum | The unique sequence number for the message within current FIX session. | Y | SeqNum |
| 43 | PossDupFlag | Always required for retransmitted messages, whether prompted by the sending system or as the result of a resend request. Set to 'Y' if this is a resent message. | N | Boolean |
| 97 | PossResend | Never used by LMAX. | N | Boolean |
| 52 | SendingTime | Time message was sent. | Y | UTCTimestamp |
| 122 | OrigSendingTime | Timestamp when message was originally sent. Required for message resent as a result of a ResendRequest. | N | UTCTimestamp |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 10 | CheckSum | Checksum for message contents. | Y | String |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 48 | SecurityID | Must contain the LMAX orderbook id. | Y | String |
| 22 | SecurityIDSource | Must contain the value '8' (Exchange Symbol) | Y | String |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 38 | OrderQty | The number of contracts that an order is for. | Y | Qty |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 580 | NoDates | Number of Date fields provided in date range. Must be 2. | Y | NumInGroup |
| 60 | TransactTime | Start (First entry in repeating group)or end (Second entry in repeating group) timestamp of the period for which trades should be retrieved expressed in UTC. | Y | UTCTimestamp |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| 552 | NoSides | Number of Side repeating group instances. Valid values: 1 Contains information about the client Order which traded. | Y | NumInGroup |
| 54 | Side | Side of the order. Valid values: 1 = Buy 2 = Sell | Y | char |
| 37 | OrderID | Unique identifier for Order as assigned by LMAX. Unique over all time and orderbooks | Y | String |
| 11 | ClOrdID | The client supplied identifier for the order. | N | String |
| 1 | Account | The LMAX Account Id on which the trade occurred | N | String |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 0 | ||
| 112 | TestReqID | Required when the heartbeat is the result of a Test Request message. | N | String |
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 1 | ||
| 112 | TestReqID | Identifier included in Test Request message to be returned in resulting Heartbeat | Y | String |
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 2 | ||
| 7 | BeginSeqNo | Message sequence number of first message in range to be resent | Y | SeqNum |
| 16 | EndSeqNo | Message sequence number of last message in range to be resent. If request is for a single message BeginSeqNo (7) = EndSeqNo. If request is for all messages subsequent to a particular message, EndSeqNo = “0” (representing infinity). | Y | SeqNum |
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 3 | ||
| 45 | RefSeqNum | MsgSeqNum of rejected message | Y | SeqNum |
| 371 | RefTagID | The tag number of the FIX field being referenced. | N | int |
| 372 | RefMsgType | The MsgType of the FIX message being referenced. | N | String |
| 373 | SessionRejectReason | Code to identify reason for a session-level Reject message. | N | int |
| 58 | Text | Where possible, message to explain reason for rejection | N | String |
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 4 | ||
| 123 | GapFillFlag | Indicates that the Sequence Reset message is replacing administrative or application messages which will not be resent. Valid values: Y = Gap Fill message, MsgSeqNum field valid N = Sequence Reset, ignore MsgSeqNum | N | Boolean |
| 36 | NewSeqNo | New sequence number | Y | SeqNum |
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 5 | ||
| 58 | Text | If LMAX logs out a client this may contain a text description for the reason for the logout. | N | String |
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 8 | ||
| 37 | OrderID | The unique identifier allocated by LMAX for the order whose execution is being reported. | Y | String |
| 527 | SecondaryExecID | Execution ID as generated by the MTF. Currently, this is only populated for Executions reporting a Trade where this will be a 16 character string. For other Executions (New, Cancel, Replace etc) this will be set to 0. | N | String |
| 11 | ClOrdID | The client supplied identifier for the order whose execution is being reported. | N | String |
| 41 | OrigClOrdID | Conditionally required for response to an electronic Cancel or Cancel/Replace request (ExecType=PendingCancel, Replace, or Canceled). ClOrdID of the previous accepted order (NOT the initial order of the day) when canceling or replacing an order. | N | String |
| 790 | OrdStatusReqID | Required if responding to and if provided on the Order Status Request message. Echo back the value provided by the requester. | N | String |
| 17 | ExecID | The unique identifier allocated by LMAX Broker to the ExecutionReport message. | Y | String |
| 150 | ExecType | Describes the type of execution being reported by this ExecutionReport message. | Y | char |
| 39 | OrdStatus | Describes the current state of a chain of orders. | Y | char |
| 103 | OrdRejReason | For use with ExecType = 8 (Rejected). Contains the reason for the rejection. | N | int |
| 1 | Account | Contains the LMAX Account Id for the account on which the order was placed. | N | String |
| Instrument | Y | |||
| 54 | Side | Side of the order. Valid values: 1 = Buy 2 = Sell | Y | char |
| OrderQtyData | Y | |||
| 40 | OrdType | Order type. LMAX Supported values: 1 = Market 2 = Limit 3 = Stop 4 = Stop Limit | N | char |
| 44 | Price | Present if specified on the order | N | Price |
| 99 | StopPx | Present if specified on the order | N | Price |
| 59 | TimeInForce | Specifies how long the order remains in effect. Valid values: 0 = Day (trading session) 1 = Good Till Cancel (GTC) 3 = Immediate or Cancel (IOC) 4 = Fill or Kill (FOK) | N | char |
| 32 | LastQty | Quantity of contracts bought/sold on this fill. Will be present if ExecType = Trade. | N | Qty |
| 31 | LastPx | Price of this (last) fill. | N | Price |
| 151 | LeavesQty | Quantity open for further execution. | Y | Qty |
| 14 | CumQty | Currently executed quantity for chain of orders. | Y | Qty |
| 6 | AvgPx | Average fill price for the chain of orders. Rounded down to the nearest price increment. | Y | Price |
| 60 | TransactTime | Time the transaction represented by this ExecutionReport occurred | N | UTCTimestamp |
| 64 | SettlDate | When reporting a trade execution, this field contains the settlement date for the trade being reported. This field needs to be enabled by LMAX Customer Services. | N | LocalMktDate |
| 58 | Text | Free format text string (Note: this field does not have a specified maximum length) | N | String |
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= 9 | ||
| 37 | OrderID | The OrderId of the Order which failed to be cancelled. If CxlRejReason=”Unknown order” this will be “NONE”. | Y | String |
| 11 | ClOrdID | The client supplied identifier for the cancel request or to the replacement order. | Y | String |
| 41 | OrigClOrdID | ClOrdID which could not be canceled/replaced. ClOrdID of the previous accepted order (NOT the initial order of the day) when canceling or replacing an order. | Y | String |
| 39 | OrdStatus | OrdStatus value after this cancel reject is applied. If (102) = "Unknown Order", specify Rejected. | Y | char |
| 1 | Account | The LMAX Account Id on which the Cancel or Cancel/Replace was attempted. | N | String |
| 434 | CxlRejResponseTo | Identifies the type of request that a Cancel Reject is in response to. LMAX Supported values: 1 = Order Cancel Request (F) 2 = Order Cancel/Replace Request (G) | Y | char |
| 102 | CxlRejReason | Code to identify reason for cancel rejection. Valid values: 1 = Unknown order 2 = Broker / Exchange Option 6 = Duplicate ClOrdID(11) received (only for Order Cancel Replace Request) | N | int |
| 58 | Text | Free format text string (Note: this field does not have a specified maximum length) | N | String |
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= A | ||
| 98 | EncryptMethod | Always '0' - None | Y | int |
| 108 | HeartBtInt | The maximum time to wait before a Heartbeat message is sent in the absence of other activity on the connection. The same value is used by both parties. | Y | int |
| 141 | ResetSeqNumFlag | Indicates both sides of a FIX session should reset sequence numbers | N | Boolean |
| 383 | MaxMessageSize | Maximum number of bytes supported for a single message. | N | Length |
| 553 | Username | LMAX username. This is required on the login message sent by the client | N | String |
| 554 | Password | LMAX Password or passphrase. This is required on the login message sent by the client | N | String |
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= D | ||
| 11 | ClOrdID | The client supplied identifier for the order. ClOrdId is restricted to a maximum of 20 arbitrary ASCII characters. | Y | String |
| 100 | ExDestination | Execution destination as defined by LMAX when order is entered. | N | Exchange |
| Instrument | Y | |||
| 1 | Account | The LMAX Account ID on which to place the new order. If not specified then the user's default account will be used. | N | String |
| 54 | Side | Side of the order. Valid values: 1 = Buy 2 = Sell | Y | char |
| 18 | ExecInst | Instructions for order handling on exchange trading floor. If more than one instruction is applicable to an order, this field can contain multiple instructions separated by space. Valid values: H = Reinstate on System Failure (Do not cancel on disconnect) Q = Cancel on System Failure (Cancel on disconnect) | N | MultipleStringValue |
| 60 | TransactTime | Time this order request was initiated/released by the trader, trading system, or intermediary. Ignored by LMAX. | Y | UTCTimestamp |
| OrderQtyData | Y | |||
| 40 | OrdType | Order type. LMAX Supported values: 1 = Market 2 = Limit 3 = Stop 4 = Stop Limit | Y | char |
| 44 | Price | Required for limit OrdTypes. | N | Price |
| 99 | StopPx | Required for stop OrdTypes. | N | Price |
| 59 | TimeInForce | Specifies how long the order remains in effect. For OrdType = Market: Valid values: 3 = Immediate or Cancel (IOC); 4 = Fill or Kill (FOK) For OrdType = Limit: Valid values: 0 = Day (trading session); 1 = Good Till Cancel; 3 = Immediate or Cancel (IOC); 4 = Fill or Kill (FOK) For OrdType = Stop: Valid values: 0 = Day (trading session); 1 = Good Till Cancel | N | char |
| 1089 | MatchIncrement | Minimum trade quantity. | N | Qty |
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= F | ||
| 41 | OrigClOrdID | ClOrdID of the previous non-rejected order (NOT the initial order of the day) when canceling or replacing an order. | Y | String |
| 1 | Account | The LMAX Account ID on which to attempt to cancel the order. If not specified then the user's default account will be used. | N | String |
| 11 | ClOrdID | The client supplied identifier for the order. ClOrdId is restricted to a maximum of 20 arbitrary ASCII characters. | Y | String |
| Instrument | Y | |||
| 54 | Side | Side of the order. Valid values: 1 = Buy 2 = Sell | Y | char |
| 60 | TransactTime | Time this order request was initiated/released by the trader or trading system. | Y | UTCTimestamp |
| OrderQtyData | Y | |||
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= G | ||
| 41 | OrigClOrdID | ClOrdID of the previous non-rejected order (NOT the initial order of the day) when canceling or replacing an order. | Y | String |
| 1 | Account | The LMAX Account ID on which to attempt to cancel and replace the order. If not specified then the user's default account will be used. | N | String |
| 11 | ClOrdID | The client supplied identifier for the order. ClOrdId is restricted to a maximum of 20 arbitrary ASCII characters. | Y | String |
| Instrument | Y | |||
| 54 | Side | Side of the order. Valid values: 1 = Buy 2 = Sell | Y | char |
| 60 | TransactTime | Time this order request was initiated/released by the trader or trading system. | Y | UTCTimestamp |
| OrderQtyData | Y | |||
| 18 | ExecInst | Instructions for order handling on exchange trading floor. If more than one instruction is applicable to an order, this field can contain multiple instructions separated by space. Valid values: H = Reinstate on System Failure (Do not cancel on disconnect) Q = Cancel on System Failure (Cancel on disconnect) | N | MultipleStringValue |
| 40 | OrdType | Order type. LMAX Supported values: 2 = Limit | Y | char |
| 44 | Price | Price per unit of quantity | Y | Price |
| 59 | TimeInForce | Specifies how long the order remains in effect. Valid values: 0 = Day (trading session) | N | char |
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= H | ||
| 11 | ClOrdID | The ClOrdID of the order whose status is being requested. | Y | String |
| 1 | Account | The LMAX Account ID on which the order whose state is being requested was placed. If not specified then the user's default account will be used. | N | String |
| 790 | OrdStatusReqID | Optional, can be used to uniquely identify a specific Order Status Request message. Echoed back on Execution Report if provided. restricted to a maximum of 16 hexadecimal characters with no leading 0 characters (essentially this is a 64bit number). | N | String |
| Instrument | Y | |||
| 54 | Side | Side of the order. Valid values: 1 = Buy 2 = Sell | Y | char |
| StandardTrailer | Y |
The Trade Capture Report Request message is used by the client to request historic trades.
In order to request historic trades the client provides the period of time for which trades are being
requested. The period is specified using a start and end time. The gateway will response in one of the
following ways:
Scenario Response
An invalid request is made such as the start time is after the end time
The gateway sends a Trade Capture Report Request Ack
message with the following tags set:
There are no trades in the requested period. The gateway sends a Trade Capture Report Request Ack
message with the following tags set:
There are trades in the requested period. The gateway sends a Trade Capture Report Request Ack
message with the following tags set:
followed by a Trade Capture Report message for each Trade in
the requested period. The last Trade Capture Report will have
tag 912 (LastRptRequested) will be set to "Y".
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= AD | ||
| 568 | TradeRequestID | Trade Capture Report Request ID. String with maximum length of 16 ASCII characters. Must be unique while a request is active. For example &%^aUk1-\+4rk;!p | Y | String |
| 569 | TradeRequestType | Type of Trade Capture Report. LMAX supported values: 1 = Matched trades matching Criteria provided on request | Y | int |
| 263 | SubscriptionRequestType | Used to subscribe / unsubscribe for trade capture reports. LMAX supported values: 0 = Snapshot | N | char |
| 1 | Account | The LMAX Account Id whose trades to request. | N | String |
| TrdCapDtGrp | Y | |||
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= AE | ||
| 568 | TradeRequestID | Trade Capture Report Request ID as provided in the Trade Capture Report Request. | N | String |
| 912 | LastRptRequested | Indicates if this is the last report in the response to a Trade Capture Report Request Y = Last message N = Not last message | N | Boolean |
| 17 | ExecID | Execution ID (Trade Identifier) as assigned by the LMAX Broker as reported on the original Execution Report (MsgType=8) message. | N | String |
| 527 | SecondaryExecID | Execution ID (Trade Identifier) as assigned by the LMAX MTF as reported on the original Execution Report (MsgType=8) message. | N | String |
| Instrument | Y | |||
| 32 | LastQty | Trade quantity. | Y | Qty |
| 31 | LastPx | Trade price. | Y | Price |
| 75 | TradeDate | Trade date on which the trade occurred. | Y | LocalMktDate |
| 60 | TransactTime | Time the transaction represented by this Trade Capture Report occurred to millisecond resolution | Y | UTCTimestamp |
| TrdCapRptSideGrp | Y | |||
| StandardTrailer | Y |
| Tag | Tag Name | Description | Required | Data Type |
|---|---|---|---|---|
| StandardHeader | Y | MsgType= AQ | ||
| 568 | TradeRequestID | Trade Capture Report Request ID as provided in the Trade Capture Report Request. | Y | String |
| 569 | TradeRequestType | Type of Trade Capture Report. LMAX supported values: 1 = Matched trades matching Criteria provided on request | Y | int |
| 263 | SubscriptionRequestType | Used to subscribe / unsubscribe for trade capture reports. LMAX supported values: 0 = Snapshot | N | char |
| 748 | TotNumTradeReports | Total number of trade reports returned. Will only be set when no trades were found for the requested criteria when it's value will be 0. | N | int |
| 749 | TradeRequestResult | Result of Trade Request LMAX Supported values: 0 = Successful (Default) 99 = Other | Y | int |
| 750 | TradeRequestStatus | Status of Trade Request. LMAX Supported values: 0 = Accepted 2 = Rejected | Y | int |
| 58 | Text | Contains error message when Trade Capture Report Request is rejected. | N | String |
| StandardTrailer | Y |
| Tag | Tag Name | Type | Description |
|---|---|---|---|
| 1 | Account | String | The LMAX Account ID. If not specified then the user's default account will be used. |
| 6 | AvgPx | Price | Calculated average price of all fills on this order. |
| 7 | BeginSeqNo | SeqNum | Message sequence number of first message in range to be resent |
| 8 | BeginString | String | Identifies beginning of new message and protocol version. ALWAYS FIRST FIELD IN MESSAGE. (Always unencrypted). Valid values: * FIX.4.4 |
| 9 | BodyLength | Length | Message length, in bytes, forward to the CheckSum field. ALWAYS SECOND FIELD IN MESSAGE. (Always unencrypted) |
| 10 | CheckSum | String | Three byte, simple checksum (see Volume 2: “Checksum Calculation” for description). ALWAYS LAST FIELD IN MESSAGE; i.e. serves, with the trailing <SOH>, as the end-of-message delimiter. Always defined as three characters. (Always unencrypted) |
| 11 | ClOrdID | String | The client supplied identifier for the order. ClOrdId is restricted to a maximum of 20 arbitrary ASCII characters. Must be unique for all currently working order. If a new order is received with the same ClOrdId as a currently working order then the new order will be rejected. |
| 14 | CumQty | Qty | Total quantity (e.g. number of shares) filled. |
| 16 | EndSeqNo | SeqNum | Message sequence number of last message in range to be resent. If request is for a single message BeginSeqNo (7) = EndSeqNo. If request is for all messages subsequent to a particular message, EndSeqNo = “0” (representing infinity). |
| 17 | ExecID | String | Unique identifier of execution message as assigned by LMAX. Unique over all time. This is a 16 character ASCII string. |
| 18 | ExecInst | MultipleStringValue | Instructions for order handling on exchange trading floor. If more than one instruction is applicable to an order, this field can contain multiple instructions separated by space. Valid values: H = Reinstate on System Failure (Do not cancel on disconnect) Q = Cancel on System Failure (Cancel on disconnect) |
| 22 | SecurityIDSource | String | Identifies class or source of the SecurityID (48) value. Required if SecurityID is specified. LMAX Supported values are: 8 = Exchange Symbol |
| 31 | LastPx | Price | Price of this (last) fill. |
| 32 | LastQty | Qty | Quantity of contracts bought/sold on this fill. |
| 34 | MsgSeqNum | SeqNum | Integer message sequence number. |
| 35 | MsgType | String | Defines message type ALWAYS THIRD FIELD IN MESSAGE. (Always unencrypted) Valid values: *** Note the use of lower case letters *** 0 = Heartbeat 1 = Test Request 2 = Resend Request 3 = Reject 4 = Sequence Reset 5 = Logout 8 = Execution Report 9 = Order Cancel Reject A = Logon D = Order – Single F = Order Cancel Request |
| 36 | NewSeqNo | SeqNum | New sequence number |
| 37 | OrderID | String | Unique identifier for Order as assigned by LMAX. Unique over all time and orderbooks |
| 38 | OrderQty | Qty | Quantity of contracts ordered. |
| 39 | OrdStatus | char | Identifies current status of order. LMAX supported values: 0 = New 1 = Partially filled 2 = Filled 4 = Canceled 8 = Rejected |
| 40 | OrdType | char | Order type. LMAX Supported values: 1 = Market 2 = Limit 3 = Stop 4 = Stop Limit |
| 41 | OrigClOrdID | String | ClOrdID of the previous order. Used to identify the previous order in cancel and cancel/replace requests. |
| 43 | PossDupFlag | Boolean | Indicates possible retransmission of message with this sequence number Valid values: Y = Possible duplicate N = Original transmission |
| 44 | Price | Price | Price per unit of quantity |
| 45 | RefSeqNum | SeqNum | Reference message sequence number |
| 48 | SecurityID | String | LMAX Security identifier. Requires SecurityIDSource=8. |
| 49 | SenderCompID | String | Assigned value used to identify firm sending message. |
| 52 | SendingTime | UTCTimestamp | Time of message transmission (always expressed in UTC (Universal Time Coordinated, also known as “GMT”) |
| 54 | Side | char | Side of the order. Valid values: 1 = Buy 2 = Sell |
| 56 | TargetCompID | String | Assigned value used to identify receiving firm. |
| 58 | Text | String | Free format text string (Note: this field does not have a specified maximum length) |
| 59 | TimeInForce | char | Specifies how long the order remains in effect. Valid values: 0 = Day (trading session) 1 = Good Till Cancel (GTC) 3 = Immediate or Cancel (IOC) 4 = Fill or Kill (FOK) |
| 60 | TransactTime | UTCTimestamp | Time of execution/order creation (expressed in UTC (Universal Time Coordinated, also known as “GMT”) |
| 64 | SettlDate | LocalMktDate | Specific date of trade settlement (SettlementDate) in YYYYMMDD format. |
| 75 | TradeDate | LocalMktDate | Indicates date of trade referenced in this message in YYYYMMDD format. Absence of this field indicates current day (expressed in local time at place of trade). |
| 89 | Signature | data | Electronic signature |
| 93 | SignatureLength | Length | Number of bytes in signature field. |
| 95 | RawDataLength | Length | Number of bytes in raw data field. |
| 96 | RawData | data | Unformatted raw data, can include bitmaps, word processor documents, etc. |
| 97 | PossResend | Boolean | Indicates that message may contain information that has been sent under another sequence number. Valid Values: Y=Possible resend N=Original transmission LMAX will never populate this tag with any value other than 'N' on messages sent by LMAX. LMAX will ignore this tag on any messages received by LMAX and the treat the message as having been sent with PossResend='N'. |
| 98 | EncryptMethod | int | Method of encryption. Valid values: 0 = None / other LMAX does not support encryption at the FIX layer. All messages are sent over an SSL encrypted connection. Supported values: |
| 99 | StopPx | Price | Price per unit of quantity (e.g. per share) |
| 100 | ExDestination | Exchange | Execution destination as defined by LMAX when order is entered. |
| 102 | CxlRejReason | int | Code to identify reason for cancel rejection. Valid values: 1 = Unknown order 2 = Broker / Exchange Option 6 = Duplicate ClOrdID(11) received (only for Order Cancel Replace Request) |
| 103 | OrdRejReason | int | Code to identify reason for order rejection. Valid values: 0 = Broker / Exchange option 1 = Unknown symbol 2 = Exchange closed 3 = Order exceeds limit 4 = Too late to enter 5 = Unknown Order 6 = Duplicate Order (e.g. duplicate ClOrdID ()) 7 = Duplicate of a verbally communicated order 8 = Stale Order 9 = Trade Along required 10 = Invalid Investor ID 11 = Unsupported order characteristic 12 = Surveillence Option 13 = Incorrect quantity 14 = Incorrect allocated quantity 15 = Unknown account(s) 99 = Other Note: Values 3, 4, and 5 will be used when rejecting an order due to pre-allocation information errors. |
| 108 | HeartBtInt | int | Heartbeat interval (seconds) |
| 112 | TestReqID | String | Identifier included in Test Request message to be returned in resulting Heartbeat |
| 122 | OrigSendingTime | UTCTimestamp | Original time of message transmission (always expressed in UTC (Universal Time Coordinated, also known as “GMT”) when transmitting orders as the result of a resend request. |
| 123 | GapFillFlag | Boolean | Indicates that the Sequence Reset message is replacing administrative or application messages which will not be resent. Valid values: Y = Gap Fill message, MsgSeqNum field valid N = Sequence Reset, ignore MsgSeqNum |
| 141 | ResetSeqNumFlag | Boolean | Indicates that the both sides of the FIX session should reset sequence numbers. Valid values: Y = Yes, reset sequence numbers N = No |
| 146 | NoRelatedSym | NumInGroup | Specifies the number of repeating symbols specified. |
| 150 | ExecType | char | Describes the specific ExecutionRpt (i.e. Pending Cancel) while OrdStatus (39) will always identify the current order status (i.e. Partially Filled) Valid values: 0 = New 4 = Canceled 5 = Replace 8 = Rejected F = Trade (partial fill or fill) I = Order Status |
| 151 | LeavesQty | Qty | Quantity open for further execution. If the OrdStatus (39) is Canceled or Rejected (in which case the order is no longer active) then LeavesQty could be 0, otherwise LeavesQty = OrderQty (38) – CumQty (4). |
| 263 | SubscriptionRequestType | char | Subscription Request Type LMAX supported values: 0 = Snapshot |
| 354 | EncodedTextLen | Length | Unused by LMAX. Byte length of encoded (non-ASCII characters) EncodedText (355) field. |
| 355 | EncodedText | data | Unused by LMAX. Encoded (non-ASCII characters) representation of the Text (58) field in the encoded format specified via the MessageEncoding (347) field. If used, the ASCII (English) representation should also be specified in the Text field. |
| 371 | RefTagID | int | The tag number of the FIX field being referenced. |
| 372 | RefMsgType | String | The MsgType (35) of the FIX message being referenced. |
| 373 | SessionRejectReason | int | Code to identify reason for a session-level Reject message. Valid values: 0 = Invalid tag number 1 = Required tag missing 2 = Tag not defined for this message type 3 = Undefined Tag 4 = Tag specified without a value 5 = Value is incorrect (out of range) for this tag 6 = Incorrect data format for value 7 = Decryption problem 8 = Signature problem 9 = CompID problem 10 = SendingTime accuracy problem 11 = Invalid MsgType 12 = XML Validation error 13 = Tag appears more than once 14 = Tag specified out of required order 15 = Repeating group fields out of order 16 = Incorrect NumInGroup count for repeating group 17 = Non “data” value includes field delimiter (SOH character) 99 = Other |
| 383 | MaxMessageSize | Length | Maximum number of bytes supported for a single message. |
| 384 | NoMsgTypes | NumInGroup | Number of MsgTypes (35) in repeating group. |
| 385 | MsgDirection | char | Specifies the direction of the messsage. Valid values: S = Send R = Receive |
| 434 | CxlRejResponseTo | char | Identifies the type of request that a Cancel Reject is in response to. LMAX Supported values: 1 = Order Cancel Request (F) 2 = Order Cancel/Replace Request (G) |
| 464 | TestMessageIndicator | Boolean | Not supported by LMAX. |
| 527 | SecondaryExecID | String | Execution ID as generated by the MTF. Currently, this is only populated for Executions reporting a Trade where this will be a 16 character string. For other Executions (New, Cancel, Replace etc) this will be set to 0. |
| 552 | NoSides | NumInGroup | Number of Side repeating group instances. Valid values: 1 = one side 2 = both sides |
| 553 | Username | String | LMAX username. This is required on the login message sent by the client |
| 554 | Password | String | LMAX Password or passphrase. This is required on the login message sent by the client |
| 568 | TradeRequestID | String | Trade Capture Report Request ID. String with maximum length of 16 ASCII characters. Must be unique while a request is active. For example &%^aUk1-\+4rk;!p |
| 569 | TradeRequestType | int | Type of Trade Capture Report. LMAX supported values: 1 = Matched trades matching Criteria provided on request |
| 580 | NoDates | NumInGroup | Number of Date fields provided in date range |
| 748 | TotNumTradeReports | int | Total number of trade reports returned. Will only be set when no trades were found for the requested criteria when it's value will be 0. |
| 749 | TradeRequestResult | int | Result of Trade Request LMAX Supported values: 0 = Successful (Default) 99 = Other |
| 750 | TradeRequestStatus | int | Status of Trade Request. LMAX Supported values: 0 = Accepted 2 = Rejected |
| 789 | NextExpectedMsgSeqNum | SeqNum | Not supported by LMAX. |
| 790 | OrdStatusReqID | String | Can be used to uniquely identify a specific Order Status Request message. |
| 912 | LastRptRequested | Boolean | Indicates whether this message is that last report message in response to a request, such as Order Mass Status Request. Y = Last message N = Not last message |
| 1089 | MatchIncrement | Qty | Allows orders to specify a minimum quantity that applies to every execution |
| Data Type | Description |
|---|---|
| Boolean | char field containing one of two values: 'Y' = True/Yes 'N' = False/No |
| char | Char value, can include any alphanumeric character or punctuation except the delimiter. All char fields are case sensitive (i.e. l != L). |
| data | Binary (non-ASCII) data. |
| int | Sequence of digits without commas or decimals and optional sign character (ASCII characters - and 0 - 9). The sign character utilizes one byte (i.e. positive int is 99999 while negative int is -99999). Note that int values may contain leading zeros (e.g. 00023 = 23). |
| Length | Representing the length in bytes. Value must be positive. |
| NumInGroup | Value that represents the number of repeating values in a group. |
| Price | Value representing a price. Note the number of decimal places may vary. |
| Qty | Value capable of storing either a whole number (no decimal places) of shares (securities denominated in whole units) or a decimal value containing decimal places for non-share quantity asset classes (securities denominated in fractional units). |
| SeqNum | Representing a message sequence number. Value must be positive. |
| String | Alpha-numeric free format strings; can include any character or punctuation except the delimiter. All char fields are case sensitive (i.e. lmax != LMAX). |
| UTCTimestamp | Representing Time/date combination represented in UTC (Universal Time Coordinated, also known as GMT ) only accepted in this format : YYYYMMDD-HH:MM:SS (whole seconds). For example 20120321-17:15:03. |


So, paragraph tags are a thing.
We often see dummy text as Lorem Ipsum repeated a bunch of times.
I'm not sure about the visual reasons, but apparently this text is a great simulator of projecting what text will look like given a color scheme
This is an unordered lists, so you should see a list below with bullet points.
The indentation on this paragraph is fascinating.
Now, we'll see an ordered list.


Tweet
Home
Character Game
Quotes
Wallpapers
Tweets
Sorting Hat Quiz
MVP
Harry Potter Fantasite
Your browser does not support the audio element.
...


Chapter 1 My-Notebook-Template
Saghir’s Notebook ‘Wiki’: An alternative use of bookdown
as a “wiki”.
1.1 Book For One Person - Me
Objective: To quickly access notes, personal information, coding tips, reference links, birthdays, addresses, telephone numbers, etc. in one place.
Why?
- To have key personal information and notes at my finger tips.
- All in one place.
- Hosted locally (due to sensitive info) on my computers and smart phone.
- Easy to maintain and update (hence not a wiki).
How? Using the HTML version of R bookdown
book as a personal wiki as it can be copied (synced) across devices. Default bookdown HTML stlye is more than good enough.
Pros:
- All my key information is one place :):):)
- Immediately available on my browser (default homepage).
- No more random files with notes, bits of paper, post-it notes, etc.
- Copy and paste friendly.
- As the only reader I can organise and re-organise it as I please.
- Easy to maintain and update.
- HTML version of book works great on all devices.
- The built in
bookdown
search does the job of finding information quickly. - No server needed.
Cons:
- Have to sync after each update.
- First version took time to create.


{% extends "baselayout.html" %} {% load i18n %} {% block content %}
{% blocktrans %}There's been an error. It's been reported to the site administrators via e-mail and should be fixed shortly. Thanks for your patience. {% endblocktrans %}


Who helped you fulfill your request? Acknowledge those contributors to help them grow their reputations.


{{#*inline "content"}}
This link is either invalid or expired. Please check your inbox for a more recent validation email


Here's What Late Night Made of the First Day of Impeachment Hearings
by Scott RussellThe historic impeachment inquiry into Donald Trump kicked off its first day of public hearings on Wednesday, with Ambassador William Taylor and State Department official George Kent delivering testimony that even Fox News called “very damaging” to the top tangerine. Needless to say, the many talking heads of late night (even Jimmy Fallon!) had plenty to say about the proceedings, riffing on everything from Trump’s utterly careless blunders to his pretending to ignore the hearings. Catch up on all the jokes about this very serious matter below.
Late Night with Seth Meyers
The Late Show with Stephen Colbert
Jimmy Kimmel Live!
The Tonight Show Starring Jimmy Fallon
Full Frontal with Samantha Bee
Conan
The Daily Show
The next impeachment hearing is set for this Friday, Nov. 15, per Vox, with testimony from former U.S. Ambassador to Ukraine Marie Yovanovitch. We have a feeling late night will have more jokes to go with it, so be sure to check back. And if you enjoyed this post, we have a feeling you might like these tweets.


You must provide documentation for anyone else owning a substantial (25+) percent of the company or in charge of the company, finances or operations.
Add owner


## Reasons why tables are totally rad Here are a few reasons why tables are super hot right now. | Reason | Coolness factor | Approved | | ----------------------- |----------------:|:--------:| | They've got **columns** | 500 | ✅ | | And *rows* | 8000 | ✅ | | and different alignment | 20000 | 🔥 |
Tables Playground


SKM Version 2: SK-1 Installation Instructions
Step 2: Attach the hook-up wires.
Attach a 15" length of wire to each of the following pads on the SKM circuit board:
- MIDI "4" and "5"
- "+5V" and "GND"
- "TO KEYBOARD" pads 1-12
- "AUX SCAN" pads 1, 2, 4, 5, 6
Step 3: Disconnect power from the SK-1.
Disconnect any external power cords and remove any batteries from the SK-1. After disconnection, move the SK-1 "function" switch to the "play" position to drain any stored charges.
Step 4: Remove the internal speaker from the SK-1.
Open the SK-1's case and remove the speaker. Set aside the speaker mounting screws for re-use.
Step 5: Mount the MIDI jack on the SK-1.
The MIDI jack requires one 5/8" hole and two 3/32" holes as shown. Be careful not to damage the SK-1's internal parts when creating the holes.
Use two of the speaker mounting screws to secure the jack.
Step 6: Mount the SKM circuit board.
Use the remaining two speaker mounting screws to secure the SKM circuit board.
Step 7: Connect the MIDI jack to the SKM.
Note the numbering of pins on the MIDI jack.
Connect pin 4 on the MIDI jack to the pad marked "M4" on the SKM
circuit board. Connect pin 5 on the MIDI jack to the pad marked "M5" on
the SKM circuit board.
Step 8: Connect the SKM power lines to the SK-1.
Connect the "GND" and "+5V" pads on the SKM circuit board to the SK-1 main board as shown.
Step 9: Connect the SKM keyboard control lines to the SK-1.
Locate the 12-conductor ribbon cable that connects the SK-1
keys to the SK-1 main board. The conductors are numbered 1 to 12.
Connect each of the "TO KEYBOARD" pads on the SKM circuit board to the
corresponding conductor of the ribbon cable.
In this example, the wires are routed underneath the SK-1 main board to meet with the ribbon cable.
Step 10: Connect the SKM "AUX SCAN" control lines to the SK-1.
Locate the 20-conductor ribbon cable that connects the SK-1
buttons to the SK-1 main board. The conductors are numbered 1 to 20.
Connect each of the "AUX SCAN" pads on the SKM circuit board to the
following conductors of the ribbon cable:
| SKM "AUX SCAN" | SK-1 20-Pin Ribbon |
| 1 | 12 |
| 2 | 13 |
| 3 | Not Connected |
| 4 | 20 |
| 5 | 14 |
| 6 | 16 |
Installation Complete
Connect your SK-1 to the "MIDI OUT" port on any MIDI sequencer or MIDI controller.
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
|


My Account
Event List
Create Event
My Account
Feeling Lucky !
{% if not session.user %}
Log In
{% else %}
Log Out
{% endif %}
Is Today Your Lucky Day ?
🏖 Scan to find out if you are
lucky
to get 25 TBA reward!
{% block content %}{% endblock %}


|
ulib
1.7
The universal library
|
The root object for ulib. More...
#import <UMObject.h>
Protected Attributes | |
| uint32_t | umobject_flags |
| char * | _magic |
| UMLogFeed * | logFeed |
The root object for ulib.
UMObject is a replacement for NSObject. It allows a log handler to be attached, getting instantiated from a config file and it has some debug variant UMObjectDebug which allow to trace where objects get allocated and deallocated and it has methods to run methods in background in another thread.
|
protected |
c pointer to the class name which has instantiated this object. Only populated if UMOBJECT_USE_MAGIC is set to 1. Useful for debugging with a limited verison of lldb
|
readwritestrongprotected |
The log feed this object can use to log anything
|
protected |
internal flags to remember which options this object has


--- layout: page title: About header-img: "img/about-bg.png" ---
I am a senior at the University of Mary Washington, majoring in Psychology. I am starting a new career path in coding after doing research for a year.


Scene III
Brutus's tent.
CASSIUS
[Enter BRUTUS and CASSIUS]
That you have wrong'd me doth appear in this:
You have condemn'd and noted Lucius Pella
For taking bribes here of the Sardians;
Wherein my letters, praying on his side,
Because I knew the man, were slighted off.
BRUTUS
You wronged yourself to write in such a case.
CASSIUS
In such a time as this it is not meet
That every nice offence should bear his comment.
BRUTUS
Let me tell you, Cassius, you yourself
Are much condemn'd to have an itching palm;
To sell and mart your offices for gold
To undeservers.
CASSIUS
I an itching palm!
You know that you are Brutus that speak this,
Or, by the gods, this speech were else your last.
BRUTUS
The name of Cassius honours this corruption,
And chastisement doth therefore hide his head.
BRUTUS
Remember March, the ides of March remember:
Did not great Julius bleed for justice' sake?
What villain touch'd his body, that did stab,
And not for justice? What, shall one of us
That struck the foremost man of all this world
But for supporting robbers, shall we now
Contaminate our fingers with base bribes,
And sell the mighty space of our large honours
For so much trash as may be grasped thus?
I had rather be a dog, and bay the moon,
Than such a Roman.
CASSIUS
Brutus, bay not me;
I'll not endure it: you forget yourself,
To hedge me in; I am a soldier, I,
Older in practise, abler than yourself
To make conditions.
BRUTUS
Go to; you are not, Cassius.
BRUTUS
I say you are not.
CASSIUS
Urge me no more, I shall forget myself;
Have mind upon your health, tempt me no further.
BRUTUS
Hear me, for I will speak.
Must I give way and room to your rash choler?
Shall I be frighted when a madman stares?
CASSIUS
O ye gods, ye gods! must I endure all this?
 Must I budge?
Must I observe you? must I stand and crouch
Under your testy humour? By the gods
You shall digest the venom of your spleen,
Though it do split you; for, from this day forth,
I'll use you for my mirth, yea, for my laughter,
When you are waspish.
CASSIUS
Is it come to this?
BRUTUS
You say you are a better soldier:
Let it appear so; make your vaunting true,
And it shall please me well: for mine own part,
I shall be glad to learn of noble men.
CASSIUS
You wrong me every way; you wrong me, Brutus;
I said, an elder soldier, not a better:
Did I say 'better'?
BRUTUS
If you did, I care not.
CASSIUS
When Caesar lived, he durst not thus have moved me.
BRUTUS
Peace, peace! you durst not so have tempted him.
CASSIUS
What, durst not tempt him!

CASSIUS
Do not presume too much upon my love;
I may do that I shall be sorry for.
BRUTUS
You have done that you should be sorry for.
There is no terror, Cassius, in your threats,
For I am arm'd so strong in honesty
That they pass by me as the idle wind,
Which I respect not.
Should I have answer'd Caius Cassius so?
When Marcus Brutus grows so covetous,
To lock such rascal counters from his friends,
Be ready, gods, with all your thunderbolts;
Dash him to pieces!
CASSIUS
I denied you not.
CASSIUS
I did not: he was but a fool that brought
My answer back. Brutus hath rived my heart:
A friend should bear his friend's infirmities,
But Brutus makes mine greater than they are.
BRUTUS
I do not, till you practise them on me.
BRUTUS
I do not like your faults.
CASSIUS
A friendly eye could never see such faults.
BRUTUS
A flatterer's would not, though they do appear
As huge as high Olympus.
CASSIUS
Come, Antony, and young Octavius, come,
Revenge yourselves alone on Cassius,
For Cassius is aweary of the world;
Hated by one he loves; braved by his brother;
Cheque'd like a bondman; all his faults observed,
Set in a note-book, learn'd, and conn'd by rote,
To cast into my teeth. O, I could weep
My spirit from mine eyes! There is my dagger,
And here my naked breast; within, a heart
Dearer than Plutus' mine, richer than gold:
If that thou be'st a Roman, take it forth;
I, that denied thee gold, will give my heart:
Strike, as thou didst at Caesar; for, I know,
When thou didst hate him worst, thou lovedst him better
Than ever thou lovedst Cassius.
BRUTUS
Sheathe your dagger:
Be angry when you will, it shall have scope;
Do what you will, dishonour shall be humour.
O Cassius, you are yoked with a lamb
That carries anger as the flint bears fire;
Who, much enforced, shows a hasty spark,
And straight is cold again.
CASSIUS
Hath Cassius lived
To be but mirth and laughter to his Brutus,
When grief, and blood ill-temper'd, vexeth him?
BRUTUS
When I spoke that, I was ill-temper'd too.
CASSIUS
Do you confess so much? Give me your hand.
BRUTUS
What's the matter?
CASSIUS
Have not you love enough to bear with me,
When that rash humour which my mother gave me
Makes me forgetful?
BRUTUS
Yes, Cassius; and, from henceforth,
When you are over-earnest with your Brutus,
He'll think your mother chides, and leave you so.
Poet
[Within] Let me go in to see the generals;
There is some grudge between 'em, 'tis not meet
They be alone.
LUCILIUS
[Within] You shall not come to them.
Poet
[Within] Nothing but death shall stay me.
[Enter Poet, followed by LUCILIUS, TITINIUS, and LUCIUS]
CASSIUS
How now! what's the matter?
Poet
For shame, you generals! what do you mean?
Love, and be friends, as two such men should be;
For I have seen more years, I'm sure, than ye.
CASSIUS
Ha, ha! how vilely doth this cynic rhyme!

CASSIUS
Bear with him, Brutus; 'tis his fashion.
BRUTUS
I'll know his humour, when he knows his time:
What should the wars do with these jigging fools?
Companion, hence!
CASSIUS
Away, away, be gone.
[Exit Poet]
BRUTUS
Lucilius and Titinius, bid the commanders
Prepare to lodge their companies to-night.

[Exeunt LUCILIUS and TITINIUS]
BRUTUS
Lucius, a bowl of wine!
[Exit LUCIUS]
CASSIUS
I did not think you could have been so angry.

CASSIUS
Of your philosophy you make no use,
If you give place to accidental evils.
BRUTUS
No man bears sorrow better. Portia is dead.
CASSIUS
How 'scaped I killing when I cross'd you so?
O insupportable and touching loss!
Upon what sickness?
BRUTUS
Impatient of my absence,
And grief that young Octavius with Mark Antony
Have made themselves so strong:--for with her death
That tidings came;--with this she fell distract,
And, her attendants absent, swallow'd fire.
CASSIUS
O ye immortal gods!
[Re-enter LUCIUS, with wine and taper]
BRUTUS
Speak no more of her. Give me a bowl of wine.
In this I bury all unkindness, Cassius.
CASSIUS
My heart is thirsty for that noble pledge.
Fill, Lucius, till the wine o'erswell the cup;
I cannot drink too much of Brutus' love.
BRUTUS
Come in, Titinius!
[Exit LUCIUS]
[Re-enter TITINIUS, with MESSALA]
Welcome, good Messala.
Now sit we close about this taper here,
And call in question our necessities.
CASSIUS
Portia, art thou gone?
BRUTUS
No more, I pray you.
Messala, I have here received letters,
That young Octavius and Mark Antony
Come down upon us with a mighty power,
Bending their expedition toward Philippi.
MESSALA
Myself have letters of the selfsame tenor.
BRUTUS
With what addition?
MESSALA
That by proscription and bills of outlawry,
Octavius, Antony, and Lepidus,
Have put to death an hundred senators.
BRUTUS
Therein our letters do not well agree;
Mine speak of seventy senators that died
By their proscriptions, Cicero being one.
MESSALA
Cicero is dead,
And by that order of proscription.
Had you your letters from your wife, my lord?
MESSALA
Nor nothing in your letters writ of her?
MESSALA
That, methinks, is strange.
BRUTUS
Why ask you? hear you aught of her in yours?
BRUTUS
Now, as you are a Roman, tell me true.
MESSALA
Then like a Roman bear the truth I tell:
For certain she is dead, and by strange manner.
BRUTUS
Why, farewell, Portia. We must die, Messala:
With meditating that she must die once,
I have the patience to endure it now.
MESSALA
Even so great men great losses should endure.
CASSIUS
I have as much of this in art as you,
But yet my nature could not bear it so.
BRUTUS
Well, to our work alive. What do you think
Of marching to Philippi presently?
CASSIUS
I do not think it good.

BRUTUS
Good reasons must, of force, give place to better.
The people 'twixt Philippi and this ground
Do stand but in a forced affection;
For they have grudged us contribution:
The enemy, marching along by them,
By them shall make a fuller number up,
Come on refresh'd, new-added, and encouraged;
From which advantage shall we cut him off,
If at Philippi we do face him there,
These people at our back.
CASSIUS
Hear me, good brother.
BRUTUS
Under your pardon. You must note beside,
That we have tried the utmost of our friends,
Our legions are brim-full, our cause is ripe:
The enemy increaseth every day;
We, at the height, are ready to decline.
There is a tide in the affairs of men,
Which, taken at the flood, leads on to fortune;
Omitted, all the voyage of their life
Is bound in shallows and in miseries.
On such a full sea are we now afloat;
And we must take the current when it serves,
Or lose our ventures.
CASSIUS
Then, with your will, go on;
We'll along ourselves, and meet them at Philippi.
BRUTUS
The deep of night is crept upon our talk,
And nature must obey necessity;
Which we will niggard with a little rest.
There is no more to say?
CASSIUS
No more. Good night:
Early to-morrow will we rise, and hence.
BRUTUS
Lucius!
[Enter LUCIUS]
My gown.
[Exit LUCIUS]
Farewell, good Messala:
Good night, Titinius. Noble, noble Cassius,
Good night, and good repose.
CASSIUS
O my dear brother!

Let it not, Brutus.
BRUTUS
Every thing is well.
CASSIUS
Good night, my lord.
BRUTUS
Good night, good brother.
TITINIUS
|
| Good night, Lord Brutus.
BRUTUS
Farewell, every one.
[Exeunt all but BRUTUS]
[Re-enter LUCIUS, with the gown]
Give me the gown. Where is thy instrument?
BRUTUS
What, thou speak'st drowsily?
Poor knave, I blame thee not; thou art o'er-watch'd.
Call Claudius and some other of my men:
I'll have them sleep on cushions in my tent.
LUCIUS
Varro and Claudius!
[Enter VARRO and CLAUDIUS]
BRUTUS
I pray you, sirs, lie in my tent and sleep;
It may be I shall raise you by and by
On business to my brother Cassius.
VARRO
So please you, we will stand and watch your pleasure.
BRUTUS
I will not have it so: lie down, good sirs;
It may be I shall otherwise bethink me.
Look, Lucius, here's the book I sought for so;
I put it in the pocket of my gown.
[VARRO and CLAUDIUS lie down]
LUCIUS
I was sure your lordship did not give it me.
BRUTUS
Bear with me, good boy, I am much forgetful.

LUCIUS
Ay, my lord, an't please you.
BRUTUS
It does, my boy:
I trouble thee too much, but thou art willing.
LUCIUS
It is my duty, sir.
BRUTUS
I should not urge thy duty past thy might;
I know young bloods look for a time of rest.
LUCIUS
I have slept, my lord, already.
BRUTUS
It was well done; and thou shalt sleep again;
I will not hold thee long: if I do live,
I will be good to thee.
[Music, and a song]
This is a sleepy tune. O murderous slumber,
Lay'st thou thy leaden mace upon my boy,
That plays thee music? Gentle knave, good night;
I will not do thee so much wrong to wake thee:
If thou dost nod, thou break'st thy instrument;
I'll take it from thee; and, good boy, good night.
Let me see, let me see; is not the leaf turn'd down
Where I left reading? Here it is, I think.
[Enter the Ghost of CAESAR]
How ill this taper burns! Ha! who comes here?
I think it is the weakness of mine eyes
That shapes this monstrous apparition.
It comes upon me. Art thou any thing?
Art thou some god, some angel, or some devil,
That makest my blood cold and my hair to stare?
Speak to me what thou art.
GHOST
Thy evil spirit, Brutus.
GHOST
To tell thee thou shalt see me at Philippi.
BRUTUS
Well; then I shall see thee again?
BRUTUS
Why, I will see thee at Philippi, then.
[Exit Ghost]
Now I have taken heart thou vanishest:
Ill spirit, I would hold more talk with thee.
Boy, Lucius! Varro! Claudius! Sirs, awake! Claudius!
LUCIUS
The strings, my lord, are false.
BRUTUS
He thinks he still is at his instrument.
Lucius, awake!
BRUTUS
Didst thou dream, Lucius, that thou so criedst out?
LUCIUS
My lord, I do not know that I did cry.
BRUTUS
Yes, that thou didst: didst thou see any thing?
BRUTUS
Sleep again, Lucius. Sirrah Claudius!
[To VARRO]
Fellow thou, awake!
BRUTUS
Why did you so cry out, sirs, in your sleep?
VARRO
|
| Did we, my lord?
BRUTUS
Ay: saw you any thing?
VARRO
No, my lord, I saw nothing.
BRUTUS
Go and commend me to my brother Cassius;
Bid him set on his powers betimes before,
And we will follow.
VARRO
|
| It shall be done, my lord.


Despite being in class for only a week we've made a multitude of projects, below I've linked some of, what I think, is my better work, with a small description of each.
My name is Will, and I'm a travler at heart. I come from a kitchen background and have always prided myself on my work ethic, positive attitude, and team work mentality. I've also gotten very good at time management and muti-tasking from my kitchen work as you often work in talking about how many seconds until something is ready, while having multiple orders or "tickets" working at once. People that have worked with me have said
- When we razz on you all we can do is talk about how much you make sure everyone is doing ok.
- You're the only person who ever asks if all the customers were happy
- You'll do anything to get the job done, come in early, stay late, and do it with a smile
- I know every day I work with you is going to be great because you'll make it happen, and try to lift everyone's spirits while you do it!
I've been interested in coding since I was highschool and have been teaching myself on and off for years with programs like code acadamy. I decided to take the plunge and go to school after a friend of mine told me about this accelerated program. Despite an intense passion for food and the industry, it's not a very sustainable carreer path with all the physical labor, late nights, and harsh personalities that exsist inside of kitchens. While food will always hold a special place in my heart, I believe it's time to move onto a diffrent adventure that allows for more security in my financials and work life balance while also fulfilling my desire to create a product and see an end resault.
When I'm not at school learning how to code,I'm out exploring my city or state. I'm an avid rock climber and try to get out every weekend during season. I'm also constantly trying new food, both at home and out. I'm currently doing a deep dive into Ethiopian food and have been enjoying the new flavors and spice coming out of my kitchen.


This is a heading
This is a paragraph.
This is a paragraph.
This is a paragraph.
This is a paragraph.
Set single styles
Set multiple styles


Overview • User interface • Special tasks ↑ | ↓ • Sites • Assign TM helices & strands • Build lipid bilayer • Dynamics
Some special tasks require complex input or even output. Dedicated windows are provided by MMM whose help can be accessed by the links above.


Are you sure you want to deactivate your account? Your information and posts will be hidden from other users. You will not be able to create, edit, or delete your posts and threads.
Reactivate your account? All your threads and posts will be viewable to the public again. You will also be able to create, edit, and delete your posts and threads like normal.
Are you sure you want to delete this account? This will delete the user's account and all their posts and threads. Any threads this user has started will be deleted and any posts from other users within that thread will be deleted as well.


This page will automatically load your site once CloudFront has completed deploying.
Could take 3-5 minutes
Click here to authenticate Parima.
{{WebHookUrl}}


Serving Southern New England For over 20 years
Phase Out is a Connecticut-licensed electrical contractor in the business over 20 years, specializing in solar installation and maintenance.
Fully Licensed Electrical Service
With over 20 years of experience in all aspects of electrical service, our Connecticut-licensed electricians can handle anything from residential subcontracting to new service installs, and everything in between.
Solar Installation & Consulting
Our technicians are specially trained in the installation and maintenance of all types of solar systems.
Commercial & Residential Solar O&M
We can provide commercial or residental solar Operations & Maintenance subcontracting for any size installation.
Solar Equipment Removal/Replacement
Our residential and commercial electrical technicians can remove and replace solar systems from various vendors, both as subcontractors or direct-to-customer.
Solar Equipment Warranty Service
Once a solar system is installed, it's crucial to maintain the system and replace solar panels as necessary. Finding qualified electricians that provide solar equipment warranty services in New England can be a challenge for many of the largest solar power installers.


Aerial video taken of Mt. Baker, Washington can be found here.
Members of the Climate Group gathered outside RSMAS at the SALT Waterfront Restaurant.
Aerial view of RSMAS looking towards Miami. Photo: Sevag Mehterian.Members of the Climate Group volunteer for the Climate Change Youth Summit.
Left: UM Rosenstiel School Rescue a Reef scientist Martina D'Alessandro collects coral fragments from the nursery for outplanting on Rainbow Reef off Key Biscayne, Florida. Right: The Miami Super Bowl Host Committee Reef planted on June 13, 2019. The original article can be found here.
Plankton-rich waters on the Patagonian shelf break. The Visible Infrared Imaging Radiometer Suite (VIIRS) on Suomi NPP captured this false-color view of phytoplankton-rich waters off of Argentina on December 2, 2014. See here for more details.
Coral bleaching caused by unusually warm sea temperatures. Photo source here and the Glowing, Glowing, Gone campaign.


Name
My name is Asim Mehta.
Origin
I am from
Mumbai, India.
Age
I am
23 years old.
Profession
I am a
Computer Engineer
turned
Video Editor-Visualiser.
I have worked for almost
2 years and here’s some of my work,
Hobbies
Some of my hobbies are:
-
play games
-
edit videos
-
watch
-
listen to music(obviously)
Section with a Secret
and as you can see
I love the color
BLACK
(^inspect me)
go back to home


Convert Keystone v2.0 RC files to v3 multi-domain RC files
If your OpenStack environment uses multi-domain authentication, your old RC file configured for Keystone's v2.0 API won't work. Authorization failures are the most common sign that you're using an outdated v2.0 configuration.
This page takes your RC file and your authentication domain and transforms the RC file into a Keystone v3 compliant file.


Server
Login
Project
Revision
Viewer
Select BIMserver
Address:
Connect
OR connect to one of the following common addresses
Login


mnist and the idx file format
Boser, Guyon, and Vapnik (BGV) introduce support vector machines (SVMs) in [BGV92] and their immediate application is that of optical character recognition (OCR). More specifically, given images of handwritten numerals, they train a classifier to categorize a given image by digit. BGV show that SVMs can achieve performance comparable to that of a more sophisticated five-layer neural network classifier. I’ve been working through their paper to learn about SVMs, and I thought it might be fun to try to follow along. There is a fairly large dataset of handwritten numerals due to LeCun, Cortes, and Burges [LCB10], called the MNIST database that’s publicly available. What follows are my notes (mostly for my future self) on how to get started working with this dataset.
1. the idx
file format
At the time of writing, unfortunately, the website hosting the MNIST database and the relevant documentation seems to be locked behind a authentication wall. The dataset’s popular enough, though, that you can find it with a quick internet search. Once you’ve downloaded the dataset (and uncompressed it), you should have 4 files: 2 files for training data and 2 files for testing data.
ls -lh data/mnist/
total 53M -rw-r--r-- 1 nilay nilay 7.5M Mar 5 11:36 t10k-images.idx3-ubyte -rw-r--r-- 1 nilay nilay 9.8K Mar 5 11:37 t10k-labels.idx1-ubyte -rw-r--r-- 1 nilay nilay 45M Mar 5 11:38 train-images.idx3-ubyte -rw-r--r-- 1 nilay nilay 59K Mar 5 11:38 train-labels.idx1-ubyte
You’ll notice immediately that the data is stored in a slightly idiosyncratic
manner. A cursory head data/train-images.idx3-ubyte
will show that we’re
working with binary blobs, not images or comma-separated values.1 A bit of
elbow grease is necessary, then, in order to work with this dataset. This short
post is an overview of how to work with this file format. If you’d like a quick
and easy solution, I’d suggest taking a look at idx2numpy
project [Yur20].
I found this project halfway through writing up my own code, but it’s a pretty
straightforward exercise regardless.
The idx
format is used to store data that has the shape of an
\(d\)-dimensional matrix.2 In the files above, the digit following .idx
indicates the dimension \(d\) and the ubyte
indicates that the data (the matrix
entries) will be unsigned bytes. Let’s fix a bit of notation: bytes can take
values between \x00
and \xff
. That is, a byte consists of two hexadecimal
digits. Since each digit can take \(16=2^4\) values, two hex digits gives us \(16\times
16=256=2^8\) values, which is exactly 8 bits = 1 byte.3 The dimension and
the datatype are actually described in the binary, so the filenames are just a
helpful reminder.
An idx
file is structured as follows (all multibyte sequences are big-endian
[Wik22]):
| \x00 | \x00 | dtype | d | n_1 | ... | n_d | | a_{1, 1, ..., 1} | ... | a_{1, 1, ..., 1, n_d} | ... | a_{1, n_2, ..., n_d} | | . | | . | | . | | . | | . | | . | | . | | . | | . | | a_{n_1, 1, ..., 1} | ... | a_{n_1, 1, ..., 1, n_d} | ... | a_{n_1, n_2, ..., n_d} |
I’ve written this out as a table, but remember that this is a binary file so the newlines/formatting here are just for readability. Let’s break down what’s going on here:
- the first two bytes are always zero,
\x00
.4 the third byte
dtype
is the datatype:| value | type | size (bytes) | |-------+---------------+--------------| | \x08 | unsigned byte | 1 | | \x09 | signed byte | 1 | | \x0b | short | 2 | | \x0c | int | 4 | | \x0d | float | 4 | | \x0e | double | 8 |
We’ll be using unsigned bytes, so we expect to see
\x08
.- the fourth byte
d
is the dimension of the data matrix, and the following \(4d\) bytes are 4-byte integers \(n_1,...,n_d\). - the rest of the file stores the \(d\)-dimensional, flattened to a
2-dimensional matrix as the notation above indicates. Each cell has size
determined by the
dtype
above.
To make things more concrete, let’s take a look at the MNIST data.
2. the mnist images
There are a number of standard utilities for displaying the contents of a binary
file as hexadecimal bytes. We’ll use hexdump
to display the first 16 bytes (in
the “canonical” format, hence the -C
flag):
hexdump -C --length=16 data/mnist/train-images.idx3-ubyte
00000000 00 00 08 03 00 00 ea 60 00 00 00 1c 00 00 00 1c |.......`........| 00000010
The column on the left is a column of hexadecimal offsets (essentially line
numbers), so the first row is displaying the first 16 bytes of our file. The
second row of 16 bytes (represented by the hex 10
) is empty, because we’ve
only queried 16 bytes with the --length=16
flag. The 16 middle columns are
what we’re after. We’ll return to those in a moment. The last column is an
attempt at ASCII representations of the bytes. This is irrelevant for us, as
we’re not expecting any plaintext strings in our file, so you can ignore this
column.
The first two bytes are 0, as required by the idx
format. The next byte \x08
tells us that the elements of the data matrix appearing later will be 1-byte
each, to be interpreted directly as unsigned integers between 0 and 255. The
fourth byte \x03
tells us that the data matrix is 3-dimensional. What are the
dimensions \(n_1, n_2, n_3\)? We check the next 12 bytes: \x0000ea60
,
\x0000001c
, and \x0000001c
. Converting these to decimal using the calculator
bc
,
echo "ibase=16; EA60; 1C" | bc
60000 28
we find that
\begin{equation*} n_1 = 60000, \qquad n_2 = n_3 = 28. \end{equation*}This means that we’re dealing with a \((60000 \times 28 \times 28)\) matrix. We have 60000 training images, with each square image having \(28 \times 28 = 784\) pixels, and with each pixel colored in grayscale from 0 (white) to 255 (black). According to the format specification above, all this data is stored in the file as a \((60000 \times 784)\) matrix of bytes. The \(k\)th row represents the \(k\)th image — the \(k\)th feature vector.
 The asterisk *
denotes that the omitted bytes are identical
(in \(16 \times 16\) chunks) to the 16 bytes displayed on the previous line.5 This
isn’t surprising in the case of handwritten digits: we expect a good chunk of
whitespace towards the top and bottom of the image. It’s clearly not easy to
visualize the digit just from this hexdump. We’ll write some python code to help
us visualize them later, after we’ve loaded the images into numpy arrays.
First, though, we’ll look at the labels provided for learning supervision. Just as before, let’s look into the training labels.
hexdump -C --length=8 data/mnist/train-labels.idx1-ubyte
00000000 00 00 08 01 00 00 ea 60 |.......`| 00000008
The first 8 bytes tell us that this file contains a vector of length 60000, whose elements are unsigned bytes. Let’s take a look at the first 16 elements:
hexdump -C --length=16 --skip=8 data/mnist/train-labels.idx1-ubyte
00000008 05 00 04 01 09 02 01 03 01 04 03 05 03 06 01 07 |................| 00000018
As expected for labels indicating digits, all these values are between 0 and 9.
Great, now that we understand how the data is stored, we can get stop messing around in the command line and load the data into our python scripts.
3. reading images into numpy arrays
The python implementation of loading the MNIST images is actually pretty
straightforward, now that we know exactly what our datafiles look like. We’re
not going to write a program to take an arbitrary idx
datafile and convert
it to a numpy array because that’s overkill (just use idx2numpy
!). We’ll stick
to our specific case. That means we just need to read 60000 blocks of size 784
bytes, each (as well as the associated labels). Well okay, let’s just read, say,
the first \(N=2\) images and the first two labels, because the extension to
general N will be clear.
We make sure to open the datafile for binary reading with the rb
flag. This
allows us to read data from the file into a bytes
object, which stores an
immutable sequence of bytes. We throw away the first 16 bytes that we analyzed
above. As it happens, numpy has a super convenient frombuffer
method (I
learned about this by peeking at idx2numpy
’s code). This function takes any
object that exposes “the buffer interface” and produces from it a numpy array.
This was my first time hearing about python’s buffer protocol, but I’ll banish
my short description of it to the footnotes, since it’s a bit off-topic.6
The upshot is that we can pass in our sequence of bytes and get back out a
vector of size 784. All that’s left, then, is to .reshape((28, 28))
to get it
into a nice square matrix, and follow that up with a bit of custom pretty
printing.
import numpy as np # let's look at the first two images N = 2 # 'rb' means that we're reading bytes with open('data/mnist/train-images.idx3-ubyte', 'rb') as f: # discard the first 16 bytes f.read(16) for n in range(N): # read the next 784 bytes into a numpy array and reshape image = np.frombuffer(f.read(784), dtype = np.ubyte).reshape((28, 28)) # draw in ['.', 'o', 'O', '@'] depending on the intensity of a pixel for i in range(28): for j in range(28): if image[i][j] == 0: print('.', end='') elif image[i][j] < 64: print('o', end='') elif image[i][j] < 128: print('O', end='') else: print('@', end='') print() print()
............................ ............................ ............................ ............................ ............................ ............ooooO@@o@@@O.... ........ooO@@@@@@@@@@@@O.... .......o@@@@@@@@@@OOOoo..... .......o@@@@@@@@@@.......... ........O@O<EMAIL_ADDRESS>.........oo@@O.............. ...........@@@o............. ...........o@@O............. ............o@@@Oo.......... .............O@@@Oo......... ..............o@@@@o........ ...............oO@@@........ .................@@@O@@@...... ..........o@@@@O@@oO@@...... .........o@@@@oOOo..@@o..... ........o@@@@O......@@@..... .......o@@@Ooo......@@@..... .......o@@o.........@@@..... .......@@@..........@@@..... ......O@@O..........@@@..... ......O@@o........o@@@o..... ......O@@........o@@@O...... ......O@@.......o@@@........ ......O@@......O@@@......... ......O@@@ooO@@@@@o......... ......O@@@@@@@@@@........... ......o@@@@@@@@............. .......o@@@@@o.............. ............................ ............................ ............................ ............................
That looks like a 5 and a 0 to me. Let’s double check by loading in the first two training labels, which involves more or less the same code as above.
import numpy as np # let's look at the first two labels N = 2 # 'rb' means that we're reading bytes with open('data/mnist/train-labels.idx1-ubyte', 'rb') as f: # discard the first 8 bytes f.read(8) # read the next byte into a numpy array (corresponding to the first label) labels = np.frombuffer(f.read(N), dtype = np.ubyte) print(labels)
[5 0]
Looks good!
Well, that about wraps up this post. We haven’t looked at the testing data in the remaining two files, but those are treated exactly the same. The only difference there is that the testing set is comprised of 10000 images instead of 60000, so there’s not much to change.
References
| [BGV92] | Bernhard E. Boser, Isabelle M. Guyon, and Vladimir N. Vapnik. A training algorithm for optimal margin classifiers. In Proceedings of the Fifth Annual Workshop on Computational Learning Theory, COLT '92, page 144–152, New York, NY, USA, 1992. Association for Computing Machinery. [ bib | DOI | http ] |
| [LCB10] | Yann LeCun, Corinna Cortes, and Chris Burges. Mnist handwritten digit database, 2010. [ bib | http ] |
| [OB06] | Travis Oliphant and Carl Banks. Revising the buffer protocol. PEP 3118, 2006. [ bib | http ] |
| [Wik22] | Wikipedia contributors. Endianness --- Wikipedia, the free encyclopedia, 2022. [Online; accessed 6-March-2022]. [ bib | http ] |
| [Yur20] | Ivan Yurchenko. idx2numpy. https://github.com/ivanyu/idx2numpy, 2020. [ bib ] |
Footnotes:
This is probably done to keep file sizes down. If the numerals were
stored as images, the dataset would likely be much larger in size. Moreover,
since the numerals will have large numbers of white pixels, I would guess that
this binary format, which stores white pixels as \x00
, yields relatively high
compression ratios.
What is idx
short for? Image Data matriX? Incredibly Dense Xylophones?
Notice that a signed byte uses one bit of information to store the sign, and hence can only store integers in \((-2^7, 2^7)\). Here we’re interested in keeping track of how dark a pixel is, for which it’s perfectly convenient to just use an unsigned byte.
Why include the first two bytes if they’re always zero? I think it’s
because the first two bytes of a file are often used as a file signature to
indicate what the filetype is. The creators of the idx
format were probably
just adhering to this convention, and indicating that the file is not in a
commonly used format.
You can force hexdump
to show all bytes explicitly by passing it the
no-squeezing flag --no-squeezing
, or -v
for short.
Straight from PEP 3118 [OB06]: the python buffer protocol “allows different Python types to exchange a pointer to a sequence of internal buffers. This functionality is extremely useful for sharing large segments of memory between different high-level objects…” This seems to be quite important for heavily performance-reliant code (say in numpy) or code that interacts with older legacy software packages written in C or Fortran.


Home PAGE
home
our branches
about us
contact us
Pats's Salmon cookies : Sales Data
add New Branch
Branch Name
min Customers
max Customers
Average Cookies
Add


When the caret is scrolled out and resides at the end of the contenteditable, on pressing "Return" it must be scrolled to the bottom of the view, not to the center to avoid undesirable content view jumping.