In this section the convention is summarized how default parameters are handled in the Modelica Standard Library (since version 3.0).
Many models in this library have parameter declarations to define constants of a model that might be changed before simulation starts. Example:
model SpringDamper parameter Real c(final unit="N.m/rad") = 1e5 "Spring constant"; parameter Real d(final unit="N.m.s/rad") = 0 "Damping constant"; parameter Modelica.SIunits.Angle phi_rel0 = 0 "Unstretched spring angle"; ... end SpringDamper;
In Modelica it is possible to define a default value of a parameter in the parameter declaration. In the example above, this is performed for all parameters. Providing default values for all parameters can lead to errors that are difficult to detect, since a modeler may have forgotten to provide a meaningful value (the model simulates but gives wrong results due to wrong parameter values). In general the following basic situations are present:
To handle the conflicting goals of (1) and (3), the Modelica Standard Library uses two approaches to define default parameters, as demonstrated with the following example:
model SpringDamper parameter Real c(final unit="N.m/rad" , start=1e5) "Spring constant"; parameter Real d(final unit="N.m.s/rad", start= 0) "Damping constant"; parameter Modelica.SIunits.Angle phi_rel0 = 0 "Unstretched spring angle"; ... end SpringDamper; SpringDamper sp1; // warning for "c" and "d" SpringDamper sp2(c=1e4, d=0); // fine, no warning
Both definition forms, using a "start" value (for "c" and "d") and providing a declaration equation (for "phi_rel0"), are valid Modelica and define the value of the parameter. By convention, it is expected that Modelica translators will trigger a warning message for parameters that are not defined by a declaration equation, by a modifier equation or in an initial equation/algorithm section. A Modelica translator might have options to change this behavior, especially, that no messages are printed in such cases and/or that an error is triggered instead of a warning.


|
Show off, what people have said about this project. |
|
Design Document, what is wrong with this program,
how can the data structure be improved, what direction
should it go? |
|
Æditor Developer Manual, a work in progress. The following
documents may have more interest. |
| Studies of how certain commands should behave under various
combination of conditions.
vertical movement,
horizontal movement,
study of wordwrap
Many editors could be more user-friendly.
|
|
Ruby Embedded into C++, how to call back'n'forth between
C++ and Ruby. How to let SWIG
generate the glue code.
Plus a skeleton project you can experiment with.
|
|
A minimal DocBook setup on Unix, in paticular how to
get 'catalog.xml' accelerate DocBook2html compilation. |
|
Fun with FreeBSD, lots of weird setup things, concerning
backup, terminals, remote-desktop. |
|
Iterator Documentation, for bidirectional iterators. |
|
random editor ideas, that I think of implementing. |
Links related to designing and implementing text-editors.
Links related how to write better code.


To establish a WebRTC peer connection open this page in another Browser Tab or Window and set the IDs so that the Local and Remote IDs are opposite. The format of the IDs does not matter they just need to be opposite between the two connecting peers.
For example:
| Browser 1 | Browser 2 | |
|---|---|---|
| Local ID | solo-123 | solo-456 |
| Remote ID | solo-456 | solo-123 |
If successful the video control in each browser should display white noise.


Amkhatar wrote:I think he just would like to have an option to hide all shared MOHW messages in the feed ?!
digitalcassette wrote:here's a version that should be compatible with V3 of BBLog
https://raw.github.com/TonyAshworth/bblog-mohw-filter/master/bblog-mohw-filter-v2.js
digitalcassette wrote:OK here you go
https://raw.github.com/TonyAshworth/bblog-mohw-filter/master/bblog-mohw-filter-v1.js
that version right there will filter out in the current BBLog
here's a version that should be compatible with V3 of BBLog
https://raw.github.com/TonyAshworth/bblog-mohw-filter/master/bblog-mohw-filter-v2.js
tested this and it should be language Independent.
ORFK wrote:not working atm... what happens?


4 May 2005
The Ministry of Health in Cambodia confirmed today that a 20-year-old woman from Kampot province who died on 19 April in a hospital in Viet Nam, was the country’s fourth reported case of avian influenza.
The woman, a secondary school student, was from Kompong Trach district in Kampot province, the same district as the first case reported from Cambodia in February. Samples taken from the woman tested positive for avian influenza A/H5 virus by the Pasteur Institute in Ho Chi Minh City, Viet Nam.
Staff from the Ministry of Health, Cambodia conducted active case finding in the village where the woman attended school and also provided education sessions to the students at the school. The Ministry of Agriculture are conducting an investigation into poultry deaths in the area of the school.


