slopes | Package to calculate slopes of roads , rivers | Development Tools library
kandi X-RAY | slopes Summary
kandi X-RAY | slopes Summary
The slopes R package calculates the slope (longitudinal steepness, also known as gradient) of roads, rivers and other linear (simple) features, based on two main inputs:. This README covers installation and basic usage. For more information about slopes and how to use the package to calculate them, see the get started and the introducion to slopes vignette.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of slopes
slopes Key Features
slopes Examples and Code Snippets
library(slopes)
library(sf)
sf_linestring = lisbon_route # import or load a linestring object
sf_linestring_xyz = elevation_add(sf_linestring) # dem = NULL
#> Loading required namespace: ceramic
#> Preparing to download: 12 tiles at zoom = 1
# install.packages("remotes")
remotes::install_github("itsleeds/slopes")
# install.packages("remotes")
remotes::install_github("itsleeds/slopes", dependencies = "Suggests")
usethis::edit_r_environ()
MAPBOX_API_KEY=xxxxx # replace XXX with your api
Community Discussions
Trending Discussions on slopes
QUESTION
does anyone know how to calculate the slope of three columns (y-axis) given a fixed x-axis for every row? For example, this is my dataframe:
...ANSWER
Answered 2021-May-27 at 17:01Try this, you can use np.polyfit()
to find the slope ( by defining the degree of polynomial to 1) and then compute d
and put it in your dictionary and finally convert it to a pandas DataFrame
:
QUESTION
I'm intrigued on why I'm unable to arrived at the same values the model is predicting.
Consider the below model. I'm trying to understand the relations between features insurance charges, age and if a client is or not a smoker.
Notice age variable has been pre-processed (mean centered).
...ANSWER
Answered 2021-May-09 at 12:43I suppose you want to center the age variable
, this I(age - np.mean(age))
works, but when you try to predict, it will re-evaluate age again according to the mean in your prediction data frame.
Also when you multiply by the coefficients, you have to multiply it by the centered value (i.e age - mean(age)) not the raw values.
It doesn't hurt to create another column with the centered age:
QUESTION
I have the following dataset:
...ANSWER
Answered 2021-May-08 at 02:05a) Don't apply()
the polynomial-fitting to the 'Timestamp' string column, only to the float columns A,B,C. So either make dates
the index, or don't include it in the columns passed into apply().
Make dates
column your index:
QUESTION
I have the following data frame:
...ANSWER
Answered 2021-May-08 at 01:49you can use polyfit
from numpy to get the slopes. While not necessary, you can use a delta on the index in terms of days as x and y as the full pivoted dataframe. Then use argsort
and select the number of top slopes you want. Finally, use iloc
to get the columns
QUESTION
I would like to test the simetry in the response of an observer to a contrast stimuli with different polarity, positive (white) and negative (black). I took the reaction time (RT) as dependent variable, along four different contrasts. It is known that the response time follows a Pieron curve whose asymptotas are placed (1) at observer threshold (Inf) and (2) at a base RT placed somewere between 250 and 450 msec. The knowledge allows us to linearize the relationship transforming the independent variable (effective contrast EC) as 1/EC^2 (tEC), so the equation linking RT to EC becomes:
RT = m * tEC + RT0
To test the symmetry I established the criteria: same slope and same intercept in the two polarities implies symmetry. To obtain the coefficients I made a linear model with interaction (coding trough a dummy variable for Polarity: Positive or Negative). The output of lm is clear to me, but some colegues prefer somthing more similar to an ANOVA output. So I decided to use emmeans to make the contrasts. With the slope is all right, but when computing the interceps starts the problem. The intercepts computed by lm are very different from the output of emmeans, and the conclusions are also different. In what follows I reproduce the example. The question is two fold: It is possible to use emmeans to solve my problem? If not, it is possible to make the contrasts through other packages (which one)?
Data RT1000 EC tEC Polarity 596.3564 -25 0.001600 Negative 648.2471 -20 0.002500 Negative 770.7602 -17 0.003460 Negative 831.2971 -15 0.004444 Negative 1311.3331 15 0.004444 Positive 1173.8942 17 0.003460 Positive 1113.7240 20 0.002500 Positive 869.3635 25 0.001600 Positive Code ...ANSWER
Answered 2021-Apr-30 at 16:28What you are calling the intercepts are not; they are the model predictions at the mean value of tEC
. If you want the intercepts, use instead:
QUESTION
index = np.where(slopes > mean - 2 * sd and slopes < mean + 2 * sd)[0]
returns this error:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
If I instead write idx = np.where(slopes < mean + 2 * sd)[0]
or idx = np.where(slopes > mean - 2 * sd)[0]
I get the right indices. Why can't I combine both conditions?
ANSWER
Answered 2021-Apr-19 at 14:31Instead of using boolean 'and':
QUESTION
Solution (thanks @Peter_Evan!) in case anyone coming across this question has a similar issue
(Original question is below)
...ANSWER
Answered 2021-Apr-17 at 20:50As others have noted in the comments, there are quite a few syntax issues that prevent your code from running, as well as a few unstated requirements. That aside, I think there is enough to recommend a few improvements that you can hopefully build on. Here are the top line changes:
You likely don't need this to be a function, but rather a nested for loop (if you want to do this with base R). As written, the code isn't flexible enough to merit a function. If you intend to apply this many times across different datasets, a function might make sense. However, it will require a much larger rewrite.
Assuming you are fitting a simple regression via
lm
, then you can pull out the coefficient of interest via the$
operator and indexing (see below). Some thought will need to go into how to handle different models in the loop. Here, we assume you only need one coefficient from one model.There are a few areas where the syntax is incorrect and a review of sub setting in base R would be helpful. Others have pointed out in the comments were some of these are.
Here is one approach were we loop through each subject (j) through each feature or subfield (i) and store them in a matrix (out). This is just an approach and will almost certainly need tweaking on your end!
QUESTION
This is a question that came up in the context of sorting points with integer coordinates into clockwise order, but this question is not about how to do that sorting.
This question is about the observation that 2-d vectors have a natural cyclic ordering. Unsigned integers with usual overflow behavior (or signed integers using twos-complement) also have a natural cyclic ordering. Can you easily map from the first ordering to the second?
So, the exact question is whether there is a map from pairs of twos-complement signed 32-bit integers to unsigned (or twos-complement signed) 64-bit integers such that any list of vectors that is in clockwise order maps to integers that are in decreasing (modulo overflow) order?
Some technical cases that people will likely ask about:
- Yes, vectors that are multiples of each other should map to the same thing
- No, I don't care which vector (if any) maps to 0
- No, the images of antipodal vectors don't have to differ by 2^63 (although that is a nice-to-have)
The obvious answer is that since there are only around 0.6*2^64 distinct slopes, the answer is yes, such a map exists, but I'm looking for one that is easily computable. I understand that "easily" is subjective, but I'm really looking for something reasonably efficient and not terrible to implement. So, in particular, no counting every lattice point between the ray and the positive x-axis (unless you know a clever way to do that without enumerating them all).
An important thing to note is that it can be done by mapping to 65-bit integers. Simply project the vector out to where it hits the box bounded by x,y=+/-2^62 and round toward negative infinity. You need 63 bits to represent that integer and two more to encode which side of the box you hit. The implementation needs a little care to make sure you don't overflow, but only has one branch and two divides and is otherwise quite cheap. It doesn't work if you project out to 2^61 because you don't get enough resolution to separate some slopes.
Also, before you suggest "just use atan2", compute atan2(1073741821,2147483643)
and atan2(1073741820,2147483641)
EDIT: Expansion on the "atan2" comment:
Given two values x_1 and x_2 that are coprime and just less than 2^31 (I used 2^31-5 and 2^31-7 in my example), we can use the extended Euclidean algorithm to find y_1 and y_2 such that y_1/x_1-y_2/x_2 = 1/(x_1*x_2) ~= 2^-62. Since the derivative of arctan is bounded by 1, the difference of the outputs of atan2 on these values is not going to be bigger than that. So, there are lots of pairs of vectors that won't be distinguishable by atan2 as vanilla IEEE 754 doubles.
If you have 80-bit extended registers and you are sure you can retain residency in those registers throughout the computation (and don't get kicked out by a context switch or just plain running out of extended registers), then you're fine. But, I really don't like the correctness of my code relying on staying resident in extended registers.
...ANSWER
Answered 2021-Apr-01 at 16:43This doesn't meet your requirement for an "easy" function, nor for a "reasonably efficient" one. But in principle it would work, and it might give some idea of how difficult the problem is. To keep things simple, let's consider just the case where 0 < y ≤ x, because the full problem can be solved by splitting the full 2D plane into eight octants and mapping each to its own range of integers in essentially the same way.
A point (x1, y1) is "anticlockwise" of (x2, y2) if and only if the slope y1/x1 is greater than the slope y2/x2. To map the slopes to integers in an order-preserving way, we can consider the sequence of all distinct fractions whose numerators and denominators are within range (i.e. up to 231), in ascending numerical order. Note that each fraction's numerical value is between 0 and 1 since we are just considering one octant of the plane.
This sequence of fractions is finite, so each fraction has an index at which it occurs in the sequence; so to map a point (x, y) to an integer, first reduce the fraction y/x to its simplest form (e.g. using Euclid's algorithm to find the GCD to divide by), then compute that fraction's index in the sequence.
It turns out this sequence is called a Farey sequence; specifically, it's the Farey sequence of order 231. Unfortunately, computing the index of a given fraction in this sequence turns out to be neither easy nor reasonably efficient. According to the paper Computing Order Statistics in the Farey Sequence by Corina E. Pǎtraşcu and Mihai Pǎtraşcu, there is a somewhat complicated algorithm to compute the rank (i.e. index) of a fraction in O(n) time, where n in your case is 231, and there is unlikely to be an algorithm in time polynomial in log n because the algorithm can be used to factorise integers.
All of that said, there might be a much easier solution to your problem, because I've started from the assumption of wanting to map these fractions to integers as densely as possible (i.e. no "unused" integers in the target range), whereas in your question you wrote that the number of distinct fractions is about 60% of the available range of size 264. Intuitively, that amount of leeway doesn't seem like a lot to me, so I think the problem is probably quite difficult and you may need to settle for a solution that uses a larger output range, or a smaller input range. At the very least, by writing this answer I might save somebody else the effort of investigating whether this approach is feasible.
QUESTION
So I have a scatterplot data set and I'm trying to set on top of that many different linear lines using abline. The problem is that I want each line colored a different way and to appear in the Legend with a given class.
I have the following scatter plot with points colored by group:
...ANSWER
Answered 2021-Mar-23 at 17:25You could use ggnewscale
like @stefan said. It's a great option. Alternatively, you can make a palette.
I used a palette option from the library viridis
, but you could use something else.
QUESTION
I have a Python code snippet which loads stored ml model and predicts with new inputs.
...ANSWER
Answered 2021-Mar-20 at 05:58I assume that your model is a linear model given the equation you want to reconstruct. mlModel.coef_
should be what you want. See this for example.
mlModel.intercept_
is the intercept.
coef_
are in the same order as the training data. For example if age
is the third column in your training data, the coefficient for age is the third element in mlModel.coef_
.
In your case you are only making predictions, but I assume that you know the meaning of the columns in the data you are trying to predict on. This should be the same order as in your training data.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install slopes
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page