By: AY1920S1-CS2103T-W12-3
Since: SEPT 2019
Licence: MIT
- 1. Introduction
- 2. Quick Start
- 3. Features
- 4. Commands
- 4.1. Logging Income :
in
- 4.2. Logging Expense :
out
- 4.3. Setting a Budget :
set
- 4.4. Splitting a Bill with Friends :
split
- 4.5. Receiving Money from a Friend :
receive
- 4.6. Projecting Future Balance and Budgets :
project
- 4.7. Display a Projection Graph:
display
- 4.8. Switching Tabs :
view
- 4.9. Deleting Finance :
delete
- 4.10. Updating Finance :
update
- 4.11. Sorting Transactions :
sort
- 4.12. Filtering Transactions :
filter
- 4.13. Undoing the Last Command :
undo
- 4.14. Redoing the Last Command :
redo
- 4.15. Clearing All Entries :
clear
- 4.16. Listing All Entries :
list
- 4.17. Viewing Help :
help
- 4.18. Exiting the Application :
exit
- 4.19. Saving the Data
- 4.1. Logging Income :
- 5. FAQ
- 6. Command Summary
1. Introduction
PalPay is for those who prefer to use a desktop app for managing personal finances. More importantly, PalPay is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, PalPay can get your finance management tasks done faster than traditional GUI apps.
This User Guide is written for the users of PalPay as an introductory document of the application. You are strongly encouraged to read this document before using the application to enjoy the full functionality of the application. Ready to start your journey to financial freedom? Jump to Section 2, “Quick Start” to get started. Enjoy!
2. Quick Start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
PalPay.jar
here. -
Copy the file to the folder you want to use as the home folder for your finance manager.
-
Double-click the file to start the app. The GUI should appear within a few seconds.
-
Type your command in the command box and press Enter to execute it.
Example: Typinghelp
and pressing Enter will open the help window. -
Some example commands you can try:
-
view transaction
: shows list of your transactions. -
in $/100 n/mother d/31102019 c/allowance
: adds an income to your personal finance of 100 dollars with the category mother and the description allowance. -
out $/3 n/pie d/19112019 c/food
: adds an expenditure to your personal finance of 3 dollars with the category food and the description pie. -
exit
: exits the app
-
-
Refer to Section 4, “Commands” for details of each command.
3. Features
3.1. Transaction
The Transaction feature represents the bread and butter logging of incomes and expenditures. PalPay will tabulate and display the overall balance to give users a better insight on their spending and saving habits.
The Transactions are split into:
-
in
: income -
out
: expenditure
These transactions requires the mandatory AMOUNT
, DATE
and DESCRIPTION
fields to be filled. Additionally, The transactions can take in one or more CATEGORY
tags.
3.2. Budget
3.3. Ledger
The Ledger feature allows you to track outstanding balances when you split a bill with your friends and when they pay you back.
Ledger commands consist of:
-
split
: split a bill between friends -
receive
: log a single payment from 1 friend
3.4. Projection
By using the Projections feature, you can project your:
-
Account Balance
-
Budget Deficits / Surpluses
These projections are cast upon a specified DATE
, and optionally, a specified CATEGORY
. Upon casting a
projection, it is automatically stored and thereafter accessible through the Projection tab via the view
command (see View).
4. Commands
Command Format :
-
Words in
UPPER_CASE
are the parameters to be supplied by the user.
Example: Forin $/AMOUNT n/ITEM d/DATE
,AMOUNT
,ITEM
andDATE
are parameters which can be used asin $/300 n/concert d/19112019
. -
Items in square brackets are optional.
Example:n/ITEM [c/CATEGORY]
can be used asn/coke c/drinks
or asn/coke
. -
Items with
…
after them can be used multiple times including zero times.
Example:[n/NAME]…
can be used as
(i.e. 0 times),n/Amy
,n/Amy n/Betty
etc. -
Parameters can be in any order.
Example: If the command specifies$/AMOUNT n/ITEM
,n/ITEM $/AMOUNT
is also acceptable. -
Parameters that need to be concatenated together are represented as
PARAM+PARAM
.
Example:TYPE+INDEX
refers to joiningTYPE
andINDEX
together without a space, such ast1
.
-
Parameter Constraints :
Parameter Prefix Constraints AMOUNT
$/
- a valid amount between 0 and 1000000 dollars exclusive
- a valid amount up to 2 decimal placesDATE
d/
- a valid date with the format DDMMYY in the Gregorian calendar
DESCRIPTION
n/
- a valid description with alphanumeric chacracters
CATEGORY
c/
- a valid category with alphanumeric characters without space
TYPE
- a valid type containing one character
t
: Transaction
b
: Budget
l
: Ledger
p
: ProjectionINDEX
- a valid entry number in the list
4.1. Logging Income : in
Have an income that you need to log down? PalPay accepts all income inputs through the in
command. Inputting an in
command will increase the overall balance value. Your income statements have the added option to be tagged under one or more categories. You can do so by including the [c/CATEGORY]
parameter in your command line. All uncategorized incomes will be tagged under the GENERAL
category.
4.1.1. Command Syntax
Format: in $/AMOUNT n/DESCRIPTION d/DATE [c/CATEGORY]…
4.1.2. Example Usage
Example 1
in $/120 d/31122019 n/work
-
Logging income
-
Inputs an income of $120 with description set to 'work' and date set on 31/12/2019.
-
The income has not utilized the optional
CATEGORY
field. -
Initial balance (red box in Figure 1) has a value of $0.
Figure 2. Income Logging Example 1
-
-
Income added
-
The income is added to the empty Transactions tab.
-
The added income is given a
GENERAL
category. -
Balance has increased from $0 to $120 (red box in Figure 2).
Figure 3. Sample Income 1 Added
-
Example 2
in $/500.50 n/allowance d/01012020 c/parents
-
Logging income
-
Inputs an income of $500.50 with description set to 'allowance' and date set on 01/01/2020.
-
The income includes
parents
under theCATEGORY
field. -
Initial balance (red box in Figure 3) has a value of $120.
Figure 4. Income Logging Example 2
-
-
Income added
-
The income is added to the bottom of the Transactions tab.
-
The added income tagged under
parents
category. -
Balance has increased from $120 to $620.50 (red box in Figure 4).
Figure 5. Sample Income 2 Added
-
Example Commands:
-
in $/100 d/01012019 n/errand c/work c/company
-
in $/250.50 d/29022020 n/mom c/family
-
in $/120 d/31122019 n/helping friend
4.2. Logging Expense : out
Have you recently made an expenditure that requires logging down? PalPay accepts all expenditure inputs through the out
command. Inputting an out
command will decrease the overall balance value. Your expenditure statements, just like the income statements, have the added option to be tagged under one or more categories. You can do so by including the [c/CATEGORY]
parameter in your command line. All uncategorized incomes will be tagged under the GENERAL
category.
4.2.1. Command Syntax
Format: out $/AMOUNT n/DESCRIPTION d/DATE [c/CATEGORY]…
4.2.2. Important Details:
-
Note that
out
transactions differ fromin
transactions in the display amount. Thein
transactions are characterized by the positive value within their display box whilst theout
transactions are characterized by the negative values in their display box. The difference can be observed in the example usage below. -
An
out
Transaction will affect the remaining amount ofBudget
entries with similar categories within the same time period (Refer to Section <IP_ADDRESS>, “Example 3”).
4.2.3. Example Usage
Example 1
out $/5 d/01012020 n/burger
-
Expenditure logging
-
Inputs an expenditure of $5 with description set to 'burger' and date set on 01/01/2020.
-
The expenditure has not utilized the optional
CATEGORY
field. -
Initial balance (red box in Figure 5) has a value of $620.50.
Figure 6. Expenditure Logging Example 1
-
-
Expenditure added
-
The expenditure is added to the bottom of the Transactions tab.
-
The amount value of the expenditure box should display a negative value (see Figure 6 entry 3).
-
The added expenditure is given a
GENERAL
category. -
Balance has decreased from $620.50 to $615.50 (red box in Figure 6).
Figure 7. Sample Expenditure 1 Added
-
Example 2
out $/1000 n/maintenance d/02012020 c/car c/transport
-
Expenditure logging
-
Inputs an expenditure of $1000 with description set to 'maintenance' and date set on 02/01/2020.
-
The income includes
car
andtransport
under theCATEGORY
field. -
Initial balance (red box in Figure 7) has a value of $615.50.
Figure 8. Expenditure Logging Example 2
-
-
Expenditure added
-
The expenditure is added to the bottom of the Transactions tab.
-
The added expenditure is tagged under
car
andtransport
category. -
Balance has decreased from $615.50 to -$384.50 (red box in Figure 8).
-
The negative value of the balance indicates that the total spending amount outweighs the total savings amount.
Figure 9. Sample Expenditure 2 Added
-
Example 3
out $/100 n/pants d/02012020 c/clothes
-
Expenditure logging
-
Inputs an expenditure of $100 with description set to 'pants' and date set on 02/01/2020.
-
The income includes
clothes
under theCATEGORY
field.Figure 10. Expenditure Logging Example 3
-
-
Budget with similar categories and time period.
-
Entry 3 of the
Budget
tab hasclothes
under itsCATEGORY
field. -
Entry 3 of the
Budget
tab has a deadline set to01/01/2021
.Figure 11. Budget with 'clothes' category
-
-
Expenditure added
-
The expenditure is added to the bottom of the Transactions tab.
-
The added expenditure has a date set to
02/01/2020
. -
The added expenditure is tagged under the
clothes
category.Figure 12. Sample Expenditure 3 Added
-
-
Budget entry updated
-
Remaining amount of entry 3 of the
Budget
tab has decreased from $1000 to $900.Figure 13. Budget entry updated
-
Example Commands:
-
out $/100 d/01012019 n/milk c/food c/drinks
-
out $/29 d/29022020 n/taxi c/transport
-
out $/12 d/31122019 n/burger
4.3. Setting a Budget : set
You can set a budget for a particular category until a certain date, given it is not already present in the budget list.
A duplicate budget is a budget with the same AMOUNT
and DATE
and CATEGORY
.
If you attempt to do so, you will receive an error message: This budget already exists
.
Format: set $/AMOUNT d/DATE [c/CATEGORY]…
Let’s say you want to restrict your spending for a certain category until a certain deadline.
PalPay allows you to set a budget and serve as a reminder to show how much of the budget set you have left
until the deadline (inclusive).
To set a new budget:
1. Type set
and enter the relevant details (amount, deadline, category) in the format given above.
2. The result box will display the message New budget successfully set
.
3. If the budget already exists in the budget list, the result box will display the message This budget already exists
.
4. Now you can see the newly set budget in the budget list.
As you make an OutTransaction of a particular CATEGORY
, your budgets with the same CATEGORY
will be adjusted
to display the remaining amount of budget. Other budgets in the list belonging to different CATEGORY
will not be adjusted.
For example, you went out with your friends and bought a cup of Gong Cha. Before you log your spending, your budget list looks like this:
You then type in the command out $/5 c/BBT c/friends n/gong cha d/11112019
.
Your budget list now shows the updated budgets. Observe how Budget 3 is not affected because it does not belong to the relevant category.
Budget will not take into consideration past OutTransaction when calculating the remaining budget. Remember, you are setting a budget
from TODAY till the stated DATE
(inclusive)!
If you overspend beyond a set budget, the overspent budget will be displayed in red. Shown below as budget index 3 is an example of an overspent budget:
As the day you have set for the budget approaches, the countdown placeholder as well as the percentage remaining placeholder will turn to red when the number of remaining days reaches 3 and below. Shown below as budget index 4 is an example of a budget approaching its deadline:
Examples:
-
set $/100 d/010120120 c/BBT
-
set $/300 d/29022020 c/shopping
4.4. Splitting a Bill with Friends : split
Split a bill with your friends
Format: split $/AMOUNT n/NAME1 a/DESCRIPTION [d/DATE] [n/NAME2]… [s/SHARE]…
-
DESCRIPTION
encompasses more details for the bill being split. User can make use of this field to determine nature of bill. -
[SHARE]
defines portion of bill to be paid by each person-
if no shares are given,
amount
will be split evenly across all people, including user -
user is included in the bill if number of shares is 1 more than number of people
-
user’s share will be the first listed share
-
-
each person’s share is assigned in order
-
i.e. last person’s share is the last share listed
-
-
shares cannot be negative numbers
-
shares can be 0 but result is not guaranteed to be meaningful
-
Ledger GUI
This is how the Ledger looks when you switch to the Ledger tab.
The left shows the people who has unresolved balances with you, while the right lists
all transactions that have to do with the Ledger.
Ledger's balance is separate from the BankAccount. It is displayed in the same position,
at the bottom right corner.
4.4.2. Example Usage:
-
split $/1000 n/Amy n/Betty n/Catherine n/Dan a/haidilao
$1000 is split equally between Amy, Betty, Catherine, Dan and the user.
-
Enter appropriate command into the command line.
Figure 20. Splitting evenly -
Result is displayed accordingly
Figure 21. Splitting evenly (result)For an even split of $1000, each person pays $200. Therefore Ledger shows $200 on the tab of each person. Ledger balance does not include the amount spent by the user. In this bill, the user is owed $800 in total from the rest of his friends. Therefore Ledger balance is -$800, as shown in the bottom right.
-
-
split $/100 n/Albert n/Bernard n/Clement s/2 s/1 s/7 a/kbbq dinner
$100 is split with Albert owing $20, Bernard owing $10 and Clement owing $70.
-
Enter appropriate command into the command line.
Figure 22. Splitting unevenly -
Result is displayed accordingly
Figure 23. Uneven split results
-
4.5. Receiving Money from a Friend : receive
Receives money from 1 friend
Format: receive $/AMOUNT n/NAME1 [d/DATE] [a/DESCRIPTION]
4.5.1. Example usage:
-
receive $/20 n/Albert
Transfers $20 from Albert to user. If Albert is no longer owe or is owed money, he will be removed from the Ledger.
-
Enter appropriate command into the command line.
Figure 24. Receive payment -
Result is displayed accordingly.
Figure 25. Receive payment resultAlbert is removed from the Ledger since he no longer owes any money. Ledger balance is also updated accordingly.
-
4.6. Projecting Future Balance and Budgets : project
Cast a projection on your future balance amount and budget statuses based on your transaction history.
Format: project d/DATE [c/CATEGORY]
|
Note
|
If a CATEGORY is not specified, it will be set as GENERAL by default. GENERAL projections project
upon ALL transactions, regardless of their categories.
|
4.6.1. Example Usage:
-
project d/22072020
Projected balance: $955.80
-
project d/01012020 c/Food
Projected balance: $188.04 You are on track to meeting your budget of $600 by 08122019, with a surplus of $484.32!
4.6.2. Usage Constraints
Command Format
-
CATEGORY
must be preceded by its tagc/
. A violation of any of the above will produce the following error message:
Date Values
-
DATE
input must be set in the future. A violation of this constraint will produce the following error message:
-
DATE
cannot be more than 720 days from the day of projection.
A violation of this constraint will produce the following error message:
Minimum Number of Transactions
-
There must be a minimum of 5 transactions in total, or in the specified
CATEGORY
for a projection to be successfully cast. Should the requirement above be unmet, the following error message will be produced:
-
Should the number of transactions in a
projection
fall below 5, it will be automatically deleted, as shown below:-
Suppose there are 5 transactions, and a
GENERAL
projection, which projects upon them.Figure 26. Five transactions under the projection tabFigure 27. A projection which is cast based on the 5 transactions above -
If a transaction being deleted causes the number of transactions being projected upon to fall below 5, the corresponding projection will automatically be deleted.
Figure 28. The fifth transaction has been deleted.Figure 29. The project earlier seen in Figure 19 has been automatically deleted.
-
Valid Budget Start Dates and Deadlines
A projection will only project upon budgets with deadlines set before or equal to the projection DATE
. An example
is depicted below:
-
Suppose there is currently a general
BUDGET
with a deadline set for 28th November 2019Figure 30. Two budgets with dates 20112019 and 28112019 in the "GENERAL" category -
If a general
PROJECTION
is cast to 20th November 2019, it will contain the budget with deadline 20112019 but not 28112019, since the projection’sDATE
is earlier than 28112019.Figure 31. The projection only contains the budget with deadline 20112019
Backward Projections
While it is possible in PalPay, projecting your balance amount backwards in time is not guaranteed to produce sensible results. It is generally not advisable to do so.
4.7. Display a Projection Graph: display
Display a graphical representation of a projection
in a new window.
Format: display PROJECTION_ID
4.7.1. Example Usage
-
Type display PROJECTION_ID into the command box and press Enter.
-
A new window containing a graphical representation of the specified projection will pop up.
If there are any budgets associated with the projection, a corresponding graphical representation of the budget will be additionally displayed.
4.7.2. Interpreting the Projection graph
Here is a typical projection graph.
-
The X-Axis
The X-Axis denotes your balance in dollars ($). -
The Y-Axis
The Y-Axis denotes the number of days from now, with today being Y = 0. -
Red Points
The red points on the graph each represent your account balance (denoted by the X-value) at a particular point of time (denoted by the Y-value). -
Blue Line Graph
The blue line graph represents the projection line, with each point along it representing a prediction of your account balance (denoted by the X-value) at a certain point of time (denoted by the Y-value). -
All Other Coloured Line Graphs
All other coloured line graphs represent various budgets which fall within theCATEGORY
andDATE
range of thePROJECTION
. Each of these line graphs have three parts:
4.7.3. Usage Constraints
Valid Projection Index
-
A
Projection
withPROJECTION_ID
must exist. Attempting to display a non-existentPROJECTION
will result in the following error message:
Static Graph Rendering
-
Projection
graphs do not update automatically when a newTransaction
orBudget
is added or removed. Instead, they are statically rendered upon thedisplay
command.NoteDue to the static nature of projection graphs, commands should NOT be executed while a projection graph is open, lest the behaviour of PalPay become unpredictable.
Consequently, adisplay
command should ALWAYS be followed by closing the projection graph window, before any other actions are performed within PalPay.
4.8. Switching Tabs : view
Want to switch tabs without using your mouse? You can switch to another tab with the view
command.
4.8.1. Command Syntax
Format: view TAB
4.8.2. Example Usage:
You do not have to use your mouse in PalPay to switch tabs anymore.
-
By default, you are in the
transaction
tab. -
Simply type view budget in the command box and press Enter.
-
You can now view your budgets. Easy!
4.9. Deleting Finance : delete
Deletes the specified Transaction, Budget, Ledger or Projection from PalPay.
4.9.1. Command Syntax
Format: delete TYPE+INDEX
4.9.2. Important Details:
-
PalPay deletes items based on the entry index of the target item. You can only delete a maximum of 1 entry per command. (i.e.
delete t1 t2 b1
ordelete t1 t2
will not work) -
You can only delete an existing transaction or budget. Nothing will be deleted if the transaction or budget of
INDEX
does not exists.
4.9.3. Example Usage:
Deleting the 5th entry of the transactions list
-
Note the index of the entry you want to delete. In this example, entry 5 is the field we will be deleting.
-
Since we are deleting a Transaction entry of index 5, we will input
t
into ourTYPE
field and5
into ourINDEX
field. -
Success message will be displayed upon successful deletion.
Example Commands:
-
delete t1
-
delete b3
-
delete l2
-
delete p4
4.10. Updating Finance : update
Did you make a mistake in one of your entries? Perhaps you over counted that expenditure you made. PalPay provides you with an update
feature which helps you change specific fields within your entries.
4.10.1. Command Syntax
The update
feature has different implementations for different entry types. The conditions for the update
feature is as follows.
Format (Transactions): update TYPE+INDEX [$/AMOUNT] [d/DATE] [n/ITEM] [c/CATEGORY]…
Format (Budget): update TYPE+INDEX [$/AMOUNT] [d/DATE] [c/CATEGORY]…
Format (Ledger): Cannot be updated
Format (Projections): Cannot be updated
4.10.2. Important Details:
-
update
requires at least one field to be updated. (e.g.update t1 $/20 d/10102019 n/milk
andupdate t1 $/10
will both be accepted). -
You can only update an existing transaction, budget or projection. Nothing will be updated if the entry of index
INDEX
does not exists. -
Ledger
andProjection
do not have an update function. If you need to change specific fields within a ledger or projection entry, you should delete the target entry and recreate a new entry with your desired fields. -
You cannot change an
in
Transaction to anout
Transaction or vice versa. -
Changing an expenditure’s (
out
Transaction) category field to that of a Budget’s entry will reflect changes on that particular Budget entry as well. (Further explained in Section <IP_ADDRESS>, “Example 3:”)NoteChanging the categories of an out
Transaction entry with similar categories to that of aBudget
entry to reflect changes on the budget’s remaining amount will be incoming in version 2.0.
4.10.3. Example Usage
Example 1:
Updating a Transaction entry.
-
Identify the index number of the entry you want to edit. In this case, we will be using entry 3.
-
Put
t
as yourTYPE
input and key in the fields you want to change. In this case, we will only be changing the amount of the transaction. -
Success message will be displayed upon successful update. Fields will now be updated accordingly.
Example 2:
Updating a Budget entry.
-
Identify the index number of the entry you want to edit
-
Put
b
as yourTYPE
input and key in the fields you want to change. In this case, we will be changing both the date and amount of this Budget. When you update the amount of a budget, the budget will be re-initialised (reset to 100%). -
Success message will be displayed upon successful update. Fields will now be updated accordingly.
Example 3:
Updating a Transaction entry which has the same category field as a Budget entry.
-
Identify the index number of the Transaction entry you want to edit.
-
Notice that a Budget entry has the same category field as the Transaction entry mentioned above. (Budget entry 2).
-
Put
t
as yourTYPE
input and key in the fields you want to change. In this case, we will be changing only the amount of this Transaction. -
Success message will be displayed upon successful update. Fields of the Transaction entry will now be updated accordingly.
-
Remaining amount of the Budget entry will also be updated accordingly.
Example Commands:
-
update t1 $/20 n/coke c/drinks d/12122019
-
update b2 $/300
-
update t4 $/30 d/12102019
4.11. Sorting Transactions : sort
Have you ever wonder which is the most expensive transaction you ever made?
Or which is the latest transaction you made? Fret not!
You can now sort
your transactions according to date
or amount
.
4.11.1. Command Syntax
Format: sort PREDICATE/ORDER
4.11.2. Example Usage:
Do you want to know what is the latest transaction you made? No need to scroll all the way down anymore. PalPay has made it simple for you.
-
By default, your transactions are sorted from the earliest transaction you entered to the latest transaction you entered.
-
Simply type sort date/d in the command box and press Enter.
-
Great! You can now see the latest transactions you made.
4.12. Filtering Transactions : filter
Here at PalPay, you do not need to scroll through your history of transactions to find out what you spend two months ago.
PalPay gives you the power to filter your transactions to solve that problem.
4.12.1. Command Syntax
Format: filter [n/DESCRIPTION] [y/YEAR] [m/MONTH] [c/CATEGORY]…
4.12.2. Example Usage:
Imagine that you wanted to find out what you spent on shopping in October 2019.
-
By default, PalPay shows your all your transactions you have made.
-
Simply type filter c/Shopping m/10 y/2019 in the command box and press Enter.
-
You will now see the list of transactions you have made while shopping in October 2019. Hurray!
4.13. Undoing the Last Command : undo
Did you accidentally delete a transaction? Do not panic! PalPay lets you undo your previous commands with just one
word, undo
.
4.13.1. Command Syntax
Format: undo
4.13.2. Example Usage:
Suppose you want to update your allowance you received in October 2019 to $800 but you accidentally update the GrabTaxi
ride instead. Without going through the trouble of updating the same transaction again, you can simply perform the
undo
command. Just follow these three simple steps.
-
Here, you can see the wrong update you just made.
-
Simply type undo in the command box and press Enter.
-
As you wish, your command has been undone.
4.14. Redoing the Last Command : redo
Made an extra undo
by mistake? Do not worry! PalPay lets you redo your previous undo(s) with just one word, redo
.
4.14.1. Command Syntax
Format: redo
4.14.2. Example Usage:
Suppose you want to undo your last update but you accidentally undo twice instead.
You can simply perform the redo
command to revert the changes. Just follow these three simple steps.
-
Here, you can see the extra undo you just made and the GrabTaxi ride is back at $800.
-
Simply type redo in the command box and press Enter.
-
Great! Your transaction is back to normal.
4.15. Clearing All Entries : clear
Do you want to start PalPay from a clean slate again? The clear
command lets you do that!
4.15.1. Command Syntax
Format: clear
4.16. Listing All Entries : list
After filtering your transactions, you can use the list
command to see all of your transactions in PalPay again.
4.16.1. Command Syntax
Format: list
4.17. Viewing Help : help
Did you forget how to use the in
command? Fret not! You can easily find the link to this User Guide with the
help
command. Simply copy and paste the URL into your browser to access our User Guide.
4.17.1. Command Syntax
Format: help
4.18. Exiting the Application : exit
Finishing using PalPay for the day? You can use the exit
command to close PalPay.
4.18.1. Command Syntax
Format: exit
4.19. Saving the Data
PalPay data is saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.
5. FAQ
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Bank Account folder.
6. Command Summary
-
In :
in $/AMOUNT n/ITEM d/DATE [c/CATEGORY]
Example:in $/100 n/allowance d/11112019 c/income
-
Out :
out $/AMOUNT n/ITEM d/DATE [c/CATEGORY]
Example:out $/20 n/coke d/19112019 c/drink c/lunch
-
Set :
set $/AMOUNT d/DATE [c/CATEGORY]…
Example:set $/100 d/10102019 c/food
-
Split :
split $/AMOUNT n/NAME1 a/DESCRIPTION [d/DATE] [n/NAME2]… [s/SHARE]…
Example:split $/1000 n/Amy n/Betty n/Catherine n/Dan a/HaiDiLao
-
Receive :
receive $/AMOUNT n/NAME
Example:receive $/20 n/Albert
-
Project :
project DURATION
Example:project d/22072020
-
View :
view TAB
Example:view transaction
-
Delete :
delete TYPE+INDEX
Example:delete t1
-
Update :
update TYPE+INDEX [$/AMOUNT] [d/date] [n/ITEM] [c/CATEGORY]
Example:update b1 $/100 c/transport
-
Sort :
sort PREDICATE
Example:sort amount
-
Filter :
filter [n/DESCRIPTION] [y/YEAR] [m/MONTH] [c/CATEGORY]…
Example:filter c/transport c/allowance y/2019
-
Undo :
undo
-
Redo :
redo
-
Clear :
clear
-
List :
list
-
Help :
help
-
Exit :
exit


Activity Portal
Home
Branch
Degree
Faculty
Student
Activity
Hello,
Admin !
Degree
Add Degree
×
Degree details succesfully Added!
Degree Name
Year
BTECH
4
BE
4


Computer graphics in Game development
Ivan Belyavtsev
21.02.2020
[2]
1. McGuire M. The graphics codex. 2.14 ed. Casual Effects, 2018.
2. Shirley P. Ray tracing in one weekend. second. Amazon.com Services LLC, 2019. Vol. 1.
3. Lefrançois M.-K., Gautron P. DX12 raytracing tutorial - part 2 [Electronic resource]. URL: https://developer.nvidia.com/rtx/raytracing/dxr/DX12-Raytracing-tutorial-Part-2.


Unfortunately, this contact form is not hooked up to anything behind the scenes so any messages sent will not be read by anyone. Unless I'm telling lies — in which case, be nice.
Thank you for your message, you!


--- title: Proposal -- A new kind of blog comment system layout: post ---
I'm almost 100 percent sure that scripting.com was the first blog to have comments. And I'm equally sure that it was the first to have its comments flame out. The flameout was a good thing, although it didn't feel like it at the time, because it created the first wave of blogs. And when their comments flamed out, there were subsequent waves of new blogs.
This is a pretty great idea, actually.


I am an undergrad at the Indian Institute of Technology Guwahati and will be graduating in 2022 with a Bachelor in Technology in Mathematics and Computing.
I've always had a flair and fascination for mathematics and a keen interest in computer science. With a little toss of luck, I landed here in this field. Finding solutions to challenging problems, emerging with innovative ideas, combining the mathematical logic and its application in computer science is what I have a knack for.
Beyond academics, I keep trying my hand at new and exciting things. I have a taste for anchoring, acting, hairstyling, sketching and making memes. Haha, you are going through my portfolio. "I see this as an absolute win!". Not to mention, I love interacting with people, making new friends, and it makes me really glad when I'm of service to others.
Want to know me better? Want to collaborate for a project? Hit me up! You can find me on LinkedIn, Instagram and Facebook. Are you an email kind of person? Well, here you go<EMAIL_ADDRESS>Looking forward to hearing from you!
This is where I spent a significant part of my life. A place that not just gave education and interpersonal skills, but lots of fun and lifelong memories!
JEE turned out to be a great success and with a little toss of luck, I landed in Mathematics and Computing at IIT Guwahati.
Technothlon is an International school championship conducted solely by the student fraternity of IIT Guwahati. Making the question paper, organizing the test nationwide, and designing events for the top 50 teams takes in many sleepless nights, tons of hard work but gives out countless memories with the team and lots of fun!
The happiest people I know are those who lose themselves in the service of others, and so did I! I love being around with people, talking, and making them happy. Those smiles are what I work for. It's in giving that we receive!
Being the Branch Representative of my batch, not just bridged the gap between the professors and students but also enhanced senior-junior interaction, mentored juniors, and organized various activities like freshers' party and intern talks.
My interest in web development brought me here. Working on real-life projects within teams, refined not only the technical skills but also polished my interpersonal skills. It was a cherry on the cake!


Drag me! Not the title bar... but gently :)
WebSocket.send window.postMessage webview.hostObjects
Throughput test (1KB) Throughput test (10KB) Throughput test (100KB)


Flat out like a dunny
She’ll be right bored sh*tless mate he’s got a massive bitzer. Lets throw a trackies where built like a rotten. As stands out like garbo flamin grab us a bogan. We’re going pozzy when she’ll be right cleanskin.  Gutful of middy my gutful of ugg boots. Flat out like a larrikin where grab us a mates. It’ll be apples heaps built like a counter meal.  As cunning as a bush oyster mate as stands out like jumbuck. We’re going whinge mate lets throw a vee dub.
 As dry as a bluey no worries flat out like a kelpie. Stands out like a porky no dramas it’ll be cockie. Mad as a avos with it’ll be show pony.   Built like a boogie board when she’ll be right muster.
Post by: Diego Pinheiro


Silent Mistakes is a Jekyll theme based on Minimal Mistakes and formerly used for the SILENT COMICS blog.
You can use and modify this theme to fit your needs; to change this home page, for example.
Read more about the theme. or browse the blog articles for documentation


Overview
This document is intended to give you a conceptual overview of Cricket Audio.
Detailed API documentation is in the C++ header files themselves, in the inc/ck directory. Doxygen-generated documentation for those headers can be found here.
For the iOS Objective-C interface, every method or property corresponds
directly to a function in the C++ interface;
so for documentation on a particular Objective-C method or property,
refer to the corresponding function in the C++ documentation. For
example, for documentation on the -(void) play method on the class CkoSound, look at the documentation for CkSound::play().
For the Android Java interface, there is javadoc-generated documentation here.


An entry-level position repairing computers that clients commission Computer Pros to service.
Bellevue College, Bellevue Washington
Information Systems - Software Development, 2015
IT Specialist.................................................................09/19/2011-06/15/2012
Volunteered to maintain and repair school computers and various electronics


object MatrixD extends Error with Serializable
The MatrixD
companion object provides operations for MatrixD
that don't
require 'this' (like static methods in Java). It provides factory methods for
building matrices from files or vectors.
- Alphabetic
- By Inheritance
- MatrixD
- Serializable
- Serializable
- Error
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
def
++(u: VectoD, w: VectoD): MatrixD
Concatenate (row) vectors 'u' and 'w' to form a matrix with 2 rows.
Concatenate (row) vectors 'u' and 'w' to form a matrix with 2 rows.
- u
the vector to be concatenated as the new first row in matrix
- w
the vector to be concatenated as the new second row in matrix
-
def
++^(u: VectoD, w: VectoD): MatrixD
Concatenate (column) vectors 'u' and 'w' to form a matrix with 2 columns.
Concatenate (column) vectors 'u' and 'w' to form a matrix with 2 columns.
- u
the vector to be concatenated as the new first column in matrix
- w
the vector to be concatenated as the new second column in matrix
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
apply(fileName: String, sep: Char = ','): MatrixD
Create a matrix by reading from a text file, e.g., a CSV file.
Create a matrix by reading from a text file, e.g., a CSV file.
- fileName
the name of file holding the data
- sep
the character separating the values
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
eye(n: Int): MatrixD
Create an n-by-n identity matrix (ones on main diagonal, zeros elsewhere).
Create an n-by-n identity matrix (ones on main diagonal, zeros elsewhere).
- n
the dimension of the square matrix
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
flaw(method: String, message: String): Unit
Show the flaw by printing the error message.
Show the flaw by printing the error message.
- method
the method where the error occurred
- message
the error message
- Definition Classes
- Error
-
def
form_cw(x: VectoD, y: Double): MatrixD
Form a matrix from a vector and a scalar, column-wise.
Form a matrix from a vector and a scalar, column-wise.
- x
the first vector -> column 0
- y
the second scalar -> column 1 (repeat scalar)
-
def
form_cw(x: Double, y: VectoD): MatrixD
Form a matrix from a scalar and a vector, column-wise.
Form a matrix from a scalar and a vector, column-wise.
- x
the first scalar -> column 0 (repeat scalar)
- y
the second vector -> column 1
-
def
form_cw(x: VectoD, y: VectoD): MatrixD
Form a matrix from two vectors, column-wise.
Form a matrix from two vectors, column-wise.
- x
the first vector -> column 0
- y
the second vector -> column 1
-
def
form_rw(x: VectoD, y: Double): MatrixD
Form a matrix from a vector and a scalar, row-wise.
Form a matrix from a vector and a scalar, row-wise.
- x
the first vector -> row 0
- y
the second scalar -> row 1 (repeat scalar)
-
def
form_rw(x: Double, y: VectoD): MatrixD
Form a matrix from scalar and a vector, row-wise.
Form a matrix from scalar and a vector, row-wise.
- x
the first scalar -> row 0 (repeat scalar)
- y
the second vector -> row 1
-
def
form_rw(x: VectoD, y: VectoD): MatrixD
Form a matrix from two vectors, row-wise.
Form a matrix from two vectors, row-wise.
- x
the first vector -> row 0
- y
the second vector -> row 1
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
def
outer(x: VectoD, y: VectoD): MatrixD
Compute the outer product of vector x and vector y.
Compute the outer product of vector x and vector y. The result of the outer product is a matrix where c(i, j) is the product of i-th element of x with the j-th element of y.
- x
the first vector
- y
the second vector
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
times(u: VectoD, a: MatrixD): VectorD
Multiply vector u by matrix a.
Multiply vector u by matrix a. Treat u as a row vector.
- u
the vector to multiply by
- a
the matrix to multiply by (requires sameCrossDimensions)
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )


@*
* Copyright 2023 HM Revenue & Customs
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*@
@import uk.gov.hmrc.cataloguefrontend.ViewMessages
@import uk.gov.hmrc.cataloguefrontend.connector.model.SBTVersion
@import uk.gov.hmrc.cataloguefrontend.connector.Team
@import uk.gov.hmrc.cataloguefrontend.model.SlugInfoFlag
@import uk.gov.hmrc.cataloguefrontend.{ routes => appRoutes }
@this(viewMessages: ViewMessages)
@(sbtVersions : List[SBTVersion],
flags : Seq[SlugInfoFlag],
teams : Seq[Team],
selectedFlag: SlugInfoFlag,
selectedTeam: Option[Team]
)(implicit
request: RequestHeader
)
@standard_layout("SBT Versions") {
SBT Versions: @selectedFlag.asString
| Service | SBT Version |
|---|


VALIDATOR_SERVER_EVENT
validatorServer
Name of the event that will be triggered when was made a bad request.


--- layout: page title: Submitting Posts ---
Anyone can submit any topics, videos or blogposts to Kodermine. Kodermine's content heavily depends on the Kodermine community. All our blog posts are created by our Kodermine members.
This is a guide on how YOU can start to contribute and make Kodermine more awesome!
We use Jekyll for our blog, but it's not really mandatory to know what jekyll is or how jekyll works.
In our Github Repo there's a master
branch and there's a jekyll
branch. The master
branch contains all the static files and assets and the jekyll
branch contains all the configurations, templates and also blog posts.
The branch that get's published to our website is the master
branch.
Learn more about publishing on Github.
When submitting blog posts, we're gonna be making pull-requests to the jekyll branch so that it can be genrated and published.
Jekyll Branch Directory Structure
- _assets (contains all the asset files)
- javascripts (javascript fiiles)
- stylesheets (stylesheet files)
- _includes (included files)
- _layouts (layout templates)
- _plugins (jekyll plugins)
- _posts (where the blog posts are, this is where we're gonna spend most of our time on)
- _site (the generated static site)
- images
Go to the Github repo for the blog.
_posts
folder, the _posts
folder contains all the blog posts on our Kodermine Blog.Create a new post by clicking the new file icon, and name it with the current date and the title of the post with the .md
(markdown) file extension. E.g.
2014-05-20-hello_world.md
The title is important because it's going to be parsed as the permalink of the post.
---
layout: post
title: Title
subtitle: "Subtitle."
youtube: youtube_link
cover_image: cover_image
excerpt: "Insert excerpt here"
category: "category"
author:
name: Your Name
twitter: twitter_handle
gplus: google_plus_id
bio: title
image: your_photo
---
These are used by our templates to display information about the post and the author.
title
- The title of the page (required)
subtitle
- The text that appears below it inside a blogpost (optional)
youtube
- The embed link for the youtube video (optional)
cover_image
- A cover image for the blog post (optional)
excerpt
- An excerpt of the text from the blog post written, this is used when the post is being displayed on the index page, and also used for SEO descriptions (required)
category
- The category of the post E.g. ruby
, git
, tutorial
. It could one or many. (optional)
name
- Your name (required)
twitter
- Your twitter handle (optional)
gplus
- Your googleplus id (optional)
bio
- Your title E.g guru
, co-founder
Example posts:
Go ahead and copy the header information to the text box and fill in your information.
Learn more about writting Markdown
You can now submit the post by clicking "Propose new file" on the bottom of the page. Make sure that you fill in the appropriate description.
All blog posts submitted will go through a review process, we will make comments on the proposal that you've made to inform you if it has been accepted or declined.
SUBMIT A POST


{% extends "base.html" %} {% block title %}Server Error{% endblock %} {% block content %}
An internal server error has occurred; don't worry, this is probably not your fault. Someone has been emailed about it.


| Package | Description |
|---|---|
| energy.usef.core.repository |
Package for the core repository classes.
|
| energy.usef.core.service.business |
Package for the core business service classes.
|
| energy.usef.dso.model |
Model classes of the Distribution System Operator.
|
| energy.usef.dso.repository |
Repository classes of the Distribution System Operator.
|
| energy.usef.dso.service.business |
Business classes of the Distribution System Operator.
|
| Modifier and Type | Method and Description |
|---|---|
CongestionPointConnectionGroup |
CongestionPointConnectionGroupRepository.findOrCreate(String congestionPointEntityAddress,
String dsoDomain)
Creates or finds the
CongestionPointConnectionGroup in a seperate transaction. |
| Modifier and Type | Method and Description |
|---|---|
List<CongestionPointConnectionGroup> |
CongestionPointConnectionGroupRepository.findActiveCongestionPointConnectionGroup(org.joda.time.LocalDate date)
Finds all
CongestionPointConnectionGroup active for the specific time. |
List<CongestionPointConnectionGroup> |
CongestionPointConnectionGroupRepository.findAll()
Finds all congestion point connection groups.
|
| Modifier and Type | Method and Description |
|---|---|
CongestionPointConnectionGroup |
CorePlanboardBusinessService.findCongestionPointConnectionGroup(String congestionPoint)
Finds
CongestionPointConnectionGroup matching the given congestionPoint entity address. |
| Modifier and Type | Method and Description |
|---|---|
CongestionPointConnectionGroup |
AggregatorOnConnectionGroupState.getCongestionPointConnectionGroup() |
| Modifier and Type | Method and Description |
|---|---|
void |
AggregatorOnConnectionGroupState.setCongestionPointConnectionGroup(CongestionPointConnectionGroup congestionPointConnectionGroup) |
| Modifier and Type | Method and Description |
|---|---|
Map<CongestionPointConnectionGroup,List<AggregatorOnConnectionGroupState>> |
AggregatorOnConnectionGroupStateRepository.findConnectionGroupsWithAggregators(org.joda.time.LocalDate period)
Finds the Aggregators on a congestion point.
|
| Modifier and Type | Method and Description |
|---|---|
AggregatorOnConnectionGroupState |
AggregatorOnConnectionGroupStateRepository.findStateForAggregatorOnConnectionGroup(Aggregator aggregator,
CongestionPointConnectionGroup congestionPoint,
org.joda.time.LocalDate date)
Find State for an AggregatorOnConnectionGroup.
|
| Modifier and Type | Method and Description |
|---|---|
List<CongestionPointConnectionGroup> |
DsoPlanboardBusinessService.findActiveCongestionPointConnectionGroup(org.joda.time.LocalDate date)
Finds all
CongestionPointConnectionGroup active for the specific time. |
Map<CongestionPointConnectionGroup,List<AggregatorOnConnectionGroupState>> |
DsoPlanboardBusinessService.findConnectionGroupsWithAggregators(org.joda.time.LocalDate period)
Finds the Aggregators on a congestion point.
|
| Modifier and Type | Method and Description |
|---|---|
void |
DsoPlanboardBusinessService.saveNonAggregatorConnectionForecast(CongestionPointConnectionGroup congestionPointConnectionGroup,
org.joda.time.LocalDate ptuDate,
List<Long> power,
List<Long> maxload)
Saves Non Aggregator Connection Forecast.
|
Copyright © 2016. All rights reserved.


peakCalling.Rmd
We first introduced a strategy for iterative peak merging in 2018 (Corces* & Granja* et al. Science 2018 - See Supplementary Methods). Other peak merging strategies suffer from a few key issues that we outline below.
We use 501-bp fixed-width peaks because they make downstream computation easier as peak length does not need to be normalized. Moreover, the vast majority of peaks in ATAC-seq are less than 501-bp wide. Using variable-width peaks also makes it difficult to merge peak calls from multiple samples. In general, we do not feel that the potential benefit derived from using variable-width peaks outweighs the costs. More broadly, most analyses are stable with respect to the peak set or peak style used.
Below, we use the same toy example of a few cell types with a few different peaks to illustrate the differences between these often used peak merging methods.
Raw peak overlap involves taking any peaks that overlap each other and merging these into a single larger peak. In this scheme, daisy-chaining becomes a large problem because peaks that dont directly overlap each other get included in the same larger peak because they are bridged by a shared internal peak. Another problem with this type of approach is that, if you want to keep track of peak summits, you are forced to pick a single summit for this each new merged peak.
Clustered overlap takes peaks that cluster together and picks a single winner. This is often done by using bedtools cluster and then keeping the most significant peak in each cluster. In our experience, this ends up under-calling and misses smaller peaks located nearby.
Iterative overlap removal avoids the issues mentioned above. Peaks are first ranked by their significance. The most significant peak is retained and any peak that directly overlaps with the most significant peak is removed from further analysis. Then, of the remaining peaks, this process is repeated until no more peaks exist. This avoids daisy-chaining and still allows for use of fixed-width peaks. It is important to note that we use a normalized metric of significance for peaks because the reported MACS2 significance is proportional to the sequencing depth.
Comparing the peak calls resulting from all of these methods directly shows clear differences in the final peak sets. It is our opinion that the iterative overlap peak merging process yields the best peak set with the fewest caveats.
The iterative overlap peak merging process is implemented by ArchR via addReproduciblePeakSet()
but you can always use your own peak set via ArchRProj <- addPeakSet(...)
.


Data Structure & Algorithms
Books
- Introduction To Algorithm By Thomas H. Cormen
- The Algorithm Design Manual By Steven Skiena
- ALgorithms By Robert Sedgewick
-
Data Structure and Algorithms in Java By Michael T. Goodrich
-
Head First Object Oriented Analysis & Design By Brett Mclaughlin
-
Introduction to the Design and Analysis of Algorithms By Ananz
Levitin
Others
- Coming Soon...
- Coming Soon...
- Coming Soon...
- Coming Soon...


This application is made as a training to introduce users to some of the available widgets in the Widget toolkit. More...
Enumerations | |
| enum | app_widget_ids { SLIDER_ID = 1, BUTTON_ID } |
Event command ID for the application widgets. More... | |
Functions | |
| static bool | widget_frame_command_handler (struct wtk_basic_frame *frame, win_command_t command_data) |
| Frame command events handler. | |
| static void | sub_frame_draw_handler (struct win_window *win, struct win_clip_region const *clip) |
| Frame draw event handler. | |
| void | app_widget_launch (struct workqueue_task *task) |
| Setup widget demo. | |
Static text strings | |
|
| |
| static const char * | demo_string = "Demonstrating widgets" |
| Description for label. | |
Static variables | |
|
| |
| static struct wtk_basic_frame * | frame |
| Pointer to frame for application. | |
| static struct wtk_slider * | slider |
| Pointer to slider. | |
| static struct wtk_progress_bar * | progress_bar |
| Pointer to progress bar. | |
| static struct gfx_bitmap | frame_background |
| Frame background bitmap. | |
| static uint8_t | counter |
| Counter for button. | |
| static struct wtk_basic_frame * | sub_frame |
| Pointer to the sub-frame. | |
| static struct gfx_bitmap | sub_frame_background |
| Sub-frame background bitmap. | |
Color scheme | |
|
| |
| #define | APP_BACKGROUND_COLOR GFX_COLOR(50, 50, 50) |
| Background color for application. | |
Widget sizes and positions | |
|
| |
| #define | LABEL_POS_X 10 |
| Label position on top of display. | |
| #define | LABEL_POS_Y 10 |
| Label position on top of display. | |
| #define | SLIDER_POS_X 10 |
| Slider position. | |
| #define | SLIDER_POS_Y 60 |
| Slider position. | |
| #define | SLIDER_SIZE_X 80 |
| Slider size on display. | |
| #define | SLIDER_SIZE_Y 40 |
| Slider size on display. | |
| #define | SLIDER_PB_SPACING_X 10 |
| Spacing from slider to progress bar. | |
| #define | PB_SIZE_X SLIDER_SIZE_X |
| Slider progress bar on display. | |
| #define | PB_SIZE_Y SLIDER_SIZE_Y |
| Slider progress bar on display. | |
Widget configurations | |
|
| |
| #define | SLIDER_MAX_VALUE 100 |
| Max value for slider. |
This application is made as a training to introduce users to some of the available widgets in the Widget toolkit.
Initially this application will draw a basic frame filling the entire screen and add a slider and a progress bar on the upper half of the screen.
The users task is then to add a sub-frame and a button. The button should increment a counter presented in the sub-frame each time the button is pressed.
| #define APP_BACKGROUND_COLOR GFX_COLOR(50, 50, 50) |
Background color for application.
Definition at line 81 of file app_widget.c.
| #define LABEL_POS_X 10 |
Label position on top of display.
Definition at line 92 of file app_widget.c.
| #define LABEL_POS_Y 10 |
Label position on top of display.
Definition at line 94 of file app_widget.c.
| #define PB_SIZE_X SLIDER_SIZE_X |
Slider progress bar on display.
Definition at line 108 of file app_widget.c.
| #define PB_SIZE_Y SLIDER_SIZE_Y |
Slider progress bar on display.
Definition at line 110 of file app_widget.c.
| #define SLIDER_MAX_VALUE 100 |
Max value for slider.
Definition at line 121 of file app_widget.c.
| #define SLIDER_PB_SPACING_X 10 |
Spacing from slider to progress bar.
Definition at line 106 of file app_widget.c.
| #define SLIDER_POS_X 10 |
Slider position.
Definition at line 97 of file app_widget.c.
| #define SLIDER_POS_Y 60 |
Slider position.
Definition at line 99 of file app_widget.c.
| #define SLIDER_SIZE_X 80 |
Slider size on display.
Definition at line 101 of file app_widget.c.
| #define SLIDER_SIZE_Y 40 |
Slider size on display.
Definition at line 103 of file app_widget.c.
| enum app_widget_ids |
Event command ID for the application widgets.
Definition at line 67 of file app_widget.c.
| void app_widget_launch | ( | struct workqueue_task * | task | ) |
| static void sub_frame_draw_handler | ( | struct win_window * | win, | |
| struct win_clip_region const * | clip | |||
| ) | [static] |
Frame draw event handler.
This function will draw the contents of the sub-frame.
Definition at line 194 of file app_widget.c.
References counter, GFX_COLOR, GFX_COLOR_TRANSPARENT, gfx_draw_string(), win_clip_region::origin, snprintf(), and sysfont.
| static bool widget_frame_command_handler | ( | struct wtk_basic_frame * | frame, | |
| win_command_t | command_data | |||
| ) | [static] |
Frame command events handler.
This function handles the command events generated by the widgets.
Definition at line 166 of file app_widget.c.
References BUTTON_ID, counter, SLIDER_ID, win_redraw(), wtk_basic_frame_as_child(), wtk_progress_bar_set_value(), and wtk_slider_get_value().
Counter for button.
Definition at line 151 of file app_widget.c.
Referenced by sub_frame_draw_handler(), and widget_frame_command_handler().
const char* demo_string = "Demonstrating widgets" [static] |
Description for label.
Definition at line 132 of file app_widget.c.
struct wtk_basic_frame* frame [static] |
Pointer to frame for application.
Definition at line 143 of file app_widget.c.
Referenced by wtk_basic_frame_handler(), wtk_frame_create(), and wtk_frame_handler().
struct gfx_bitmap frame_background [static] |
Frame background bitmap.
Definition at line 149 of file app_widget.c.
struct wtk_progress_bar* progress_bar [static] |
Pointer to progress bar.
Definition at line 147 of file app_widget.c.
struct wtk_slider* slider [static] |
Pointer to slider.
Definition at line 145 of file app_widget.c.
Referenced by wtk_slider_create(), and wtk_slider_handler().
struct wtk_basic_frame* sub_frame [static] |
Pointer to the sub-frame.
Definition at line 153 of file app_widget.c.
struct gfx_bitmap sub_frame_background [static] |
Sub-frame background bitmap.
Definition at line 155 of file app_widget.c.


Ringgit ends slightly lower against US dollar
KUALA LUMPUR, Nov 29 — The ringgit ended slightly lower against the US dollar today in line the decline in global crude oil prices which affected the local note’s valuation, said a dealer.
At 6pm, the ringgit settled at 4.1750/1780 against the greenback compared with yesterday’s close of 4.1720/1750.
A dealer said the benchmark Brent crude trimmed 0.76 per cent to US$62.79 per barrel at the time of writing
FXTM market analyst Han Tan said in a week when Asian currencies endured mixed fortunes against the US dollar, the ringgit threatened to make a run for the 4.19 mark after breaching above its 50-day moving average, before moderating in the second half of the week.
“The ringgit has now marked three consecutive months of gains against the US dollar.
“This week’s market action once again underscores the influence that the ongoing US-China trade negotiations have over global risk appetite, as investors continue pinning their hopes on a limited trade deal between the world’s two largest economies,” he told Bernama.
Meanwhile, the ringgit was traded mostly higher against other major currencies.
The local currency was lower against the Singapore dollar at 3.0550/0579 from 3.0537/0579 on Thursday but increased versus the British pound to 5.3807/3859 from 5.3965/4020 yesterday.
It improved against the yen to 3.8100/8138 from 3.8125/8156 and appreciated against the euro to 4.5938/5987 from 4.5942/5992 previously. — Bernama


West Ham United v Tottenham Hotspur preview, predicted XI, team news and more
by Vishal SubramanianWest Ham United host Tottenham Hotspur at the London Stadium and all eyes will be on Jose Mourinho, who returns to the dugout eleven months after his sacking at Manchester United. In what has been a whirlwind few days for Spurs and their fans, the two-time Champions League winner took over the reins from Mauricio Pochettino after the club reluctantly decided to part ways with the Argentine.
Both sides have been underwhelming in recent weeks and although the North London club will be buoyed on by the fact that they've got a new manager at the helm, the Hammers will not be pushovers as they aim to pile on Spurs' misery domestically.
The home side are only one point below Spurs in 16th place despite starting the season strongly and will look to get their season back on track with a positive result, as the Special One prepares to take charge of his first game at the club.
Also Read - 3 reasons why Jose Mourinho will succeed at Tottenham Hotspur
West Ham v Tottenham Hotspur Head-to-Head
The Hammers are aiming to register successive wins against Spurs for the first time since the 2013/14 season. The away side have only registered one clean sheet in the Premier League this season, a joint-worst tally alongside relegation strugglers Norwich City.
West Ham United form guide: L-L-D-L-L
Tottenham Hotspur form guide: L-D-L-D-D
West Ham v Tottenham Hotspur Team News
Hugo Lloris is a long-term absentee and the Frenchman is joined on the treatment table by Erik Lamela and Michel Vorm, as the pair continued to be hampered by minor injuries. Tanguy Ndombele and Jan Vertonghen face a race against time to prove their fitness ahead of the weekend but it has been reported that they're both in contention to make the matchday squad, at the very least.
Injuries: Hugo Lloris, Michel Vorm, Erik Lamela
Doubtful: Tanguy Ndombele, Jan Vertonghen
Suspensions: None
Also Read - 3 players who could be cast aside by Jose Mourinho at Tottenham
West Ham v Tottenham Hotspur Predicted XI
Tottenham Predicted XI (4-4-2): Paulo Gazzaniga, Serge Aurier, Toby Alderweireld, Davinson Sanchez, Danny Rose, Eric Dier, Harry Winks, Moussa Sissoko, Dele Alli, Heung-Min Son, Harry Kane
West Ham v Tottenham Hotspur Prediction
Although both sides have made underwhelming starts to the league campaign and are winless in their last 5 Premier League encounters, a new manager's arrival often coincides with an upturn of form and Spurs will be hoping that's the case, as Mourinho looks to get off the mark in style. Harry Kane has scored 28 goals in 45 London Derbies and the Englishman will look to lead from the front once again.
Verdict - West Ham United 1-2 Tottenham Hotspur
Also Read - 3 reasons why Jose Mourinho is the wrong man for Tottenham Hotspur


Sentiment Analysis¶
Supervised Sentiment¶
Overview¶
This is a set of models which are examples of supervised implementations for sentiment analysis. The larger idea behind these models is to allow ensemble learning with other supervised or unsupervised models.
Files¶
- examples/supervised_sentiment/supervised_sentiment.py: Sentiment analysis models - currently an LSTM and a one-hot CNN
- examples/supervised_sentiment/amazon_reviews.py: Code which will download and process the Amazon datasets described below
- examples/supervised_sentiment/ensembler.py: Contains the ensemble learning algorithm(s)
- examples/supervised_sentiment/example_ensemble.py: An example of how the sentiment models can be trained and ensembled.
- examples/supervised_sentiment/optimize_example.py: An example of using an hyperparameter optimizer with the simple LSTM model.
Models¶
Two models are shown as classification examples. Additional models can be added as desired.
Bi-directional LSTM¶
A simple bidirectional LSTM with one fully connected layer. The number of vocab features, dense output size, and document input length, should be determined in the data preprocessing steps. The user can then change the size of the LSTM hidden layer, and the recurrent dropout rate.
Temporal CNN¶
As defined in “Text Understanding from Scratch” by Zhang, LeCun 2015 https://arxiv.org/pdf/1502.01710v4.pdf this model is a series of 1D CNNs, with a max pooling and fully connected layers. The frame sizes may either be large or small.
Datasets¶
The dataset in this example is the Amazon Reviews dataset, though other datasets can be easily substituted.
The Amazon review dataset(s) should be downloaded from http://jmcauley.ucsd.edu/data/amazon/. These are *.json.gzip
files which should be unzipped. The terms and conditions of the data set license apply. Intel does not grant any rights to the data files.
For best results, a medium sized dataset should be chosen though the algorithms will work on larger and smaller datasets as well. For experimentation I chose the Movie and TV reviews.
Only the “overall”, “reviewText”, and “summary” columns of the review dataset will be retained. The “overall” is the overall rating in terms of stars - this is transformed into a rating where currently 4-5 stars is a positive review, 3 is neutral, and 1-2 stars is a negative review.
The “summary” or title of the review is concatenated with the review text and subsequently cleaned.
The Amazon Review Dataset was published in the following papers:
- Ups and downs: Modeling the visual evolution of fashion trends with one-class collaborative filtering. R. He, J. McAuley. WWW, 2016. http://cseweb.ucsd.edu/~jmcauley/pdfs/www16a.pdf
- Image-based recommendations on styles and substitutes. J. McAuley, C. Targett, J. Shi, A. van den Hengel. SIGIR, 2015. http://cseweb.ucsd.edu/~jmcauley/pdfs/sigir15.pdf
Running Modalities¶
Ensemble Train/Test¶
Install extra packages for running the model:
pip install -r examples/requirements.txt
Currently, the pipeline shows a full train/test/ensemble cycle. The main pipeline can be run with the following command:
python examples/supervised_sentiment/example_ensemble.py --file_path ./reviews_Movies_and_TV.json/
At the conclusion of training a final confusion matrix will be displayed.
Hyperparameter optimization¶
An example of hyperparameter optimization is given using the python package hyperopt which uses a Tree of Parzen estimator to optimize the simple bi-LSTM algorithm. To run this example the following command can be utilized:
python examples/supervised_sentiment/optimize_example.py \
--file_path ./reviews_Movies_and_TV.json/ \
--new_trials 50 --output_file ./data/optimize_output.pkl
The file will output a result of each of the trial attempts to the specified pickle file.
Aspect Based Sentiment Analysis (ABSA)¶
Overview¶
Aspect Based Sentiment Analysis is the task of co-extracting opinion terms and aspect terms (opinion targets) and the relations between them in a given corpus.
Algorithm Overview¶
Training: the training phase inputs training data and outputs an opinion lexicon and an aspect lexicon. the training flow consists the following three main steps:
1. The first training step is text pre-processing that is performed by Spacy. This step includes tokenization, part-of-speech tagging and sentence breaking.
2. The second training step is to apply a dependency parser to the training data. for this purpose we used the parser described in [1]. For more details regarding steps 1 & 2 see BIST dependency parser.
3. The third step is based on applying a bootstrap lexicon acquisition algorithm described in [2], the algorithm uses a generic lexicon introduced by [3] as initial step for the bootstrap process.
4. The last step includes applying an MLP based opinion term re-ranking and polarity estimation algorithm. This step is based on using the word embbedding similarities between each acquired term and a set of generic opinion terms as features. A pre-trained model is re-ranking provided.
Inference: the inference phase inputs an inference data along with the opinion lexicon and aspect lexicon generated by the training phase. The output of the inference phase is a list aspect-opinion pairs (along with their polarity and score) extracted from the inference data. The inference approach is based on detecting syntactically related aspect-opinion pairs.
Flow¶
Training¶
Full code example is available at examples/absa/train.py
.
There are two training modes:
1. Providing training data in a raw text format. In this case the training flow will apply the dependency parser to the data:
python3 examples/absa/train.py --data=TRAINING_DATASET
Arguments:
--data=TRAINING_DATASET
- path to the input training dataset. Should point to a single raw text file with documents
separated by newlines or a single csv file containing one doc per line or a directory containing one raw
text file per document.
Optional arguments:
--rerank-model=RERANK_MODEL
- path to re-rank model. By default when running the training
for the first time this model will be downloaded to ~/nlp-architect/cache/absa/train/reranking_model
Notes:
- The generated opinion and aspect lexicons are written as csv files to:
~/nlp-architect/cache/absa/train/output/generated_opinion_lex_reranked.csv
and to~/nlp-architect/cache/absa/train/output/generated_aspect_lex.csv
- In this mode the parsed data (jsons of ParsedDocument objects) is written to:
~/nlp-architect/cache/absa/train/parsed
- When running the training for the first time the system will download glove word embbedding model (the user will be prompted for authorization) to:
~/nlp-architect/cache/absa/train/word_emb_unzipped
(this may take a while) - For demonstration purposes we provide a sample of tripadvisor.co.uk restaurants reviews under the Creative Commons Attribution-Share-Alike 3.0 License (Copyright 2018 Wikimedia Foundation). The dataset can be found at:
datasets/absa/datasets/absa/tripadvisor_co_uk-travel_restaurant_reviews_sample_2000_train.csv
.
2. Providing parsed training data. In this case the training flow skips the parsing step:
python3 examples/absa/train.py --parsed-data=PARSED_TRAINING_DATASET
Arguments:
--parsed-data=PARSED_TRAINING_DATASET
- path to the parsed format (jsons of ParsedDocument objects) of the training dataset.
Inference¶
Full code example is available at examples/absa/inference/inference.py
.
There are two inference modes:
1. Providing inference data in a raw text format.
inference = SentimentInference(ASPECT_LEX, OPINION_LEX)
sentiment_doc = inference.run(doc="The food was wonderful and fresh. Staff were friendly.")
Arguments:
ASPECT_LEX
- path to aspect lexicon (csv file) that was produced by the training phase.
aspect.csv may be manually edited for grouping alias aspect names (e.g. ‘drinks’ and ‘beverages’)
together. Simply copy all alias names to the same line in the csv file.
OPINION_LEX
- path to opinion lexicon (csv file) that was produced by the training phase.
doc
- input sentence.
2. Providing parsed inference data (ParsedDocument format). In this case the parsing step is skipped:
inference = SentimentInference(ASPECT_LEX, OPINION_LEX, parse=False)
doc_parsed = json.load(open('/path/to/parsed_doc.json'), object_hook=CoreNLPDoc.decoder)
sentiment_doc = inference.run(parsed_doc=doc_parsed)
Inference - interactive mode¶
The provided file examples/absa/inference/interactive.py
enables using generated lexicons in interactive mode:
python3 interactive.py --aspects=ASPECT_LEX --opinions=OPINION_LEX
Arguments:
--aspects=ASPECT_LEX
- path to aspect lexicon (csv file format)
--opinions=OPINION_LEX
- path to opinion lexicon (csv file format)
References¶
| [1] | Simple and Accurate Dependency Parsing Using Bidirectional LSTM Feature Representations, Eliyahu Kiperwasser and Yoav Goldberg. 2016. Transactions of the Association of Computational Linguistics, 4:313–327. |
| [2] | Opinion Word Expansion and Target Extraction through Double Propagation, Guang Qiu, Bing Liu, Jiajun Bu, and Chun Chen. 2011. Computational Linguistics, 37(1): 9–27. |
| [3] | Mining and Summarizing Customer Reviews, Minqing Hu and Bing Liu. 2004. In Proceedings of the Tenth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, KDD ’04, pages 168–177. |


Sorry, but the page you were trying to view can't be found.
You can contact me on this email address or head back to the home page.


|
this is the main program body for the project. The major part of the code exist of a Finite State Machine (FSM):
- Safe Zone: The patient is in the predefined safe zone. The sensor data (barometer & ecompass) are send over DASH7 and when an interrupt is received over DASH7 the state will switch to the DASH7 Downlink state.
- DASH7 Downlink: the next state will be decided on the received message. For now only 1 type of message is supported but this will be expand in the future.
- Danger Zone: The patient is outside the predefined safe zone. The LORA and GPS module are turned on and depending on whether the system could connect to LORA the systems goes in Alarm state or to the Lora Ready state.
- Alarm State: If the system couldn't connect to the LORA an alarm message over DASH7 will be send and a buzzer will go off.
- Lora Ready: LORA is ready and the GPS will be initialized.
- Lora Sending: Sending the GPS coordinates of the patient over LORA.
- Authors
- Imad Bouhadan, Dellafaille Lander, Marien Levi, Pepermans Manu, Van de Mieroop Kevin
|
| I2C_HandleTypeDef | hi2c1 |
| |
| TIM_HandleTypeDef | htim2 |
| |
| WWDG_HandleTypeDef | WwdgHandle |
| |
| UART_HandleTypeDef | huart4 |
| |
| UART_HandleTypeDef | huart5 |
| |
| UART_HandleTypeDef | huart2 |
| |
| UART_HandleTypeDef | huart3 |
| |
| void | SystemClock_Config (void) |
| | System clock configuration. More...
|
| |
| void | HAL_TIM_MspPostInit (TIM_HandleTypeDef *htim) |
| |
| int | main (void) |
| | The main function of the program. The peripherals are initialized and than the program enters a finite state machine which was defined previously. More...
|
| |
| void | initLora () |
| | Function for initializing the LORA module. More...
|
| |
| void | checkNetwork () |
| | Check whether LORA has joined the network. More...
|
| |
| void | loraError () |
| | Sends an error message over DASH7 to the backend. More...
|
| |
| void | initGPS () |
| | initialization of the GPS module More...
|
| |
| void | BuzzerAlert (void) |
| | activating buzzer More...
|
| |
| void | resetWWDG (void) |
| | Performs a reset of the WWDG. More...
|
| |
| void | sendGPS () |
| | Sends the GPS coordinates over LORA. More...
|
| |
| void | DASH7Message (uint8_t data[], int lengthDash7) |
| | Function to send a DASH7 message with a variable length: More...
|
| |
| void | getAndSendAltitude () |
| | Reads the output registers of the LPS22HB sensor and sends them over DASH7. More...
|
| |
| void | LSM303AGR_readRegister (uint8_t LSM303AGR_reg, uint8_t LSM303AGR_data, uint8_t ACC_MAG) |
| | Read a certain register of the LSM303AGR depending on the value of ACC_MAG: More...
|
| |
| void | LSM303AGR_writeRegister (uint8_t LSM303AGR_reg, uint8_t LSM303AGR_data, uint8_t ACC_MAG) |
| | Writes a cerain value to a certain register of the LSM303AGR depending on the value of ACC_MAG: More...
|
| |
| void | LSM303AGR_init () |
| | initialization of the LSM303AGR More...
|
| |
| void | LSM303AGR_ACC_readAccelerationData (int32_t *pData) |
| | Reads the output registers of the accelerometer. More...
|
| |
| void | LSM303AGR_MAG_readMagneticData (int32_t *pData) |
| | Reads the output registers of the magnetometer and applies the sensitivity. More...
|
| |
| void | ecompassAlgorithm () |
| | The ecompass algorithm, it does the following: More...
|
| |
| void | _Error_Handler (char *file, int line) |
| | This function is executed in case of error occurrence. More...
|
| |


The following groups are already assigned to another room for this event:
Select ages for this room. Within each age group, the room assigned is determined by the birth month of the child as indicated below.


gdalmdimtranslate
New in version 3.1.
Converts multidimensional data between different formats, and perform subsetting.
Synopsis
gdalmdimtranslate [--help-general] [-co "NAME=VALUE"]*
[-if format]* [-of format]
[-array <array_spec>]*
[-group <group_spec>]*
[-subset <subset_spec>]*
[-scaleaxes <scaleaxes_spec>]*
[-oo NAME=VALUE]*
<src_filename> <dst_filename>
Description
gdalmdimtranslate program converts multidimensional raster between different formats, and/or can perform selective conversion of specific arrays and groups, and/or subsetting operations.
The following command line parameters can appear in any order.
- -if <format>
Format/driver name to be attempted to open the input file(s). It is generally not necessary to specify it, but it can be used to skip automatic driver detection, when it fails to select the appropriate driver. This option can be repeated several times to specify several candidate drivers.
New in version 3.2.
- -of <format>
Select the output format. This can be a format that supports multidimensional output (such as NetCDF: Network Common Data Form, Multidimensional VRT), or a "classic" 2D formats, if only one single 2D array results of the other specified conversion operations. When this option is not specified, the format is guessed when possible from the extension of the destination filename.
- -co <NAME=VALUE>
Many formats have one or more optional creation options that can be used to control particulars about the file created.
The creation options available vary by format driver, and some simple formats have no creation options at all. A list of options supported for a format can be listed with the --formats command line option but the documentation for the format is the definitive source of information on driver creation options. See Raster drivers format specific documentation for legal creation options for each format.
Array-level creation options may be passed by prefixing them with
ARRAY:
. SeeGDALGroup::CopyFrom()
for further details regarding such options.
- -array <array_spec>
Instead of converting the whole dataset, select one array, and possibly perform operations on it. This option can be specified several times to operate on different arrays.
<array_spec> may be just an array name, potentially using a fully qualified syntax (/group/subgroup/array_name). Or it can be a combination of options with the syntax: name={src_array_name}[,dstname={dst_array_name}][,transpose=[{axis1},{axis2},...][,view={view_expr}]
[{axis1},{axis2},...] is the argument of
GDALMDArray::Transpose()
. For example, transpose=[1,0] switches the axis order of a 2D array.{view_expr} is the value of the viewExpr argument of
GDALMDArray::GetView()
When specifying a view_expr that performs a slicing or subsetting on a dimension, the equivalent operation will be applied to the corresponding indexing variable.
- -group <group_spec>
Instead of converting the whole dataset, select one group, and possibly perform operations on it. This option can be specified several times to operate on different groups. If only one group is specified, its content will be copied directly to the target root group. If several ones are specified, they are copied under the target root group
<group_spec> may be just a group name, potentially using a fully qualified syntax (/group/subgroup/subsubgroup_name). Or it can be a combination of options with the syntax: name={src_group_name}[,dstname={dst_group_name}][,recursive=no]
- -subset <subset_spec>
Performs a subsetting (trimming or slicing) operation along a dimension, provided that it is indexed by a 1D variable of numeric or string data type, and whose values are monotically sorted. <subset_spec> follows exactly the OGC WCS 2.0 KVP encoding for subsetting.
That is dim_name(min_val,max_val) or dim_name(sliced_val) The first syntax will subset the dimension dim_name to values in the [min_val,max_val] range. The second syntax will slice the dimension dim_name to value sliced_val (and this dimension will be removed from the arrays that reference to it)
Using -subset is incompatible of specifying a view option in -array.
- -scaleaxes <scaleaxes_spec>
Applies a integral scale factor to one or several dimensions, that is extract 1 value every N values (without resampling).
<scaleaxes_spec> follows exactly the syntax of the KVP encoding of the SCALEAXES parameter of OGC WCS 2.0 Scaling Extension, but limited to integer scale factors.
That is dim1_name(scale_factor)[,dim2_name(scale_factor)]*
Using -scaleaxes is incompatible of specifying a view option in -array.
- -oo <NAME=VALUE>
New in version 3.4.
Source dataset open option (format specific)
- <src_dataset>
The source dataset name.
- <dst_dataset>
The destination file name.
C API
This utility is also callable from C with GDALMultiDimTranslate()
.
Examples
Convert a netCDF file to a multidimensional VRT file
$ gdalmdimtranslate in.nc out.vrt
Extract a 2D slice of a time,Y,X array
$ gdalmdimtranslate in.nc out.tif -subset 'time("2010-01-01")' -array temperature
Subsample along X and Y axis
$ gdalmdimtranslate in.nc out.nc -scaleaxes "X(2),Y(2)"
Reorder the values of a time,Y,X array along the Y axis from top-to-bottom to bottom-to-top (or the reverse)
$ gdalmdimtranslate in.nc out.nc -array "name=temperature,view=[:,::-1,:]"
Transpose an array that has X,Y,time dimension order to time,Y,X
$ gdalmdimtranslate in.nc out.nc -array "name=temperature,transpose=[2,1,0]"


{{ title }} {{ sp }} ({{ entityid }})
Transfer of your user attributes for login agree / decline
{{ purpose }}
{{ revocation }}